1import{b8 as VD,b9 as LZ,ba as eV}from"./index-CqS-M8ws.js";var x2={};const At=VD(LZ);var A2={},tm={},$l={},tV;function rn(){if(tV)return $l;tV=1,Object.defineProperty($l,"__esModule",{value:!0}),$l.EPSILON=void 0,$l.equalEps=e,$l.EPSILON=1e-6;function e(t,r,n){return Math.abs(t-r)<=n}return $l}var rm={},Nn={},rV;function ir(){if(rV)return Nn;rV=1,Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.normalize=e,Nn.clamp=t,Nn.pclamp=r,Nn.saturate=n,Nn.damp=i,Nn.lerp=c,Nn.spline=o,Nn.quadraticBezier=s,Nn.smoothstep=h,Nn.smootherstep=f,Nn.smootheststep=y,Nn.almostIdentity=_;function e(g,a,d){return(g-a)/(d-a)}function t(g,a,d){return Math.max(a,Math.min(d,g))}function r(g){return t(g,0,100)}function n(g){return t(g,0,1)}function i(g,a){const d=g*a;return Math.abs(d)<.1?0:d}function c(g,a,d){return g+(a-g)*d}function o(g,a,d,p,u,m){const v=(d-g)*m,b=(p-a)*m,P=u*u,C=u*P;return(2*a-2*d+v+b)*C+(-3*a+3*d-2*v-b)*P+v*u+a}function s(g,a,d,p){const u=1-p;return u*u*g+2*u*p*a+p*p*d}function h(g,a,d){return d=n(e(d,g,a)),d*d*(3-2*d)}function f(g,a,d){return d=n(e(d,g,a)),d*d*d*(d*(d*6-15)+10)}function y(g,a,d){return d=n(e(d,g,a)),-20*Math.pow(d,7)+70*Math.pow(d,6)-84*Math.pow(d,5)+35*Math.pow(d,4)}function _(g,a,d){if(g>a)return g;const p=2*d-a,u=2*a-3*d,m=g/a;return(p*m+u)*m*m+d}return Nn}var nV;function wt(){if(nV)return rm;nV=1,Object.defineProperty(rm,"__esModule",{value:!0}),rm.Vec3=i;const e=Xr(),t=ir(),r=rn(),n=isFinite;function i(){return i.zero()}return(function(c){function o(){const Pe=[.1,0,0];return Pe[0]=0,Pe}c.zero=o;function s(Pe){const Ie=o();return Ie[0]=Pe[0],Ie[1]=Pe[1],Ie[2]=Pe[2],Ie}c.clone=s;function h(Pe){return Array.isArray(Pe)&&Pe.length===3}c.is=h;function f(Pe){return n(Pe[0])&&n(Pe[1])&&n(Pe[2])}c.isFinite=f;function y(Pe){return Number.isInteger(Pe[0])&&Number.isInteger(Pe[1])&&Number.isInteger(Pe[2])}c.isInteger=y;function _(Pe){return Number.isNaN(Pe[0])||Number.isNaN(Pe[1])||Number.isNaN(Pe[2])}c.hasNaN=_;function g(Pe){return Pe[0]=NaN,Pe[1]=NaN,Pe[2]=NaN,Pe}c.setNaN=g;function a(Pe){return m(Pe.x,Pe.y,Pe.z)}c.fromObj=a;function d(Pe){return{x:Pe[0],y:Pe[1],z:Pe[2]}}c.toObj=d;function p(Pe,Ie,Ee){return Pe[0]=Ie[Ee+0],Pe[1]=Ie[Ee+1],Pe[2]=Ie[Ee+2],Pe}c.fromArray=p;function u(Pe,Ie,Ee){return Ie[Ee+0]=Pe[0],Ie[Ee+1]=Pe[1],Ie[Ee+2]=Pe[2],Ie}c.toArray=u;function m(Pe,Ie,Ee){const Ue=o();return Ue[0]=Pe,Ue[1]=Ie,Ue[2]=Ee,Ue}c.create=m;function v(Pe){const Ie=o();return Ie[0]=Pe[0],Ie[1]=Pe[1],Ie[2]=Pe[2],Ie}c.ofArray=v;function b(Pe,Ie,Ee,Ue){return Pe[0]=Ie,Pe[1]=Ee,Pe[2]=Ue,Pe}c.set=b;function P(Pe,Ie){return Pe[0]=Ie[0],Pe[1]=Ie[1],Pe[2]=Ie[2],Pe}c.copy=P;function C(Pe,Ie,Ee){return Pe[0]=Ie[0]+Ee[0],Pe[1]=Ie[1]+Ee[1],Pe[2]=Ie[2]+Ee[2],Pe}c.add=C;function l(Pe,Ie,Ee){return Pe[0]=Ie[0]-Ee[0],Pe[1]=Ie[1]-Ee[1],Pe[2]=Ie[2]-Ee[2],Pe}c.sub=l;function S(Pe,Ie,Ee){return Pe[0]=Ie[0]*Ee[0],Pe[1]=Ie[1]*Ee[1],Pe[2]=Ie[2]*Ee[2],Pe}c.mul=S;function T(Pe,Ie,Ee){return Pe[0]=Ie[0]/Ee[0],Pe[1]=Ie[1]/Ee[1],Pe[2]=Ie[2]/Ee[2],Pe}c.div=T;function A(Pe,Ie,Ee){return Pe[0]=Ie[0]%Ee[0],Pe[1]=Ie[1]%Ee[1],Pe[2]=Ie[2]%Ee[2],Pe}c.mod=A;function x(Pe,Ie,Ee){return Pe[0]=Ie[0]*Ee,Pe[1]=Ie[1]*Ee,Pe[2]=Ie[2]*Ee,Pe}c.scale=x;function M(Pe,Ie,Ee,Ue){return Pe[0]=Ie[0]+Ee[0]*Ue,Pe[1]=Ie[1]+Ee[1]*Ue,Pe[2]=Ie[2]+Ee[2]*Ue,Pe}c.scaleAndAdd=M;function D(Pe,Ie,Ee,Ue){return Pe[0]=Ie[0]-Ee[0]*Ue,Pe[1]=Ie[1]-Ee[1]*Ue,Pe[2]=Ie[2]-Ee[2]*Ue,Pe}c.scaleAndSub=D;function V(Pe,Ie,Ee){return Pe[0]=Ie[0]+Ee,Pe[1]=Ie[1]+Ee,Pe[2]=Ie[2]+Ee,Pe}c.addScalar=V;function R(Pe,Ie,Ee){return Pe[0]=Ie[0]-Ee,Pe[1]=Ie[1]-Ee,Pe[2]=Ie[2]-Ee,Pe}c.subScalar=R;function E(Pe,Ie){return Pe[0]=Math.round(Ie[0]),Pe[1]=Math.round(Ie[1]),Pe[2]=Math.round(Ie[2]),Pe}c.round=E;function I(Pe,Ie){return Pe[0]=Math.ceil(Ie[0]),Pe[1]=Math.ceil(Ie[1]),Pe[2]=Math.ceil(Ie[2]),Pe}c.ceil=I;function B(Pe,Ie){return Pe[0]=Math.floor(Ie[0]),Pe[1]=Math.floor(Ie[1]),Pe[2]=Math.floor(Ie[2]),Pe}c.floor=B;function w(Pe,Ie){return Pe[0]=Math.trunc(Ie[0]),Pe[1]=Math.trunc(Ie[1]),Pe[2]=Math.trunc(Ie[2]),Pe}c.trunc=w;function O(Pe,Ie){return Pe[0]=Math.abs(Ie[0]),Pe[1]=Math.abs(Ie[1]),Pe[2]=Math.abs(Ie[2]),Pe}c.abs=O;function F(Pe,Ie,Ee){return Pe[0]=Math.min(Ie[0],Ee[0]),Pe[1]=Math.min(Ie[1],Ee[1]),Pe[2]=Math.min(Ie[2],Ee[2]),Pe}c.min=F;function L(Pe,Ie,Ee){return Pe[0]=Math.max(Ie[0],Ee[0]),Pe[1]=Math.max(Ie[1],Ee[1]),Pe[2]=Math.max(Ie[2],Ee[2]),Pe}c.max=L;function U(Pe,Ie,Ee,Ue){return Pe[0]=Math.max(Ee[0],Math.min(Ue[0],Ie[0])),Pe[1]=Math.max(Ee[1],Math.min(Ue[1],Ie[1])),Pe[2]=Math.max(Ee[2],Math.min(Ue[2],Ie[2])),Pe}c.clamp=U;function q(Pe,Ie){const Ee=Ie[0]-Pe[0],Ue=Ie[1]-Pe[1],$e=Ie[2]-Pe[2];return Math.sqrt(Ee*Ee+Ue*Ue+$e*$e)}c.distance=q;function N(Pe,Ie){const Ee=Ie[0]-Pe[0],Ue=Ie[1]-Pe[1],$e=Ie[2]-Pe[2];return Ee*Ee+Ue*Ue+$e*$e}c.squaredDistance=N;function k(Pe){const Ie=Pe[0],Ee=Pe[1],Ue=Pe[2];return Math.sqrt(Ie*Ie+Ee*Ee+Ue*Ue)}c.magnitude=k;function j(Pe){const Ie=Pe[0],Ee=Pe[1],Ue=Pe[2];return Ie*Ie+Ee*Ee+Ue*Ue}c.squaredMagnitude=j;function H(Pe,Ie,Ee){return x(Pe,W(Pe,Ie),Ee)}c.setMagnitude=H;function G(Pe,Ie){return Pe[0]=-Ie[0],Pe[1]=-Ie[1],Pe[2]=-Ie[2],Pe}c.negate=G;function z(Pe,Ie){return Pe[0]=1/Ie[0],Pe[1]=1/Ie[1],Pe[2]=1/Ie[2],Pe}c.inverse=z;function W(Pe,Ie){const Ee=Ie[0],Ue=Ie[1],$e=Ie[2];let Ye=Ee*Ee+Ue*Ue+$e*$e;return Ye>0&&(Ye=1/Math.sqrt(Ye),Pe[0]=Ie[0]*Ye,Pe[1]=Ie[1]*Ye,Pe[2]=Ie[2]*Ye),Pe}c.normalize=W;function X(Pe,Ie){return Pe[0]*Ie[0]+Pe[1]*Ie[1]+Pe[2]*Ie[2]}c.dot=X;function Y(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=Ee[0],it=Ee[1],ht=Ee[2];return Pe[0]=$e*ht-Ye*it,Pe[1]=Ye*Qe-Ue*ht,Pe[2]=Ue*it-$e*Qe,Pe}c.cross=Y;function K(Pe,Ie,Ee,Ue){const $e=Ie[0],Ye=Ie[1],Qe=Ie[2];return Pe[0]=$e+Ue*(Ee[0]-$e),Pe[1]=Ye+Ue*(Ee[1]-Ye),Pe[2]=Qe+Ue*(Ee[2]-Qe),Pe}c.lerp=K;const Q=o();function J(Pe,Ie,Ee,Ue){const $e=(0,t.clamp)(X(Ie,Ee),-1,1),Ye=Math.acos($e)*Ue;return M(Q,Ee,Ie,-$e),W(Q,Q),C(Pe,x(Pe,Ie,Math.cos(Ye)),x(Q,Q,Math.sin(Ye)))}c.slerp=J;function ae(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ye*Ye,it=Qe*(2*Ye-3)+1,ht=Qe*(Ye-2)+Ye,mt=Qe*(Ye-1),St=Qe*(3-2*Ye);return Pe[0]=Ie[0]*it+Ee[0]*ht+Ue[0]*mt+$e[0]*St,Pe[1]=Ie[1]*it+Ee[1]*ht+Ue[1]*mt+$e[1]*St,Pe[2]=Ie[2]*it+Ee[2]*ht+Ue[2]*mt+$e[2]*St,Pe}c.hermite=ae;function te(Pe,Ie,Ee,Ue,$e,Ye){const Qe=1-Ye,it=Qe*Qe,ht=Ye*Ye,mt=it*Qe,St=3*Ye*it,Bt=3*ht*Qe,Ot=ht*Ye;return Pe[0]=Ie[0]*mt+Ee[0]*St+Ue[0]*Bt+$e[0]*Ot,Pe[1]=Ie[1]*mt+Ee[1]*St+Ue[1]*Bt+$e[1]*Ot,Pe[2]=Ie[2]*mt+Ee[2]*St+Ue[2]*Bt+$e[2]*Ot,Pe}c.bezier=te;function ne(Pe,Ie,Ee,Ue,$e){return Pe[0]=(0,t.quadraticBezier)(Ie[0],Ee[0],Ue[0],$e),Pe[1]=(0,t.quadraticBezier)(Ie[1],Ee[1],Ue[1],$e),Pe[2]=(0,t.quadraticBezier)(Ie[2],Ee[2],Ue[2],$e),Pe}c.quadraticBezier=ne;function $(Pe,Ie,Ee,Ue,$e,Ye,Qe){return Pe[0]=(0,t.spline)(Ie[0],Ee[0],Ue[0],$e[0],Ye,Qe),Pe[1]=(0,t.spline)(Ie[1],Ee[1],Ue[1],$e[1],Ye,Qe),Pe[2]=(0,t.spline)(Ie[2],Ee[2],Ue[2],$e[2],Ye,Qe),Pe}c.spline=$;function ie(Pe,Ie){const Ee=Math.random()*2*Math.PI,Ue=Math.random()*2-1,$e=Math.sqrt(1-Ue*Ue)*Ie;return Pe[0]=Math.cos(Ee)*$e,Pe[1]=Math.sin(Ee)*$e,Pe[2]=Ue*Ie,Pe}c.random=ie;function Z(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=1/(Ee[3]*Ue+Ee[7]*$e+Ee[11]*Ye+Ee[15]||1);return Pe[0]=(Ee[0]*Ue+Ee[4]*$e+Ee[8]*Ye+Ee[12])*Qe,Pe[1]=(Ee[1]*Ue+Ee[5]*$e+Ee[9]*Ye+Ee[13])*Qe,Pe[2]=(Ee[2]*Ue+Ee[6]*$e+Ee[10]*Ye+Ee[14])*Qe,Pe}c.transformMat4=Z;function re(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2];return Pe[0]=Ee[0]*Ue+Ee[4]*$e+Ee[8]*Ye,Pe[1]=Ee[1]*Ue+Ee[5]*$e+Ee[9]*Ye,Pe[2]=Ee[2]*Ue+Ee[6]*$e+Ee[10]*Ye,W(Pe,Pe)}c.transformDirection=re;function oe(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ie[0+$e],it=Ie[1+$e],ht=Ie[2+$e],mt=1/(Ee[3+Ye]*Qe+Ee[7+Ye]*it+Ee[11+Ye]*ht+Ee[15+Ye]||1);return Pe[0+Ue]=(Ee[0+Ye]*Qe+Ee[4+Ye]*it+Ee[8+Ye]*ht+Ee[12+Ye])*mt,Pe[1+Ue]=(Ee[1+Ye]*Qe+Ee[5+Ye]*it+Ee[9+Ye]*ht+Ee[13+Ye])*mt,Pe[2+Ue]=(Ee[2+Ye]*Qe+Ee[6+Ye]*it+Ee[10+Ye]*ht+Ee[14+Ye])*mt,Pe}c.transformMat4Offset=oe;function ce(Pe,Ie,Ee,Ue,$e,Ye){const Qe=Ie[0+$e],it=Ie[1+$e],ht=Ie[2+$e];Pe[0+Ue]=Ee[0+Ye]*Qe+Ee[4+Ye]*it+Ee[8+Ye]*ht,Pe[1+Ue]=Ee[1+Ye]*Qe+Ee[5+Ye]*it+Ee[9+Ye]*ht,Pe[2+Ue]=Ee[2+Ye]*Qe+Ee[6+Ye]*it+Ee[10+Ye]*ht;const mt=Math.hypot(Pe[0+Ue],Pe[1+Ue],Pe[2+Ue]);return mt>0&&(Pe[0+Ue]/=mt,Pe[1+Ue]/=mt,Pe[2+Ue]/=mt),Pe}c.transformDirectionOffset=ce;function ue(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2];return Pe[0]=Ue*Ee[0]+$e*Ee[3]+Ye*Ee[6],Pe[1]=Ue*Ee[1]+$e*Ee[4]+Ye*Ee[7],Pe[2]=Ue*Ee[2]+$e*Ee[5]+Ye*Ee[8],Pe}c.transformMat3=ue;function pe(Pe,Ie,Ee){const Ue=Ie[0],$e=Ie[1],Ye=Ie[2],Qe=Ee[0],it=Ee[1],ht=Ee[2],mt=Ee[3],St=mt*Ue+it*Ye-ht*$e,Bt=mt*$e+ht*Ue-Qe*Ye,Ot=mt*Ye+Qe*$e-it*Ue,br=-Qe*Ue-it*$e-ht*Ye;return Pe[0]=St*mt+br*-Qe+Bt*-ht-Ot*-it,Pe[1]=Bt*mt+br*-it+Ot*-Qe
1-St*-ht,Pe[2]=Ot*mt+br*-ht+St*-it-Bt*-Qe,Pe}c.transformQuat=pe;function he(Pe,Ie){const Ee=Math.sqrt(j(Pe)*j(Ie));if(Ee===0)return Math.PI/2;const Ue=X(Pe,Ie)/Ee;return Math.acos((0,t.clamp)(Ue,-1,1))}c.angle=he;const fe=o(),de=o(),ge=o(),Ce=o(),ve=o(),le=o(),me=o();function ee(Pe,Ie,Ee,Ue){l(fe,Pe,Ie),l(de,Ee,Ie),l(ge,Ie,Ee),l(Ce,Ue,Ee),Y(ve,fe,de),Y(le,ge,Ce);const $e=he(ve,le);return Y(me,ve,le),X(de,me)>0?$e:-$e}c.dihedralAngle=ee;function se(Pe,Ie,Ee,Ue){return c.set(Pe,Ue*Math.cos(Ee)*Math.sin(Ie),Ue*Math.sin(Ee)*Math.sin(Ie),Ue*Math.cos(Ie))}c.directionFromSpherical=se;function ye(Pe,Ie){return Pe[0]===Ie[0]&&Pe[1]===Ie[1]&&Pe[2]===Ie[2]}c.exactEquals=ye;function Se(Pe,Ie){const Ee=Pe[0],Ue=Pe[1],$e=Pe[2],Ye=Ie[0],Qe=Ie[1],it=Ie[2];return Math.abs(Ee-Ye)<=r.EPSILON*Math.max(1,Math.abs(Ee),Math.abs(Ye))&&Math.abs(Ue-Qe)<=r.EPSILON*Math.max(1,Math.abs(Ue),Math.abs(Qe))&&Math.abs($e-it)<=r.EPSILON*Math.max(1,Math.abs($e),Math.abs(it))}c.equals=Se;const Ae=o();function _e(Pe,Ie,Ee){const Ue=he(Ie,Ee);if(Math.abs(Ue)<1e-4)return e.Mat4.setIdentity(Pe);if(Math.abs(Ue-Math.PI)<r.EPSILON)return e.Mat4.fromRotation(Pe,Math.PI,Math.abs(Ie[0])<.9?c.unitX:c.unitZ);const $e=Y(Ae,Ie,Ee);return e.Mat4.fromRotation(Pe,Ue,$e)}c.makeRotation=_e;const be=c();function xe(Pe,Ie,Ee,Ue){const $e=Math.cos(Ue),Ye=Math.sin(Ue),Qe=c.dot(Ie,Ee);return c.cross(be,Ee,Ie),Pe[0]=Ie[0]*$e+be[0]*Ye+Ee[0]*Qe*(1-$e),Pe[1]=Ie[1]*$e+be[1]*Ye+Ee[1]*Qe*(1-$e),Pe[2]=Ie[2]*$e+be[2]*Ye+Ee[2]*Qe*(1-$e),Pe}c.rotateAroundAxis=xe;function we(Pe){return Pe[0]===0&&Pe[1]===0&&Pe[2]===0}c.isZero=we;function Be(Pe,Ie,Ee,Ue){l(Pe,Ie,Ue);const $e=X(Ee,Pe)/j(Ee);return C(Pe,x(Pe,Ee,$e),Ue)}c.projectPointOnVector=Be;const Me=o();function Re(Pe,Ie,Ee,Ue){return W(Me,Ee),l(Pe,Ie,Ue),l(Pe,Ie,x(Me,Me,X(Pe,Me)))}c.projectPointOnPlane=Re;function Te(Pe,Ie,Ee){const Ue=X(Ee,Ie)/j(Ee);return x(Pe,Ee,Ue)}c.projectOnVector=Te;const Ve=o();function qe(Pe,Ie,Ee){return Te(Ve,Ie,Ee),l(Pe,Ie,Ve)}c.projectOnPlane=qe;function ke(Pe,Ie,Ee){return W(Pe,Y(Pe,Y(Pe,Ie,Ee),Ie)),!c.isZero(Pe)||(Pe[0]=1,Pe[1]=0,Pe[2]=0,W(Pe,Y(Pe,Y(Pe,Ie,Pe),Ie)),!c.isZero(Pe))||(Pe[0]=0,Pe[1]=1,Pe[2]=0,W(Pe,Y(Pe,Y(Pe,Ie,Pe),Ie)),!c.isZero(Pe))||(W(Pe,Ee),!c.isZero(Pe))||(Pe[0]=1,Pe[1]=0,Pe[2]=0),Pe}c.orthogonalize=ke;function ze(Pe,Ie,Ee){return X(Ie,Ee)>0?P(Pe,Ie):G(Pe,P(Pe,Ie)),Pe}c.matchDirection=ze;function We(Pe,Ie){if(we(Ie))return P(Pe,c.unitX);{const Ee=o();return Math.abs(Ie[0])<Math.abs(Ie[1])&&Math.abs(Ie[0])<Math.abs(Ie[2])?(Ee[0]=0,Ee[1]=Ie[2],Ee[2]=-Ie[1]):Math.abs(Ie[1])<Math.abs(Ie[2])?(Ee[0]=-Ie[2],Ee[1]=0,Ee[2]=Ie[0]):(Ee[0]=Ie[1],Ee[1]=-Ie[0],Ee[2]=0),W(Pe,Ee)}}c.orthogonalDirection=We;const Je=o(),De=o();function Oe(Pe,Ie,Ee,Ue){return l(Je,Ee,Ie),l(De,Ue,Ie),W(Pe,Y(Pe,Je,De))}c.triangleNormal=Oe;const Fe=o();function Le(Pe,Ie,Ee){return c.scaleAndAdd(Pe,Ie,c.sub(Fe,Ee,Ie),.5)}c.center=Le;function He(Pe,Ie){return`[${Pe[0].toPrecision(Ie)} ${Pe[1].toPrecision(Ie)} ${Pe[2].toPrecision(Ie)}]`}c.toString=He,c.origin=m(0,0,0),c.unit=m(1,1,1),c.negUnit=m(-1,-1,-1),c.unitX=m(1,0,0),c.unitY=m(0,1,0),c.unitZ=m(0,0,1),c.negUnitX=m(-1,0,0),c.negUnitY=m(0,-1,0),c.negUnitZ=m(0,0,-1)})(i||(rm.Vec3=i={})),rm}var nm={},im={},iV;function K_(){if(iV)return im;iV=1,Object.defineProperty(im,"__esModule",{value:!0}),im.Mat3=n;const e=rn(),t=Xr(),r=wt();function n(){return n.zero()}return(function(i){function c(){const Q=[.1,0,0,0,0,0,0,0,0];return Q[0]=0,Q}i.zero=c;function o(){const Q=c();return Q[0]=1,Q[1]=0,Q[2]=0,Q[3]=0,Q[4]=1,Q[5]=0,Q[6]=0,Q[7]=0,Q[8]=1,Q}i.identity=o;function s(Q){return Q[0]=1,Q[1]=0,Q[2]=0,Q[3]=0,Q[4]=1,Q[5]=0,Q[6]=0,Q[7]=0,Q[8]=1,Q}i.setIdentity=s;function h(Q,J,ae){return J[ae+0]=Q[0],J[ae+1]=Q[1],J[ae+2]=Q[2],J[ae+3]=Q[3],J[ae+4]=Q[4],J[ae+5]=Q[5],J[ae+6]=Q[6],J[ae+7]=Q[7],J[ae+8]=Q[8],J}i.toArray=h;function f(Q,J,ae){return Q[0]=J[ae+0],Q[1]=J[ae+1],Q[2]=J[ae+2],Q[3]=J[ae+3],Q[4]=J[ae+4],Q[5]=J[ae+5],Q[6]=J[ae+6],Q[7]=J[ae+7],Q[8]=J[ae+8],Q}i.fromArray=f;function y(Q,J,ae,te){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=ae[0],Q[4]=ae[1],Q[5]=ae[2],Q[6]=te[0],Q[7]=te[1],Q[8]=te[2],Q}i.fromColumns=y;function _(Q,J){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[4],Q[4]=J[5],Q[5]=J[6],Q[6]=J[8],Q[7]=J[9],Q[8]=J[10],Q}i.fromMat4=_;const g=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function a(Q,J,ae){return t.Mat4.fromEuler(g,J,ae),_(Q,g)}i.fromEuler=a;function d(Q,J,ae){return t.Mat4.fromRotation(g,J,ae),_(Q,g)}i.fromRotation=d;function p(Q,J,ae,te,ne,$,ie,Z,re){const oe=c();return oe[0]=Q,oe[1]=J,oe[2]=ae,oe[3]=te,oe[4]=ne,oe[5]=$,oe[6]=ie,oe[7]=Z,oe[8]=re,oe}i.create=p;const u=o();function m(Q,J){return C(Q,u,typeof J>
1"u"?e.EPSILON:J)}i.isIdentity=m;function v(Q){return Array.isArray(Q)&&Q.length===9}i.is=v;function b(Q){for(let J=0;J<9;J++)if(Number.isNaN(Q[J]))return!0;return!1}i.hasNaN=b;function P(Q){return T(c(),Q)}i.clone=P;function C(Q,J,ae){for(let te=0;te<9;te++)if(Math.abs(Q[te]-J[te])>ae)return!1;return!0}i.areEqual=C;function l(Q,J,ae,te){Q[3*ae+J]=te}i.setValue=l;function S(Q,J,ae){return Q[3*ae+J]}i.getValue=S;function T(Q,J){return Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[3],Q[4]=J[4],Q[5]=J[5],Q[6]=J[6],Q[7]=J[7],Q[8]=J[8],Q}i.copy=T;function A(Q,J){if(Q===J){const ae=J[1],te=J[2],ne=J[5];Q[1]=J[3],Q[2]=J[6],Q[3]=ae,Q[5]=J[7],Q[6]=te,Q[7]=ne}else Q[0]=J[0],Q[1]=J[3],Q[2]=J[6],Q[3]=J[1],Q[4]=J[4],Q[5]=J[7],Q[6]=J[2],Q[7]=J[5],Q[8]=J[8];return Q}i.transpose=A;function x(Q,J){const ae=J[0],te=J[1],ne=J[2],$=J[3],ie=J[4],Z=J[5],re=J[6],oe=J[7],ce=J[8],ue=ce*ie-Z*oe,pe=-ce*$+Z*re,he=oe*$-ie*re;let fe=ae*ue+te*pe+ne*he;return fe?(fe=1/fe,Q[0]=ue*fe,Q[1]=(-ce*te+ne*oe)*fe,Q[2]=(Z*te-ne*ie)*fe,Q[3]=pe*fe,Q[4]=(ce*ae-ne*re)*fe,Q[5]=(-Z*ae+ne*$)*fe,Q[6]=he*fe,Q[7]=(-oe*ae+te*re)*fe,Q[8]=(ie*ae-te*$)*fe,Q):(console.warn("non-invertible matrix.",J),Q)}i.invert=x;function M(Q,J){return Q===J?(Q[3]=J[1],Q[6]=J[2],Q[7]=J[5]):(Q[0]=J[0],Q[1]=J[1],Q[2]=J[2],Q[3]=J[1],Q[4]=J[4],Q[5]=J[5],Q[6]=J[2],Q[7]=J[5],Q[8]=J[8]),Q}i.symmtricFromUpper=M;function D(Q,J){return Q===J?(Q[1]=J[3],Q[2]=J[6],Q[5]=J[7]):(Q[0]=J[0],Q[1]=J[3],Q[2]=J[6],Q[3]=J[3],Q[4]=J[4],Q[5]=J[7],Q[6]=J[6],Q[7]=J[7],Q[8]=J[8]),Q}i.symmtricFromLower=D;function V(Q){const J=Q[0],ae=Q[1],te=Q[2],ne=Q[3],$=Q[4],ie=Q[5],Z=Q[6],re=Q[7],oe=Q[8],ce=oe*$-ie*re,ue=-oe*ne+ie*Z,pe=re*ne-$*Z;return J*ce+ae*ue+te*pe}i.determinant=V;function R(Q){return Q[0]+Q[4]+Q[8]}i.trace=R;function E(Q,J,ae){return Q[0]=J[0]-ae[0],Q[1]=J[1]-ae[1],Q[2]=J[2]-ae[2],Q[3]=J[3]-ae[3],Q[4]=J[4]-ae[4],Q[5]=J[5]-ae[5],Q[6]=J[6]-ae[6],Q[7]=J[7]-ae[7],Q[8]=J[8]-ae[8],Q}i.sub=E;function I(Q,J,ae){return Q[0]=J[0]+ae[0],Q[1]=J[1]+ae[1],Q[2]=J[2]+ae[2],Q[3]=J[3]+ae[3],Q[4]=J[4]+ae[4],Q[5]=J[5]+ae[5],Q[6]=J[6]+ae[6],Q[7]=J[7]+ae[7],Q[8]=J[8]+ae[8],Q}i.add=I;function B(Q,J,ae){const te=J[0],ne=J[1],$=J[2],ie=J[3],Z=J[4],re=J[5],oe=J[6],ce=J[7],ue=J[8],pe=ae[0],he=ae[1],fe=ae[2],de=ae[3],ge=ae[4],Ce=ae[5],ve=ae[6],le=ae[7],me=ae[8];return Q[0]=pe*te+he*ie+fe*oe,Q[1]=pe*ne+he*Z+fe*ce,Q[2]=pe*$+he*re+fe*ue,Q[3]=de*te+ge*ie+Ce*oe,Q[4]=de*ne+ge*Z+Ce*ce,Q[5]=de*$+ge*re+Ce*ue,Q[6]=ve*te+le*ie+me*oe,Q[7]=ve*ne+le*Z+me*ce,Q[8]=ve*$+le*re+me*ue,Q}i.mul=B;function w(Q,J,ae){return Q[0]=J[0]-ae,Q[1]=J[1]-ae,Q[2]=J[2]-ae,Q[3]=J[3]-ae,Q[4]=J[4]-ae,Q[5]=J[5]-ae,Q[6]=J[6]-ae,Q[7]=J[7]-ae,Q[8]=J[8]-ae,Q}i.subScalar=w;function O(Q,J,ae){return Q[0]=J[0]+ae,Q[1]=J[1]+ae,Q[2]=J[2]+ae,Q[3]=J[3]+ae,Q[4]=J[4]+ae,Q[5]=J[5]+ae,Q[6]=J[6]+ae,Q[7]=J[7]+ae,Q[8]=J[8]+ae,Q}i.addScalar=O;function F(Q,J,ae){return Q[0]=J[0]*ae,Q[1]=J[1]*ae,Q[2]=J[2]*ae,Q[3]=J[3]*ae,Q[4]=J[4]*ae,Q[5]=J[5]*ae,Q[6]=J[6]*ae,Q[7]=J[7]*ae,Q[8]=J[8]*ae,Q}i.mulScalar=F;const L=Math.PI/3,U=c();function q(Q,J){const ae=J[1]*J[1]+J[2]*J[2]+J[5]*J[5];if(ae===0)Q[0]=J[0],Q[1]=J[4],Q[2]=J[8];else{const te=R(J)/3,ne=J[0]-te,$=J[4]-te,ie=J[8]-te,Z=ne*ne+$*$+ie*ie+2*ae,re=Math.sqrt(Z/6);F(U,i.Identity,te),E(U,J,U),F(U,U,1/re);const oe=V(U)/2,ce=oe<=-1?L:oe>=1?0:Math.acos(oe)/3;Q[0]=te+2*re*Math.cos(ce),Q[2]=te+2*re*Math.cos(ce+2*L),Q[1]=3*te-Q[0]-Q[2]}return Q}i.symmetricEigenvalues=q;const N=[.1,0,0],k=[.1,0,0],j=[.1,0,0],H=[.1,0,0],G=[.1,0,0],z=[.1,0,0];function W(Q,J,ae){r.Vec3.set(N,J[0]-ae,J[1],J[2]),r.Vec3.set(k,J[1],J[4]-ae,J[5]),r.Vec3.set(j,J[2],J[5],J[8]-ae),r.Vec3.cross(H,N,k),r.Vec3.cross(G,N,j),r.Vec3.cross(z,k,j);const te=r.Vec3.dot(H,H),ne=r.Vec3.dot(G,G),$=r.Vec3.dot(z,z);let ie=te,Z=0;return ne>ie&&(ie=ne,Z=1),$>ie&&(Z=2),Z===0?r.Vec3.scale(Q,H,1/Math.sqrt(te)):Z===1?r.Vec3.scale(Q,G,1/Math.sqrt(ne)):r.Vec3.scale(Q,z,1/Math.sqrt($)),Q}i.eigenvector=W;function X(Q,J){return _(Q,J),x(Q,Q),A(Q,Q),Q}i.directionTransform=X,i.Identity=o();function Y(Q,J){return Q[0]*J[0]+Q[1]*J[1]+Q[2]*J[2]+Q[3]*J[3]+Q[4]*J[4]+Q[5]*J[5]+Q[6]*J[6]+Q[7]*J[7]+Q[8]*J[8]}i.innerProduct=Y;function K(Q,J){const ae=J[0],te=J[1],ne=J[2],$=J[4],ie=J[5],Z=J[6],re=J[8],oe=J[9],ce=J[10];return Q[0]=ie*ce-Z*oe,Q[1]=Z*re-$*ce,Q[2]=$*oe-ie*re,Q[3]=oe*ne-ce*te,Q[4]=ce*ae-re*ne,Q[5]=re*te-oe*ae,Q[6]=te*Z-ne*ie,Q[7]=ne*$-ae*Z,Q[8]=ae*ie-te*$,Q}i.adjointFromMat4=K})(n||(im.Mat3=n={})),im}var Xl={},aV;function Gt(){if(aV)return Xl;
1aV=1,Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.ObjectKeys=e,Xl.assertUnreachable=t,Xl.isPromiseLike=r;function e(n){return Object.keys(n)}function t(n){throw new Error("unreachable")}function r(n){return typeof n?.then=="function"}return Xl}var oV;function rs(){if(oV)return nm;oV=1,Object.defineProperty(nm,"__esModule",{value:!0}),nm.Quat=o;const e=K_(),t=wt(),r=rn(),n=Gt(),i=Xr(),c=ir();function o(){return o.zero()}return(function(s){function h(){const Z=[.1,0,0,0];return Z[0]=0,Z}s.zero=h;function f(){const Z=h();return Z[3]=1,Z}s.identity=f;function y(Z){Z[0]=0,Z[1]=0,Z[2]=0,Z[3]=1}s.setIdentity=y;function _(Z){return Number.isNaN(Z[0])||Number.isNaN(Z[1])||Number.isNaN(Z[2])||Number.isNaN(Z[3])}s.hasNaN=_;function g(Z,re,oe,ce){const ue=f();return ue[0]=Z,ue[1]=re,ue[2]=oe,ue[3]=ce,ue}s.create=g;function a(Z){return Array.isArray(Z)&&Z.length===4}s.is=a;function d(Z,re,oe){oe=oe*.5;const ce=Math.sin(oe);return Z[0]=ce*re[0],Z[1]=ce*re[1],Z[2]=ce*re[2],Z[3]=Math.cos(oe),Z}s.setAxisAngle=d;function p(Z,re){const oe=Math.acos(re[3])*2,ce=Math.sin(oe/2);return ce!==0?(Z[0]=re[0]/ce,Z[1]=re[1]/ce,Z[2]=re[2]/ce):(Z[0]=1,Z[1]=0,Z[2]=0),oe}s.getAxisAngle=p;function u(Z,re,oe){const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=oe[0],de=oe[1],ge=oe[2],Ce=oe[3];return Z[0]=ce*Ce+he*fe+ue*ge-pe*de,Z[1]=ue*Ce+he*de+pe*fe-ce*ge,Z[2]=pe*Ce+he*ge+ce*de-ue*fe,Z[3]=he*Ce-ce*fe-ue*de-pe*ge,Z}s.multiply=u;function m(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de+he*fe,Z[1]=ue*de+pe*fe,Z[2]=pe*de-ue*fe,Z[3]=he*de-ce*fe,Z}
1s.rotateX=m;function v(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de-pe*fe,Z[1]=ue*de+he*fe,Z[2]=pe*de+ce*fe,Z[3]=he*de-ue*fe,Z}s.rotateY=v;function b(Z,re,oe){oe*=.5;const ce=re[0],ue=re[1],pe=re[2],he=re[3],fe=Math.sin(oe),de=Math.cos(oe);return Z[0]=ce*de+ue*fe,Z[1]=ue*de-ce*fe,Z[2]=pe*de+he*fe,Z[3]=he*de-pe*fe,Z}s.rotateZ=b;function P(Z,re){const oe=re[0],ce=re[1],ue=re[2];return Z[0]=oe,Z[1]=ce,Z[2]=ue,Z[3]=Math.sqrt(Math.abs(1-oe*oe-ce*ce-ue*ue)),Z}s.calculateW=P;function C(Z,re,oe,ce){const ue=re[0],pe=re[1],he=re[2],fe=re[3];let de=oe[0],ge=oe[1],Ce=oe[2],ve=oe[3],le,me,ee,se,ye;return me=ue*de+pe*ge+he*Ce+fe*ve,me<0&&(me=-me,de=-de,ge=-ge,Ce=-Ce,ve=-ve),1-me>1e-6?(le=Math.acos(me),ee=Math.sin(le),se=Math.sin((1-ce)*le)/ee,ye=Math.sin(ce*le)/ee):(se=1-ce,ye=ce),Z[0]=se*ue+ye*de,Z[1]=se*pe+ye*ge,Z[2]=se*he+ye*Ce,Z[3]=se*fe+ye*ve,Z}s.slerp=C;function l(Z,re){const oe=re[0],ce=re[1],ue=re[2],pe=re[3],he=oe*oe+ce*ce+ue*ue+pe*pe,fe=he?1/he:0;return Z[0]=-oe*fe,Z[1]=-ce*fe,Z[2]=-ue*fe,Z[3]=pe*fe,Z}s.invert=l;function S(Z,re){return Z[0]=-re[0],Z[1]=-re[1],Z[2]=-re[2],Z[3]=re[3],Z}s.conjugate=S;function T(Z,re){return Z[0]*re[0]+Z[1]*re[1]+Z[2]*re[2]+Z[3]*re[3]}s.dot=T;function A(Z,re){const oe=re[0]+re[4]+re[8];let ce;if(oe>0)ce=Math.sqrt(oe+1),Z[3]=.5*ce,ce=.5/ce,Z[0]=(re[5]-re[7])*ce,Z[1]=(re[6]-re[2])*ce,Z[2]=(re[1]-re[3])*ce;else{let ue=0;re[4]>re[0]&&(ue=1),re[8]>re[ue*3+ue]&&(ue=2);const pe=(ue+1)%3,he=(ue+2)%3;ce=Math.sqrt(re[ue*3+ue]-re[pe*3+pe]-re[he*3+he]+1),Z[ue]=.5*ce,ce=.5/ce,Z[3]=(re[pe*3+he]-re[he*3+pe])*ce,Z[pe]=(re[pe*3+ue]+re[ue*3+pe])*ce,Z[he]=(re[he*3+ue]+re[ue*3+he])*ce}return Z}s.fromMat3=A;const x=[0,0,0,0,0,0,0,0,0,0,0,0];function M(Z,re){return e.Mat3.fromMat4(x,re),A(Z,x)}s.fromMat4=M;function D(Z,re,oe){const[ce,ue,pe]=re,he=Math.cos(ce/2),fe=Math.cos(ue/2),de=Math.cos(pe/2),ge=Math.sin(ce/2),Ce=Math.sin(ue/2),ve=Math.sin(pe/2);switch(oe){case"XYZ":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"YXZ":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;case"ZXY":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"ZYX":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;case"YZX":Z[0]=ge*fe*de+he*Ce*ve,Z[1]=he*Ce*de+ge*fe*ve,Z[2]=he*fe*ve-ge*Ce*de,Z[3]=he*fe*de-ge*Ce*ve;break;case"XZY":Z[0]=ge*fe*de-he*Ce*ve,Z[1]=he*Ce*de-ge*fe*ve,Z[2]=he*fe*ve+ge*Ce*de,Z[3]=he*fe*de+ge*Ce*ve;break;default:(0,n.assertUnreachable)(oe)}return Z}s.fromEuler=D;const V=[0,0,0];function R(Z,re,oe){let ce=t.Vec3.dot(re,oe)+1;return ce<r.EPSILON?(ce=0,Math.abs(re[0])>Math.abs(re[2])?t.Vec3.set(V,-re[1],re[0],0):t.Vec3.set(V,0,-re[2],re[1])):t.Vec3.cross(V,re,oe),Z[0]=V[0],Z[1]=V[1],Z[2]=V[2],Z[3]=ce,W(Z,Z),Z}s.fromUnitVec3=R;const E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function I(Z,re,oe,ce){return i.Mat4.fromBasis(E,re,oe,ce),M(Z,E)}s.fromBasis=I;function B(Z){const re=h();return re[0]=Z[0],re[1]=Z[1],re[2]=Z[2],re[3]=Z[3],re}s.clone=B;function w(Z){return g(Z.x,Z.y,Z.z,Z.w)}s.fromObj=w;function O(Z){return{x:Z[0],y:Z[1],z:Z[2],w:Z[3]}}s.toObj=O;function F(Z,re,oe){return re[oe+0]=Z[0],re[oe+1]=Z[1],re[oe+2]=Z[2],re[oe+3]=Z[3],re}s.toArray=F;function L(Z,re,oe){return Z[0]=re[oe+0],Z[1]=re[oe+1],Z[2]=re[oe+2],Z[3]=re[oe+3],Z}s.fromArray=L;function U(Z,re){return Z[0]=re[0],Z[1]=re[1],Z[2]=re[2],Z[3]=re[3],Z}s.copy=U;function q(Z,re,oe,ce,ue){return Z[0]=re,Z[1]=oe,Z[2]=ce,Z[3]=ue,Z}s.set=q;function N(Z,re){return Z[0]===re[0]&&Z[1]===re[1]&&Z[2]===re[2]&&Z[3]===re[3]}s.exactEquals=N;function k(Z,re){const oe=Z[0],ce=Z[1],ue=Z[2],pe=Z[3],he=re[0],fe=re[1],de=re[2],ge=re[3];return Math.abs(oe-he)<=r.EPSILON*Math.max(1,Math.abs(oe),Math.abs(he))&&Math.abs(ce-fe)<=r.EPSILON*Math.max(1,Math.abs(ce),Math.abs(fe))&&Math.abs(ue-de)<=r.EPSILON*Math.max(1,Math.abs(ue),Math.abs(de))&&Math.abs(pe-ge)<=r.EPSILON*Math.max(1,Math.abs(pe),Math.abs(ge))}s.equals=k;function j(Z,re,oe){return Z[0]=re[0]+oe[0],Z[1]=re[1]+oe[1],Z[2]=re[2]+oe[2],Z[3]=re[3]+oe[3],Z}s.add=j;function H(Z){const re=Z[0],oe=Z[1],ce=Z[2],ue=Z[3];return Math.sqrt(re*re+oe*oe+ce*ce+ue*ue)}s.magnitude=H;function G(Z){const re=Z[0],oe=Z[1],ce=Z[2],ue=Z[3];return re*re+oe*oe+ce*ce+ue*ue}s.squaredMagnitude=G;function z(Z,re){return 2*Math.acos(Math.abs((0,c.clamp)(T(Z,re),-1,1)))}s.angle=z;function W(Z,re){const oe=re[0],ce=re[1],ue=re[2],pe=re[3];let he=oe*oe+ce*ce+ue*ue+pe*pe;return he>0&&(he=1/Math.sqrt(he),Z[0]=oe*he,Z[1]=ce*he,Z[2]=ue*he,Z[3]=pe*he),Z}s.normalize=W;const X=[0,0,0],Y=[1,0,0],K=[0,1,0];function Q(Z,re,oe){const ce=t.Vec3.dot(re,oe);return ce<-.999999?(t.Vec3.cross(X,Y,re),t.Vec3.magnitude(X)<1e-6&&t.Vec3.cross(X,K,re),t.Vec3.normalize(X,X),d(Z,X,Math.PI),Z):ce>.999999?(Z[0]=0,Z[1]=0,Z[2]=0,Z[3]=1,Z):(t.Vec3.cross(X,re,oe),Z[0]=X[0],Z[1]=X[1],Z[2]=X[2],Z[3]=1+ce,W(Z,Z))}s.rotationTo=Q;const J=h(),ae=h();function te(Z,re,oe,ce,ue,pe){return C(J,re,ue,pe),C(ae,oe,ce,pe),C(Z,J,ae,2*pe*(1-pe)),Z}s.sqlerp=te;const ne=[0,0,0,0,0,0,0,0,0];function $(Z,re,oe,ce){return ne[0]=oe[0],ne[3]=oe[1],ne[6]=oe[2],ne[1]=ce[0],ne[4]=ce[1],ne[7]=ce[2],ne[2]=-re[0],ne[5]=-re[1],ne[8]=-re[2],W(Z,A(Z,ne))}s.setAxes=$;function ie(Z,re){return`[${Z[0].toPrecision(re)} ${Z[1].toPrecision(re)} ${Z[2].toPrecision(re)} ${Z[3].toPrecision(re)}]`}s.toString=ie,s.Identity=f()})(o||(nm.Quat=o={})),nm}var M2={},sV;function er(){return sV||(sV=1,(function(e){Object.defineProperty(e,"__esMo
1dule",{value:!0}),e.PiDiv180=e.halfPI=void 0,e.degToRad=t,e.radToDeg=r,e.isPowerOfTwo=n,e.absMax=i,e.arcLength=c,e.spiral2d=o,e.halfPI=Math.PI/2,e.PiDiv180=Math.PI/180;function t(s){return s*e.PiDiv180}function r(s){return s/e.PiDiv180}function n(s){return s!==0&&(s&s-1)===0}function i(...s){let h=0,f=0;for(let y=0,_=s.length;y<_;++y){const g=s[y],a=Math.abs(g);a>f&&(h=g,f=a)}return h}function c(s,h){return s*h}function o(s){let h=0,f=0,y=0,_=-1;const g=s*2+1,a=g/2,d=[];for(let p=Math.pow(g,2);p>0;--p){if(-a<h&&h<=a&&-a<f&&f<=a&&d.push([h,f]),h===f||h<0&&h===-f||h>0&&h===1-f){const u=y;y=-_,_=u}h+=y,f+=_}return d}})(M2)),M2}var cV;function Xr(){if(cV)return tm;cV=1,Object.defineProperty(tm,"__esModule",{value:!0}),tm.Mat4=i;const e=rn(),t=wt(),r=rs(),n=er();function i(){return i.zero()}return(function(c){function o(){const ee=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return ee[0]=0,ee}c.zero=o;function s(){const ee=o();return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.identity=s;function h(ee){return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.setIdentity=h;function f(ee){for(let se=0;se<16;se++)if(ee[se]!==0)return!1;return!0}c.isZero=f;function y(ee){for(let se=0;se<16;se++)ee[se]=0;return ee}c.setZero=y;function _(ee){const se=o();for(let ye=0;ye<4;ye++){const Se=ee[ye];for(let Ae=0;Ae<4;Ae++)se[4*Ae+ye]=Se[Ae]}return se}c.ofRows=_;const g=s();function a(ee,se){return u(ee,g,typeof se>"u"?e.EPSILON:se)}c.isIdentity=a;function d(ee){return Array.isArray(ee)&&ee.length===16}c.is=d;function p(ee){for(let se=0;se<16;se++)if(Number.isNaN(ee[se]))return!0;return!1}c.hasNaN=p;function u(ee,se,ye){for(let Se=0;Se<16;Se++)if(Math.abs(ee[Se]-se[Se])>ye)return!1;return!0}c.areEqual=u;function m(ee,se,ye,Se){ee[4*ye+se]=Se}c.setValue=m;function v(ee,se,ye){return ee[4*ye+se]}c.getValue=v;function b(ee,se,ye){return se[ye+0]=ee[0],se[ye+1]=ee[1],se[ye+2]=ee[2],se[ye+3]=ee[3],se[ye+4]=ee[4],se[ye+5]=ee[5],se[ye+6]=ee[6],se[ye+7]=ee[7],se[ye+8]=ee[8],se[ye+9]=ee[9],se[ye+10]=ee[10],se[ye+11]=ee[11],se[ye+12]=ee[12],se[ye+13]=ee[13],se[ye+14]=ee[14],se[ye+15]=ee[15],se}c.toArray=b;function P(ee,se,ye){return ee[0]=se[ye+0],ee[1]=se[ye+1],ee[2]=se[ye+2],ee[3]=se[ye+3],ee[4]=se[ye+4],ee[5]=se[ye+5],ee[6]=se[ye+6],ee[7]=se[ye+7],ee[8]=se[ye+8],ee[9]=se[ye+9],ee[10]=se[ye+10],ee[11]=se[ye+11],ee[12]=se[ye+12],ee[13]=se[ye+13],ee[14]=se[ye+14],ee[15]=se[ye+15],ee}c.fromArray=P;function C(ee,se,ye,Se){return y(ee),m(ee,0,0,se[0]),m(ee,1,0,se[1]),m(ee,2,0,se[2]),m(ee,0,1,ye[0]),m(ee,1,1,ye[1]),m(ee,2,1,ye[2]),m(ee,0,2,Se[0]),m(ee,1,2,Se[1]),m(ee,2,2,Se[2]),m(ee,3,3,1),ee}c.fromBasis=C;function l(ee,se){return ee[0]=se[0],ee[1]=se[1],ee[2]=se[2],ee[3]=se[3],ee[4]=se[4],ee[5]=se[5],ee[6]=se[6],ee[7]=se[7],ee[8]=se[8],ee[9]=se[9],ee[10]=se[10],ee[11]=se[11],ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.copy=l;function S(ee){return l(o(),ee)}c.clone=S;function T(ee,se){return ee[0]=se[12],ee[1]=se[13],ee[2]=se[14],ee}c.getTranslation=T;function A(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[4],be=se[5],xe=se[6],we=se[8],Be=se[9],Me=se[10];return ee[0]=Math.sqrt(ye*ye+Se*Se+Ae*Ae),ee[1]=Math.sqrt(_e*_e+be*be+xe*xe),ee[2]=Math.sqrt(we*we+Be*Be+Me*Me),ee}c.getScaling=A;function x(ee,se){const ye=se[0]+se[5]+se[10];let Se=0;return ye>0?(Se=Math.sqrt(ye+1)*2,ee[3]=.25*Se,ee[0]=(se[6]-se[9])/Se,ee[1]=(se[8]-se[2])/Se,ee[2]=(se[1]-se[4])/Se):se[0]>se[5]&&se[0]>se[10]?(Se=Math.sqrt(1+se[0]-se[5]-se[10])*2,ee[3]=(se[6]-se[9])/Se,ee[0]=.25*Se,ee[1]=(se[1]+se[4])/Se,ee[2]=(se[8]+se[2])/Se):se[5]>se[10]?(Se=Math.sqrt(1+se[5]-se[0]-se[10])*2,ee[3]=(se[8]-se[2])/Se,ee[0]=(se[1]+se[4])/Se,ee[1]=.25*Se,ee[2]=(se[6]+se[9])/Se):(Se=Math.sqrt(1+se[10]-se[0]-se[5])*2,ee[3]=(se[1]-se[4])/Se,ee[0]=(se[8]+se[2])/Se,ee[1]=(se[6]+se[9])/Se,ee[2]=.25*Se),ee}c.getRotation=x;function M(ee,se){const ye=1/Math.sqrt(se[0]*se[0]+se[1]*se[1]+se[2]*se[2]),Se=1/Math.sqrt(se[4]*se[4]+se[5]*se[5]+se[6]*se[6]),Ae=1/Math.sqrt(se[8]*se[8]+se[9]*se[9]+se[10]*se[10]);return ee[0]=se[0]*ye,ee[1]=se[1]*ye,ee[2]=se[2]*ye,ee[3]=0,ee[4]=se[4]*Se,ee[5]=se[5]*Se,ee[6]=se[6]*Se,ee[7]=0,ee[8]=se[8]*Ae,ee[9]=se[9]*Ae,ee[10]=se[10]*Ae,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.extractRotation=M;function D(ee,se){if(ee===se){const ye=se[1],Se=se[2],Ae=se[3],_e=se[6],be=se[7],xe=se[11];ee[1]=se[4],ee[2]=se[8],ee[3]=se[12],ee[4]=ye,ee[6]=se[9],ee[7]=se[13],ee[8]=Se,ee[9]=_e,ee[11]=se[14],ee[12]=Ae,ee[13]=be,ee[14]=xe}else ee[0]=se[0],ee[1]=se[4],ee[2]=se[8],ee[3]=se[12],ee[4]=se[1],ee[5]=se[5],ee[6]=se[9],ee[7]=se[13],ee[8]=se[2],ee[9]=se[6],ee[10]=se[10],ee[11]=se[14],ee[12]=se[3],ee[13]=se[7],ee[14]=se[11],ee[15]=se[15];return ee}c.transpose=D;function V(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[3],be=se[4],xe=se[5],we=se[6],Be=se[7],Me=se[8],Re=se[9],Te=se[10],Ve=se[11],qe=se[12],ke=se[13],ze=se[14],We=se[15],Je=ye*xe-Se*be,De=ye*we-Ae*be,Oe=ye*Be-_e*be,Fe=Se*we-Ae*xe,Le=Se*Be-_e*xe,He=Ae*Be-_e*we,Pe=Me*ke-Re*qe,Ie=Me*ze-Te*qe,Ee=Me*We-Ve*qe,Ue=Re*ze-Te*ke,$e=Re*We-Ve*ke,Ye=Te*We-Ve*ze;let Qe=Je*Ye-De*$e+Oe*Ue+Fe*Ee-Le*Ie+He*Pe;return Qe?(Qe=1/Qe,ee[0]=(xe*Ye-we*$e+Be*Ue)*Qe,ee[1]=(Ae*$e-Se*Ye-_e*Ue)*Qe,ee[2]=(ke*He-ze*Le+We*Fe)*Qe,ee[3]=(Te*Le-Re*He-Ve*Fe)*Qe,ee[4]=(we*Ee-be*Ye-Be*Ie)*Qe,ee[5]=(ye*Ye-Ae*Ee+_e*Ie)*Qe,ee[6]=(ze*Oe-qe*He-We*De)*Qe,ee[7]=(Me*He-Te*Oe+Ve*De)*Qe,ee[8]=(be*$e-xe*Ee+Be*Pe)*Qe,ee[9]=(Se*Ee-ye*$e-_e*Pe)*Qe,ee[10]=(qe*Le-ke*Oe+We*Je)*Qe,ee[11]=(Re*Oe-Me*Le-Ve*Je)*Qe,ee[12]=(xe*Ie-be*Ue-we*Pe)*Qe,ee[13]=(ye*Ue-Se*Ie+Ae*Pe)*Qe,ee[14]=(ke*De-qe*Fe-ze*Je)*Qe,ee[15]=(Me*Fe-Re*De+Te*Je)*Qe,!0):!1}c.tryInvert=V;function R(ee,se){return V(ee,se)||console.warn("non-invertible matrix.",se),ee}c.invert=R;
1function E(ee,se,ye){const Se=se[0],Ae=se[1],_e=se[2],be=se[3],xe=se[4],we=se[5],Be=se[6],Me=se[7],Re=se[8],Te=se[9],Ve=se[10],qe=se[11],ke=se[12],ze=se[13],We=se[14],Je=se[15];let De=ye[0],Oe=ye[1],Fe=ye[2],Le=ye[3];return ee[0]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[1]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[2]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[3]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[4],Oe=ye[5],Fe=ye[6],Le=ye[7],ee[4]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[5]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[6]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[7]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[8],Oe=ye[9],Fe=ye[10],Le=ye[11],ee[8]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[9]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[10]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[11]=De*be+Oe*Me+Fe*qe+Le*Je,De=ye[12],Oe=ye[13],Fe=ye[14],Le=ye[15],ee[12]=De*Se+Oe*xe+Fe*Re+Le*ke,ee[13]=De*Ae+Oe*we+Fe*Te+Le*ze,ee[14]=De*_e+Oe*Be+Fe*Ve+Le*We,ee[15]=De*be+Oe*Me+Fe*qe+Le*Je,ee}c.mul=E;function I(ee,se,ye,Se,Ae,_e){const be=se[0+Ae],xe=se[1+Ae],we=se[2+Ae],Be=se[3+Ae],Me=se[4+Ae],Re=se[5+Ae],Te=se[6+Ae],Ve=se[7+Ae],qe=se[8+Ae],ke=se[9+Ae],ze=se[10+Ae],We=se[11+Ae],Je=se[12+Ae],De=se[13+Ae],Oe=se[14+Ae],Fe=se[15+Ae];let Le=ye[0+_e],He=ye[1+_e],Pe=ye[2+_e],Ie=ye[3+_e];return ee[0+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[1+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[2+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[3+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[4+_e],He=ye[5+_e],Pe=ye[6+_e],Ie=ye[7+_e],ee[4+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[5+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[6+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[7+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[8+_e],He=ye[9+_e],Pe=ye[10+_e],Ie=ye[11+_e],ee[8+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[9+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[10+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[11+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,Le=ye[12+_e],He=ye[13+_e],Pe=ye[14+_e],Ie=ye[15+_e],ee[12+Se]=Le*be+He*Me+Pe*qe+Ie*Je,ee[13+Se]=Le*xe+He*Re+Pe*ke+Ie*De,ee[14+Se]=Le*we+He*Te+Pe*ze+Ie*Oe,ee[15+Se]=Le*Be+He*Ve+Pe*We+Ie*Fe,ee}c.mulOffset=I;function B(ee,se,ye,Se){return E(ee,E(ee,se,ye),Se)}c.mul3=B;function w(ee,se,ye){const Se=ye[0],Ae=ye[1],_e=ye[2];let be,xe,we,Be,Me,Re,Te,Ve,qe,ke,ze,We;return se===ee?(ee[12]=se[0]*Se+se[4]*Ae+se[8]*_e+se[12],ee[13]=se[1]*Se+se[5]*Ae+se[9]*_e+se[13],ee[14]=se[2]*Se+se[6]*Ae+se[10]*_e+se[14],ee[15]=se[3]*Se+se[7]*Ae+se[11]*_e+se[15]):(be=se[0],xe=se[1],we=se[2],Be=se[3],Me=se[4],Re=se[5],Te=se[6],Ve=se[7],qe=se[8],ke=se[9],ze=se[10],We=se[11],ee[0]=be,ee[1]=xe,ee[2]=we,ee[3]=Be,ee[4]=Me,ee[5]=Re,ee[6]=Te,ee[7]=Ve,ee[8]=qe,ee[9]=ke,ee[10]=ze,ee[11]=We,ee[12]=be*Se+Me*Ae+qe*_e+se[12],ee[13]=xe*Se+Re*Ae+ke*_e+se[13],ee[14]=we*Se+Te*Ae+ze*_e+se[14],ee[15]=Be*Se+Ve*Ae+We*_e+se[15]),ee}c.translate=w;function O(ee,se){return ee[0]=1,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=1,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=1,ee[11]=0,ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee[15]=1,ee}c.fromTranslation=O;function F(ee,se){return ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee}c.setTranslation=F;function L(ee,se,ye,Se){return ee[0]=ye[0],ee[4]=ye[1],ee[8]=ye[2],ee[1]=Se[0],ee[5]=Se[1],ee[9]=Se[2],ee[2]=se[0],ee[6]=se[1],ee[10]=se[2],ee}c.setAxes=L;function U(ee,se,ye,Se){let Ae=Se[0],_e=Se[1],be=Se[2],xe=Math.sqrt(Ae*Ae+_e*_e+be*be);if(Math.abs(xe)<e.EPSILON)return s();xe=1/xe,Ae*=xe,_e*=xe,be*=xe;const we=Math.sin(ye),Be=Math.cos(ye),Me=1-Be,Re=se[0],Te=se[1],Ve=se[2],qe=se[3],ke=se[4],ze=se[5],We=se[6],Je=se[7],De=se[8],Oe=se[9],Fe=se[10],Le=se[11],He=Ae*Ae*Me+Be,Pe=_e*Ae*Me+be*we,Ie=be*Ae*Me-_e*we,Ee=Ae*_e*Me-be*we,Ue=_e*_e*Me+Be,$e=be*_e*Me+Ae*we,Ye=Ae*be*Me+_e*we,Qe=_e*be*Me-Ae*we,it=be*be*Me+Be;return ee[0]=Re*He+ke*Pe+De*Ie,ee[1]=Te*He+ze*Pe+Oe*Ie,ee[2]=Ve*He+We*Pe+Fe*Ie,ee[3]=qe*He+Je*Pe+Le*Ie,ee[4]=Re*Ee+ke*Ue+De*$e,ee[5]=Te*Ee+ze*Ue+Oe*$e,ee[6]=Ve*Ee+We*Ue+Fe*$e,ee[7]=qe*Ee+Je*Ue+Le*$e,ee[8]=Re*Ye+ke*Qe+De*it,ee[9]=Te*Ye+ze*Qe+Oe*it,ee[10]=Ve*Ye+We*Qe+Fe*it,ee[11]=qe*Ye+Je*Qe+Le*it,se!==ee&&(ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15]),ee}c.rotate=U;function q(ee,se,ye){let Se=ye[0],Ae=ye[1],_e=ye[2],be=Math.sqrt(Se*Se+Ae*Ae+_e*_e);if(Math.abs(be)<e.EPSILON)return h(ee);be=1/be,Se*=be,Ae*=be,_e*=be;const xe=Math.sin(se),we=Math.cos(se),Be=1-we;return ee[0]=Se*Se*Be+we,ee[1]=Ae*Se*Be+_e*xe,ee[2]=_e*Se*Be-Ae*xe,ee[3]=0,ee[4]=Se*Ae*Be-_e*xe,ee[5]=Ae*Ae*Be+we,ee[6]=_e*Ae*Be+Se*xe,ee[7]=0,ee[8]=Se*_e*Be+Ae*xe,ee[9]=Ae*_e*Be-Se*xe,ee[10]=_e*_e*Be+we,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromRotation=q;
1function N(ee,se,ye){const Se=ye[0],Ae=ye[1],_e=ye[2];return ee[0]=se[0]*Se,ee[1]=se[1]*Se,ee[2]=se[2]*Se,ee[3]=se[3]*Se,ee[4]=se[4]*Ae,ee[5]=se[5]*Ae,ee[6]=se[6]*Ae,ee[7]=se[7]*Ae,ee[8]=se[8]*_e,ee[9]=se[9]*_e,ee[10]=se[10]*_e,ee[11]=se[11]*_e,ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.scale=N;function k(ee,se,ye){return ee[0]=se[0]*ye,ee[1]=se[1]*ye,ee[2]=se[2]*ye,ee[3]=se[3]*ye,ee[4]=se[4]*ye,ee[5]=se[5]*ye,ee[6]=se[6]*ye,ee[7]=se[7]*ye,ee[8]=se[8]*ye,ee[9]=se[9]*ye,ee[10]=se[10]*ye,ee[11]=se[11]*ye,ee[12]=se[12],ee[13]=se[13],ee[14]=se[14],ee[15]=se[15],ee}c.scaleUniformly=k;function j(ee,se){return ee[0]=se[0],ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=se[1],ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=se[2],ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromScaling=j;function H(ee,se){return ee[0]=se,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=se,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=se,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromUniformScaling=H;const G=[0,0,0],z=[0,0,0];function W(ee,se,ye){const Se=t.Vec3.cross(G,se,t.Vec3.unitX);t.Vec3.dot(Se,Se)<e.EPSILON&&t.Vec3.cross(Se,se,t.Vec3.unitY),t.Vec3.normalize(Se,Se);const Ae=t.Vec3.cross(z,se,Se);return t.Vec3.normalize(Ae,Ae),C(ee,Se,Ae,se),ee[12]=ye[0],ee[13]=ye[1],ee[14]=ye[2],ee}c.fromPlane=W;function X(ee,se){return ee[0]=se[0],ee[1]=se[1],ee[2]=se[2],ee[4]=se[3],ee[5]=se[4],ee[6]=se[5],ee[8]=se[6],ee[9]=se[7],ee[10]=se[8],ee}c.fromMat3=X;function Y(ee,se,ye,Se){const[Ae,_e,be,xe]=ye,we=Ae+Ae,Be=_e+_e,Me=be+be,Re=Ae*we,Te=Ae*Be,Ve=Ae*Me,qe=_e*Be,ke=_e*Me,ze=be*Me,We=xe*we,Je=xe*Be,De=xe*Me,[Oe,Fe,Le]=Se;return ee[0]=(1-(qe+ze))*Oe,ee[1]=(Te+De)*Oe,ee[2]=(Ve-Je)*Oe,ee[3]=0,ee[4]=(Te-De)*Fe,ee[5]=(1-(Re+ze))*Fe,ee[6]=(ke+We)*Fe,ee[7]=0,ee[8]=(Ve+Je)*Le,ee[9]=(ke-We)*Le,ee[10]=(1-(Re+qe))*Le,ee[11]=0,ee[12]=se[0],ee[13]=se[1],ee[14]=se[2],ee[15]=1,ee}c.compose=Y;const K=[0,0,0],Q=o();function J(ee,se,ye,Se){let Ae=t.Vec3.magnitude(t.Vec3.set(K,ee[0],ee[1],ee[2]));const _e=t.Vec3.magnitude(t.Vec3.set(K,ee[4],ee[5],ee[6])),be=t.Vec3.magnitude(t.Vec3.set(K,ee[8],ee[9],ee[10]));ne(ee)<0&&(Ae=-Ae),se[0]=ee[12],se[1]=ee[13],se[2]=ee[14],l(Q,ee);const we=1/Ae,Be=1/_e,Me=1/be;return Q[0]*=we,Q[1]*=we,Q[2]*=we,Q[4]*=Be,Q[5]*=Be,Q[6]*=Be,Q[8]*=Me,Q[9]*=Me,Q[10]*=Me,x(ye,Q),Se[0]=Ae,Se[1]=_e,Se[2]=be,ee}c.decompose=J;function ae(ee){const se=(0,t.Vec3)(),ye=(0,r.Quat)(),Se=(0,t.Vec3)();return J(ee,se,ye,Se),{position:se,quaternion:ye,scale:Se}}c.getDecomposition=ae;function te(ee){let se="";for(let ye=0;ye<4;ye++){for(let Se=0;Se<4;Se++)se+=ee[4*Se+ye].toString(),Se<3&&(se+=" ");ye<3&&(se+=` 2`)}return se}c.makeTable=te;function ne(ee){const se=ee[0],ye=ee[1],Se=ee[2],Ae=ee[3],_e=ee[4],be=ee[5],xe=ee[6],we=ee[7],Be=ee[8],Me=ee[9],Re=ee[10],Te=ee[11],Ve=ee[12],qe=ee[13],ke=ee[14],ze=ee[15],We=se*be-ye*_e,Je=se*xe-Se*_e,De=se*we-Ae*_e,Oe=ye*xe-Se*be,Fe=ye*we-Ae*be,Le=Se*we-Ae*xe,He=Be*qe-Me*Ve,Pe=Be*ke-Re*Ve,Ie=Be*ze-Te*Ve,Ee=Me*ke-Re*qe,Ue=Me*ze-Te*qe,$e=Re*ze-Te*ke;return We*$e-Je*Ue+De*Ee+Oe*Ie-Fe*Pe+Le*He}c.determinant=ne;function $(ee,se){return ie(ee,typeof se<"u"?se:e.EPSILON)}c.isRotationAndTranslation=$;function ie(ee,se){const ye=ee[0],Se=ee[1],Ae=ee[2],_e=ee[3],be=ee[4],xe=ee[5],we=ee[6],Be=ee[7],Me=ee[8],Re=ee[9],Te=ee[10],Ve=ee[11],qe=ee[15];if(!(0,e.equalEps)(qe,1,se)||!(0,e.equalEps)(_e,0,se)||!(0,e.equalEps)(Be,0,se)||!(0,e.equalEps)(Ve,0,se))return!1;const ke=Math.abs(ye*(xe*Te-we*Re)-Se*(be*Te-we*Me)+Ae*(be*Re-xe*Me));return!!(0,e.equalEps)(ke,1,se)}function Z(ee,se){return re(ee,typeof se<"u"?se:e.EPSILON)}c.isTranslationAndUniformScaling=Z;function re(ee,se){const ye=ee[0];return(0,e.equalEps)(ee[1],0,se)&&(0,e.equalEps)(ee[2],0,se)&&(0,e.equalEps)(ee[3],0,se)&&(0,e.equalEps)(ee[4],0,se)&&(0,e.equalEps)(ee[5],ye,se)&&(0,e.equalEps)(ee[6],0,se)&&(0,e.equalEps)(ee[7],0,se)&&(0,e.equalEps)(ee[8],0,se)&&(0,e.equalEps)(ee[9],0,se)&&(0,e.equalEps)(ee[10],ye,se)&&(0,e.equalEps)(ee[11],0,se)&&(0,e.equalEps)(ee[15],1,se)}function oe(ee,se){const ye=se[0],Se=se[1],Ae=se[2],_e=se[3],be=ye+ye,xe=Se+Se,we=Ae+Ae,Be=ye*be,Me=Se*be,Re=Se*xe,Te=Ae*be,Ve=Ae*xe,qe=Ae*we,ke=_e*be,ze=_e*xe,We=_e*we;return ee[0]=1-Re-qe,ee[1]=Me+We,ee[2]=Te-ze,ee[3]=0,ee[4]=Me-We,ee[5]=1-Be-qe,ee[6]=Ve+ke,ee[7]=0,ee[8]=Te+ze,ee[9]=Ve-ke,ee[10
2]=1-Be-Re,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromQuat=oe;function ce(ee,se,ye){const Se=se[0],Ae=se[1],_e=se[2],be=Math.cos(Se),xe=Math.sin(Se),we=Math.cos(Ae),Be=Math.sin(Ae),Me=Math.cos(_e),Re=Math.sin(_e);if(ye==="XYZ"){const Te=be*Me,Ve=be*Re,qe=xe*Me,ke=xe*Re;ee[0]=we*Me,ee[4]=-we*Re,ee[8]=Be,ee[1]=Ve+qe*Be,ee[5]=Te-ke*Be,ee[9]=-xe*we,ee[2]=ke-Te*Be,ee[6]=qe+Ve*Be,ee[10]=be*we}else if(ye==="YXZ"){const Te=we*Me,Ve=we*Re,qe=Be*Me,ke=Be*Re;ee[0]=Te+ke*xe,ee[4]=qe*xe-Ve,ee[8]=be*Be,ee[1]=be*Re,ee[5]=be*Me,ee[9]=-xe,ee[2]=Ve*xe-qe,ee[6]=ke+Te*xe,ee[10]=be*we}else if(ye==="ZXY"){const Te=we*Me,Ve=we*Re,qe=Be*Me,ke=Be*Re;ee[0]=Te-ke*xe,ee[4]=-be*Re,ee[8]=qe+Ve*xe,ee[1]=Ve+qe*xe,ee[5]=be*Me,ee[9]=ke-Te*xe,ee[2]=-be*Be,ee[6]=xe,ee[10]=be*we}else if(ye==="ZYX"){const Te=be*Me,Ve=be*Re,qe=xe*Me,ke=xe*Re;ee[0]=we*Me,ee[4]=qe*Be-Ve,ee[8]=Te*Be+ke,ee[1]=we*Re,ee[5]=ke*Be+Te,ee[9]=Ve*Be-qe,ee[2]=-Be,ee[6]=xe*we,ee[10]=be*we}else if(ye==="YZX"){const Te=be*we,Ve=be*Be,qe=xe*we,ke=xe*Be;ee[0]=we*Me,ee[4]=ke-Te*Re,ee[8]=qe*Re+Ve,ee[1]=Re,ee[5]=be*Me,ee[9]=-xe*Me,ee[2]=-Be*Me,ee[6]=Ve*Re+qe,ee[10]=Te-ke*Re}else if(ye==="XZY"){const Te=be*we,Ve=be*Be,qe=xe*we,ke=xe*Be;ee[0]=we*Me,ee[4]=-Re,ee[8]=Be*Me,ee[1]=Te*Re+ke,ee[5]=be*Me,ee[9]=Ve*Re-qe,ee[2]=qe*Re-Ve,ee[6]=xe*Me,ee[10]=ke*Re+Te}return ee[3]=0,ee[7]=0,ee[11]=0,ee[12]=0,ee[13]=0,ee[14]=0,ee[15]=1,ee}c.fromEuler=ce;function ue(ee,se,ye,Se,Ae,_e,be){const xe=2*_e/(ye-se),we=2*_e/(Se-Ae),Be=(ye+se)/(ye-se),Me=(Se+Ae)/(Se-Ae),Re=-(be+_e)/(be-_e),Te=-2*be*_e/(be-_e);return ee[0]=xe,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=we,ee[6]=0,ee[7]=0,ee[8]=Be,ee[9]=Me,ee[10]=Re,ee[11]=-1,ee[12]=0,ee[13]=0,ee[14]=Te,ee[15]=0,ee}c.perspective=ue;function pe(ee,se,ye,Se,Ae,_e,be){const xe=1/(ye-se),we=1/(Se-Ae),Be=1/(be-_e),Me=(ye+se)*xe,Re=(Se+Ae)*we,Te=(be+_e)*Be;return ee[0]=2*xe,ee[1]=0,ee[2]=0,ee[3]=0,ee[4]=0,ee[5]=2*we,ee[6]=0,ee[7]=0,ee[8]=0,ee[9]=0,ee[10]=-2*Be,ee[11]=0,ee[12]=-Me,ee[13]=-Re,ee[14]=-Te,ee[15]=1,ee}c.ortho=pe;function he(ee,se,ye,Se){let Ae,_e,be,xe,we,Be,Me,Re,Te,Ve;const qe=se[0],ke=se[1],ze=se[2],We=Se[0],Je=Se[1],De=Se[2],Oe=ye[0],Fe=ye[1],Le=ye[2];return Math.abs(qe-Oe)<e.EPSILON&&Math.abs(ke-Fe)<e.EPSILON&&Math.abs(ze-Le)<e.EPSILON?h(ee):(Me=qe-Oe,Re=ke-Fe,Te=ze-Le,Ve=1/Math.sqrt(Me*Me+Re*Re+Te*Te),Me*=Ve,Re*=Ve,Te*=Ve,Ae=Je*Te-De*Re,_e=De*Me-We*Te,be=We*Re-Je*Me,Ve=Math.sqrt(Ae*Ae+_e*_e+be*be),Ve?(Ve=1/Ve,Ae*=Ve,_e*=Ve,be*=Ve):(Ae=0,_e=0,be=0),xe=Re*be-Te*_e,we=Te*Ae-Me*be,Be=Me*_e-Re*Ae,Ve=Math.sqrt(xe*xe+we*we+Be*Be),Ve?(Ve=1/Ve,xe*=Ve,we*=Ve,Be*=Ve):(xe=0,we=0,Be=0),ee[0]=Ae,ee[1]=xe,ee[2]=Me,ee[3]=0,ee[4]=_e,ee[5]=we,ee[6]=Re,ee[7]=0,ee[8]=be,ee[9]=Be,ee[10]=Te,ee[11]=0,ee[12]=-(Ae*qe+_e*ke+be*ze),ee[13]=-(xe*qe+we*ke+Be*ze),ee[14]=-(Me*qe+Re*ke+Te*ze),ee[15]=1,ee)}c.lookAt=he;function fe(ee,se,ye,Se){const Ae=se[0],_e=se[1],be=se[2],xe=Se[0],we=Se[1],Be=Se[2];let Me=Ae-ye[0],Re=_e-ye[1],Te=be-ye[2],Ve=Me*Me+Re*Re+Te*Te;Ve>0&&(Ve=1/Math.sqrt(Ve),Me*=Ve,Re*=Ve,Te*=Ve);let qe=we*Te-Be*Re,ke=Be*Me-xe*Te,ze=xe*Re-we*Me;return Ve=qe*qe+ke*ke+ze*ze,Ve>0&&(Ve=1/Math.sqrt(Ve),qe*=Ve,ke*=Ve,ze*=Ve),ee[0]=qe,ee[1]=ke,ee[2]=ze,ee[3]=0,ee[4]=Re*ze-Te*ke,ee[5]=Te*qe-Me*ze,ee[6]=Me*ke-Re*qe,ee[7]=0,ee[8]=Me,ee[9]=Re,ee[10]=Te,ee[11]=0,ee[12]=Ae,ee[13]=_e,ee[14]=be,ee[15]=1,ee}c.targetTo=fe;function de(ee,se){y(ee);for(let ye=0;ye<4;ye++){const Se=se[ye];m(ee,ye,Se,1)}return ee}c.fromPermutation=de;function ge(ee){const se=ee[0]*ee[0]+ee[1]*ee[1]+ee[2]*ee[2],ye=ee[4]*ee[4]+ee[5]*ee[5]+ee[6]*ee[6],Se=ee[8]*ee[8]+ee[9]*ee[9]+ee[10]*ee[10];return Math.sqrt(Math.max(se,ye,Se))}c.getMaxScaleOnAxis=ge;function Ce(ee){return{x:t.Vec3.create(ee[0],ee[1],ee[2]),y:t.Vec3.create(ee[4],ee[5],ee[6]),z:t.Vec3.create(ee[8],ee[9],ee[10])}}c.extractBasis=Ce;const ve=[1,0,0],le=[0,1,0],me=[0,0,1];c.rotX90=q(o(),(0,n.degToRad)(90),ve),c.rotX180=q(o(),(0,n.degToRad)(180),ve),c.rotY90=q(o(),(0,n.degToRad)(90),le),c.rotY180=q(o(),(0,n.degToRad)(180),le),c.rotY270=q(o(),(0,n.degToRad)(270),le),c.rotZ90=q(o(),(0,n.degToRad)(90),me),c.rotZ180=q(o(),(0,n.degToRad)(180),me),c.rotXY90=E(o(),c.rotX90,c.rotY90),c.rotZY90=E(o(),c.rotZ90,c.rotY90),c.rotZYZ90=E(o(),c.rotZY90,c.rotZ90),c.rotZ90X180=E(o(),c.rotZ90,c.rotX180),c.rotY90Z180=E(o(),c.rotY90,c.rotZ180),c.id=s()})(i||(tm.Mat4=i={})),tm}var am={},uV;function ns(){if(uV)return am;
2uV=1,Object.defineProperty(am,"__esModule",{value:!0}),am.Vec2=e;function e(){return e.zero()}return(function(t){function r(){const R=[.1,0];return R[0]=0,R}t.zero=r;function n(R){const E=r();return E[0]=R[0],E[1]=R[1],E}t.clone=n;function i(R){return o(R.x,R.y)}t.fromObj=i;function c(R){return{x:R[0],y:R[1]}}t.toObj=c;function o(R,E){const I=r();return I[0]=R,I[1]=E,I}t.create=o;function s(R){return Number.isNaN(R[0])||Number.isNaN(R[1])}t.hasNaN=s;function h(R){return Array.isArray(R)&&R.length===2}t.is=h;function f(R,E,I){return E[I+0]=R[0],E[I+1]=R[1],E}t.toArray=f;function y(R,E,I){return R[0]=E[I+0],R[1]=E[I+1],R}t.fromArray=y;function _(R,E){return R[0]=E[0],R[1]=E[1],R}t.copy=_;function g(R,E,I){return R[0]=E,R[1]=I,R}t.set=g;function a(R,E,I){return R[0]=E[0]+I[0],R[1]=E[1]+I[1],R}t.add=a;function d(R,E,I){return R[0]=E[0]-I[0],R[1]=E[1]-I[1],R}t.sub=d;function p(R,E,I){return R[0]=E[0]*I[0],R[1]=E[1]*I[1],R}t.mul=p;function u(R,E,I){return R[0]=E[0]/I[0],R[1]=E[1]/I[1],R}t.div=u;function m(R,E,I){return R[0]=E[0]*I,R[1]=E[1]*I,R}t.scale=m;function v(R,E){return R[0]=Math.round(E[0]),R[1]=Math.round(E[1]),R}t.round=v;function b(R,E){return R[0]=Math.ceil(E[0]),R[1]=Math.ceil(E[1]),R}t.ceil=b;function P(R,E){return R[0]=Math.floor(E[0]),R[1]=Math.floor(E[1]),R}t.floor=P;function C(R,E){const I=E[0]-R[0],B=E[1]-R[1];return Math.sqrt(I*I+B*B)}t.distance=C;function l(R,E){const I=E[0]-R[0],B=E[1]-R[1];
2return I*I+B*B}t.squaredDistance=l;function S(R){const E=R[0],I=R[1];return Math.sqrt(E*E+I*I)}t.magnitude=S;function T(R){const E=R[0],I=R[1];return E*E+I*I}t.squaredMagnitude=T;function A(R,E,I){return m(R,M(R,E),I)}t.setMagnitude=A;function x(R,E){return R[0]=1/E[0],R[1]=1/E[1],R}t.inverse=x;function M(R,E){const I=E[0],B=E[1];let w=I*I+B*B;return w>0&&(w=1/Math.sqrt(w),R[0]=E[0]*w,R[1]=E[1]*w),R}t.normalize=M;function D(R,E){return R[0]===E[0]&&R[1]===E[1]}t.areEqual=D;function V(R,E){return`[${R[0].toPrecision(E)} ${R[1].toPrecision(E)}}]`}t.toString=V})(e||(am.Vec2=e={})),am}var om={},lV;function Fa(){if(lV)return om;lV=1,Object.defineProperty(om,"__esModule",{value:!0}),om.Vec4=t;const e=rn();function t(){return t.zero()}return(function(r){function n(){const E=[.1,0,0,0];return E[0]=0,E}r.zero=n;function i(E){const I=n();return I[0]=E[0],I[1]=E[1],I[2]=E[2],I[3]=E[3],I}r.clone=i;function c(E,I,B,w){const O=n();return O[0]=E,O[1]=I,O[2]=B,O[3]=w,O}r.create=c;function o(E,I){return E[0]=I.center[0],E[1]=I.center[1],E[2]=I.center[2],E[3]=I.radius,E}r.fromSphere=o;function s(E){return o(n(),E)}r.ofSphere=s;function h(E){return Number.isNaN(E[0])||Number.isNaN(E[1])||Number.isNaN(E[2])||Number.isNaN(E[3])}r.hasNaN=h;function f(E){return Array.isArray(E)&&E.length===4}r.is=f;function y(E,I,B){return I[B+0]=E[0],I[B+1]=E[1],I[B+2]=E[2],I[B+3]=E[3],I}r.toArray=y;function _(E,I,B){return E[0]=I[B+0],E[1]=I[B+1],E[2]=I[B+2],E[3]=I[B+3],E}r.fromArray=_;function g(E,I,B){I[B+0]=E[0],I[B+1]=E[1],I[B+2]=E[2]}r.toVec3Array=g;function a(E,I,B){return E[0]=I[B+0],E[1]=I[B+1],E[2]=I[B+2],E[3]=0,E}r.fromVec3Array=a;function d(E,I){return E[0]=I[0],E[1]=I[1],E[2]=I[2],E[3]=I[3],E}r.copy=d;function p(E,I,B,w,O){return E[0]=I,E[1]=B,E[2]=w,E[3]=O,E}r.set=p;function u(E,I,B){return E[0]=I[0]+B[0],E[1]=I[1]+B[1],E[2]=I[2]+B[2],E[3]=I[3]+B[3],E}r.add=u;function m(E,I){const B=I[0]-E[0],w=I[1]-E[1],O=I[2]-E[2],F=I[3]-E[3];return Math.sqrt(B*B+w*w+O*O+F*F)}r.distance=m;function v(E,I,B){return E[0]=I[0]*B,E[1]=I[1]*B,E[2]=I[2]*B,E[4]=I[4]*B,E}r.scale=v;function b(E,I){return E[0]=Math.round(I[0]),E[1]=Math.round(I[1]),E[2]=Math.round(I[2]),E[3]=Math.round(I[3]),E}r.round=b;function P(E,I){return E[0]=Math.ceil(I[0]),E[1]=Math.ceil(I[1]),E[2]=Math.ceil(I[2]),E[3]=Math.ceil(I[3]),E}r.ceil=P;function C(E,I){return E[0]=Math.floor(I[0]),E[1]=Math.floor(I[1]),E[2]=Math.floor(I[2]),E[3]=Math.floor(I[3]),E}r.floor=C;function l(E,I){const B=I[0]-E[0],w=I[1]-E[1],O=I[2]-E[2],F=I[3]-E[3];return B*B+w*w+O*O+F*F}r.squaredDistance=l;function S(E){const I=E[0],B=E[1],w=E[2],O=E[3];return Math.sqrt(I*I+B*B+w*w+O*O)}r.norm=S;function T(E){const I=E[0],B=E[1],w=E[2],O=E[3];
2return I*I+B*B+w*w+O*O}r.squaredNorm=T;function A(E,I,B){const w=I[0],O=I[1],F=I[2],L=I[3];return E[0]=B[0]*w+B[4]*O+B[8]*F+B[12]*L,E[1]=B[1]*w+B[5]*O+B[9]*F+B[13]*L,E[2]=B[2]*w+B[6]*O+B[10]*F+B[14]*L,E[3]=B[3]*w+B[7]*O+B[11]*F+B[15]*L,E}r.transformMat4=A;function x(E,I){return E[0]*I[0]+E[1]*I[1]+E[2]*I[2]+E[3]*I[3]}r.dot=x;function M(E,I){return E[0]=1/I[0],E[1]=1/I[1],E[2]=1/I[2],E[3]=1/I[3],E}r.inverse=M;function D(E,I){return E[0]===I[0]&&E[1]===I[1]&&E[2]===I[2]&&E[3]===I[3]}r.exactEquals=D;function V(E,I){const B=E[0],w=E[1],O=E[2],F=E[3],L=I[0],U=I[1],q=I[2],N=I[3];return Math.abs(B-L)<=e.EPSILON*Math.max(1,Math.abs(B),Math.abs(L))&&Math.abs(w-U)<=e.EPSILON*Math.max(1,Math.abs(w),Math.abs(U))&&Math.abs(O-q)<=e.EPSILON*Math.max(1,Math.abs(O),Math.abs(q))&&Math.abs(F-N)<=e.EPSILON*Math.max(1,Math.abs(F),Math.abs(N))}r.equals=V;function R(E,I){return`[${E[0].toPrecision(I)} ${E[1].toPrecision(I)} ${E[2].toPrecision(I)} ${E[3].toPrecision(I)}]`}r.toString=R})(t||(om.Vec4=t={})),om}var dV;function NZ(){return dV||(dV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EPSILON=e.Quat=e.Vec4=e.Vec3=e.Vec2=e.Mat3=e.Mat4=void 0;const t=Xr();Object.defineProperty(e,"Mat4",{enumerable:!0,get:function(){return t.Mat4}});const r=K_();Object.defineProperty(e,"Mat3",{enumerable:!0,get:function(){return r.Mat3}});const n=ns();Object.defineProperty(e,"Vec2",{enumerable:!0,get:function(){return n.Vec2}});const i=wt();Object.defineProperty(e,"Vec3",{enumerable:!0,get:function(){return i.Vec3}});const c=Fa();Object.defineProperty(e,"Vec4",{enumerable:!0,get:function(){return c.Vec4}});const o=rs();Object.defineProperty(e,"Quat",{enumerable:!0,get:function(){return o.Quat}});const s=rn();Object.defineProperty(e,"EPSILON",{enumerable:!0,get:function(){return s.EPSILON}})})(A2)),A2}var sm={},fV;function Tf(){if(fV)return sm;fV=1,Object.defineProperty(sm,"__esModule",{value:!0}),sm.Tensor=void 0;const e=Xr(),t=K_();var r;return(function(n){function i(R,E,I){const B=[];for(let O=0;O<E.length;O++)B[O]=E[E.length-O-1];const w=[1];for(let O=1;O<R.length;O++)w[O]=R[B[O-1]];return{dimensions:R,axisOrderFastToSlow:B,axisOrderSlowToFast:E,accessDimensions:w,defaultCtor:I||Float64Array}}function c(R,E){return{space:R,data:E}}n.create=c;function o(R,E,I){const B=i(R,E,I),{get:w,set:O,add:F,dataOffset:L,getCoords:U}=u(B);return{rank:R.length,dimensions:R,axisOrderSlowToFast:E,create:m(B),get:w,set:O,add:F,dataOffset:L,getCoords:U}}n.Space=o;function s(R){return R}n.Data1=s;function h(R,E){return o([R],[0],E)}n.Vector=h;function f(R,E,I){return o([R,E],[1,0],I)}n.ColumnMajorMatrix=f;function y(R,E,I){return o([R,E],[0,1],I)}n.RowMajorMatrix=y;function _(R,E,I){if(E.rank!==2)throw new Error("Invalid tensor rank");const B=Math.min(4,E.dimensions[0]),w=Math.min(4,E.dimensions[1]);for(let O=0;O<B;O++)for(let F=0;F<w;F++)e.Mat4.setValue(R,O,F,E.get(I,O,F));return R}n.toMat4=_;function g(R,E,I){if(E.rank!==2)throw new Error("Invalid tensor rank");const B=Math.min(3,E.dimensions[0]),w=Math.min(3,E.dimensions[1]);for(let O=0;O<B;O++)for(let F=0;F<w;F++)t.Mat3.setValue(R,O,F,E.get(I,O,F));return R}n.toMat3=g;function a(R,E,I){if(E.rank!==1)throw new Error("Invalid tensor rank");const B=Math.min(3,E.dimensions[0]);for(let w=0;w<B;w++)R[w]=I[w];return R}n.toVec3=a;function d(R,E,I){if(E.rank!==1)throw new Error("Invalid tensor rank");const B=Math.min(4,E.dimensions[0]);for(let w=0;w<B;w++)R[w]=I[w];return R}n.toVec4=d;function p(R,E){const I=R.length;if(I!==E.length)return!1;for(let B=0;B<I;B++)if(R[B]!==E[B])return!1;return!0}n.areEqualExact=p;function u(R){const{dimensions:E,axisOrderFastToSlow:I}=R;switch(E.length){case 1:return{get:(B,w)=>B[w],set:(B,w,O)=>B[w]=O,add:(B,w,O)=>B[w]+=O,dataOffset:B=>B,getCoords:(B,w)=>(w[0]=B,w)};case 2:{if(I[0]===0&&I[1]===1){const B=E[0];return{get:(w,O,F)=>w[F*B+O],set:(w,O,F,L)=>w[F*B+O]=L,add:(w,O,F,L)=>w[F*B+O]+=L,dataOffset:(w,O)=>O*B+w,getCoords:(w,O)=>(O[0]=w%B,O[1]=Math.floor(w/B),O)}}if(I[0]===1&&I[1]===0){const B=E[1];return{get:(w,O,F)=>w[O*B+F],set:(w,O,F,L)=>w[O*B+F]=L,add:(w,O,F,L)=>w[O*B+F]+=L,dataOffset:(w,O)=>w*B+O,getCoords:(w,O)=>(O[0]=Math.floor(w/B),O[1]=w%B,O)}}throw new Error("bad axis order")}case 3:{if(I[0]===0&&I[1]===1&&I[2]===2){const B=E[0],w=E[1],O=B*w;return{get:(F,L,U,q)=>F[L+U*B+q*O],set:(F,L,U,q,N)=>F[L+U*B+q*O]=N,add:(F,L,U,q,N)=>F[L+U*B+q*O]+=N,dataOffset:(F,L,U)=>F+L*B+U*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=F%B,L[1]=U%w,L[2]=Math.floor(U/w),L}}}if(I[0]===0&&I[1]===2&&I[2]===1){const B=E[0],w=E[2],O=B*w;return{get:(F,L,U,q)=>F[L+q*B+U*O],set:(F,L,U,q,N)=>F[L+q*B+U*O]=N,add:(F,L,U,q,N)=>F[L+q*B+U*O]+=N,dataOffset:(F,L,U)=>F+U*B+L*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=F%B,L[1]=Math.floor(U/w),L[2]=U%w,L}}}if(I[0]===1&&I[1]===0&&I[2]===2){const B=E[1],w=E[0],O=B*w;return{get:(F,L,U,q)=>F[U+L*B+q*O],set:(F,L,U,q,N)=>F[U+L*B+q*O]=N,add:(F,L,U,q,N)=>F[U+L*B+q*O]+=N,dataOffset:(F,L,U)=>L+F*B+U*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=U%w,L[1]=F%B,L[2]=Math.floor(U/w),L}}}if(I[0]===1&&I[1]===2&&I[2]===0){const B=E[1],w=E[2],O=B*w;return{get:(F,L,U,q)=>F[U+q*B+L*O],set:(F,L,U,q,N)=>F[U+q*B+L*O]=N,add:(F,L,U,q,N)=>F[U+q*B+L*O]+=N,dataOffset:(F,L,U)=>L+U*B+F*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=Math.floor(U/w),L[1]=F%B,L[2]=U%w,L}}}if(I[0]===2&&I[1]===0&&I[2]===1){const B=E[2],w=E[0],O=B*w;return{get:(F,L,U,q)=>F[q+L*B+U*O],set:(F,L,U,q,N)=>F[q+L*B+U*O]=N,add:(F,L,U,q,N)=>F[q+L*B+U*O]+=N,dataOffset:(F,L,U)=>U+F*B+L*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=U%w,L[1]=Math.floor(U/w),L[2]=F%B,L}}}if(I[0]===2&&I[1]===1&&I[2]===0){const B=E[2],w=E[1],O=B*w;return{get:(F,L,U,q)=>F[q+U*B+L*O],set:(F,L,U,q,N)=>F[q+U*B+L*O]=N,add:(F,L,U,q,N)=>F[q+U*B+L*O]+=N,dataOffset:(F,L,U)=>U+L*B+F*O,getCoords:(F,L)=>{const U=Math.floor(F/B);return L[0]=Math.floor(U/w),L[1]=U%w,L[2]=F%B,L}}}throw new Error("bad axis order")}default:return{get:(B,...w)=>B[v(R,w)],set:(B,...w)=>B[v(R,w)]=w[w.length-1],add:(B,...w)=>B[v(R,w)]+=w[w.length-1],dataOffset:(...B)=>v(R,B),getCoords:(B,w)=>b(R,B,w)}}}function m(R){const{dimensions:E}=R;let I=1;for(let B=0,w=E.length;B<w;B++)I*=E[B];return B=>new(B||R.defaultCtor)(I)}function v(R,E){const{accessDimensions:I,axisOrderFastToSlow:B}=R,w=I.length-1;let O=I[w]*E[B[w]];for(let F=w-1;F>=0;F--)O=(O+E[B[F]])*I[F];return O}function b(R,E,I){const{dimensions:B,axisOrderFastToSlow:w}=R,O=B.length;let F=E;for(let L=0;L<O;L++){const U=B[w[L]];I[w[L]]=F%U,F=Math.floor(F/U)}return I[w[O+1]]=F,I}function P(R){const E=[];for(let I=0;I<R.length;I++)E[I]=R[R.length-I-1];return E}n.invertAxisOrder=P;function C(R,E){const I=[];for(let B=0;B<R.length;B++)I[B]=R[E[B]];return I}function l(R){const E=new Int32Array(R.length);for(let I=0;I<R.length;I++)E[R[I]]=I;return I=>C(I,E)}n.convertToCanonicalAxisIndicesFastToSlow=l;function S(R){const E=new Int32Array(R.length);for(let I=0;I<R.length;I++)E[R[R.length-I-1]]=I;return I=>C(I,E)}n.convertToCanonicalAxisIndicesSlowToFast=S;function T(R,E){const[I]=R.space.dimensions,{data:B}=R,w=new Uint8Array(B.length);let O=-1;if(B[0]<E)for(let F=0;F<I&&B[F]<E;F++)w[F]=1,O=F;if(B[I-1]<E)for(let F=I-1;F>O&&B[F]<E;F--)w[F]=1;return w}function A(R,E){const[I,B]=R.space.dimensions,{dataOffset:w,getCoords:O}=R.space,{data:F}=R,L=new Uint8Array(F.length),U=[],q=[0,0],N=I-1,k=B-1,j=(H,G)=>H===0||G===0||H===N||G===k;for(let H=0;H<B;H++)for(let G=0;G<I;G++){const z=w(G,H);if(!L[z]&&F[z]<E&&j(G,H))for(U.push(z);U.length>0;){const W=U.pop();if(L[W])continue;L[W]=1,O(W,q);const[X,Y]=q;if(X>0){const K=w(X-1,Y);!L[K]&&F[K]<E&&U.push(K)}if(X<N){const K=w(X+1,Y);!L[K]&&F[K]<E&&U.push(K)}if(Y>0){const K=w(X,Y-1);!L[K]&&F[K]<E&&U.push(K)}if(Y<k){const K=w(X,Y+1);!L[K]&&F[K]<E&&U.push(K)}}}return L}function x(R,E){const[I,B,w]=R.space.dimensions,{dataOffset:O,getCoords:F}=R.space,L=[],U=[0,0,0],q=I-1,N=B-1,k=w-1,j=(z,W,X)=>z===0||W===0||X===0||z===q||W===N||X===k,{data:H}=R,G=new Uint8Array(H.length);for(let z=0;z<w;z++)for(let W=0;W<B;W++)for(let X=0;X<I;X++){const Y=O(X,W,z);if(H[Y]<E&&j(X,W,z)&&!G[Y])for(L.push(Y);L.length>0;){const K=L.pop();if(G[K])continue;G[K]=1,F(K,U);const[Q,J,ae]=U;if(Q>0){const te=O(Q-1,J,ae);!G[te]&&H[te]<E&&L.push(te)}if(Q<q){const te=O(Q+1,J,ae);!G[te]&&H[te]<E&&L.push(te)}if(J>0){const te=O(Q,J-1,ae);!G[te]&&H[te]<E&&L.push(te)}if(J<N){const te=O(Q,J+1,ae);!G[te]&&H[te]<E&&L.push(te)}if(ae>0){const te=O(Q,J,ae-1);!G[te]&&H[te]<E&&L.push(te)}if(ae<k){const te=O(Q,J,ae+1);!G[te]&&H[te]<E&&L.push(te)}}}return G}function M(R,E){switch(R.space.dimensions.length){case 1:return T(R,E);case 2:return A(R,E);case 3:return x(R,E);default:throw new Error("Floodfill only implemented for rank-1, rank-2 and rank-3 tensors.")}}n.floodfill=M;function D(R,E,I,B){const{dataOffset:w}=B.space,O=E*2;switch(B.space.dimensions.length){case 1:return R==="outside"?(F,L)=>{const U=F[L];return U<E&&I[L]?O:U}:(F,L)=>{const U=F[L];return U<E&&!I[L]?O:U};case 2:return R==="outside"?(F,L,U)=>{const q=w(L,U),N=F[q];return N<E&&I[q]?O:N}:(F,L,U)=>{const q=w(L,U),N=F[q];return N<E&&!I[q]?O:N};case 3:return R==="outside"?(F,L,U,q)=>{const N=w(L,U,q),k=F[N];return k<E&&I[N]?O:k}:(F,L,U,q)=>{const N=w(L,U,q),k=F[N];return k<E&&!I[N]?O:k};default:throw new Error("Floodfill only implemented for rank-1, rank-2 and rank-3 tensors.")}}function V(R,E,I){const B=M(R,E),w={...R.space,get:D(I,E,B,R)};return n.create(w,R.data)}n.createFloodfilled=V})(r||(sm.Tensor=r={})),sm}var mV;
2function Ge(){return mV||(mV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(NZ(),e),t.__exportStar(Tf(),e)})(x2)),x2}var F_=Ge(),qn={},D2={},I2={},Kl={},w2={},cm={},pV;function Y_(){if(pV)return cm;pV=1,Object.defineProperty(cm,"__esModule",{value:!0}),cm.BitFlags=void 0;var e;return(function(t){function r(c){return c}t.create=r;function n(c,o){return(c&o)!==0}t.has=n;function i(c,o){return!!o&&(c&o)===o}t.hasAll=i})(e||(cm.BitFlags=e={})),cm}var um={},hV;function ED(){if(hV)return um;hV=1,Object.defineProperty(um,"__esModule",{value:!0}),um.StringBuilder=void 0;var e;return(function(t){function r(l=512){return{current:[],offset:0,capacity:l,chunks:[]}}t.create=r;function n(l){return l.chunks.length?(l.offset>0&&(l.chunks[l.chunks.length]=l.current.length===l.offset?l.current.join(""):l.current.slice(0,l.offset).join("")),l.chunks.join("")):l.current.length===l.offset?l.current.join(""):l.current.splice(0,l.offset).join("")}t.getString=n;function i(l){let S=0;for(const T of l.chunks)S+=T.length;for(let T=0;T<l.offset;T++)S+=l.current[T].length;return S}t.getSize=i;function c(l){return l.offset>0&&(l.current.length===l.offset?l.chunks[l.chunks.length]=l.current.join(""):l.chunks[l.chunks.length]=l.current.slice(0,l.offset).join(""),l.offset=0),l.chunks}t.getChunks=c;let o;(function(l){l[l.Count=512]="Count"})(o||(o={}));const s=[];(function(){let l="";for(let S=0;S<o.Count;S++)s[S]=l,l=l+" "})();function h(l){g(l,` 3`)}t.newline=h;function f(l,S){S>0&&g(l,s[S])}t.whitespace=f;function y(l){g(l," ")}t.whitespace1=y;function _(l,S){S&&(l.offset===l.capacity&&(l.chunks[l.chunks.length]=l.current.join(""),l.offset=0),l.current[l.offset++]=S)}t.write=_;function g(l,S){l.offset===l.capacity&&(l.chunks[l.chunks.length]=l.current.join(""),l.offset=0),l.current[l.offset++]=S}t.writeSafe=g;function a(l,S,T){if(!S){f(l,T);return}const A=T-S.length;f(l,A),g(l,S)}t.writePadLeft=a;function d(l,S,T){if(!S){f(l,T);return}const A=T-S.length;g(l,S),f(l,A)}t.writePadRight=d;function p(l,S){g(l,""+S)}t.writeInteger=p;function u(l,S){g(l,""+S+" ")}t.writeIntegerAndSpace=u;function m(l,S,T){const A=""+S,x=T-A.length;f(l,x),g(l,A)}t.writeIntegerPadLeft=m;function v(l,S,T){const A=""+S,x=T-A.length;g(l,A),f(l,x)}t.writeIntegerPadRight=v;function b(l,S,T){g(l,""+Math.round(T*S)/T)}t.writeFloat=b;function P(l,S,T,A){const x=""+Math.round(T*S)/T,M=A-x.length;f(l,M),g(l,x)}t.writeFloatPadLeft=P;function C(l,S,T,A){const x=""+Math.round(T*S)/T,M=A-x.length;g(l,x),f(l,M)}t.writeFloatPadRight=C})(e||(um.StringBuilder=e={})),um}var lm={},Yl={},gV;function ci(){if(gV)return Yl;gV=1,Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.now=void 0,Yl.formatTimespan=t;const e=(function(){if(typeof window<"u"&&window.performance){const r=window.performance;return()=>r.now()}else return typeof process<"u"&&process.hrtime!=="undefined"&&typeof process.hrtime=="function"?()=>{const r=process.hrtime();return r[0]*1e3+r[1]/1e6}:Date.now?()=>Date.now():()=>+new Date})();Yl.now=e;function t(r,n=!0){if(isNaN(r))return"n/a";const i=Math.floor(r/(3600*1e3)),c=Math.floor(r/(60*1e3)%60),o=Math.floor(r/1e3%60);let s=Math.floor(r%1e3).toString();for(;s.length<3;)s="0"+s;for(;!n&&s.length>1&&s[s.length-1]==="0";)s=s.substr(0,s.length-1);return i>0?`${i}h${c}m${o}.${s}s`:c>0?`${c}m${o}.${s}s`:o>0?`${o}.${s}s`:`${r.toFixed(0)}ms`}return Yl}var yV;function Q_(){if(yV)return lm;yV=1,Object.defineProperty(lm,"__esModule",{value:!0}),lm.UUID=void 0;const e=ci();var t;return(function(r){const n=typeof btoa<"u"?btoa:h=>Buffer.from(h).toString("base64"),i=[];function c(){let h=+new Date+(0,e.now)();for(let f=0;f<16;f++)i[f]=String.fromCharCode((h+Math.random()*255)%255|0),h=Math.floor(h/255);return n(i.join("")).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22)}r.create22=c;function o(){let h=+new Date+(0,e.now)();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(y){const _=(h+Math.random()*16)%16|0;return h=Math.floor(h/16),(y==="x"?_:_&3|8).toString(16)})}r.createv4=o;function s(h){return typeof h=="string"}r.is=s})(t||(lm.UUID=t={})),lm}var Ql={},vV;function qZ(){if(vV)return Ql;
3vV=1,Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.Mask=void 0,Ql.sortAsc=t;function e(n,i){return n-i}function t(n){return Array.prototype.sort.call(n,e),n}var r;return(function(n){class i{has(m){return!1}forEach(m,v){return v}constructor(){this.size=0}}class c{has(m){return m===this.idx}forEach(m,v){return m(this.idx,v),v}constructor(m){this.idx=m,this.size=1}}class o{has(m){return m<this.length&&!!this.mask[m]}_forEach(m,v){for(let b=0;b<this.length;b++)this.mask[b]&&m(b,v)}forEach(m,v){return this._forEach(m,v),v}constructor(m,v){this.mask=m,this.size=v,this.length=m.length}}class s{has(m){return!0}_forEach(m,v){for(let b=0;b<this.size;b++)m(b,v)}forEach(m,v){return this._forEach(m,v),v}constructor(m){this.size=m}}class h{has(m){return this.set.has(m)}_forEach(m,v){for(const b of this.flatten())m(b,v)}flatten(){if(this._flat)return this._flat;const m=new Int32Array(this.size);let v=0;return this.set.forEach(b=>m[v++]=b),t(m),this._flat=m,this._flat}forEach(m,v){return this._forEach(m,v),v}constructor(m){this.set=m,this._flat=void 0,this.size=m.size}}function f(u){return new s(u)}n.always=f,n.never=new i;function y(u){return new h(u)}n.ofSet=y;function _(u){return new c(u)}n.singleton=_;function g(u){const m=u.length;if(m===0)return new i;if(m===1)return new c(u[0]);let v=0;for(const C of u)C>v&&(v=C);if(m===v)return new s(m);if(m/v<1/12){const C=new Set;for(const l of u)C.add(l);return new h(C)}const P=new Int8Array(v+1);for(const C of u)P[C]=1;return new o(P,u.length)}n.ofUniqueIndices=g;function a(u,m){return new o(u,m)}n.ofMask=a;function d(u,m){for(const v of m)if(u.has(v))return!0;return!1}n.hasAny=d;function p(u,m){let v=0,b=0;if(m.forEach(P=>{u.has(P)||(v++,P>b&&(b=P))}),v/b<1/12){const P=new Set;return m.forEach(C=>{u.has(C)||P.add(C)}),y(P)}else{const P=new Uint8Array(b+1);return m.forEach(C=>{u.has(C)||(P[C]=1)}),a(P,v)}}n.complement=p})(r||(Ql.Mask=r={})),Ql}var so={},aC={},bV;
3function Yn(){if(bV)return aC;bV=1,Object.defineProperty(aC,"__esModule",{value:!0}),aC.idFactory=e;function e(t=0,r=Number.MAX_SAFE_INTEGER){let n=t;return()=>{const i=n;return n=(n+1)%r,i}}return aC}var _V;function Kr(){if(_V)return so;_V=1,Object.defineProperty(so,"__esModule",{value:!0}),so.ValueCell=so.ValueBox=so.ValueRef=void 0;const e=Yn();var t;(function(c){function o(h){return{ref:h}}c.create=o;function s(h,f){return h.ref=f,h}c.set=s})(t||(so.ValueRef=t={}));const r=(0,e.idFactory)(0,2147483647);var n;(function(c){function o(h,f){return{id:r(),version:0,value:h,metadata:f}}c.create=o;function s(h,f){return{id:h.id,version:h.version+1,value:f,metadata:h.metadata}}c.withValue=s})(n||(so.ValueBox=n={}));var i;return(function(c){function o(y,_){return t.create(n.create(y,_))}c.create=o;function s(y,_){return t.set(y,n.withValue(y.ref,_))}c.update=s;function h(y,_){return t.set(y,_)}c.set=h;function f(y,_){return y.ref.value!==_?s(y,_):y}c.updateIfChanged=f})(i||(so.ValueCell=i={})),so}var SV;function et(){return SV||(SV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.merge=e.assign=e.noop=e.Mask=e.UUID=e.StringBuilder=e.BitFlags=void 0,e.round=s,e.arrayEqual=h,e.deepEqual=y,e.shallowEqual=_,e.shallowEqualObjects=g,e.shallowEqualArrays=a,e.defaults=d,e.extend=p,e.shallowClone=u,e.formatTime=C,e.formatProgress=l,e.formatBytes=S;const t=At,r=Y_();Object.defineProperty(e,"BitFlags",{enumerable:!0,get:function(){return r.BitFlags}});const n=ED();Object.defineProperty(e,"StringBuilder",{enumerable:!0,get:function(){return n.StringBuilder}});const i=Q_();Object.defineProperty(e,"UUID",{enumerable:!0,get:function(){return i.UUID}});const c=qZ();Object.defineProperty(e,"Mask",{enumerable:!0,get:function(){return c.Mask}}),t.__exportStar(Kr(),e);const o=function(){};e.noop=o;function s(T,A){const x=Math.pow(10,A);return Math.round(x*T)/x}function h(T,A){const x=T.length;if(x!==A.length)return!1;for(let M=0;M<x;M++)if(T[M]!==A[M])return!1;return!0}const f=Object.prototype.hasOwnProperty;function y(T,A){if(T===A)return!0;const x=Array.isArray(T),M=Array.isArray(A);if(x&&M){if(T.length!==A.length)return!1;for(let D=0;D<T.length;D++)if(!y(T[D],A[D]))return!1;return!0}if(x!==M)return!1;if(T&&A&&typeof T=="object"&&typeof A=="object"){const D=Object.keys(T);if(D.length!==Object.keys(A).length)return!1;const V=T instanceof Date,R=A instanceof Date;if(V&&R)return T.getTime()===A.getTime();if(V!==R)return!1;const E=T instanceof RegExp,I=A instanceof RegExp;if(E&&I)return T.toString()===A.toString();if(E!==I)return!1;for(let B=0;B<D.length;B++)if(!f.call(A,D[B]))return!1;for(let B=0;B<D.length;B++)if(!y(T[D[B]],A[D[B]]))return!1;return!0}return!1}function _(T,A){if(T===A)return!0;const x=Array.isArray(T),M=Array.isArray(A);return x&&M?a(T,A):x!==M?!1:T&&A&&typeof T=="object"&&typeof A=="object"?g(T,A):!1}function g(T,A){if(T===A)return!0;if(!T||!A)return!1;const x=Object.keys(T);if(Object.keys(A).length!==x.length)return!1;for(const M of x)if(!f.call(T,M)||T[M]!==A[M])return!1;return!0}function a(T,A){if(T===A)return!0;if(!T||!A||T.length!==A.length)return!1;for(let x=0,M=T.length;x<M;++x)if(T[x]!==A[x])return!1;return!0}function d(T,A){return T!==void 0?T:A}function p(T,A,x){let M;const D=A,V=T,R=x;for(const E of Object.keys(A))M=D[E],M!==void 0?V[E]=M:x&&(V[E]=R[E]);if(x)for(const E of Object.keys(x))M=V[E],M===void 0&&(V[E]=R[E]);return T}function u(T){return p({},T)}function m(T){for(let A=1;A<arguments.length;A++){const x=arguments[A];for(const M of Object.keys(x))f.call(x,M)&&(T[M]=x[M])}return T}e.assign=Object.assign||m;function v(T,A){let x=!1;for(const M of Object.keys(A))if(f.call(A,M)&&A[M]!==T[M]){x=!0;break}return x?(0,e.assign)(u(T),A):T}function b(T){let A=T;for(let x=1;x<arguments.length;x++)if(arguments[x]&&(A=v(T,arguments[x]),A!==T)){for(let M=x+1;M<arguments.length;M++)A=(0,e.assign)(A,arguments[M]);break}return A}e.merge=b;function P(T){return(T<10?"0":"")+T}function C(T){const A=T.getHours(),x=T.getMinutes(),M=T.getSeconds();return`${A}:${P(x)}:${P(M)}`}function l(T){const A=T.root.progress;if(A.isIndeterminate)return A.message;const x=(100*A.current/A.max).toFixed(2);return`${A.message} ${x}%`}function S(T){const A=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],x=Math.floor(Math.log(T)/Math.log(1024));return`${(T/Math.pow(1024,x)).toFixed(2)} ${A[x]}`}})(w2)),w2}var V2={},dm={},fm={},mm={},co={},CV;function G$(){if(CV)return co;CV=1,Object.defineProperty(co,"__esModule",{value:!0}),co.getArrayBounds=e,co.createArray=t,co.fillArrayValues=r,co.createAndFillArray=n,co.isTypedArray=i,co.typedArrayWindow=c;function e(o,s){const h=s&&typeof s.start<"u"?Math.max(Math.min(s.start,o-1),0):0,f=s&&typeof s.end<"u"?Math.min(s.end,o):o;return{start:h,end:f}}function t(o,s){const h=s&&typeof s.array<"u"?s.array:Array,{start:f,end:y}=e(o,s);return{array:new h(y-f),start:f,end:y}}function r(o,s,h){for(let f=0,y=s.length;f<y;f++)s[f]=o(h+f);return s}function n(o,s,h){const{array:f,start:y}=t(o,h);return r(s,f,y)}function i(o){return!!o.buffer&&typeof o.byteLength=="number"&&typeof o.BYTES_PER_ELEMENT=="number"}function c(o,s){const{constructor:h,buffer:f,length:y,byteOffset:_,BYTES_PER_ELEMENT:g}=o,{start:a,end:d}=e(y,s);return a===0&&d===y?o:new h(f,_+g*a,Math.min(y,d-a))}return co}var Oi={},PV;function La(){if(PV)return Oi;PV=1,Object.defineProperty(Oi,"__esModule",{value:!0}),Oi.NumberType=Oi.NumberTypes=void 0,Oi.parseIntSkipLeadingWhitespace=e,Oi.parseInt=t,Oi.parseFloatSkipLeadingWhitespace=n,O
3i.parseFloat=i,Oi.getNumberType=h;function e(f,y,_){for(;y<_&&f.charCodeAt(y)===32;)y++;return t(f,y,_)}function t(f,y,_){let g=y,a=0,d=1;for(f.charCodeAt(g)===45?(d=-1,++g):f.charCodeAt(g)===43&&++g;g<_;g++){const p=f.charCodeAt(g)-48;if(p>9||p<0)return d*a|0;a=10*a+p|0}return d*a}function r(f,y,_,g){return y.charCodeAt(_)===43&&_++,f*Math.pow(10,t(y,_,g))}function n(f,y,_){for(;y<_&&f.charCodeAt(y)===32;)y++;return i(f,y,_)}function i(f,y,_){let g=y,a=1,d=0,p=0,u=1;for(f.charCodeAt(g)===45?(a=-1,++g):f.charCodeAt(g)===43&&++g;g<_;){let m=f.charCodeAt(g)-48;if(m>=0&&m<10)d=d*10+m,++g;else if(m===-2){for(++g;g<_;)if(m=f.charCodeAt(g)-48,m>=0&&m<10)p=10*p+m,u=10*u,++g;else return m===53||m===21?r(a*(d+p/u),f,g+1,_):a*(d+p/u);return a*(d+p/u)}else{if(m===53||m===21)return r(a*d,f,g+1,_);break}}return a*d}var c;(function(f){f[f.Int=0]="Int",f[f.Float=1]="Float",f[f.Scientific=2]="Scientific",f[f.NaN=3]="NaN"})(c||(Oi.NumberTypes=c={})),Oi.NumberType={Int:c.Int,Float:c.Float,Scientific:c.Scientific,NaN:c.NaN};function o(f,y,_){for(f.charCodeAt(y)===45&&y++;y<_;y++){const g=f.charCodeAt(y)-48;if(g>9||g<0)return!1}return!0}function s(f,y,_){return f.charCodeAt(y)===43&&y++,o(f,y,_)?c.Scientific:c.NaN}function h(f){let y=0;const _=f.length;if(f.charCodeAt(y)===45&&++y,f.charCodeAt(y)===46&&_-y===1)return c.NaN;for(;y<_;){let g=f.charCodeAt(y)-48;if(g>=0&&g<10)++y;else if(g===-2){++y;let a=!1;for(;y<_;)if(g=f.charCodeAt(y)-48,g>=0&&g<10)a=!0,++y;else return g===53||g===21?s(f,y+1,_):c.NaN;return a?c.Float:c.Int}else{if(g===53||g===21)return y===0||y===1&&f.charCodeAt(0)===45?c.NaN:s(f,y+1,_);break}}return y===_?c.Int:c.NaN}return Oi}var TV;function Z_(){if(TV)return mm;TV=1,Object.defineProperty(mm,"__esModule",{value:!0}),mm.Column=void 0;const t=At.__importStar(G$()),r=Tf(),n=La();var i;(function(l){let S;(function(K){K.str={"@type":"str",T:"",valueType:"str"},K.ustr={"@type":"str",T:"",valueType:"str",transform:"uppercase"},K.lstr={"@type":"str",T:"",valueType:"str",transform:"lowercase"},K.int={"@type":"int",T:0,valueType:"int"},K.coord={"@type":"coord",T:0,valueType:"float"},K.float={"@type":"float",T:0,valueType:"float"};function Q(re){var oe;return{"@type":"str",T:(oe=re?.defaultValue)!==null&&oe!==void 0?oe:"",transform:re?.transform,valueType:"str"}}K.Str=Q;function J(re=0){return{"@type":"int",T:re,valueType:"int"}}K.Int=J;function ae(re=0){return{"@type":"float",T:re,valueType:"float"}}K.Float=ae;function te(re,oe=K.float){return{"@type":"tensor",T:re.create(),space:re,valueType:"tensor",baseType:oe}}K.Tensor=te;function ne(re,oe=K.float){return te(r.Tensor.Vector(re,oe["@type"]==="int"?Int32Array:Float64Array),oe)}K.Vector=ne;function $(re,oe,ce=K.float){return te(r.Tensor.ColumnMajorMatrix(re,oe,ce["@type"]==="int"?Int32Array:Float64Array),ce)}K.Matrix=$;function ie(re){return re}K.Aliased=ie;function Z(re,oe,ce=[]){return{"@type":"list",T:ce,separator:re,itemParse:oe,valueType:"list"}}K.List=Z})(S=l.Schema||(l.Schema={}));function T(K){return!!K&&!!K.schema&&!!K.value}l.is=T;let A;(function(K){K[K.Present=0]="Present",K[K.NotPresent=1]="NotPresent",K[K.Unknown=2]="Unknown"})(A=l.ValueKinds||(l.ValueKinds={})),l.ValueKind={Present:A.Present,NotPresent:A.NotPresent,Unknown:A.Unknown};function x(K,Q){return s(Q.T,K,Q,A.NotPresent)}l.Undefined=x;function M(K,Q,J){return s(K,Q,J,A.Present)}l.ofConst=M;function D(K){return h(K)}l.ofLambda=D;function V(K,Q){return D({value:J=>J+K,rowCount:Math.max(Q-K+1,0),schema:S.int})}l.range=V;function R(K){return f(K)}l.ofArray=R;function E(K){return f({array:K,schema:S.int})}l.ofIntArray=E;function I(K){return f({array:K,schema:S.float})}l.ofFloatArray=I;function B(K){return f({array:K,schema:S.str})}l.ofStringArray=B;function w(K){return f({array:K,schema:S.Aliased(S.str)})}l.ofStringAliasArray=w;function O(K,Q=","){return f({array:K,schema:S.List(Q,J=>J)})}l.ofStringListArray=O;function F(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>(0,n.parseInt)(J,ae[2*te],ae[2*te+1])||0,rowCount:Q,schema:S.int})}l.ofIntTokens=F;function L(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>(0,n.parseFloat)(J,ae[2*te],ae[2*te+1])||0,rowCount:Q,schema:S.float})}l.ofFloatTokens=L;function U(K){const{count:Q,data:J,indices:ae}=K;return h({value:te=>{const ne=J.substring(ae[2*te],ae[2*te+1]);return ne==="."||ne==="?"?"":ne},rowCount:Q,schema:S.str})}l.ofStringTokens=U;function q(K,Q,J){return y(K,Q,J)}l.window=q;function N(K,Q,J=!0){return d(K,Q,J)}l.view=N;function k(K){return c(K)}l.createFirstIndexMap=k;function j(K){return o(K)}l.createIndexer=j;function H(K,Q,J){return m(K,Q,J||Array)}l.mapToArray=H;function G(K,Q){return v(K,Q)}l.areEqual=G;function z(K,Q){return C(K,Q)}l.indicesOf=z;function W(K,Q){return K.__array?K:K.isDefined?f({array:K.toArray({array:Q}),schema:K.schema,valueKind:K.valueKind}):x(K.rowCount,K.schema)}l.asArrayColumn=W;function X(K,Q,J=0){if(!K.isDefined)return;const ae=K.__array;if(ae)for(let te=0,ne=ae.length;te<ne;
3te++)Q[J+te]=ae[te];else for(let te=0,ne=K.rowCount;te<ne;te++)Q[J+te]=K.value(te)}l.copyToArray=X;function Y(K){for(let Q=0,J=K.rowCount;Q<J;Q++)if(Q!==K.value(Q))return!1;return!0}l.isIdentity=Y})(i||(mm.Column=i={}));function c(l){const S=new Map;for(let T=0,A=l.rowCount;T<A;T++){const x=l.value(T);S.has(x)||S.set(l.value(T),T)}return S}function o(l){const S=new Map;for(let T=0,A=l.rowCount;T<A;T++){const x=l.value(T);S.has(x)||S.set(l.value(T),T)}return T=>S.has(T)?S.get(T):-1}function s(l,S,T,A){const x=M=>l;return{schema:T,__array:void 0,isDefined:A===i.ValueKinds.Present,rowCount:S,value:x,valueKind:M=>A,toArray:M=>{const{array:D}=t.createArray(S,M);for(let V=0,R=D.length;V<R;V++)D[V]=l;return D},areValuesEqual:(M,D)=>!0}}function h({value:l,valueKind:S,areValuesEqual:T,rowCount:A,schema:x}){return{schema:x,__array:void 0,isDefined:!0,rowCount:A,value:l,valueKind:S||(M=>i.ValueKinds.Present),toArray:M=>{const{array:D,start:V}=t.createArray(A,M);for(let R=0,E=D.length;R<E;R++)D[R]=l(R+V);return D},areValuesEqual:T||((M,D)=>l(M)===l(D))}}function f({array:l,schema:S,valueKind:T}){const A=l.length,x=S.T,M=S.valueType==="str"?S.transform==="lowercase"?V=>{const R=l[V];return typeof R=="string"?R.toLowerCase():`${R??x}`.toLowerCase()}:S.transform==="uppercase"?V=>{const R=l[V];return typeof R=="string"?R.toUpperCase():`${R??x}`.toUpperCase()}:V=>{const R=l[V];return typeof R=="string"?R:`${R??x}`}:V=>l[V],D=t.isTypedArray(l);return{schema:S,__array:l,isDefined:!0,rowCount:A,value:M,valueKind:T||(V=>i.ValueKinds.Present),toArray:S.valueType==="str"?S.transform==="lowercase"?V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O.toLowerCase():`${O??x}`.toLowerCase()}return I}:S.transform==="uppercase"?V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O.toUpperCase():`${O??x}`.toUpperCase()}return I}:V=>{const{start:R,end:E}=t.getArrayBounds(A,V),I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++){const O=l[R+B];I[B]=typeof O=="string"?O:`${O??x}`}return I}:D?V=>t.typedArrayWindow(l,V):V=>{const{start:R,end:E}=t.getArrayBounds(A,V);if(R===0&&E===l.length)return l;const I=new(V&&typeof V.array<"u"?V.array:l.constructor)(E-R);for(let B=0,w=E-R;B<w;B++)I[B]=l[R+B];return I},areValuesEqual:(V,R)=>l[V]===l[R]}}function y(l,S,T){return l.isDefined?S===0&&T===l.rowCount?l:l.__array&&t.isTypedArray(l.__array)?_(l,S,T):g(l,S,T):i.Undefined(T-S,l.schema)}function _(l,S,T){const A=t.typedArrayWindow(l.__array,{start:S,end:T}),x=l.valueKind;return f({array:A,schema:l.schema,valueKind:M=>x(S+M)})}function g(l,S,T){const A=l.value,x=l.valueKind,M=l.areValuesEqual,D=S===0?A:R=>A(R+S),V=T-S;return{schema:l.schema,__array:void 0,isDefined:l.isDefined,rowCount:V,value:D,valueKind:S===0?x:R=>x(R+S),toArray:R=>{const{array:E}=t.createArray(V,R);for(let I=0,B=E.length;I<B;I++)E[I]=A(I+S);return E},areValuesEqual:S===0?M:(R,E)=>M(R+S,E+S)}}function a(l,S){if(l.length!==S)return!1;for(let T=0,A=l.length;T<A;T++)if(l[T]!==T)return!1;return!0}function d(l,S,T){return l.rowCount===0||T&&a(S,l.rowCount)?l:l.__array&&typeof l.value(0)==typeof l.__array[0]?p(l,S):u(l,S)}function p(l,S){const T=l.__array,A=new T.constructor(S.length);for(let M=0,D=S.length;M<D;M++)A[M]=T[S[M]];const x=l.valueKind;return f({array:A,schema:l.schema,valueKind:M=>x(S[M])})}function u(l,S){const T=l.value,A=l.valueKind,x=l.areValuesEqual,M=V=>T(S[V]),D=S.length;return{schema:l.schema,__array:void 0,isDefined:l.isDefined,rowCount:D,value:M,valueKind:V=>A(S[V]),toArray:V=>{const{array:R}=t.createArray(D,V);for(let E=0,I=R.length;E<I;E++)R[E]=T(S[E]);return R},areValuesEqual:(V,R)=>x(S[V],S[R])}}function m(l,S,T){const A=new T(l.rowCount);for(let x=0,M=l.rowCount;x<M;x++)A[x]=S(l.value(x));return A}function v(l,S){return l===S?!0:l.rowCount!==S.rowCount||l.isDefined!==S.isDefined||l.schema.valueType!==S.schema.valueType?!1:l.__array&&S.__array?b(l,S):P(l,S)}function b(l,S){const T=l.__array,A=S.__array;for(let x=0,M=l.rowCount;x<M;x++)if(T[x]!==A[x])return!1;return!0}function P(l,S){const T=l.value,A=S.value;for(let x=0,M=l.rowCount;x<M;x++)if(T(x)!==A(x))return!1;return!0}function C(l,S){const T=[],A=l.value;for(let x=0,M=l.rowCount;x<M;x++)S(A(x))&&(T[T.length]=x);return T}return mm}var vs={},xV;function gT(){if(xV)return vs;xV=1,Object.defineProperty(vs,"__esModule",{value:!0}),vs.arrayLess=e,vs.arraySwap=t,vs.sortArray=f,vs.sortArrayRange=y,vs.sort=_;function e(g,a,d){return g[a]-g[d]}function t(g,a,d){const p=g[a];g[a]=g[d],g[d]=p}function r(g,a,d,p){const u=d+p>>1;return a(g,d,p)>0?a(g,d,u)>0?a(g,u,p)>0?u:p:d:a(g,p,u)>0?a(g,u,d)>0?u:d:p}function n(g,a,d){const{cmp:p,swap:u,data:m,parts:v}=g;let b=a+1,P=d;for(u(m,a,r(m,p,a,d));p(m,P,a)>0;)--P;for(let C=a+1;C<=P;C++){const l=p(m,C,a);if(l>0){for(u(m,C,P),--P;p(m,P,a)>0;)--P;C--}else l===0&&(u(m,C,b),b++)}for(let C=a;C<b;C++)u(m,C,a+P-C);v[0]=P-b+a+1,v[1]=P}function i({data:g,cmp:a,swap:d},p,u){for(let m=p+1;m<=u;m++){let v=m-1;for(;v>=p&&a(g,v,v+1)>0;)d(g,v,v+1),v=v-1}}function c(g,a,d){const{parts:p}=g;for(;a<d;){if(d-a<16){i(g,a,d);return}n(g,a,d);const u=p[0],m=p[1];u-a<d-m?(c(g,a,u-1),a=m+1):(c(g,m+1,d),d=u-1)}}function o(g,a,d,p){let u=d+1,m=p;t(g,d,r(g,e,d,p));const v=g[d];for(;g[m]>v;)--m;for(let b=d+1;b<=m;b++){const P=g[b];if(P>v){for(t(g,b,m),--m;g[m]>v;)--m;b--}else P===v&&(t(g,b,u),++u)}for(let b=d;b<u;b++)t(g,b,d+m-b);a[0]=m-u+d+1,a[1]=m}function s(g,a,d){for(let p=a+1;p<=d;p++){const u=g[p];let m=p-1;for(;m>=a&&g[m]>u;
3)g[m+1]=g[m],m=m-1;g[m+1]=u}}function h(g,a,d,p){for(;d<p;){if(p-d<16){s(g,d,p);return}o(g,a,d,p);const u=a[0],m=a[1];u-d<p-m?(h(g,a,d,u-1),d=m+1):(h(g,a,m+1,p),p=u-1)}}function f(g,a=e){return y(g,0,g.length,a)}function y(g,a,d,p=e){return p===e?h(g,[0,0],a,d-1):c({data:g,cmp:p,swap:t,parts:[0,0]},a,d-1),g}function _(g,a,d,p,u){return c({data:g,cmp:p,swap:u,parts:[0,0]},a,d-1),g}return vs}var AV;function z$(){if(AV)return fm;AV=1,Object.defineProperty(fm,"__esModule",{value:!0}),fm.Table=void 0;const e=Z_(),t=gT(),r=ED();var n;return(function(i){function c(T){return T&&typeof T._rowCount=="number"&&!!T._columns&&!!T._schema}i.is=c;function o(T,A,x={}){const M=Object.create(null),D=Object.keys(T);M._rowCount=A._rowCount,M._columns=D,M._schema=T;for(const V of D)if(A[V])M[V]=A[V];else if(x[V])M[V]=x[V];else throw Error(`Cannot find column '${V}'.`);return M}i.pickColumns=o;function s(T,A){const x=Object.keys(A);return{_rowCount:A[x[0]].rowCount,_columns:x,_schema:T,...A}}i.ofColumns=s;function h(T,A,x){const M=Object.create(null),D=Object.keys(T);M._rowCount=x,M._columns=D,M._schema=T;for(const V of D)V in A?M[V]=A[V]:M[V]=e.Column.Undefined(x,T[V]);return M}i.ofPartialColumns=h;function f(T,A){const x=Object.create(null),M=Object.keys(T);x._rowCount=A,x._columns=M,x._schema=T;for(const D of M)x[D]=e.Column.Undefined(A,T[D]);return x}i.ofUndefinedColumns=f;function y(T,A){const x=Object.create(null),M=A.length,D=Object.keys(T);x._rowCount=M,x._columns=D,x._schema=T;for(const V of D)x[V]=e.Column.ofLambda({rowCount:M,schema:T[V],value:R=>A[R][V],valueKind:R=>typeof A[R][V]>"u"?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present});return x}i.ofRows=y;function _(T,A){var x;const M=Object.create(null),D=Object.keys(T);M._rowCount=0,M._columns=D,M._schema=T;for(const V of D)typeof A[V]<"u"?(M[V]=e.Column.ofArray({array:A[V],schema:T[V]}),M._rowCount=(x=A[V])===null||x===void 0?void 0:x.length):M[V]=e.Column.Undefined(M._rowCount,T[V]);return M}i.ofArrays=_;function g(T,A,x){const M=Object.create(null),D=Object.keys(A);M._rowCount=x.length,M._columns=D,M._schema=A;for(const V of D)M[V]=e.Column.view(T[V],x);return M}i.view=g;function a(T,A,x){const M=[];for(let D=0,V=T._rowCount;D<V;++D)x(D)&&M.push(D);return g(T,A,M)}i.pick=a;function d(T,A,x,M){if(x===0&&M===T._rowCount)return T;const D=Object.create(null),V=Object.keys(A);D._rowCount=M-x,D._columns=V,D._schema=A;for(const R of V)D[R]=e.Column.window(T[R],x,M);return D}i.window=d;function p(T,A){const x=Object.create(null),M=Object.keys(A);x._rowCount=0;for(const R of T)x._rowCount+=R._rowCount;const D={};for(const R of M)D[R]=new Array(x._rowCount);x._columns=M,x._schema=A;let V=0;for(const R of T){for(const E of M)e.Column.copyToArray(R[E],D[E],V);V+=R._rowCount}for(const R of M)x[R]=e.Column.ofArray({array:D[R],schema:A[R]});return x}i.concat=p;function u(T,A,x){T[A]=e.Column.asArrayColumn(T[A],x)}i.columnToArray=u;function m(T,A){const x=new Int32Array(T._rowCount);for(let V=0,R=x.length;V<R;V++)x[V]=V;(0,t.sortArray)(x,(V,R,E)=>A(R,E));let M=!0;for(let V=0,R=x.length;V<R;V++)if(x[V]!==V){M=!1;break}if(M)return T;const D=Object.create(null);D._rowCount=T._rowCount,D._columns=T._columns,D._schema=T._schema;for(const V of T._columns)D[V]=e.Column.view(T[V],x,!1);return D}i.sort=m;function v(T,A){if(T._rowCount!==A._rowCount||T._columns.length!==A._columns.length)return!1;for(const x of T._columns)if(!A[x])return!1;for(const x of T._columns)if(!e.Column.areEqual(T[x],A[x]))return!1;return!0}i.areEqual=v;function b(T,A){const x=Object.create(null),{_columns:M}=T;for(let D=0;D<M.length;D++){const V=M[D];x[V]=T[V].value(A)}return x}i.getRow=b;function P(T,A){for(let x=0,M=T._rowCount;x<M;++x)if(A(x))return b(T,x)}i.pickRow=P;function C(T){const A=[],{_rowCount:x}=T;for(let M=0;M<x;M++)A[M]=b(T,M);return A}i.getRows=C;function l(T){const A={},{_columns:x}=T;for(let M=0;M<x.length;M++){const D=x[M];A[D]=T[D].toArray()}return A}i.toArrays=l;function S(T){const A=r.StringBuilder.create(),{_columns:x,_rowCount:M}=T;let D=1;r.StringBuilder.write(A,"|");for(let V=0;V<x.length;V++)r.StringBuilder.write(A,x[V]),r.StringBuilder.write(A,"|"),D+=x[V].length+1;r.StringBuilder.newline(A),r.StringBuilder.write(A,new Array(D+1).join("-")),r.StringBuilder.newline(A);for(let V=0;V<M;V++){r.StringBuilder.write(A,"|");for(let R=0;R<x.length;R++){const E=T[x[R]];E.valueKind(V)===e.Column.ValueKinds.Present?(r.StringBuilder.write(A,E.value(V)),r.StringBuilder.write(A,"|")):r.StringBuilder.write(A,".|")}r.StringBuilder.newline(A)}return r.StringBuilder.getString(A)}i.formatToString=S})(n||(fm.Table=n={})),fm}var MV;function UZ(){if(MV)return dm;
3MV=1,Object.defineProperty(dm,"__esModule",{value:!0}),dm.Database=void 0;const e=z$();var t;return(function(r){function n(c,o,s){const h=Object.keys(s),f=Object.create(null),y=[];f._name=c,f._tableNames=y,f._schema=o;for(const _ of h)e.Table.is(s[_])&&(f[_]=s[_],y[y.length]=_);return f}r.ofTables=n;function i(c){const o={};for(const s of c._tableNames)o[s]=e.Table.getRows(c[s]);return o}r.getTablesAsRows=i})(t||(dm.Database=t={})),dm}var DV;function lt(){return DV||(DV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColumnHelpers=e.Column=e.Table=e.Database=void 0;const t=At,r=UZ();Object.defineProperty(e,"Database",{enumerable:!0,get:function(){return r.Database}});const n=z$();Object.defineProperty(e,"Table",{enumerable:!0,get:function(){return n.Table}});const i=Z_();Object.defineProperty(e,"Column",{enumerable:!0,get:function(){return i.Column}});const c=t.__importStar(G$());e.ColumnHelpers=c})(V2)),V2}var IV;function jZ(){if(IV)return Kl;IV=1,Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.Coordinates=void 0,Kl.Time=r;const e=et(),t=lt();function r(i,c){return{value:i,unit:c}}var n;return(function(i){function c(g,a,d){const p=!!g[0].cell,u=!!g[0].velocities,m=!!g[0].forces;return{id:e.UUID.create22(),frames:g,hasCell:p,hasVelocities:u,hasForces:m,deltaTime:a,timeOffset:d}}i.create=c;function o(g,a,d){var p,u;let{x:m,y:v,z:b}=g;return g.xyzOrdering.frozen?d?g.xyzOrdering.isIdentity?(m=y(m,d),v=y(v,d),b=y(b,d)):(0,e.arrayEqual)(g.xyzOrdering.index,d)||(m=f(m,g.xyzOrdering.index,d),v=f(v,g.xyzOrdering.index,d),b=f(b,g.xyzOrdering.index,d)):g.xyzOrdering.isIdentity||(m=_(m,g.xyzOrdering.index),v=_(v,g.xyzOrdering.index),b=_(b,g.xyzOrdering.index)):d&&(g.xyzOrdering.isIdentity?(g.xyzOrdering.isIdentity=!1,g.xyzOrdering.index=d,h(m,d),h(v,d),h(b,d)):(0,e.arrayEqual)(g.xyzOrdering.index,d)||(m=f(m,g.xyzOrdering.index,d),v=f(v,g.xyzOrdering.index,d),b=f(b,g.xyzOrdering.index,d))),g.xyzOrdering.frozen=!0,{id:e.UUID.create22(),atomId:a.atomId,occupancy:(p=a.occupancy)!==null&&p!==void 0?p:t.Column.ofConst(1,g.elementCount,t.Column.Schema.int),B_iso_or_equiv:(u=a.B_iso_or_equiv)!==null&&u!==void 0?u:t.Column.ofConst(0,g.elementCount,t.Column.Schema.float),xyzDefined:!0,x:m,y:v,z:b}}i.getAtomicConformation=o;const s=[.123];function h(g,a){const d=s;for(let p=0,u=g.length;p<u;p++)d[p]=g[a[p]];for(let p=0,u=g.length;p<u;p++)g[p]=d[p]}function f(g,a,d){const p=new Float32Array(g.length);for(let u=0,m=g.length;u<m;u++)p[u]=g[a[d[u]]];return p}function y(g,a){const d=new Float32Array(g.length);for(let p=0,u=g.length;p<u;p++)d[p]=g[a[p]];return d}function _(g,a){const d=new Float32Array(g.length);for(let p=0,u=g.length;p<u;p++)d[a[p]]=g[p];return d}})(n||(Kl.Coordinates=n={})),Kl}var wV;function vl(){return wV||(wV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(jZ(),e)})(I2)),I2}var E2={},pm={},VV;function yT(){if(VV)return pm;VV=1,Object.defineProperty(pm,"__esModule",{value:!0}),pm.Topology=void 0;const e=et();var t;return(function(r){function n(i,c,o,s){return{id:e.UUID.create22(),label:i,basic:c,sourceData:s,bonds:o}}r.create=n})(t||(pm.Topology=t={})),pm}var EV;function GZ(){return EV||(EV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(yT(),e)})(E2)),E2}var B2={},hm={},R2={},O2={},BV;function zZ(){return BV||(BV=1,Object.defineProperty(O2,"__esModule",{value:!0})),O2}var mi={},gm={},RV;function bl(){if(RV)return gm;RV=1,Object.defineProperty(gm,"__esModule",{value:!0}),gm.mmCIF_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.int,i=t.float,c=t.coord,o=t.Aliased,s=t.Matrix,h=t.Vector,f=t.lstr,y=t.List;return gm.mmCIF_Schema={atom_site:{auth_asym_id:r,auth_atom_id:r,auth_comp_id:r,auth_seq_id:n,B_iso_or_equiv:i,Cartn_x:c,Cartn_y:c,Cartn_z:c,group_PDB:o(r),id:n,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_entity_id:r,label_seq_id:n,occupancy:i,type_symbol:r,pdbx_PDB_ins_code:r,pdbx_PDB_model_num:n,pdbx_formal_charge:n,pdbx_label_index:n,pdbx_sifts_xref_db_name:r,pdbx_sifts_xref_db_acc:r,pdbx_sifts_xref_db_num:r,pdbx_sifts_xref_db_res:r,ihm_model_id:n},atom_site_anisotrop:{id:n,type_symbol:r,U:s(3,3),U_esd:s(3,3),pdbx_auth_seq_id:n,pdbx_auth_asym_id:r,pdbx_auth_atom_id:r,pdbx_auth_comp_id:r,pdbx_label_seq_id:n,pdbx_label_alt_id:r,pdbx_label_asym_id:r,pdbx_label_atom_id:r,pdbx_label_comp_id:r,pdbx_PDB_ins_code:r},atom_sites:{entry_id:r,fract_transf_matrix:s(3,3),fract_transf_vector:h(3)},audit_author:{name:r,pdbx_ordinal:n,identifier_ORCID:r},audit_conform:{dict_location:r,dict_name:r,dict_version:r},cell:{angle_alpha:i,angle_beta:i,angle_gamma:i,entry_id:r,length_a:i,length_b:i,length_c:i,Z_PDB:n,pdbx_unique_axis:r},chem_comp:{formula:r,formula_weight:i,id:r,mon_nstd_flag:o(f),name:r,type:o(f),pdbx_synonyms:y(";",_=>_)},chem_comp_bond:{atom_id_1:r,atom_id_2:r,comp_id:r,value_order:o(f),pdbx_ordinal:n,pdbx_stereo_config:o(f),pdbx_aromatic_flag:o(f)},citation:{book_publisher:r,country:r,id:r,journal_abbrev:r,journal_id_ASTM:r,journal_id_CSD:r,journal_id_ISSN:r,journal_volume:r,page_first:r,page_last:r,title:r,year:n,pdbx_database_id_DOI:r,pdbx_database_id_PubMed:n},citation_author:{citation_id:r,name:r,ordinal:n},database_2:{database_id:o(f),database_code:r},entity:{details:r,formula_weight:i,id:r,src_method:o(f),type:o(f),pdbx_description:y(",",_=>_),pdbx_number_of_molecules:n,pdbx_parent_entity_id:r,pdbx_mutation:r,pdbx_fragment:r,pdbx_ec:y(",",_=>_)},entity_poly:{entity_id:r,nstd_linkage:o(f),nstd_monomer:o(f),type:o(r),pdbx_strand_id:y(",",_=>_),pdbx_seq_one_letter_code:r,pdbx_seq_one_letter_code_can:r,pdbx_target_identifier:r},entity_poly_seq:{entity_id:r,hetero:o(f),mon_id:r,num:n},entry:{id:r},exptl:{entry_id:r,method:o(r)},software:{classification:r,date:r,description:r,name:r,type:o(f),version:r,pdbx_ordinal:n},struct:{entry_id:r,title:r,pdbx_structure_determination_methodology:o(r),pdbx_descriptor:r},struct_asym:{details:r,entity_id:r,id:r,pdbx_modified:r,pdbx_blank_PDB_chainid_flag:o(r)},struct_conf:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:n,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:n,conf_type_id:o(f),details:r,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:n,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:n,id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r,pdbx_PDB_helix_class:r,pdbx_PDB_helix_length:n,pdbx_PDB_helix_id:r},struct_conn:{conn_type_id:o(f),details:r,id:r,ptnr1_label_asym_id:r,ptnr1_label_atom_id:r,ptnr1_label_comp_id:r,ptnr1_label_seq_id:n,ptnr1_auth_asym_id:r,ptnr1_auth_comp_id:r,ptnr1_auth_seq_id:n,ptnr1_symmetry:r,ptnr2_label_asym_id:r,ptnr2_label_atom_id:r,ptnr2_label_comp_id:r,ptnr2_label_seq_id:n,ptnr2_auth_asym_id:r,ptnr2_auth_comp_id:r,ptnr2_auth_seq_id:n,ptnr2_symmetry:r,pdbx_ptnr1_PDB_ins_code:r,pdbx_ptnr1_label_alt_id:r,pdbx_ptnr1_standard_comp_id:r,pdbx_ptnr2_PDB_ins_code:r,pdbx_ptnr2_label_alt_id:r,pdbx_ptnr3_PDB_ins_code:r,pdbx_ptnr3_label_alt_id:r,pdbx_ptnr3_label_asym_id:r,pdbx_ptnr3_label_atom_id:r,pdbx_ptnr3_label_comp_id:r,pdbx_ptnr3_label_seq_id:n,pdbx_PDB_id:r,pdbx_dist_value:i,pdbx_value_order:o(f)},struct_conn_type:{criteria:r,id:o(f),reference:r},struct_keywords:{entry_id:r,text:y(",",_=>_),pdbx_keywords:r},struct_mon_prot_cis:{label_alt_id:r,label_asym_id:r,label_comp_id:r,label_seq_id:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,pdbx_auth_asym_id_2:r,pdbx_auth_comp_id_2:r,pdbx_auth_seq_id_2:n,pdbx_label_asym_id_2:r,pdbx_label_comp_id_2:r,pdbx_label_seq_id_2:n,pdbx_PDB_ins_code:r,pdbx_PDB_ins_code_2:r,pdbx_PDB_model_num:n,pdbx_omega_angle:r,pdbx_id:r,pdbx_auth_ins_code:r,pdbx_auth_ins_code_2:r},struct_ncs_oper:{code:o(r),details:r,id:n,matrix:s(3,3),vector:h(3)},struct_sheet_range:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:n,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:n,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:n,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:n,id:r,sheet_id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r},struct_site:{details:r,id:r,pdbx_num_residues:n,pdbx_evidence_code:r,pdbx_auth_asym_id:r,pdbx_auth_comp_id:r,pdbx_auth_seq_id:n,pdbx_auth_ins_code:r},struct_site_gen:{details:r,id:r,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_seq_id:n,auth_asym_id:r,auth_atom_id:r,auth_comp_id:r,auth_seq_id:n,site_id:r,symmetry:r,pdbx_auth_ins_code:r,pdbx_num_res:n},struct_site_keywords:{site_id:r,text:r},symmetry:{entry_id:r,cell_setting:o(f),Int_Tables_number:n,space_group_name_Hall:r,"space_group_name_H-M":r},pdbx_database_status:{status_code:o(r),status_code_sf:o(r),status_code_mr:o(r),entry_id:r,recvd_initial_deposition_date:r,SG_entry:o(f),deposit_site:o(r),process_site:o(r),status_code_cs:o(r),methods_development_category:o(r),pdb_format_compatible:o(f)},pdbx_nonpoly_scheme:{asym_id:r,entity_id:r,mon_id:r,pdb_strand_id:r,ndb_seq_num:r,pdb_seq_num:r,auth_seq_num:r,pdb_mon_id:r,auth_mon_id:r,pdb_ins_code:r},pdbx_database_related:{db_name:o(r),details:r,db_id:r,content_type:o(r)},pdbx_entity_nonpoly:{entity_id:r,comp_id:r,name:r},pdbx_chem_comp_synonyms:{name:r,comp_id:r,provenance:o(r)},pdbx_chem_comp_identifier:{comp_id:r,identifier:r,type:o(r),program:r,program_version:r},pdbx_unobs_or_zero_occ_residues:{id:n,polymer_flag:o(f),occupancy_flag:o(n),PDB_model_num:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:n},pdbx_struct_mod_residue:{id:n,auth_asym_id:r,auth_comp_id:r,auth_seq_id:n,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:n,parent_comp_id:r,details:r},pdbx_struct_oper_list:{id:r,type:o(r),name:r,symmetry_operation:r,matrix:s(3,3),vector:h(3)}
3,pdbx_struct_assembly:{method_details:r,oligomeric_details:r,oligomeric_count:n,details:r,id:r},pdbx_struct_assembly_gen:{asym_id_list:y(",",_=>_),assembly_id:r,oper_expression:r},pdbx_reference_entity_list:{prd_id:r,ref_entity_id:r,type:o(f),details:r,component_id:n},pdbx_reference_entity_link:{link_id:n,prd_id:r,details:r,ref_entity_id_1:r,ref_entity_id_2:r,entity_seq_num_1:n,entity_seq_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:o(f),component_1:n,component_2:n,link_class:o(r)},pdbx_reference_entity_poly_link:{link_id:n,prd_id:r,ref_entity_id:r,component_id:n,entity_seq_num_1:n,entity_seq_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:o(f)},pdbx_molecule:{prd_id:r,instance_id:n,asym_id:r},pdbx_molecule_features:{prd_id:r,class:o(f),type:o(f),name:r,details:r},entity_src_nat:{entity_id:r,pdbx_organism_scientific:r,pdbx_plasmid_name:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},entity_src_gen:{entity_id:r,pdbx_gene_src_gene:y(",",_=>_),pdbx_gene_src_scientific_name:r,plasmid_name:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},pdbx_entity_src_syn:{organism_scientific:r,entity_id:r,pdbx_src_id:n,pdbx_beg_seq_num:n,pdbx_end_seq_num:n},pdbx_entity_branch_descriptor:{entity_id:r,descriptor:r,type:o(f),program:r,program_version:r,ordinal:n},pdbx_entity_instance_feature:{details:r,feature_type:o(r),auth_asym_id:r,asym_id:r,auth_seq_num:r,seq_num:n,comp_id:r,auth_comp_id:r,ordinal:n},pdbx_entity_branch_list:{entity_id:r,hetero:o(f),comp_id:r,num:n},pdbx_entity_branch_link:{link_id:n,details:r,entity_id:r,entity_branch_list_num_1:n,entity_branch_list_num_2:n,comp_id_1:r,comp_id_2:r,atom_id_1:r,leaving_atom_id_1:r,atom_stereo_config_1:o(f),atom_id_2:r,leaving_atom_id_2:r,atom_stereo_config_2:o(f),value_order:o(f)},pdbx_entity_branch:{entity_id:r,type:o(r)},pdbx_branch_scheme:{entity_id:r,hetero:o(f),asym_id:r,mon_id:r,num:n,pdb_asym_id:r,pdb_seq_num:r,pdb_mon_id:r,auth_asym_id:r,auth_seq_num:r,auth_mon_id:r},pdbx_chem_comp_related:{comp_id:r,related_comp_id:r,relationship_type:o(r),details:r},ihm_starting_model_details:{starting_model_id:r,entity_id:r,entity_description:r,asym_id:r,entity_poly_segment_id:n,starting_model_source:o(r),starting_model_auth_asym_id:r,starting_model_sequence_offset:n,dataset_list_id:n},ihm_starting_comparative_models:{id:n,starting_model_id:r,starting_model_auth_asym_id:r,starting_model_seq_id_begin:n,starting_model_seq_id_end:n,template_auth_asym_id:r,template_seq_id_begin:n,template_seq_id_end:n,template_sequence_identity:i,template_sequence_identity_denominator:o(n),template_dataset_list_id:n,alignment_file_id:n},ihm_starting_model_seq_dif:{id:n,entity_id:r,asym_id:r,seq_id:n,comp_id:r,starting_model_id:r,db_asym_id:r,db_seq_id:n,db_comp_id:r,details:r},ihm_model_representation:{id:n,name:r,details:r},ihm_model_representation_details:{id:n,representation_id:n,entity_poly_segment_id:n,entity_id:r,entity_description:r,entity_asym_id:r,model_object_primitive:o(r),starting_model_id:r,model_mode:o(r),model_granularity:o(r),model_object_count:n},ihm_struct_assembly_details:{id:n,assembly_id:n,parent_assembly_id:n,entity_description:r,entity_id:r,asym_id:r,entity_poly_segment_id:n},ihm_struct_assembly:{id:n,name:r,description:r},ihm_modeling_protocol:{id:n,num_steps:n,protocol_name:r},ihm_modeling_protocol_details:{id:n,protocol_id:n,step_id:n,struct_assembly_id:n,dataset_group_id:n,struct_assembly_description:r,step_name:r,step_method:r,num_models_begin:n,num_models_end:n,multi_scale_flag:o(f),multi_state_flag:o(f),ordered_flag:o(f),script_file_id:n,software_id:n},ihm_multi_state_modeling:{state_id:n,state_group_id:n,population_fraction:i,population_fraction_sd:i,state_type:r,state_name:r,experiment_type:o(r),details:r},ihm_modeling_post_process:{id:n,protocol_id:n,analysis_id:n,step_id:n,type:o(r),feature:o(r),num_models_begin:n,num_models_end:n},ihm_ensemble_info:{ensemble_id:n,ensemble_name:r,post_process_id:n,model_group_id:n,ensemble_clustering_method:o(r),ensemble_clustering_feature:o(r),num_ensemble_models:n,num_ensemble_models_deposited:n,ensemble_precision_value:i,ensemble_file_id:n},ihm_model_list:{model_id:n,model_name:r,assembly_id:n,protocol_id:n,representation_id:n},ihm_model_group:{id:n,name:r,details:r},ihm_model_group_link:{model_id:n,group_id:n},ihm_model_representative:{id:n,model_group_id:n,model_id:n,selection_criteria:o(r)},ihm_dataset_list:{id:n,data_type:o(r),database_hosted:o(f)},ihm_dataset_group:{id:n,name:r,application:o(r),details:r},ihm_dataset_group_link:{dataset_list_id:n,group_id:n},ihm_related_datasets:{dataset_list_id_derived:n,dataset_list_id_primary:n}
3,ihm_dataset_related_db_reference:{id:n,dataset_list_id:n,db_name:o(r),accession_code:r,version:r,details:r},ihm_external_reference_info:{reference_id:n,reference_provider:r,reference_type:o(r),reference:r,refers_to:o(r),associated_url:r},ihm_external_files:{id:n,reference_id:n,file_path:r,content_type:o(r),file_size_bytes:i,details:r},ihm_dataset_external_reference:{id:n,dataset_list_id:n,file_id:n},ihm_localization_density_files:{id:n,file_id:n,ensemble_id:n,entity_id:r,entity_poly_segment_id:n,asym_id:r},ihm_predicted_contact_restraint:{id:n,group_id:n,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,rep_atom_1:o(r),rep_atom_2:o(r),distance_lower_limit:i,distance_upper_limit:i,probability:i,restraint_type:o(r),model_granularity:o(r),dataset_list_id:n,software_id:n},ihm_cross_link_list:{id:n,group_id:n,entity_description_1:r,entity_description_2:r,entity_id_1:r,entity_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,linker_type:o(r),dataset_list_id:n},ihm_cross_link_restraint:{id:n,group_id:n,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:n,seq_id_2:n,atom_id_1:r,atom_id_2:r,restraint_type:o(r),conditional_crosslink_flag:o(r),model_granularity:o(r),distance_threshold:i,psi:i,sigma_1:i,sigma_2:i},ihm_cross_link_result_parameters:{id:n,restraint_id:n,model_id:n,psi:i,sigma_1:i,sigma_2:i},ihm_2dem_class_average_restraint:{id:n,dataset_list_id:n,number_raw_micrographs:n,pixel_size_width:i,pixel_size_height:i,image_resolution:i,image_segment_flag:o(f),number_of_projections:n,struct_assembly_id:n,details:r},ihm_2dem_class_average_fitting:{id:n,restraint_id:n,model_id:n,cross_correlation_coefficient:i,rot_matrix:s(3,3),tr_vector:h(3)},ihm_3dem_restraint:{id:n,dataset_list_id:n,model_id:n,struct_assembly_id:n,fitting_method:r,number_of_gaussians:n,cross_correlation_coefficient:i},ihm_sas_restraint:{id:n,dataset_list_id:n,model_id:n,struct_assembly_id:n,profile_segment_flag:o(f),fitting_atom_type:r,fitting_method:r,fitting_state:o(r),radius_of_gyration:i,chi_value:i,details:r},ihm_starting_model_coord:{ordinal_id:n,starting_model_id:r,group_PDB:o(r),id:n,type_symbol:r,entity_id:r,atom_id:r,comp_id:r,seq_id:n,asym_id:r,Cartn_x:i,Cartn_y:i,Cartn_z:i,B_iso_or_equiv:i},ihm_sphere_obj_site:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,Cartn_x:i,Cartn_y:i,Cartn_z:i,object_radius:i,rmsf:i,model_id:n},ihm_gaussian_obj_site:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,mean_Cartn_x:i,mean_Cartn_y:i,mean_Cartn_z:i,weight:i,covariance_matrix:s(3,3),model_id:n},ihm_gaussian_obj_ensemble:{id:n,entity_id:r,seq_id_begin:n,seq_id_end:n,asym_id:r,mean_Cartn_x:i,mean_Cartn_y:i,mean_Cartn_z:i,weight:i,covariance_matrix:s(3,3),ensemble_id:n},ihm_feature_list:{feature_id:n,feature_type:o(r),entity_type:o(r)},ihm_poly_residue_feature:{ordinal_id:n,feature_id:n,entity_id:r,asym_id:r,comp_id_begin:r,comp_id_end:r,seq_id_begin:n,seq_id_end:n},ihm_derived_distance_restraint:{id:n,group_id:n,feature_id_1:n,feature_id_2:n,group_conditionality:o(r),random_exclusion_fraction:i,distance_upper_limit:i,restraint_type:o(r),dataset_list_id:n},ma_model_list:{ordinal_id:n,model_id:n,model_group_id:n,model_name:r,model_group_name:r,model_type:o(r),data_id:n},ma_target_entity:{entity_id:r,data_id:n,origin:o(r)},ma_target_entity_instance:{asym_id:r,entity_id:r,details:r},ma_target_ref_db_details:{target_entity_id:r,db_name:o(r),db_code:r,db_accession:r,seq_db_isoform:r,seq_db_align_begin:r,seq_db_align_end:r,ncbi_taxonomy_id:r,organism_scientific:r},ma_data:{id:n,content_type:o(r),content_type_other_details:r,name:r},ma_software_group:{ordinal_id:n,group_id:n,software_id:n},ma_qa_metric:{id:n,name:r,type:o(r),mode:o(r),software_group_id:n},ma_qa_metric_global:{ordinal_id:n,model_id:n,metric_id:n,metric_value:i},ma_qa_metric_local:{ordinal_id:n,model_id:n,label_asym_id:r,label_seq_id:n,label_comp_id:r,metric_id:n,metric_value:i},ma_qa_metric_local_pairwise:{ordinal_id:n,model_id:n,label_asym_id_1:r,label_seq_id_1:n,label_comp_id_1:r,label_asym_id_2:r,label_seq_id_2:n,label_comp_id_2:r,metric_id:n,metric_value:i}},gm}var OV;function H$(){if(OV)return mi;
3OV=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.AtomicHierarchy=mi.AtomicIndex=mi.ChainsSchema=mi.ResiduesSchema=mi.AtomsSchema=void 0;const e=lt(),t=bl();mi.AtomsSchema={type_symbol:e.Column.Schema.Aliased(t.mmCIF_Schema.atom_site.type_symbol),label_atom_id:t.mmCIF_Schema.atom_site.label_atom_id,auth_atom_id:t.mmCIF_Schema.atom_site.auth_atom_id,label_alt_id:t.mmCIF_Schema.atom_site.label_alt_id,label_comp_id:t.mmCIF_Schema.atom_site.label_comp_id,auth_comp_id:t.mmCIF_Schema.atom_site.auth_comp_id,pdbx_formal_charge:t.mmCIF_Schema.atom_site.pdbx_formal_charge},mi.ResiduesSchema={group_PDB:t.mmCIF_Schema.atom_site.group_PDB,label_seq_id:t.mmCIF_Schema.atom_site.label_seq_id,auth_seq_id:t.mmCIF_Schema.atom_site.auth_seq_id,pdbx_PDB_ins_code:t.mmCIF_Schema.atom_site.pdbx_PDB_ins_code},mi.ChainsSchema={label_asym_id:t.mmCIF_Schema.atom_site.label_asym_id,auth_asym_id:t.mmCIF_Schema.atom_site.auth_asym_id,label_entity_id:t.mmCIF_Schema.atom_site.label_entity_id};var r;(function(i){function c(){return{label_entity_id:"",label_asym_id:"",auth_seq_id:0,pdbx_PDB_ins_code:void 0}}i.EmptyResidueKey=c})(r||(mi.AtomicIndex=r={}));var n;return(function(i){function c(_,g){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[g]]}i.chainStartResidueIndex=c;function o(_,g){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[g+1]-1]+1}i.chainEndResidueIndexExcl=o;function s(_,g){return o(_,g)-c(_,g)}i.chainResidueCount=s;function h(_,g){return _.residueAtomSegments.offsets[g]}i.residueFirstAtomIndex=h;function f(_,g){return _.chainAtomSegments.index[g]}i.atomChainIndex=f;function y(_,g){return _.chainAtomSegments.index[_.residueAtomSegments.offsets[g]]}i.residueChainIndex=y})(n||(mi.AtomicHierarchy=n={})),mi}var k2={},kV;function BD(){return kV||(kV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultAtomNumber=e.DefaultAtomWeight=e.DefaultVdwRadius=e.ElementAtomWeights=e.ElementVdwRadii=e.AtomicNumbers=void 0,e.VdwRadius=t,e.AtomWeight=r,e.AtomNumber=n,e.AtomicNumbers={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109},e.ElementVdwRadii={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2},e.ElementAtomWeights={1:1.008,2:4.0026,3:6.94,4:9.0122,5:10.81,6:10.81,7:14.007,8:15.999,9:18.998,10:20.18,11:22.99,12:24.305,13:26.982,14:28.085,15:30.974,16:32.06,17:35.45,18:39.948,19:39.098,20:40.078,21:44.956,22:47.867,23:50.942,24:51.996,25:54.938,26:55.845,27:58.933,28:58.693,29:63.546,30:65.38,31:69.723,32:72.63,33:74.922,34:78.971,35:79.904,36:83.798,37:85.468,38:87.62,39:88.906,40:91.224,41:92.906,42:95.95,43:96.906,44:101.07,45:102.91,46:106.42,47:107.87,48:112.41,49:114.82,50:118.71,51:121.76,52:127.6,53:127.6,54:131.29,55:132.91,56:137.33,57:138.91,58:140.12,59:140.91,60:144.24,61:144.912,62:150.36,63:151.96,64:157.25,65:158.93,66:162.5,67:164.93,68:167.26,69:168.93,70:173.05,71:174.97,72:178.49,73:180.95,74:183.84,75:186.21,76:190.23,77:192.22,78:195.08,79:196.97,80:200.59,81:204.38,82:207.2,83:208.98,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:232.04,91:231.04,92:238.03,93:237.048,94:244.064,95:243.061,96:247.07,97:247.07,98:251.079,99:252.083,100:257.095,101:258.098,102:259.101,103:262.11,104:267.122,105:270.131,106:271.134,107:270.133,108:270.134,109:278.156},e.DefaultVdwRadius=1.7,e.DefaultAtomWeight=10.81,e.DefaultAtomNumber=0;function t(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultVdwRadius:e.ElementVdwRadii[c]}function r(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultAtomWeight:e.ElementAtomWeights[c]}function n(i){const c=e.AtomicNumbers[i];return c===void 0?e.DefaultAtomNumber:c}})(k2)),k2}var FV;function ma(){return FV||(FV=1,(function(e){Object.defineProperty(e,"__esMo
3dule",{value:!0});const t=At;t.__exportStar(zZ(),e),t.__exportStar(H$(),e),t.__exportStar(BD(),e)})(R2)),R2}var ym={},hr={},vm={},Jr={},LV;function vr(){if(LV)return Jr;LV=1,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.assignIfUndefined=t,Jr.shallowMerge2=r,Jr.shallowEqual=n,Jr.shallowMerge=i,Jr.shallowMergeArray=c,Jr.deepClone=o,Jr.mapObjectMap=s,Jr.mapArrayToObject=h,Jr.objectForEach=f,Jr.pickObjectKeys=y,Jr.pickObjectKeysWithRemapping=_,Jr.objectOfArraysToArrayOfObjects=g,Jr.omitObjectKeys=a,Jr.objectFromKeysAndValues=d,Jr.isPlainObject=p,Jr.promiseAllObj=u;const e=Object.prototype.hasOwnProperty;function t(m,v){for(const b of Object.keys(v))e.call(v,b)&&typeof m[b]>"u"&&(m[b]=v[b]);return m}function r(m,v){let b=!1;for(const P of Object.keys(v))if(e.call(v,P)&&v[P]!==m[P]){b=!0;break}return b?Object.assign({},m,v):m}function n(m,v){if(!m)return!v;if(!v)return!1;const b=Object.keys(m);if(Object.keys(v).length!==b.length)return!1;for(const P of b)if(!e.call(m,P)||m[P]!==v[P])return!1;return!0}function i(m,...v){return c(m,v)}function c(m,v){let b=m;for(let P=0;P<v.length;P++)if(v[P]&&(b=r(m,v[P]),b!==m)){for(let C=P+1;C<v.length;C++)b=Object.assign(b,v[C]);break}return b}function o(m){if(m===null||typeof m!="object")return m;if(m instanceof Array){const v=[];for(let b=0,P=m.length;b<P;b++)v[b]=o(m[b]);return v}if(typeof m=="object"&&!("prototype"in m)){const v={};for(const b in m)e.call(m,b)&&(v[b]=o(m[b]));return v}throw new Error(`Can't clone, type "${typeof m}" unsupported`)}function s(m,v){const b={};for(const P of Object.keys(m))b[P]=v(m[P]);return b}function h(m,v){const b={};for(const P of m)b[P]=v(P);return b}function f(m,v){if(m)for(const b of Object.keys(m))v(m[b],b)}function y(m,v){const b={};for(const P of v)Object.hasOwn(m,P)&&(b[P]=m[P]);return b}function _(m,v,b){const P={};for(const C of v){let l=b[C];l!==null&&(l===void 0&&(l=C),Object.hasOwn(m,l)&&(P[C]=m[l]))}return P}function g(m){let v;for(const P in m){const C=m[P].length;if(v!==void 0&&v!==C)throw new Error("FormatError: arrays must have the same length.");v=C}if(v===void 0)return[];const b=new Array(v);for(let P=0;P<v;P++){const C={};for(const l in m)C[l]=m[l][P];b[P]=C}return b}function a(m,v){const b={...m};for(const P of v)delete b[P];return b}function d(m,v){const b={};for(let P=0;P<m.length;P++)b[m[P]]=v[P];return b}function p(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}async function u(m){const v=Object.keys(m),b=Object.values(m),P=await Promise.all(b);return d(v,P)}return Jr}var NV;function HZ(){if(NV)return vm;NV=1,Object.defineProperty(vm,"__esModule",{value:!0}),vm.canonicalJsonString=t,vm.onelinerJsonString=r;const e=vr();function t(i){return JSON.stringify(i,(c,o)=>(0,e.isPlainObject)(o)?n(o):o)}function r(i){return JSON.stringify(i,void 0," ").replace(/,\n\t*/g,", ").replace(/\n\t*/g,"")}function n(i){const c={};for(const o of Object.keys(i).sort()){const s=i[o];s!==void 0&&(c[o]=s)}return c}return vm}var qV;function Vt(){if(qV)return hr;qV=1,Object.defineProperty(hr,"__esModule",{value:!0}),hr.arrayMax=t,hr.arrayMin=r,hr.arrayMinMax=n,hr.arraySum=i,hr.arrayMean=c,hr.arrayRms=o,hr.fillSerial=s,hr.arrayRemoveInPlace=h,hr.arrayRemoveAtInPlace=f,hr.arraySetAdd=y,hr.arraySetRemove=_,hr.arrayAreIntersecting=g,hr.arrayIntersectionSize=a,hr.arrayEqual=d,hr.arrayIsIdentity=p,hr.arrayMapUpsert=u,hr.range=m,hr.arrayExtend=v,hr.sortIfNeeded=b,hr.arrayIsSorted=P,hr.filterInPlace=C,hr.arrayDistinct=l,hr.arrayCopyOffset=S;const e=HZ();function t(T){let A=-1/0;for(let x=0,M=T.length;x<M;++x)T[x]>A&&(A=T[x]);return A}function r(T){let A=1/0;for(let x=0,M=T.length;x<M;++x)T[x]<A&&(A=T[x]);return A}function n(T){let A=1/0,x=-1/0;for(let M=0,D=T.length;M<D;++M)T[M]<A&&(A=T[M]),T[M]>x&&(x=T[M]);return[A,x]}function i(T,A=1,x=0){const M=T.length;let D=0;for(let V=x;V<M;V+=A)D+=T[V];return D}function c(T,A=1,x=0){return i(T,A,x)/(T.length/A)}function o(T){const A=T.length;let x=0;for(let M=0;M<A;++M){const D=T[M];x+=D*D}return Math.sqrt(x/A)}function s(T,A){for(let x=0,M=A?Math.min(A,T.length):T.length;x<M;++x)T[x]=x;return T}function h(T,A){let x=0,M=!1;for(const D=T.length;x<D;x++)if(T[x]===A){M=!0;break}return M?(f(T,x),!0):!1}function f(T,A){for(let x=A,M=T.length-1;x<M;x++)T[x]=T[x+1];T.pop()}function y(T,A){return T.indexOf(A)>=0?!1:(T.push(A),!0)}function _(T,A){const x=T.indexOf(A);if(x<0)return!1;for(let M=x,D=T.length-1;M<D;M++)T[M]=T[M+1];return T.pop(),!0}function g(T,A){for(let x=0,M=T.length;x<M;++x)if(A.includes(T[x]))return!0;return!1}function a(T,A){let x=0;for(let M=0,D=T.length;M<D;
3++M)A.includes(T[M])&&(x+=1);return x}function d(T,A){if(!T||T.length===0)return!A||A.length===0;if(!A)return!1;const x=T.length;if(x!==A.length)return!1;for(let M=0;M<x;M++)if(T[M]!==A[M])return!1;return!0}function p(T){for(let A=0,x=T.length;A<x;A++)if(T[A]!==A)return!1;return!0}function u(T,A,x){for(let M=0,D=T.length;M<D;++M)if(T[M][0]===A){T[M][1]=x;return}T.push([A,x])}function m(T,A){A===void 0&&(A=T,T=0);const x=Math.max(A-T,0),M=Array(x);for(let D=0;D<x;D++)M[D]=T+D;return M}function v(T,A){const x=T.length,M=A.length;T.length+=M;for(let D=0;D<M;D++)T[x+D]=A[D];return T}function b(T,A){return P(T,A)?T:T.sort(A)}function P(T,A){for(let x=1,M=T.length;x<M;x++)if(A(T[x-1],T[x])>0)return!1;return!0}function C(T,A){const x=T.length;let M=0;for(let D=0;D<x;D++)A(T[D])&&(T[M++]=T[D]);return T.length=M,T}function l(T){const A=new Set,x=[];for(const M of T){const D=(0,e.canonicalJsonString)(M);A.has(D)||(A.add(D),x.push(M))}return x}function S(T,A,x,M,D){for(let V=0;V<D;V++)T[x+V]=A[M+V];return T}return hr}var UV;function WZ(){if(UV)return ym;UV=1,Object.defineProperty(ym,"__esModule",{value:!0}),ym.calcModelCenter=r,ym.getAsymIdCount=n;const e=Ge(),t=Vt();function r(i,c){const o=[],s=[],h=[];i.x.length&&(o.push(...(0,t.arrayMinMax)(i.x)),s.push(...(0,t.arrayMinMax)(i.y)),h.push(...(0,t.arrayMinMax)(i.z))),c&&(c.spheres.x.length&&(o.push(...(0,t.arrayMinMax)(c.spheres.x)),s.push(...(0,t.arrayMinMax)(c.spheres.y)),h.push(...(0,t.arrayMinMax)(c.spheres.z))),c.gaussians.x.length&&(o.push(...(0,t.arrayMinMax)(c.gaussians.x)),s.push(...(0,t.arrayMinMax)(c.gaussians.y)),h.push(...(0,t.arrayMinMax)(c.gaussians.z))));const[f,y]=(0,t.arrayMinMax)(o),[_,g]=(0,t.arrayMinMax)(s),[a,d]=(0,t.arrayMinMax)(h),p=f+(y-f)/2,u=_+(g-_)/2,m=a+(d-a)/2;return e.Vec3.create(p,u,m)}function n(i){const c=new Set,o=new Set;return i.properties.structAsymMap.forEach(({auth_id:s},h)=>{c.add(s),o.add(h)}),{auth:c.size,label:o.size}}return ym}var F2={},bm={},gc={},_m={},jV;function W$(){if(jV)return _m;jV=1,Object.defineProperty(_m,"__esModule",{value:!0}),_m.Scheduler=void 0;function e(){const i=(function(){const b=typeof window<"u"&&window,P=typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self;return b||typeof eV<"u"&&eV||P})(),c={},o=typeof document<"u"?document:void 0;let s=1,h;function f(b,...P){typeof b!="function"&&(b=new Function(""+b));const C={callback:b,args:P};return c[s]=C,h(s),s++}function y(b){delete c[b]}function _(b){const P=b.callback,C=b.args;switch(C.length){case 0:P();break;case 1:P(C[0]);break;case 2:P(C[0],C[1]);break;case 3:P(C[0],C[1],C[2]);break;default:P.apply(void 0,C);break}}function g(b){const P=c[b];y(b),_(P)}function a(){h=function(b){process.nextTick(function(){g(b)})}}function d(){if(i&&i.postMessage&&!i.importScripts){let b=!0;const P=i.onmessage;return i.onmessage=function(){b=!1},i.postMessage("","*"),i.onmessage=P,b}}function p(){const b="setImmediate$"+Math.random()+"$",P=function(C){C.source===i&&typeof C.data=="str
3ing"&&C.data.indexOf(b)===0&&g(+C.data.slice(b.length))};window.addEventListener?window.addEventListener("message",P,!1):window.attachEvent("onmessage",P),h=function(C){window.postMessage(b+C,"*")}}function u(){const b=new MessageChannel;b.port1.onmessage=function(P){const C=P.data;g(C)},h=function(P){b.port2.postMessage(P)}}function m(){const b=o.documentElement;h=function(P){let C=o.createElement("script");C.onreadystatechange=function(){g(P),C.onreadystatechange=null,b.removeChild(C),C=null},b.appendChild(C)}}function v(){h=function(b){setTimeout(g,0,b)}}return typeof process<"u"&&{}.toString.call(process)==="[object process]"?a():d()?p():typeof MessageChannel<"u"?u():o&&"onreadystatechange"in o.createElement("script")?m():v(),{setImmediate:f,clearImmediate:y}}const t=(function(){return typeof setImmediate<"u"?typeof window<"u"?{setImmediate:(i,...c)=>window.setImmediate(i,...c),clearImmediate:i=>window.clearImmediate(i)}:{setImmediate,clearImmediate}:e()})();function r(i){t.setImmediate(i)}const n={setImmediate:t.setImmediate,clearImmediate:t.clearImmediate,immediatePromise(){return new Promise(r)},delay(i,c=void 0){return new Promise(o=>setTimeout(o,i,c))}};return _m.Scheduler=n,_m}var Sm={},dn={},GV;function Ct(){if(GV)return dn;GV=1;var e={};Object.defineProperty(dn,"__esModule",{value:!0}),dn.isTimingMode=dn.isDebugMode=dn.isProductionMode=void 0,dn.setProductionMode=i,dn.setDebugMode=c,dn.setTimingMode=o,dn.addConsoleStatsProvider=h,dn.removeConsoleStatsProvider=f,dn.consoleStats=y;let t=(function(){try{return!0}catch{return!1}})();dn.isProductionMode=t;let r=(function(){try{const g=e.DEBUG;return g==="*"||g==="molstar"}catch{return!1}})();dn.isDebugMode=r;let n=!1;dn.isTimingMode=n;function i(_){typeof _<"u"&&(dn.isProductionMode=t=_)}function c(_){typeof _<"u"&&(dn.isDebugMode=r=_)}function o(_){typeof _<"u"&&(dn.isTimingMode=n=_)}const s=[];function h(_){s.includes(_)||s.push(_)}function f(_){const g=s.indexOf(_);g!==-1&&s.splice(g,1)}function y(){for(const _ of s)_()}return dn}var zV;function $Z(){if(zV)return Sm;zV=1,Object.defineProperty(Sm,"__esModule",{value:!0}),Sm.UserTiming=void 0;const e=Ct(),r=typeof performance<"u"&&!!performance.mark&&performance.measure&&e.isTimingMode;var n;return(function(i){function c(y){return`startTask${y.id}`}function o(y){return`endTask${y.id}`}function s(y){r&&performance.mark(c(y))}i.markStart=s;function h(y){r&&performance.mark(o(y))}i.markEnd=h;function f(y){r&&performance.measure(`â³ï¸ ${y.name}`,c(y),o(y))}i.measure=f})(n||(Sm.UserTiming=n={})),Sm}var HV;function $$(){if(HV)return gc;HV=1,Object.defineProperty(gc,"__esModule",{value:!0}),gc.ExecuteObservable=i,gc.CreateObservableCtx=c,gc.ExecuteInContext=o,gc.ExecuteObservableChild=s;const e=RD(),t=ci(),r=W$(),n=$Z();function i(b,P,C=250){const l=f(b,P,C),S=new v(l,l.root);return d(b,S)}function c(b,P,C=250){const l=f(b,P,C);return new v(l,l.root)}function o(b,P){return d(P,b)}function s(b,P,C){return b.runChild(P,C)}function h(b){return{taskId:b.id,taskName:b.name,message:"",startedTime:0,canAbort:!0,isIndeterminate:!0,current:0,max:0}}function f(b,P,C){const l={abortRequested:!1,treeAborted:!1,reason:""};return{updateRateMs:C,lastNotified:(0,t.now)(),observer:P,abortToken:l,taskId:b.id,root:{progress:h(b),children:[]},tryAbort:y(l)}}function y(b){return P=>{b.abortRequested=!0,b.reason=P||b.reason}}function _(b){return{progress:{...b.progress},children:b.children.map(_)}}function g(b){return b.progress.canAbort&&b.children.every(g)}function a(b){return{root:_(b.root),canAbort:g(b.root),requestAbort:b.tryAbort}}async function d(b,P){n.UserTiming.markStart(b),P.node.progress.startedTime=(0,t.now)();try{const C=await b.f(P);return n.UserTiming.markEnd(b),n.UserTiming.measure(b),P.info.abortToken.abortRequested&&p(P.info),C}catch(C){throw e.Task.isAbort(C)&&(P.isAborted=!0,P.node.children.length>0&&await new Promise(l=>{P.onChildrenFinished=l}),b.onAbort&&b.onAbort()),C}}function p(b){throw b.abortToken.treeAborted||(b.abortToken.treeAborted=!0,u(b.root),m(b,(0,t.now)())),e.Task.Aborted(b.abortToken.reason)}function u(b){const P=b.progress;P.isIndeterminate=!0,P.canAbort=!1,P.message="Aborting...";for(const C of b.children)u(C)}function m(b,P){b.lastNotified=P;const C=a(b);b.observer(C)}class v{checkAborted(){this.info.abortToken.abortRequested&&(this.isAborted=!0,p(this.info))}get shouldUpdate(){return this.checkAborted(),(0,t.now)()-this.lastUpdatedTime>this.info.updateRateMs}updateProgress(P){if(this.checkAborted(),!P)return;const C=this.node.progress;typeof P=="string"?(C.message=P,C.isIndeterminate=!0):(typeof P.canAbort<"u"&&(C.canAbort=P.canAbort),typeof P.message<"u"&&(C.message=P.message),typeof P.current<"u"&&(C.current=P.current),t
3ypeof P.max<"u"&&(C.max=P.max),C.isIndeterminate=typeof C.current>"u"||typeof C.max>"u",typeof P.isIndeterminate<"u"&&(C.isIndeterminate=P.isIndeterminate))}update(P,C){if(this.lastUpdatedTime=(0,t.now)(),this.updateProgress(P),!C)return m(this.info,this.lastUpdatedTime),this.checkAborted(),r.Scheduler.immediatePromise()}async runChild(P,C){this.updateProgress(C);const l={progress:h(P),children:[]},S=this.node.children;S.push(l);const T=new v(this.info,l);try{return await d(P,T)}catch(A){if(e.Task.isAbort(A)&&this.isAborted)return;throw A}finally{const A=S.indexOf(l);if(A>=0){for(let x=A,M=S.length-1;x<M;x++)S[x]=S[x+1];S.pop()}S.length===0&&this.onChildrenFinished&&this.onChildrenFinished()}}constructor(P,C){this.isSynchronous=!1,this.isExecuting=!0,this.lastUpdatedTime=0,this.onChildrenFinished=void 0,this.node=C,this.info=P}}return gc}var yc={},WV;function X$(){if(WV)return yc;WV=1,Object.defineProperty(yc,"__esModule",{value:!0}),yc.SyncRuntimeContext=yc.SynchronousRuntimeContext=void 0;class e{constructor(){this.shouldUpdate=!1,this.isSynchronous=!0}update(r,n){}}return yc.SynchronousRuntimeContext=e,yc.SyncRuntimeContext=new e,yc}var $V;function RD(){if($V)return bm;$V=1,Object.defineProperty(bm,"__esModule",{value:!0}),bm.Task=void 0;const e=$$(),t=X$(),r=Yn();var n;return(function(i){class c{run(u,m=250){return u?(0,e.ExecuteObservable)(this,u,m):this.f(t.SyncRuntimeContext)}runAsChild(u,m){return u.isSynchronous?this.f(t.SyncRuntimeContext):(0,e.ExecuteObservableChild)(u,this,m)}runInContext(u){return u.isSynchronous?this.f(t.SyncRuntimeContext):(0,e.ExecuteInContext)(u,this)}constructor(u,m,v){this.name=u,this.f=m,this.onAbort=v,this.id=d()}}function o(p){const u=p;return!!p&&typeof u.id=="number"&&typeof u.name=="string"&&!!u.run}i.is=o;function s(p){return!!p&&!!p.isAborted}i.isAbort=s;function h(p){return{isAborted:!0,reason:p,toString(){return`Aborted${p?": "+p:""}`}}}i.Aborted=h;function f(p,u,m){return new c(p,u,m)}i.create=f;function y(p,u){return f(p,async m=>u)}i.constant=y;function _(){return f("",async p=>{})}i.empty=_;function g(p,u){return f(p,async m=>{throw new Error(u)})}i.fail=g;function a(p,u){return o(p)?u?p.runInContext(u):p.run():p}i.resolveInContext=a;const d=(0,r.idFactory)(0,1073741823)})(n||(bm.Task=n={})),bm}var Cm={},XV;function XZ(){if(XV)return Cm;XV=1,Object.defineProperty(Cm,"__esModule",{value:!0}),Cm.RuntimeContext=void 0;const e=X$();var t;return(function(r){r.Synchronous=e.SyncRuntimeContext})(t||(Cm.RuntimeContext=t={})),Cm}var Pm={},KV;function KZ(){if(KV)return Pm;KV=1,Object.defineProperty(Pm,"__esModule",{value:!0}),Pm.Progress=void 0;var e;return(function(t){function r(i,c=""){const o=i.progress;if(!i.children.length)return o.isIndeterminate?`${c}${o.taskName}: ${o.message}`:`${c}${o.taskName}: [${o.current}/${o.max}] ${o.message}`;const s=c+" |_ ",h=i.children.map(f=>r(f,s));return o.isIndeterminate?`${c}${o.taskName}: ${o.message} 4${h.join(` 5`)}`:`${c}${o.taskName}: [${o.current}/${o.max}] ${o.message} 6${h.join(` 7`)}`}function n(i){return r(i.root)}t.format=n})(e||(Pm.Progress=e={})),Pm}var oC={},YV;function YZ(){if(YV)return oC;YV=1,Object.defineProperty(oC,"__esModule",{value:!0}),oC.MultistepTask=t;const e=RD();function t(r,n,i,c){return o=>e.Task.create(r,async s=>i(o,h=>s.update({message:`${n[h]}`,current:h+1,max:n.length}),s),c)}return oC}var sC={},QV;function K$(){if(QV)return sC;QV=1,Object.defineProperty(sC,"__esModule",{value:!0}),sC.chunkedSubtask=t;const e=ci();async function t(r,n,i,c,o){let s=Math.max(n,0),h=0,f=0;if(r.isSynchronous)return c(Number.MAX_SAFE_INTEGER,i),i;let y=(0,e.now)(),_=0,g=0;for(;(_=c(s,i))>0;){h+=_;const a=(0,e.now)()-y;g+=a,f+=a,r.shouldUpdate&&(await o(r,i,h),s=Math.round(g*h/f)+1,y=(0,e.now)(),g=0)}return r.shouldUpdate&&await o(r,i,h),i}return sC}var ZV;function nt(){return ZV||(ZV=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.chunkedSubtask=e.MultistepTask=e.Scheduler=e.Progress=e.RuntimeContext=e.Task=void 0;const t=RD();Object.defineProperty(e,"Task",{enumerable:!0,get:function(){return t.Task}});const r=XZ();Object.defineProperty(e,"RuntimeContext",{enumerable:!0,get:function(){return r.RuntimeContext}});const n=KZ();Object.defineProperty(e,"Progress",{enumerable:!0,get:function(){return n.Progress}});const i=W$();Object.defineProperty(e,"Scheduler",{enumerable:!0,get:function(){return i.Scheduler}});const c=YZ();Object.defineProperty(e,"MultistepTask",{enumerable:!0,get:function(){return c.MultistepTask}});const o=K$();Object.defineProperty(e,"chunkedSubtask",{enumerable:!0,get:function(){return o.chunkedSubtask}})})(F2)),F2}var Tm={},L2={},xm={},N2={},Am={},JV;function QZ(){if(JV)return Am;
7JV=1,Object.defineProperty(Am,"__esModule",{value:!0}),Am.ChunkedArray=void 0;var e;return(function(t){function r(a){return a.creator&&a.chunkSize}t.is=r;function n(a){const d=a.growBy*a.elementSize;a.currentSize=d,a.currentIndex=0,a.currentChunk=new a.ctor(d),a.allocatedSize+=d,a.chunks[a.chunks.length]=a.currentChunk}function i(a,d,p,u,m){a.currentIndex>=a.currentSize&&n(a);const v=a.currentChunk,b=a.currentIndex;return v[b]=d,v[b+1]=p,v[b+2]=u,v[b+3]=m,a.currentIndex+=4,a.elementCount++}t.add4=i;function c(a,d,p,u){a.currentIndex>=a.currentSize&&n(a);const m=a.currentChunk,v=a.currentIndex;return m[v]=d,m[v+1]=p,m[v+2]=u,a.currentIndex+=3,a.elementCount++}t.add3=c;function o(a,d,p){a.currentIndex>=a.currentSize&&n(a);const u=a.currentChunk,m=a.currentIndex;return u[m]=d,u[m+1]=p,a.currentIndex+=2,a.elementCount++}t.add2=o;function s(a,d){return a.currentIndex>=a.currentSize&&n(a),a.currentChunk[a.currentIndex]=d,a.currentIndex+=1,a.elementCount++}t.add=s;function h(a,d,p){for(let u=0;u<d;u++)a.currentIndex>=a.currentSize&&n(a),a.currentChunk[a.currentIndex++]=p,a.elementCount++;return a.elementCount}t.addRepeat=h;function f(a,d){const{elementSize:p}=a;for(let u=0,m=d.length;u<m;u+=p){a.currentIndex>=a.currentSize&&n(a);const{currentChunk:v}=a;for(let b=0;b<p;b++)v[a.currentIndex++]=d[u+b];a.elementCount++}return a.elementCount}t.addMany=f;function y(a,d=!1){return _(a,d)}t.compact=y;function _(a,d){const{ctor:p,chunks:u,currentIndex:m}=a;if(!u.length)return new p(0);if(u.length===1&&(d||m===a.allocatedSize))return u[0];let v=0;for(let l=0,S=u.length-1;l<S;l++)v+=u[l].length;v+=a.currentIndex;const b=new p(v);let P=0;if(b.buffer)for(let l=0,S=u.length-1;l<S;l++)b.set(u[l],P),P+=u[l].length;else for(let l=0,S=u.length-1;l<S;l++){const T=u[l];for(let A=0,x=T.length;A<x;A++)b[P+A]=T[A];P+=T.length}const C=u[u.length-1];if(b.buffer&&m>=a.currentSize)b.set(C,P);else for(let l=0,S=C.length;l<S;l++)b[P+l]=C[l];return b}t._compact=_;function g(a,d,p,u){const m={ctor:a,elementSize:d,growBy:Math.max(1,Math.ceil(p)),allocatedSize:0,elementCount:0,currentSize:0,currentChunk:void 0,currentIndex:0,chunks:[]};if(typeof u>"u")return m;if(typeof u=="number")return m.currentChunk=new a(u*d),m.allocatedSize=u*d,m.currentSize=m.currentChunk.length,m.chunks[0]=m.currentChunk,m;const v=u;if(v.length%d!==0)throw new Error("initialChunk length must be a multiple of the element size.");return m.currentChunk=v,m.allocatedSize=v.length,m.currentSize=v.length,m.chunks[0]=v,m}t.create=g})(e||(Am.ChunkedArray=e={})),Am}var cC={},eE;function ZZ(){if(eE)return cC;eE=1,Object.defineProperty(cC,"__esModule",{value:!0}),cC.makeBuckets=n;const e=gT();function t(i,c,o){return i[c].key<i[o].key?-1:1}function r(i,c,o,s,h){const f=new Map,y=[];let _=c(i[0]),g=!0;for(let m=s;m<h;m++){const v=c(i[m]);if(f.has(v))f.get(v).count++,_!==v&&(g=!1);else{const b={key:v,count:1,offset:m};f.set(v,b),y[y.length]=b}_=v}const a=new Int32Array(y.length+1);a[y.length]=h;let d=!0;if(o){for(let m=1,v=y.length;m<v;m++)if(y[m-1].key>y[m].key){d=!1;break}}if(g&&d){for(let m=0;m<y.length;m++)a[m]=y[m].offset;return a}o&&!d&&(0,e.sort)(y,0,y.length,t,e.arraySwap);let p=0;for(let m=0;m<y.length;m++){const v=y[m];v.offset=p,p+=v.count}const u=new Int32Array(h-s);for(let m=s;m<h;m++){const v=c(i[m]),b=f.get(v);u[b.offset++]=i[m]}for(let m=0,v=u.length;m<v;m++)i[m+s]=u[m];a[0]=s;for(let m=1;m<y.length;m++)a[m]=y[m-1].offset+s;return a}function n(i,c,o){const s=o&&o.start||0,h=o&&o.end||i.length;if(h-s<=0)throw new Error("Can only bucket non-empty collections.");return r(i,c,!!(o&&o.sort),s,h)}return cC}var Zl={},tE;function JZ(){if(tE)return Zl;tE=1,Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.EquivalenceClassesImpl=void 0,Zl.EquivalenceClasses=t;class e{createGroup(n,i){const c=this.id++,o=[n];return this.groups[c]=o,{id:c,keys:o,value:i}}add(n,i){const c=this.getHash(i);if(this.byHash.has(c)){const o=this.byHash.get(c);for(let h=0,f=o.length;h<f;h++){const y=o[h];if(this.areEqual(i,y.value))return y.keys[y.keys.length]=n,y.value}const s=this.createGroup(n,i);return o[o.length]=s,s.value}else{const o=this.createGroup(n,i);return this.byHash.set(c,[o]),o.value}}constructor(n,i){this.getHash=n,this.areEqual=i,this.id=0,this.byHash=new Map,this.groups=[]}}Zl.EquivalenceClassesImpl=e;function t(r,n){return new e(r,n)}return Zl}var wr={},rE;function Dn(){if(rE)return wr;
7rE=1,Object.defineProperty(wr,"__esModule",{value:!0}),wr.PCG=void 0,wr.hash1=e,wr.hash2=t,wr.hash3=r,wr.hash4=n,wr.hashString=i,wr.cantorPairing=c,wr.sortedCantorPairing=o,wr.invertCantorPairing=s,wr.hashFnv32a=h,wr.hashFnv256a=f,wr.hashFnv256o=y,wr.hashMurmur32o=P,wr.hashMurmur128o=C,wr.murmurHash3_32=l,wr.murmurHash3_128_fromBytes=S,wr.murmurHash3_128=T,wr.mortonOrder3d=x,wr.invertMortonOrder3d=M;function e(D){let V=D^D>>4;return V=(V^3735928559)+(V<<5),V=V^V>>11,V}function t(D,V){let R=23;return R=31*R+D|0,R=31*R+V|0,R=R^R>>4,R=(R^3735928559)+(R<<5),R=R^R>>11,R}function r(D,V,R){let E=23;return E=31*E+D|0,E=31*E+V|0,E=31*E+R|0,E=E^E>>4,E=(E^3735928559)+(E<<5),E=E^E>>11,E}function n(D,V,R,E){let I=23;return I=31*I+D|0,I=31*I+V|0,I=31*I+R|0,I=31*I+E|0,I=I^I>>4,I=(I^3735928559)+(I<<5),I=I^I>>11,I}function i(D){let V=0;for(let R=0,E=D.length;R<E;R++)V=(V<<5)-V+D.charCodeAt(R)|0;return V}function c(D,V){return(D+V)*(D+V+1)/2+V}function o(D,V){return D<V?c(D,V):c(V,D)}function s(D,V){const R=Math.floor((Math.sqrt(8*V+1)-1)/2),E=(R*R+R)/2,I=V-E;return D[0]=R-I,D[1]=I,D}function h(D){let V=2166136261;for(let R=0,E=D.length;R<E;++R)V^=D[R],V+=(V<<1)+(V<<4)+(V<<7)+(V<<8)+(V<<24);return V>>>0}function f(D,V){V.set(a);for(let R=0,E=D.length;R<E;++R)V[0]^=D[R]&255,u(V);return V}function y(D){return g.hash(D)}class _{constructor(){this.hashTarget=new Uint32Array(8),this.numberBytes=new Uint8Array(8),this.numberView=new DataView(this.numberBytes.buffer)}hash(V){return this.hashTarget.set(a),this.hashValue(V,0),b(this.hashTarget)}hashValue(V,R){if(R>50)return;const E=typeof V;switch(this.addByte(E.charCodeAt(0)),E){case"string":this.addString(V);break;case"number":this.addNumber(V);break;case"boolean":this.addByte(V?1:0);break;case"object":V===null?this.addByte(0):Array.isArray(V)?this.addArray(V,R):this.addObject(V,R);break;case"undefined":this.addByte(255);break}}addByte(V){this.hashTarget[0]^=V&255,u(this.hashTarget)}addString(V){for(let R=0;R<V.length;R++){const E=V.charCodeAt(R);E<128?this.addByte(E):E<2048?(this.addByte(192|E>>6),this.addByte(128|E&63)):(this.addByte(224|E>>12),this.addByte(128|E>>6&63),this.addByte(128|E&63))}}addNumber(V){if(Number.isNaN(V))this.addByte(127),this.addByte(192),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0);else if(!Number.isFinite(V))V>0?(this.addByte(127),this.addByte(128),this.addByte(0),this.addByte(0)):(this.addByte(255),this.addByte(128),this.addByte(0),this.addByte(0)),this.addByte(0),this.addByte(0),this.addByte(0),this.addByte(0);else{this.numberView.setFloat64(0,V,!1);for(let R=0;R<8;R++)this.addByte(this.numberBytes[R])}}addArray(V,R){this.addNumber(V.length);for(let E=0;E<V.length;E++)this.addNumber(E),this.hashValue(V[E],R+1)}addObject(V,R){const E=Object.keys(V).sort();this.addNumber(E.length);for(const I of E)this.addString(I),this.hashValue(V[I],R+1)}}const g=new _,a=new Uint32Array([1818371886,129696066,1656234357,1653982605,383153456,3715178979,3004645376,256]),d=new Uint32Array(8),p=new Uint32Array(8);function u(D){d[0]=0,d[1]=0,d[2]=D[0]<<24,d[3]=D[0]>>>8|D[1]<<24,d[4]=D[1]>>>8|D[2]<<24,d[5]=D[2]>>>8|D[3]<<24,d[6]=D[3]>>>8|D[4]<<24,d[7]=D[4]>>>8|D[5]<<24,p[0]=D[0]<<8,p[1]=D[0]>>>24|D[1]<<8,p[2]=D[1]>>>24|D[2]<<8,p[3]=D[2]>>>24|D[3]<<8,p[4]=D[3]>>>24|D[4]<<8,p[5]=D[4]>>>24|D[5]<<8,p[6]=D[5]>>>24|D[6]<<8,p[7]=D[6]>>>24|D[7]<<8;let V=0;for(let R=0;R<8;R++){const E=D[R]*59+V;D[R]=E>>>0,V=Math.floor(E/4294967296)}V=0;for(let R=0;R<8;R++){const E=D[R]+d[R]+p[R]+V;D[R]=E>>>0,V=E>=4294967296?1:0}}const m=["00000000","0000000","000000","00000","0000","000","00","0"];function v(D){const V=D.toString(16);return V.length>=8?V:m[V.length]+V}function b(D){let V="";for(let R=7;R>=0;R--)V+=v(D[R]);return V}function P(D,V=42){const R=JSON.stringify(D);return l(R,V)}function C(D,V=42){const R=JSON.stringify(D);return T(R,V)}function l(D,V){let R=V>>>0;const E=D.length%4,I=D.length-E;for(let w=0;w<I;w+=4){let O=D.charCodeAt(w)&255|(D.charCodeAt(w+1)&255)<<8|(D.charCodeAt(w+2)&255)<<16|(D.charCo
7deAt(w+3)&255)<<24;O=Math.imul(O,3432918353),O=O<<15|O>>>17,O=Math.imul(O,461845907),R^=O,R=R<<13|R>>>19,R=Math.imul(R,5)+3864292196}let B=0;switch(E){case 3:B^=(D.charCodeAt(I+2)&255)<<16;case 2:B^=(D.charCodeAt(I+1)&255)<<8;case 1:B^=D.charCodeAt(I)&255,B=Math.imul(B,3432918353),B=B<<15|B>>>17,B=Math.imul(B,461845907),R^=B}return R^=D.length,R^=R>>>16,R=Math.imul(R,2246822507),R^=R>>>13,R=Math.imul(R,3266489909),R^=R>>>16,R>>>0}function S(D,V){const R={length:D.length,charCodeAt(E){return D[E]}};return T(R,V)}function T(D,V){let R=V>>>0,E=V>>>0,I=V>>>0,B=V>>>0;const w=D.length%16,O=D.length-w;for(let N=0;N<O;N+=16){let k=D.charCodeAt(N)&255|(D.charCodeAt(N+1)&255)<<8|(D.charCodeAt(N+2)&255)<<16|(D.charCodeAt(N+3)&255)<<24,j=D.charCodeAt(N+4)&255|(D.charCodeAt(N+5)&255)<<8|(D.charCodeAt(N+6)&255)<<16|(D.charCodeAt(N+7)&255)<<24,H=D.charCodeAt(N+8)&255|(D.charCodeAt(N+9)&255)<<8|(D.charCodeAt(N+10)&255)<<16|(D.charCodeAt(N+11)&255)<<24,G=D.charCodeAt(N+12)&255|(D.charCodeAt(N+13)&255)<<8|(D.charCodeAt(N+14)&255)<<16|(D.charCo
7deAt(N+15)&255)<<24;k=Math.imul(k,597399067),k=k<<15|k>>>17,k=Math.imul(k,2869860233),R^=k,R=R<<19|R>>>13,R+=E,R=Math.imul(R,5)+1444728091,j=Math.imul(j,2869860233),j=j<<16|j>>>16,j=Math.imul(j,951274213),E^=j,E=E<<17|E>>>15,E+=I,E=Math.imul(E,5)+197830471,H=Math.imul(H,951274213),H=H<<17|H>>>15,H=Math.imul(H,2716044179),I^=H,I=I<<15|I>>>17,I+=B,I=Math.imul(I,5)+2530024501,G=Math.imul(G,2716044179),G=G<<13|G>>>19,G=Math.imul(G,597399067),B^=G,B=B<<13|B>>>19,B+=R,B=Math.imul(B,5)+850148119}let F=0,L=0,U=0,q=0;switch(w){case 15:q^=D.charCodeAt(O+14)<<16;case 14:q^=D.charCodeAt(O+13)<<8;case 13:q^=D.charCodeAt(O+12),q=Math.imul(q,2716044179),q=q<<13|q>>>19,q=Math.imul(q,597399067),B^=q;case 12:U^=D.charCodeAt(O+11)<<24;case 11:U^=D.charCodeAt(O+10)<<16;case 10:U^=D.charCodeAt(O+9)<<8;case 9:U^=D.charCodeAt(O+8),U=Math.imul(U,951274213),U=U<<17|U>>>15,U=Math.imul(U,2716044179),I^=U;case 8:L^=D.charCodeAt(O+7)<<24;case 7:L^=D.charCodeAt(O+6)<<16;case 6:L^=D.charCodeAt(O+5)<<8;case 5:L^=D.charCodeAt(O+4),L=Math.imul(L,2869860233),L=L<<16|L>>>16,L=Math.imul(L,951274213),E^=L;case 4:F^=D.charCodeAt(O+3)<<24;case 3:F^=D.charCodeAt(O+2)<<16;case 2:F^=D.charCodeAt(O+1)<<8;case 1:F^=D.charCodeAt(O),F=Math.imul(F,597399067),F=F<<15|F>>>17,F=Math.imul(F,2869860233),R^=F}return R^=D.length,E^=D.length,I^=D.length,B^=D.length,R+=E,R+=I,R+=B,E+=R,I+=R,B+=R,R^=R>>>16,R=Math.imul(R,2246822507),R^=R>>>13,R=Math.imul(R,3266489909),R^=R>>>16,E^=E>>>16,E=Math.imul(E,2246822507),E^=E>>>13,E=Math.imul(E,3266489909),E^=E>>>16,I^=I>>>16,I=Math.imul(I,2246822507),I^=I>>>13,I=Math.imul(I,3266489909),I^=I>>>16,B^=B>>>16,B=Math.imul(B,2246822507),B^=B>>>13,B=Math.imul(B,3266489909),B^=B>>>16,R+=E,R+=I,R+=B,E+=R,I+=R,B+=R,(R>>>0).toString(16).padStart(8,"0")+(E>>>0).toString(16).padStart(8,"0")+(I>>>0).toString(16).padStart(8,"0")+(B>>>0).toString(16).padStart(8,"0")}class A{constructor(V=26699){this.state=V>>>0}int(){const V=this.state;this.state=Math.imul(this.state,1664525)+1013904223,this.state=this.state>>>0;const R=(V>>>18^V)>>>5,E=V>>>27;return(R>>>E|R<<32-E)>>>0}float(){return this.int()/4294967296}}wr.PCG=A;function x(D,V,R){let E=0;for(let I=0;I<21;++I)E|=(D>>I&1)<<3*I+2,E|=(V>>I&1)<<3*I+1,E|=(R>>I&1)<<3*I;return E}function M(D){let V=0,R=0,E=0;for(let I=0;I<21;++I)V|=(D>>3*I+2&1)<<I,R|=(D>>3*I+1&1)<<I,E|=(D>>3*I&1)<<I;return[V,R,E]}return wr}var Mm={},nE;function eJ(){if(nE)return Mm;nE=1,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.Grouper=r,Mm.groupBy=n;const e=Z_();class t{add(c){const o=this.getKey(c);if(this.map.has(o)){const s=this.map.get(o);s[s.length]=c}else{const s=[c];this.map.set(o,s),this.keys[this.keys.length]=o,this.groups[this.groups.length]=s}}getGrouping(){return{keys:this.keys,groups:this.groups,map:this.map}}constructor(c){this.getKey=c,this.map=new Map,this.keys=[],this.groups=[]}}function r(i){return new t(i)}function n(i,c){const o=r(c);if(e.Column.is(i)){const s=i.value;for(let h=0,f=i.rowCount;h<f;h++)o.add(s(h))}else for(let s=0,h=i.length;s<h;s++)o.add(i[s]);return o.getGrouping()}return Mm}var bs={},iE;function vT(){if(iE)return bs;iE=1,Object.defineProperty(bs,"__esModule",{value:!0}),bs.arrayFind=e,bs.iterableToArray=t,bs.createRangeArray=r,bs.arrayPickIndices=n,bs.arrayGetCtor=i;function e(c,o){for(let s=0,h=c.length;s<h;s++)if(o(c[s]))return c[s]}function t(c){if(Array.from)return Array.from(c);const o=[];for(;;){const{done:s,value:h}=c.next();if(s)break;o[o.length]=h}return o}function r(c,o,s){const h=o-c+1,f=s?new s(h):new Int32Array(h);for(let y=0;y<h;y++)f[y]=y+c;return f}function n(c,o){const s=new(i(c))(o.length);for(let h=0,f=o.length;h<f;h++)s[h]=c[o[h]];return s}function i(c){const o=c.constructor;if(!o)throw new Error("data does not define a constructor and it should");return o}return bs}var aE;function _t(){return aE||(aE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(QZ(),e),t.__exportStar(ZZ(),e),t.__exportStar(JZ(),e),t.__exportStar(Dn(),e),t.__exportStar(gT(),e),t.__exportStar(eJ(),e),t.__exportStar(vT(),e)})(N2)),N2}var q2={},Dm={},U2={},Im={},oE;function OD(){if(oE)return Im;
7oE=1,Object.defineProperty(Im,"__esModule",{value:!0}),Im.IntTuple=void 0;const e=Dn();var t;return(function(r){r.Zero=0;const{_int32:n,_float64:i,_int32_1:c,_float64_1:o}=(function(){const m=new ArrayBuffer(8),v=new ArrayBuffer(8);return{_int32:new Int32Array(m),_float64:new Float64Array(m),_int32_1:new Int32Array(v),_float64_1:new Float64Array(v)}})();function s(m){return typeof m=="number"}r.is=s;function h(m,v){return n[0]=m,n[1]=v,i[0]}r.create=h;function f(m){return i[0]=m,n[1]-n[0]}r.diff=f;function y(m){return i[0]=m,n[0]}r.fst=y;function _(m){return i[0]=m,n[1]}r.snd=_;function g(m,v){return i[0]=m,o[0]=v,n[0]===c[0]&&n[1]===c[1]}r.areEqual=g;function a(m,v){i[0]=m,o[0]=v;const b=n[0]-c[0];return b!==0?b:n[1]-c[1]}r.compare=a;function d(m,v,b){i[0]=m[v],o[0]=m[b];const P=n[0]-c[0];return P!==0?P:n[1]-c[1]}r.compareInArray=d;function p(m){return i[0]=m,(0,e.hash2)(n[0],n[1])}r.hashCode=p;function u(m){return i[0]=m,`(${n[0]}, ${n[1]})`}r.toString=u})(t||(Im.IntTuple=t={})),Im}var sE;function tJ(){return sE||(sE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.areEqual=e.toString=e.hashCode=e.size=e.min=e.end=e.start=e.is=e.Empty=void 0,e.ofRange=r,e.ofBounds=n,e.ofLength=i,e.max=c,e.has=o,e.indexOf=s,e.getAt=h,e.areIntersecting=f,e.isSubInterval=y,e.findPredecessorIndex=_,e.findPredecessorIndexInInterval=g,e.findRange=a,e.intersect=d,e.intersectionSize=p,e.offset=u;const t=OD();e.Empty=t.IntTuple.Zero;function r(m,v){return v<m?t.IntTuple.create(m,m):t.IntTuple.create(m,v+1)}function n(m,v){return v<=m?t.IntTuple.create(m,m):t.IntTuple.create(m,v)}function i(m){return m<0?t.IntTuple.create(0,0):t.IntTuple.create(0,m)}e.is=t.IntTuple.is,e.start=t.IntTuple.fst,e.end=t.IntTuple.snd,e.min=t.IntTuple.fst;function c(m){return t.IntTuple.snd(m)-1}e.size=t.IntTuple.diff,e.hashCode=t.IntTuple.hashCode,e.toString=t.IntTuple.toString;function o(m,v){return t.IntTuple.fst(m)<=v&&v<t.IntTuple.snd(m)}function s(m,v){const b=(0,e.start)(m);return v>=b&&v<(0,e.end)(m)?v-b:-1}function h(m,v){return t.IntTuple.fst(m)+v}e.areEqual=t.IntTuple.areEqual;function f(m,v){const b=(0,e.size)(m),P=(0,e.size)(v);return b===0&&P===0?!0:b>0&&P>0&&c(m)>=(0,e.min)(v)&&(0,e.min)(m)<=c(v)}function y(m,v){return(0,e.size)(m)?(0,e.size)(v)?(0,e.start)(m)<=(0,e.start)(v)&&(0,e.end)(m)>=(0,e.end)(v):!0:(0,e.size)(v)===0}function _(m,v){const b=(0,e.start)(m);if(v<=b)return 0;const P=(0,e.end)(m);return v>=P?P-b:v-b}function g(m,v,b){const P=(0,e.start)(b),C=(0,e.start)(m);if(v<=P+C)return P;const l=(0,e.end)(b);return v>=l+C?l:v-C}function a(m,v,b){return n(_(m,v),_(m,b+1))}function d(m,v){return f(m,v)?n(Math.max((0,e.start)(m),(0,e.start)(v)),Math.min((0,e.end)(m),(0,e.end)(v))):e.Empty}function p(m,v){return(0,e.size)(a(m,(0,e.min)(v),c(v)))}function u(m,v){return t.IntTuple.create((0,e.start)(m)+v,(0,e.end)(m)+v)}})(U2)),U2}var cE;function In(){if(cE)return Dm;cE=1,Object.defineProperty(Dm,"__esModule",{value:!0}),Dm.Interval=void 0;const t=At.__importStar(tJ());var r;return(function(n){n.Empty=t.Empty,n.ofSingleton=i=>t.ofRange(i,i),n.ofRange=t.ofRange,n.ofBounds=t.ofBounds,n.ofLength=t.ofLength,n.is=t.is,n.has=t.has,n.indexOf=t.indexOf,n.getAt=t.getAt,n.start=t.start,n.end=t.end,n.min=t.min,n.max=t.max,n.size=t.size,n.hashCode=t.hashCode,n.toString=t.toString,n.areEqual=t.areEqual,n.areIntersecting=t.areIntersecting,n.isSubInterval=t.isSubInterval,n.findPredecessorIndex=t.findPredecessorIndex,n.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,n.findRange=t.findRange,n.intersectionSize=t.intersectionSize,n.intersect=t.intersect,n.offset=t.offset})(r||(Dm.Interval=r={})),Dm}var wm={},j2={},Vm={},G2={},uE;function rJ(){return uE||(uE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Empty=void 0,e.ofSingleton=c,e.ofSortedArray=o,e.ofUnsortedArray=s,e.ofRange=h,e.is=f,e.isRange=y,e.start=_,e.end=g,e.min=a,e.max=d,e.size=p,e.hashCode=u,e.toString=m,e.indexOf=v,e.indexOfInInterval=b,e.indexOfInRange=P,e.has=C,e.getAt=l,e.areEqual=S,e.findPredecessorIndex=T,e.findPredecessorIndexInInterval=A,e.findRange=x,e.areIntersecting=V,e.isSubset=R,e.union=E,e.intersectionSize=I,e.intersect=w,e.subtract=O,e.deduplicate=F,e.indicesOf=L;const t=vT(),r=Dn(),n=gT(),i=In();e.Empty=[];function c(N){return[N]}function o(N){return N}function s(N){return(0,n.sortArray)(N),N}function h(N,k){if(k<N)return[];const j=new Int32Array(k-N+1);for(let H=N;H<=k;H++)j[H-N]=H;return j}function f(N){return N&&(Array.isArray(N)||!!N.buffer)}function y(N){return N[N.length-1]-N[0]+1===N.length}function _(N){return N[0]}function g(N){return N[N.length-1]+1}function a(N){return N[0]}function d(N){return N[N.length-1]}function p(N){return N.length}function u(N){const k=N.length;return k?k>2?(0,r.hash4)(k,N[0],N[k-1],N[k>>1]):(0,r.hash3)(k,N[0],N[k-1]):0}function m(N){const k=N.length;return k>5?`[${N[0]}, ${N[1]}, ..., ${N[k-1]}
7], length ${k}`:`[${N.join(", ")}]`}function v(N,k){const j=N.length;return j===0?-1:N[0]<=k&&k<=N[j-1]?M(N,k,0,j):-1}function b(N,k,j){return P(N,k,i.Interval.start(j),i.Interval.end(j))}function P(N,k,j,H){return N.length===0||H<=j?-1:N[j]<=k&&k<=N[H-1]?M(N,k,j,H):-1}function C(N,k){return v(N,k)>=0}function l(N,k){return N[k]}function S(N,k){if(N===k)return!0;let j=N.length;if(j!==k.length||N[0]!==k[0]||N[j-1]!==k[j-1])return!1;if(y(N))return!0;j--;for(let H=1;H<j;H++)if(N[H]!==k[H])return!1;return!0}function T(N,k){return D(N,k,0,N.length)}function A(N,k,j){return D(N,k,i.Interval.start(j),i.Interval.end(j))}function x(N,k,j){return i.Interval.ofBounds(T(N,k),T(N,j+1))}function M(N,k,j,H){let G=j,z=H-1;for(;G<=z;){if(G+11>z){for(let Y=G;Y<=z;Y++)if(k===N[Y])return Y;return-1}const W=G+z>>1,X=N[W];if(k<X)z=W-1;else if(k>X)G=W+1;else return W}return-1}function D(N,k,j,H){if(j===H||N[j]>=k)return j;if(N[H-1]<k)return H;let G=j,z=H;for(;z-G>4;){const W=G+z>>1;N[W]>=k?z=W:G=W+1}for(let W=G;W<z;W++)if(N[W]>=k)return W;return z}function V(N,k){if(N===k)return!0;let{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);for(;j<G&&H<z;){const W=N[j],X=k[H];if(W<X)j++;else if(W>X)H++;else return!0}return!1}function R(N,k){if(N===k)return!0;const j=k.length;let{startI:H,startJ:G,endI:z,endJ:W}=q(N,k);if(W-G<j||z-H<j)return!1;let X=0;for(;H<z&&G<W;){const Y=N[H],K=k[G];Y<K?H++:Y>K?G++:(H++,G++,X++)}return X===j}function E(N,k){if(N===k)return N;const j=N.length,H=k.length;if(j===0)return k;if(H===0)return N;if(N[0]>k[0])return E(k,N);const{startI:G,startJ:z,endI:W,endJ:X}=q(N,k),Y=B(N,k,G,z,W,X);if(Y===j&&Y===H||Y===H)return N;if(Y===j)return k;const K=new Int32Array(j+H-Y);let Q=0,J=0,ae=0;for(Q=0;Q<G;Q++)K[ae++]=N[Q];for(;J<X&&N[G]>k[J];)K[ae++]=k[J++];for(;Q<W&&J<X;){const te=N[Q],ne=k[J];te<ne?(K[ae++]=te,Q++):te>ne?(K[ae++]=ne,J++):(K[ae++]=te,Q++,J++)}for(;Q<W;Q++)K[ae++]=N[Q];for(;J<X;J++)K[ae++]=k[J];for(;Q<j;Q++)K[ae++]=N[Q];for(;J<H;J++)K[ae++]=k[J];return K}function I(N,k){if(N===k)return p(N);const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);return B(N,k,j,H,G,z)}function B(N,k,j,H,G,z){let W=j,X=H,Y=0;for(;W<G&&X<z;){const K=N[W],Q=k[X];K<Q?W++:K>Q?X++:(W++,X++,Y++)}return Y}function w(N,k){if(N===k)return N;const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k),W=B(N,k,j,H,G,z),X=N.length,Y=k.length;if(!W)return e.Empty;if(W===X&&W===Y||W===Y)return k;if(W===X)return N;const K=new Int32Array(W);let Q=0,J=j,ae=H;for(;J<G&&ae<z;){const te=N[J],ne=k[ae];te<ne?J++:(te>ne||(K[Q++]=te,J++),ae++)}return K}function O(N,k){if(N===k)return e.Empty;const j=N.length,{startI:H,startJ:G,endI:z,endJ:W}=q(N,k);let X=H,Y=G,K=0;for(;X<z&&Y<W;){const ae=N[X],te=k[Y];ae<te?X++:ae>te?Y++:(X++,Y++,K++)}if(!K)return N;if(K>=j)return e.Empty;const Q=new Int32Array(j-K);let J=0;for(let ae=0;ae<H;ae++)Q[J++]=N[ae];for(X=H,Y=G;X<z&&Y<W;){const ae=N[X],te=k[Y];ae<te?(Q[J++]=ae,X++):(ae>te||X++,Y++)}for(;X<j;X++)Q[J++]=N[X];return Q}function F(N){if(N.length<2)return N;let k=1;for(let G=0,z=N.length-1;G<z;G++)N[G]!==N[G+1]&&k++;if(k===N.length)return N;const j=new Int32Array(k);let H=0;for(let G=0,z=N.length-1;G<z;G++)N[G]!==N[G+1]&&(j[H++]=N[G]);return j[H]=N[N.length-1],j}function L(N,k){if(S(N,k))return(0,t.createRangeArray)(0,N.length-1);const{startI:j,startJ:H,endI:G,endJ:z}=q(N,k);let W=j,X=H,Y=0;for(;W<G&&X<z;){const ae=N[W],te=k[X];ae<te?W++:ae>te?X++:(W++,X++,Y++)}const K=N.length;if(!Y)return e.Empty;if(Y===K)return(0,t.createRangeArray)(0,N.length-1);const Q=new Int32Array(Y);let J=0;for(W=j,X=H;W<G&&X<z;){const ae=N[W],te=k[X];ae<te?W++:(ae>te||(Q[J++]=W,W++),X++)}return Q}const U={startI:0,startJ:0,endI:0,endJ:0};function q(N,k){const j=N.length,H=k.length,G=j/H;return j>=128||H>=128||G<=.34||G>=2.99?(U.startI=T(N,_(k)),U.startJ=T(k,_(N)),U.endI=T(N,g(k)),U.endJ=T(k,g(N))):(U.startI=0,U.startJ=0,U.endI=j,U.endJ=H),U}})(G2)),G2}var lE;function Na(){if(lE)return Vm;lE=1,Object.defineProperty(Vm,"__esModule",{value:!0}),Vm.SortedArray=void 0;const t=At.__importStar(rJ());var r;return(function(n){n.Empty=t.Empty,n.ofUnsortedArray=t.ofUnsortedArray,n.ofSingleton=t.ofSingleton,n.ofSortedArray=t.ofSortedArray,n.ofRange=t.ofRange,n.ofBounds=(i,c)=>t.ofRange(i,c-1),n.is=t.is,n.isRange=t.isRange,n.has=t.has,n.indexOf=t.indexOf,n.indexOfInInterval=t.indexOfInInterval,n.indexOfInRange=t.indexOfInRange,n.start=t.start,n.end=t.end,n.min=t.min,n.max=t.max,n.size=t.size,n.hashCode=t.hashCode,n.toString=t.toString,n.areEqual=t.areEqual,n.areIntersecting=t.areIntersecting,n.isSubset=t.isSubset,n.union=t.union,n.intersect=t.intersect,n.subtract=t.subtract,n.findPredecessorIndex=t.findPredecessorIndex,n.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,n.findRange=t.findR
7ange,n.intersectionSize=t.intersectionSize,n.deduplicate=t.deduplicate,n.indicesOf=t.indicesOf})(r||(Vm.SortedArray=r={})),Vm}var dE;function nJ(){return dE||(dE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ofBounds=e.ofRange=e.ofSingleton=e.Empty=void 0,e.ofSortedArray=n,e.size=i,e.has=c,e.indexOf=o,e.getAt=s,e.min=h,e.max=f,e.start=y,e.end=_,e.isEmpty=g,e.hashCode=a,e.toString=d,e.areEqual=p,e.areIntersecting=u,e.isSubset=m,e.findPredecessorIndex=v,e.findPredecessorIndexInInterval=b,e.findRange=P,e.intersectionSize=C,e.union=l,e.intersect=S,e.subtract=T,e.forEach=U,e.forEachSegment=q,e.indexedIntersect=N;const t=Na(),r=In();e.Empty=r.Interval.Empty,e.ofSingleton=r.Interval.ofSingleton,e.ofRange=r.Interval.ofRange,e.ofBounds=r.Interval.ofBounds;function n(k){return k.length?t.SortedArray.isRange(k)?r.Interval.ofRange(k[0],k[k.length-1]):k:e.Empty}function i(k){return r.Interval.is(k)?r.Interval.size(k):t.SortedArray.size(k)}function c(k,j){return r.Interval.is(k)?r.Interval.has(k,j):t.SortedArray.has(k,j)}function o(k,j){return r.Interval.is(k)?r.Interval.indexOf(k,j):t.SortedArray.indexOf(k,j)}function s(k,j){return r.Interval.is(k)?r.Interval.getAt(k,j):k[j]}function h(k){return r.Interval.is(k)?r.Interval.min(k):t.SortedArray.min(k)}function f(k){return r.Interval.is(k)?r.Interval.max(k):t.SortedArray.max(k)}function y(k){return r.Interval.is(k)?r.Interval.start(k):t.SortedArray.start(k)}function _(k){return r.Interval.is(k)?r.Interval.end(k):t.SortedArray.end(k)}function g(k){return i(k)===0}function a(k){return r.Interval.is(k)?r.Interval.hashCode(k):t.SortedArray.hashCode(k)}function d(k){return r.Interval.is(k)?r.Interval.toString(k):t.SortedArray.toString(k)}function p(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.areEqual(k,j):A(k,j):r.Interval.is(j)?A(j,k):t.SortedArray.areEqual(k,j)}function u(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.areIntersecting(k,j):x(j,k):r.Interval.is(j)?x(k,j):t.SortedArray.areIntersecting(k,j)}function m(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.isSubInterval(k,j):D(k,j):r.Interval.is(j)?M(k,j):t.SortedArray.isSubset(k,j)}function v(k,j){return r.Interval.is(k)?r.Interval.findPredecessorIndex(k,j):t.SortedArray.findPredecessorIndex(k,j)}function b(k,j,H){return r.Interval.is(k)?r.Interval.findPredecessorIndexInInterval(k,j,H):t.SortedArray.findPredecessorIndexInInterval(k,j,H)}function P(k,j,H){return r.Interval.is(k)?r.Interval.findRange(k,j,H):t.SortedArray.findRange(k,j,H)}function C(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.intersectionSize(k,j):B(j,k):r.Interval.is(j)?B(k,j):t.SortedArray.intersectionSize(k,j)}function l(k,j){return r.Interval.is(k)?r.Interval.is(j)?E(k,j):I(j,k):r.Interval.is(j)?I(k,j):n(t.SortedArray.union(k,j))}function S(k,j){return r.Interval.is(k)?r.Interval.is(j)?r.Interval.intersect(k,j):w(j,k):r.Interval.is(j)?w(k,j):n(t.SortedArray.intersect(k,j))}function T(k,j){return r.Interval.is(k)?r.Interval.is(j)?O(k,j):L(k,j):r.Interval.is(j)?F(k,j):n(t.SortedArray.subtract(k,j))}function A(k,j){return r.Interval.size(k)===t.SortedArray.size(j)&&r.Interval.start(k)===t.SortedArray.start(j)&&r.Interval.end(k)===t.SortedArray.end(j)}function x(k,j){return k.length!==0&&r.Interval.size(t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j)))!==0}function M(k,j){const H=r.Interval.min(j),G=r.Interval.max(j);if(G-H+1===0)return!0;const z=t.SortedArray.min(k),W=t.SortedArray.max(k);if(H<z||G>W)return!1;const X=t.SortedArray.findRange(k,H,G);return r.Interval.size(X)===r.Interval.size(j)}function D(k,j){const H=r.Interval.min(k),G=r.Interval.max(k);if(G-H+1===0)return!1;const z=t.SortedArray.min(j),W=t.SortedArray.max(j);return z>=H&&W<=G}function V(k,j){const H=i(k),G=i(j);return H===0&&G===0?!0:H>0&&G>0&&f(k)>=h(j)&&h(k)<=f(j)}function R(k,j){return i(k)?i(j)?h(k)<=h(j)&&f(k)>=f(j):!0:i(j)===0}function E(k,j){if(r.Interval.areEqual(k,j))return k;const H=r.Interval.size(k),G=r.Interval.size(j);if(!G)return k;if(!H)return j;const z=r.Interval.min(k),W=r.Interval.min(j);if(V(k,j))return r.Interval.ofRange(Math.min(z,W),Math.max(r.Interval.max(k),r.Interval.max(j)));let X,Y,K,Q;z<W?(X=H,Y=z,K=G,Q=W):(X=G,Y=W,K=H,Q=z);const J=new Int32Array(H+G);for(let ae=0;ae<X;ae++)J[ae]=ae+Y;for(let ae=0;ae<K;ae++)J[ae+X]=ae+Q;return n(J)}function I(k,j){const H=r.Interval.size(j);if(!H)return k;if(R(j,k))return j;const G=r.Interval.min(j),z=r.Interval.max(j),W=t.SortedArray.findRange(k,G,z),X=r.Interval.start(W),Y=r.Interval.end(W),K=new Int32Array(X+(k.length-Y)+H);let Q=0;for(let J=0;J<X;J++)K[Q++]=k[J];for(let J=G;J<=z;J++)K[Q++]=J;for(let J=Y,ae=k.length;J<ae;J++)K[Q++]=k[J];return n(K)}
7function B(k,j){if(!r.Interval.size(j))return 0;const H=t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j));return r.Interval.end(H)-r.Interval.start(H)}function w(k,j){if(!r.Interval.size(j))return e.Empty;const H=t.SortedArray.findRange(k,r.Interval.min(j),r.Interval.max(j)),G=r.Interval.start(H),z=r.Interval.end(H),W=z-G;if(!W)return e.Empty;if(W===k.length)return k;const X=new Int32Array(W);let Y=0;for(let K=G;K<z;K++)X[Y++]=k[K];return n(X)}function O(k,j){if(r.Interval.areEqual(k,j))return e.Empty;if(!r.Interval.areIntersecting(k,j))return k;const H=r.Interval.min(k),G=r.Interval.max(k),z=r.Interval.min(j),W=r.Interval.max(j);if(G<H||W<z)return k;if(r.Interval.isSubInterval(j,k))return e.Empty;if(r.Interval.isSubInterval(k,j)){const X=z-H,Y=G-W;if(X<=0)return r.Interval.ofRange(W+1,W+Y);if(Y<=0)return r.Interval.ofRange(H,H+X-1);const K=new Int32Array(X+Y);let Q=0;for(let J=0;J<X;J++)K[Q++]=H+J;for(let J=1;J<=Y;J++)K[Q++]=W+J;return n(K)}return H<z?r.Interval.ofRange(H,z-1):r.Interval.ofRange(W+1,G)}function F(k,j){const H=r.Interval.min(j),G=r.Interval.max(j);if(G<H)return k;const z=t.SortedArray.findRange(k,H,G),W=r.Interval.start(z),X=r.Interval.end(z),Y=k.length-(X-W);if(Y<=0)return e.Empty;if(Y===k.length)return k;const K=new Int32Array(Y);let Q=0;for(let J=0;J<W;J++)K[Q++]=k[J];for(let J=X,ae=k.length;J<ae;J++)K[Q++]=k[J];return n(K)}function L(k,j){const H=r.Interval.min(k),G=r.Interval.max(k);if(G<H)return k;const z=G-H+1,W=t.SortedArray.findRange(j,H,G),X=r.Interval.start(W),Y=r.Interval.end(W),K=Y-X;if(K===0)return k;const Q=z-K;if(Q<=0)return e.Empty;const J=new Int32Array(Q),ae=j.length-1,te=j[Math.min(X,ae)],ne=j[Math.min(Y,ae)];let $=0;for(let ie=H;ie<te;ie++)J[$++]=ie;for(let ie=te;ie<=ne;ie++)t.SortedArray.indexOfInInterval(j,ie,W)<0&&(J[$++]=ie);for(let ie=ne+1;ie<=G;ie++)J[$++]=ie;return n(J)}function U(k,j,H){if(r.Interval.is(k)){const G=r.Interval.min(k);for(let z=G,W=r.Interval.max(k);z<=W;z++)j(z,z-G,H)}else for(let G=0,z=k.length;G<z;G++)j(k[G],G,H);return H}function q(k,j,H,G){if(r.Interval.is(k)){let z=0;for(let W=r.Interval.min(k),X=r.Interval.max(k);W<=X;W++){const Y=j(W);let K=W+1;for(;K<X&&j(K)===Y;)K++;W=K-1,H(Y,z,G),z++}}else{let z=0;for(let W=0,X=k.length;W<X;W++){const Y=j(k[W]);let K=W+1;for(;K<X&&j(k[K])===Y;)K++;W=K-1,H(Y,z,G),z++}}return G}function N(k,j,H){if(j===H)return k;const G=i(k),z=j.length,W=H.length;if(G===0||z===0||W===0)return e.Empty;const X=t.SortedArray.findPredecessorIndex(H,j[h(k)]),Y=t.SortedArray.findPredecessorIndex(H,j[f(k)]+1);let K=0,Q=0,J=0,ae=X;for(;J<G&&ae<Y;){const ne=j[s(k,J)],$=H[ae];ne<$?J++:(ne>$||(K++,J++),ae++)}if(K===0)return e.Empty;if(K===z&&K===W)return k;const te=new Int32Array(K);for(Q=0,J=0,ae=X;J<G&&ae<Y;){const ne=j[s(k,J)],$=H[ae];ne<$?J++:(ne>$||(te[Q++]=ae,J++),ae++)}return n(te)}})(j2)),j2}var fE;function nn(){if(fE)return wm;fE=1,Object.defineProperty(wm,"__esModule",{value:!0}),wm.OrderedSet=void 0;const t=At.__importStar(nJ()),r=In();var n;return(function(i){i.Empty=t.Empty,i.ofSingleton=t.ofSingleton,i.ofRange=t.ofRange,i.ofBounds=t.ofBounds,i.ofSortedArray=t.ofSortedArray,i.has=t.has,i.indexOf=t.indexOf,i.getAt=t.getAt,i.isEmpty=t.isEmpty,i.min=t.min,i.max=t.max,i.start=t.start,i.end=t.end,i.size=t.size,i.hashCode=t.hashCode,i.areEqual=t.areEqual,i.areIntersecting=t.areIntersecting,i.isSubset=t.isSubset,i.union=t.union,i.intersect=t.intersect,i.indexedIntersect=t.indexedIntersect,i.subtract=t.subtract,i.findPredecessorIndex=t.findPredecessorIndex,i.findPredecessorIndexInInterval=t.findPredecessorIndexInInterval,i.findRange=t.findRange,i.intersectionSize=t.intersectionSize;function c(_,g,a){return t.forEach(_,g,a)}i.forEach=c;function o(_,g,a,d){return t.forEachSegment(_,g,a,d)}i.forEachSegment=o;function s(_){return r.Interval.is(_)}i.isInterval=s;function h(_){return!r.Interval.is(_)}i.isSortedArray=h;function f(_){const g=[];return i.forEach(_,a=>g.push(a)),g}i.toArray=f;function y(_){return t.toString(_)}i.toString=y})(n||(wm.OrderedSet=n={})),wm}var Em={},na={},mE;function iJ(){if(mE)return na;mE=1,Object.defineProperty(na,"__esModule",{value:!0}),na.SegmentIterator=void 0,na.create=n,na.ofOffsets=i,na.count=c,na.getSegment=o,na.project
7Value=s,na.segments=f;const e=nn(),t=In(),r=Na();function n(y){const _=r.SortedArray.ofSortedArray(y),g=r.SortedArray.max(_),a=new Int32Array(g);for(let d=0,p=y.length-1;d<p;d++)for(let u=y[d],m=y[d+1];u<m;u++)a[u]=d;return{offsets:_,index:a,count:y.length-1}}function i(y,_){const g=t.Interval.start(_),a=new Int32Array(y.length+1);for(let d=0,p=y.length;d<p;d++)a[d]=y[d]-g;return a[y.length]=t.Interval.end(_)-g,n(a)}function c({count:y}){return y}function o({index:y},_){return y[_]}function s({offsets:y},_,g){const a=e.OrderedSet.max(y),d=g>=a?-1:e.OrderedSet.findPredecessorIndex(y,g-1);return e.OrderedSet.findRange(_,e.OrderedSet.getAt(y,d),e.OrderedSet.getAt(y,d+1)-1)}class h{move(){for(;this.hasNext;)if(this.updateValue()){this.value.index=this.segmentMin++,this.hasNext=this.segmentMax>=this.segmentMin&&t.Interval.size(this.setRange)>0;break}else this.updateSegmentRange();return this.value}updateValue(){const _=this.segments[this.segmentMin+1],g=e.OrderedSet.findPredecessorIndexInInterval(this.set,_,this.setRange);return this.value.start=t.Interval.start(this.setRange),this.value.end=g,this.setRange=t.Interval.ofBounds(g,t.Interval.end(this.setRange)),g>this.value.start}updateSegmentRange(){const _=t.Interval.min(this.setRange),g=t.Interval.max(this.setRange);if(g<_){this.hasNext=!1;return}this.segmentMin=this.segmentMap[e.OrderedSet.getAt(this.set,_)],this.segmentMax=this.segmentMap[e.OrderedSet.getAt(this.set,g)],this.hasNext=this.segmentMax>=this.segmentMin}setSegment(_){this.setRange=t.Interval.ofBounds(_.start,_.end),this.updateSegmentRange()}constructor(_,g,a,d){this.segments=_,this.segmentMap=g,this.set=a,this.segmentMin=0,this.segmentMax=0,this.setRange=t.Interval.Empty,this.value={index:0,start:0,end:0},this.hasNext=!1,this.setRange=d,this.updateSegmentRange()}}na.SegmentIterator=h;function f(y,_,g){const a=typeof g<"u"?t.Interval.ofBounds(g.start,g.end):t.Interval.ofBounds(0,e.OrderedSet.size(_));return new h(y.offsets,y.index,_,a)}return na}var pE;function J_(){if(pE)return Em;pE=1,Object.defineProperty(Em,"__esModule",{value:!0}),Em.Segmentation=void 0;const t=At.__importStar(iJ());var r;return(function(n){n.create=t.create,n.ofOffsets=t.ofOffsets,n.count=t.count,n.getSegment=t.getSegment,n.projectValue=t.projectValue,n.transientSegments=t.segments})(r||(Em.Segmentation=r={})),Em}var uC={},hE;function aJ(){if(hE)return uC;hE=1,Object.defineProperty(uC,"__esModule",{value:!0}),uC.LinkedIndex=e;function e(r){return new t(r)}class t{remove(n){const{prev:i,next:c}=this,o=i[n],s=c[n];o>=0&&(c[o]=s,i[n]=-1),s>=0&&(i[s]=o,c[n]=-1),n===this.head&&(o<0?this.head=s:this.head=o)}has(n){return this.prev[n]>=0||this.next[n]>=0||this.head===n}constructor(n){this.head=n>0?0:-1,this.prev=new Int32Array(n),this.next=new Int32Array(n);for(let i=0;i<n;i++)this.next[i]=i+1,this.prev[i]=i-1;this.prev[0]=-1,this.next[n-1]=-1}}return uC}var Bm={},gE;function oJ(){if(gE)return Bm;gE=1,Object.defineProperty(Bm,"__esModule",{value:!0}),Bm.IntMap=void 0;const e=vT();var t;return(function(r){r.Empty=new Map;function n(h){return(0,e.iterableToArray)(h.keys())}r.keyArray=n;function i(){return new Map}r.Mutable=i;function c(h){return h}r.asImmutable=c;function o(h){const f=i(),y=h.keys();for(;;){const{done:_,value:g}=y.next();if(_)break;f.set(g,h.get(g))}return f}r.copy=o;function s(h,f){const y=f.keys();for(;;){const{done:_,value:g}=y.next();if(_)break;h.set(g,f.get(g))}return h}r.addFrom=s})(t||(Bm.IntMap=t={})),Bm}var Rm={},yE;function kD(){if(yE)return Rm;yE=1,Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.Iterator=void 0;class e{move(){return++this.index,this.lastValue=this.xs[this.index],this.hasNext=this.index<this.length-1,this.lastValue}constructor(s){this.xs=[],this.index=-1,this.length=0,this.hasNext=!1,this.length=s.length,this.hasNext=s.length>0,this.xs=s,this.index=-1,this.lastValue=s.length>0?s[0]:void 0}}class t{move(){return++this.value,this.hasNext=this.value<this.max,this.value}constructor(s,h){this.max=h,this.value=0,this.hasNext=!1,this.value=s-1,this.hasNext=h>=s}}class r{move(){return this.hasNext=!1,this.value}constructor(s){this.value=s,this.hasNext=!0}}class n{move(){const s=this.f(this.base.move());return this.hasNext=this.base.hasNext,s}constructor(s,h){this.base=s,this.f=h,this.hasNext=!1,this.hasNext=s.hasNext}}class i{move(){const s=this.next;
7return this.hasNext=this.findNext(),s}findNext(){for(;this.base.hasNext;)if(this.next=this.base.move(),this.p(this.next))return!0;return!1}constructor(s,h){this.base=s,this.p=h,this.hasNext=this.findNext()}}var c;return(function(o){o.Empty=new t(0,-1);function s(a){return new e(a)}o.Array=s;function h(a){return new r(a)}o.Value=h;function f(a,d){return new t(a,d)}o.Range=f;function y(a,d){return new n(a,d)}o.map=y;function _(a,d){return new i(a,d)}o.filter=_;function g(a,d,p){for(;a.hasNext;)if(d(a.move(),p))return p;return p}o.forEach=g})(c||(Rm.Iterator=c={})),Rm}var vE;function at(){return vE||(vE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Iterator=e.IntMap=e.LinkedIndex=e.Tuple=e.SortedArray=e.Segmentation=e.OrderedSet=e.Interval=void 0;const t=In();Object.defineProperty(e,"Interval",{enumerable:!0,get:function(){return t.Interval}});const r=nn();Object.defineProperty(e,"OrderedSet",{enumerable:!0,get:function(){return r.OrderedSet}});const n=J_();Object.defineProperty(e,"Segmentation",{enumerable:!0,get:function(){return n.Segmentation}});const i=Na();Object.defineProperty(e,"SortedArray",{enumerable:!0,get:function(){return i.SortedArray}});const c=OD();Object.defineProperty(e,"Tuple",{enumerable:!0,get:function(){return c.IntTuple}});const o=aJ();Object.defineProperty(e,"LinkedIndex",{enumerable:!0,get:function(){return o.LinkedIndex}});const s=oJ();Object.defineProperty(e,"IntMap",{enumerable:!0,get:function(){return s.IntMap}});const h=kD();Object.defineProperty(e,"Iterator",{enumerable:!0,get:function(){return h.Iterator}})})(q2)),q2}var bE;function sJ(){if(bE)return xm;bE=1,Object.defineProperty(xm,"__esModule",{value:!0}),xm.IntAdjacencyGraph=void 0;const e=_t(),t=at();var r;(function(i){function c(u,m){if(u===m)return!0;if(u.vertexCount!==m.vertexCount||u.edgeCount!==m.edgeCount)return!1;const{a:v,b,offset:P}=u,{a:C,b:l,offset:S}=m;for(let T=0,A=u.a.length;T<A;T++)if(v[T]!==C[T])return!1;for(let T=0,A=u.b.length;T<A;T++)if(b[T]!==l[T])return!1;for(let T=0,A=u.offset.length;T<A;T++)if(P[T]!==S[T])return!1;for(const T of Object.keys(u.edgeProps)){const A=u.edgeProps[T],x=m.edgeProps[T];if(!x)return!1;for(let M=0,D=A.length;M<D;M++)if(A[M]!==x[M])return!1}return!0}i.areEqual=c;class o{getEdgeIndex(m,v){let b,P;m<v?(b=m,P=v):(b=v,P=m);for(let C=this.offset[b],l=this.offset[b+1];C<l;C++)if(this.b[C]===P)return C;return-1}getDirectedEdgeIndex(m,v){for(let b=this.offset[m],P=this.offset[m+1];b<P;b++)if(this.b[b]===v)return b;return-1}getVertexEdgeCount(m){return this.offset[m+1]-this.offset[m]}constructor(m,v,b,P,C,l){this.offset=m,this.a=v,this.b=b,this.edgeCount=P,this.props=l,this.vertexCount=m.length-1,this.edgeProps=C||{}}}function s(u,m,v,b,P,C){return new o(u,m,v,b,P,C)}i.create=s;class h{createGraph(m,v){return s(this.offsets,this.a,this.b,this.edgeCount,m,v)}addNextEdge(){const m=this.xs[this.current],v=this.ys[this.current],b=this.offsets[m]+this.bucketFill[m];this.a[b]=m,this.b[b]=v,this.bucketFill[m]++;const P=this.offsets[v]+this.bucketFill[v];this.a[P]=v,this.b[P]=m,this.bucketFill[v]++,this.current++,this.curA=b,this.curB=P}addAllEdges(){for(let m=0;m<this.edgeCount;m++)this.addNextEdge()}assignProperty(m,v){m[this.curA]=v,m[this.curB]=v}assignDirectedProperty(m,v,b,P){m[this.curA]=v,m[this.curB]=P,b[this.curB]=v,b[this.curA]=P}constructor(m,v,b){this.vertexCount=m,this.xs=v,this.ys=b,this.current=0,this.curA=0,this.curB=0,this.edgeCount=v.length,this.offsets=new Int32Array(this.vertexCount+1),this.bucketFill=new Int32Array(this.vertexCount);const P=new Int32Array(this.vertexCount);for(let l=0,S=this.xs.length;l<S;l++)P[this.xs[l]]++;for(let l=0,S=this.ys.length;l<S;l++)P[this.ys[l]]++;let C=0;for(let l=0;l<this.vertexCount;l++)this.offsets[l]=C,C+=P[l];this.offsets[this.vertexCount]=C,this.slotCount=C,this.a=new Int32Array(C),this.b=new Int32Array(C)}}i.EdgeBuilder=h;class f{createGraph(m,v){return s(this.offsets,this.a,this.b,this.edgeCount,m,v)}addNextEdge(){const m=this.xs[this.current],v=this.ys[this.current],b=this.offsets[m]+this.bucketFill[m];this.a[b]=m,this.b[b]=v,this.bucketFill[m]++,this.current++,this.curA=b}addAllEdges(){for(let m=0;m<this.edgeCount;m++)this.addNextEdge()}assignProperty(m,v){m[this.curA]=v}constructor(m,v,b){this.vertexCount=m,this.xs=v,this.ys=b,this.current=0,this.curA=0,this.edgeCount=v.length,this.offsets=new Int32Array(this.vertexCount+1),this.bucketFill=new Int32Array(this.vertexCount);const P=new Int32Array(this.vertexCount);for(let l=0,S=this.xs.length;l<S;l++)P[this.xs[l]]++;let C=0;for(let l=0;l<this.vertexCount;l++)this.offsets[l]=C,C+=P[l];this.offsets[this.vertexCount]=C,this.slotCount=C,this.a=new Int32Array(C),this.b=new Int32Array(C)}}i.DirectedEdgeBuilder=f;class y{addEdge(m,v){let b=m,P=v;m>v&&(b=v,P=m);const C=(0,e.cantorPairing)(b,P);return this.included.has(C)?!1:(this.included.add(C),this.xs[this.xs.length]=b,this.ys[this.ys.length]=P,!0)}getGraph(){return _(this.vertexCount,this.xs,this.ys)}getEdgeBuiler(){return new h(this.vertexCount,this.xs,this.ys)}constructor(m){this.vertexCount=m,this.xs=[],this.ys=[],this.included=new Set}}i.UniqueEdgeBuilder=y;function _(u,m,v){const b=new i.EdgeBuilder(u,m,v);return b.addAllEdges(),b.createGraph({})}i.fromVertexPairs=_;function g(u,m,v){const{b,offset:P,vertexCount:C,edgeProps:l}=u,S=new Int32Array(C);for(let I=0,B=m.length;I<B;I++)S[m[I]]=I+1;let T=0;for(let I=0;I<C;I++)if(S[I]!==0)for(let B=P[I],w=P[I+1];B<w;B++)b[B]>I&&S[b[B]]!==0&&T++;const A=new Int32Array(m.length+1),x=new Int32Array(2*T),M=new Int32Array(2*T),D=new Int32Array(2*T);let V=0,R=0;for(let I=0;I<C;I++){if(S[I]===0)continue;const B=S[I]-1;for(let w=P[I],O=P[I+1];w<O;w++){const F=S[b[w]];F!==0&&(M[V]=B,D[V]=F-1,x[V]=w,V++)}A[++R]=V}const E={};for(const I of Object.keys(l))E[I]=(0,e.arrayPickIndices)(l[I],x);return s(A,M,D,T,E,v)}i.induceByVertices=g;function a(u){const m=u.vertexCount;if(m===0)return{componentCount:0,componentIndex:new Int32Array(0)};if(u.edgeCount===0){const T=new Int32Array(m);for(let A=0,x=m;A<x;A++)T[A]=A;return{componentCount:m,componentIndex:T}}const v=new Int32Array(m);for(let T=0,A=m;T<A;
7T++)v[T]=-1;let b=0;v[0]=b;const{offset:P,b:C}=u,l=[0],S=(0,t.LinkedIndex)(m);for(S.remove(0);l.length>0;){const T=l.pop(),A=v[T];for(let x=P[T],M=P[T+1];x<M;x++){const D=C[x];S.has(D)&&(S.remove(D),l.push(D),v[D]=A)}l.length===0&&S.head>=0&&(l.push(S.head),v[S.head]=++b,S.remove(S.head))}return{componentCount:m,componentIndex:v}}i.connectedComponents=a;function d(u,m,v,b){if(t.SortedArray.areIntersecting(m,v))return!0;if(b<1)return!1;const P=new Set;for(let C=0,l=m.length;C<l;++C)P.add(m[C]);return n(u,m,v,b,P)}i.areVertexSetsConnected=d;function p(u){const m=u.vertexCount,{offset:v,b}=u,P=new Array(m),C=new Int32Array(m);for(let l=0;l<m;l++){const S=new Int32Array(m).fill(-1);let T=0,A=0;for(C[A++]=l,S[l]=0;T<A;){const x=C[T++],M=S[x];for(let D=v[x],V=v[x+1];D<V;D++){const R=b[D];S[R]<0&&(S[R]=M+1,C[A++]=R)}}P[l]=S}return P}i.graphShortestPaths=p})(r||(xm.IntAdjacencyGraph=r={}));function n(i,c,o,s,h){const{b:f,offset:y}=i,_=[];for(let g=0,a=c.length;g<a;++g){const d=c[g];for(let p=y[d],u=y[d+1];p<u;++p){const m=f[p];if(!h.has(m)){if(t.SortedArray.has(o,m))return!0;h.add(m),_[_.length]=m}}}return s>1?n(i,_,o,s-1,h):!1}return xm}var _E;function is(){return _E||(_E=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(sJ(),e)})(L2)),L2}var Om={},SE;function as(){if(SE)return Om;SE=1,Object.defineProperty(Om,"__esModule",{value:!0}),Om.FormatPropertyProvider=void 0;class e{constructor(){this.map=new Map,this.applicable=new Map}add(n,i,c){this.map.set(n,i),c&&this.applicable.set(n,c)}remove(n){this.map.delete(n),this.applicable.delete(n)}get(n){return this.map.get(n)}isApplicable(n){if(!this.map.has(n.sourceData.kind))return!1;const i=this.applicable.get(n.sourceData.kind);return i?i(n):!0}}var t;return(function(r){function n(i,c){const{name:o}=i,s=new e;return{descriptor:i,formatRegistry:s,isApplicable(h){return s.isApplicable(h)},get(h){const f=c?.asDynamic?h._dynamicPropertyData:h._staticPropertyData;if(f[o])return f[o];if(h.customProperties.has(i))return;const y=s.get(h.sourceData.kind);if(y)return f[o]=y(h),h.customProperties.add(i),f[o]},set(h,f){c?.asDynamic?h._dynamicPropertyData[o]=f:h._staticPropertyData[o]=f},delete(h){c?.asDynamic?delete h._dynamicPropertyData[o]:delete h._staticPropertyData[o]}}}r.create=n})(t||(Om.FormatPropertyProvider=t={})),Om}var z2={},H2={},W2={},Pa={},km={},Fm={},CE;function FD(){if(CE)return Fm;CE=1,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.Lab=i;const e=wn(),t=LD(),r=er(),n=ir();function i(){return i.zero()}return(function(c){function o(){const B=[.1,0,0];return B[0]=0,B}c.zero=o;function s(B,w,O){const F=o();return F[0]=B,F[1]=w,F[2]=O,F}c.create=s;function h(B,w,O,F){return B[0]=w,B[1]=O,B[2]=F,B}c.set=h;function f(B,w){const O=w[0]-B[0],F=w[1]-B[1],L=w[2]-B[2];return Math.sqrt(O*O+F*F+L*L)}c.distance=f;function y(B,w){const[O,F,L]=e.Color.toRgb(w),[U,q,N]=I(O,F,L),k=116*q-16;return B[0]=k<0?0:k,B[1]=500*(U-q),B[2]=200*(q-N),B}c.fromColor=y;function _(B,w){return t.Hcl.toLab(B,w)}c.fromHcl=_;function g(B){let w=(B[0]+16)/116,O=isNaN(B[1])?w:w+B[1]/500,F=isNaN(B[2])?w:w-B[2]/200;w=l*V(w),O=C*V(O),F=S*V(F);const L=D(3.2404542*O-1.5371385*w-.4985314*F),U=D(-.969266*O+1.8760108*w+.041556*F),q=D(.0556434*O-.2040259*w+1.0572252*F);return e.Color.fromRgb(Math.round((0,n.clamp)(L,0,255)),Math.round((0,n.clamp)(U,0,255)),Math.round((0,n.clamp)(q,0,255)))}c.toColor=g;function a(B,w){const[O,F,L]=w,U=Math.sqrt(F*F+L*L);let q=((0,r.radToDeg)(Math.atan2(L,F))+360)%360;return Math.round(U*1e4)===0&&(q=Number.NaN),B[0]=q,B[1]=U,B[2]=O,B}c.toHcl=a;function d(B,w){return B[0]=w[0],B[1]=w[1],B[2]=w[2],B}c.copy=d;function p(B,w,O){return B[0]=w[0]-P*O,B[1]=w[1],B[2]=w[2],B}c.darken=p;function u(B,w,O){return p(B,w,-O)}c.lighten=u;const m=[0,0,0];function v(B,w,O){return a(m,w),t.Hcl.toLab(B,t.Hcl.saturate(m,m,O))}c.saturate=v;function b(B,w,O){return v(B,w,-O)}c.desaturate=b;const P=18,C=.95047,l=1,S=1.08883,T=.137931034,A=.206896552,x=.12841855,M=.008856452;function D(B){return 255*(B<=.00304?12.92*B:1.055*Math.pow(B,1/2.4)-.055)}function V(B){return B>A?B*B*B:x*(B-T)}
7function R(B){return(B/=255)<=.04045?B/12.92:Math.pow((B+.055)/1.055,2.4)}function E(B){return B>M?Math.pow(B,1/3):B/x+T}function I(B,w,O){B=R(B),w=R(w),O=R(O);const F=E((.4124564*B+.3575761*w+.1804375*O)/C),L=E((.2126729*B+.7151522*w+.072175*O)/l),U=E((.0193339*B+.119192*w+.9503041*O)/S);return[F,L,U]}})(i||(Fm.Lab=i={})),Fm}var PE;function LD(){if(PE)return km;PE=1,Object.defineProperty(km,"__esModule",{value:!0}),km.Hcl=r;const e=er(),t=FD();function r(){return r.zero()}return(function(n){function i(){const C=[.1,0,0];return C[0]=0,C}n.zero=i;function c(C,l,S){const T=i();return T[0]=C,T[1]=l,T[2]=S,T}n.create=c;function o(C,l,S,T){return C[0]=l,C[1]=S,C[2]=T,C}n.set=o;function s(C){return!isNaN(C[0])}n.hasHue=s;const h=[0,0,0];function f(C,l){return t.Lab.toHcl(C,t.Lab.fromColor(h,l))}n.fromColor=f;function y(C,l){return t.Lab.toHcl(C,l)}n.fromLab=y;const _=[0,0,0];function g(C){return t.Lab.toColor(a(_,C))}n.toColor=g;function a(C,l){let[S,T,A]=l;return isNaN(S)&&(S=0),S=(0,e.degToRad)(S),C[0]=A,C[1]=Math.cos(S)*T,C[2]=Math.sin(S)*T,C}n.toLab=a;function d(C,l){return C[0]=l[0],C[1]=l[1],C[2]=l[2],C}n.copy=d;function p(C,l,S){return C[0]=l[0],C[1]=Math.max(0,l[1]+P*S),C[2]=l[2],C}n.saturate=p;function u(C,l,S){return p(C,l,-S)}n.desaturate=u;const m=[0,0,0];function v(C,l,S){return a(m,l),t.Lab.toHcl(C,t.Lab.darken(m,m,S))}n.darken=v;function b(C,l,S){return v(C,l,-S)}n.lighten=b;const P=18})(r||(km.Hcl=r={})),km}var Lm={},Nm={},TE;function cJ(){if(TE)return Nm;TE=1,Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.Rgb=e;function e(){return e.zero()}return(function(t){function r(){const c=[.1,0,0];return c[0]=0,c}t.zero=r;function n(c,o){return c[0]=(o>>16&255)/255,c[1]=(o>>8&255)/255,c[2]=(o&255)/255,c}t.fromColor=n;function i(c){return c[0]*255<<16|c[1]*255<<8|c[2]*255}t.toColor=i})(e||(Nm.Rgb=e={})),Nm}var xE;function uJ(){if(xE)return Lm;xE=1,Object.defineProperty(Lm,"__esModule",{value:!0}),Lm.Hsl=t;const e=cJ();function t(){return t.zero()}return(function(r){function n(){const g=[.1,0,0];return g[0]=0,g}r.zero=n;const i=(0,e.Rgb)();function c(g,a){return e.Rgb.fromColor(i,a),r.fromRgb(g,i)}r.fromColor=c;function o(g){return y(i,g),e.Rgb.toColor(i)}r.toColor=o;function s(g,a){const[d,p,u]=a,m=Math.min(d,p,u),v=Math.max(d,p,u),b=(v+m)/2;let P=0,C=0;return v===m?(P=0,C=Number.NaN):P=b<.5?(v-m)/(v+m):(v-m)/(2-v-m),d===v?C=(p-u)/(v-m):p===v?C=2+(u-d)/(v-m):u===v&&(C=4+(d-p)/(v-m)),C*=60,C<0&&(C+=360),g[0]=C,g[1]=P,g[2]=b,g}r.fromRgb=s;const h=[0,0,0],f=[0,0,0];function y(g,a){const[d,p,u]=a;let m,v,b;if(p===0)m=v=b=u;else{const P=h,C=f,l=u<.5?u*(1+p):u+p-u*p,S=2*u-l,T=d/360;P[0]=T+1/3,P[1]=T,P[2]=T-1/3;for(let A=0;A<3;A++)P[A]<0&&(P[A]+=1),P[A]>1&&(P[A]-=1),6*P[A]<1?C[A]=S+(l-S)*6*P[A]:2*P[A]<1?C[A]=l:3*P[A]<2?C[A]=S+(l-S)*(2/3-P[A])*6:C[A]=S;m=C[0],v=C[1],b=C[2]}return g[0]=m,g[1]=v,g[2]=b,g}r.toRgb=y;function _(g,a,d,p){const u=a,m=d,[v,b,P]=u,[C,l,S]=m;let T,A,x;!isNaN(v)&&!isNaN(C)?(C>v&&C-v>180?x=C-(v+360):C<v&&v-C>180?x=C+360-v:x=C-v,A=v+p*x):isNaN(v)?isNaN(C)?A=Number.NaN:(A=C,(P===1||P===0)&&(T=l)):(A=v,(S===1||S===0)&&(T=b)),T===void 0&&(T=b+p*(l-b));const M=P+p*(S-P);return g[0]=A,g[1]=T,g[2]=M,g}r.interpolate=_})(t||(Lm.Hsl=t={})),Lm}var AE;function wn(){if(AE)return Pa;AE=1,Object.defineProperty(Pa,"__esModule",{value:!0}),Pa.Color=n,Pa.ColorList=i,Pa.ColorTable=c,Pa.ColorMap=o,Pa.getAdjustedColorMap=s,Pa.ColorSwatch=h;const e=LD(),t=FD(),r=uJ();function n(f){return f}(function(f){function y(z){return`rgb(${z>>16&255}, ${z>>8&255}, ${z&255})`}f.toStyle=y;function _(z){return"#"+("000000"+z.toString(16)).slice(-6)}f.toHexStyle=_;function g(z){return"0x"+("000000"+z.toString(16)).slice(-6)}f.toHexString=g;function a(z){return`RGB: ${f.toRgb(z).join(", ")}`}f.toRgbString=a;function d(z){return[z>>16&255,z>>8&255,z&255]}f.toRgb=d;function p(z){return[(z>>16&255)/255,(z>>8&255)/255,(z&255)/255]}f.toRgbNormalized=p;function u(z){return parseInt(z.replace("#","0x"))}f.fromHexStyle=u;function m(z){return parseInt(z)}f.fromHexString=m;function v(z,W,X){return z<<16|W<<8|X}f.fromRgb=v;function b(z,W,X){return z*255<<16|W*255<<8|X*255}f.fromNormalizedRgb=b;function P(z,W){return v(z[W],z[W+1],z[W+2])}f.fromArray=P;function C(z,W){return b(z[W],z[W+1],z[W+2])}f.fromNormalizedArray=C;function l(z){return typeof z=="number"?z:z[0]}f.fromColorListEntry=l;function S(z,W,X){return W[X]=z>>16&255,W[X+1]=z>>8&255,W[X+2]=z&255,W}f.toArray=S;function T(z,W,X){return W[X]=(z>>16&255)/255,W[X+1]=(z>>8&255)/255,W[X+2]=(z&255)/255,W}f.toArrayNormalized=T;function A(z,W){return z[0]=W>>16&255,z[1]=W>>8&255,z[2]=W&255,z}f.toVec3=A;function x(z,W){return z[0]=(W>>16&255)/255,z[1]=(W>>8&255)/255,z[2]=(W&255)/255,z}f.toVec3Normalized=x;function M(z,W,X){const Y=z>>16&255,K=z>>8&255,Q=z&255,J=W>>16&255,ae=W>>8&255,te=W&255,ne=Y+(J-Y)*X,$=K+(ae-K)*X,ie=Q+(te-Q)*X;return ne<<16|$<<8|ie}f.interpolate=M;const D=r.Hsl.zero(),V=r.Hsl.zero();function R(z,W,X){const Y=r.Hsl.fromColor(D,z),K=r.Hsl.fromColor(V,W);return r.Hsl.interpolate(Y,Y,K,X),r.Hsl.toColor(Y)}f.interpolateHsl=R;function E(z){const W=z>>16&255,X=z>>8&255,Y=z&255;return W!==X||W!==Y}f.hasHue=E;const I=[0,0,0];function B(z,W){return E(z)?(e.Hcl.fromColor(I,z),e.Hcl.toColor(e.Hcl.saturate(I,I,W))):z}f.saturate=B;function w(z,W){return B(z,-W)}f.desaturate=w;const O=[0,0,0];function F(z,W){return t.Lab.fromColor(O,z),t.Lab.toColor(t.Lab.darken(O,O,W))}f.darken=F;function L(z,W){return F(z,-W)}f.lighten=L;function U(z){return z<=.03928?z/12.92:Math.pow((z+.055)/1.055,2.4)}function q(z){const W=U((z>>16&255)/255),X=U((z>>8&255)/255),Y=U((z&255)/255);return .2126*W+.7152*X+.0722*Y}f.luminance=q;function N(z,W){const X=q(z),Y=q(W);return X>Y?(X+.05)/(Y+.05):(Y+.05)/(X+.05)}f.contrast=N;function k(z){return z<.04045?z*.0773993808:Math.pow(z*.9478672986+.0521327014,2.4)}function j(z){return b(k((z>>16&255)/255),k((z>>8&255)/255),k((z&255)/255))}f.sRGBToLinear=j;
7function H(z){return z<.0031308?z*12.92:1.055*Math.pow(z,.41666)-.055}function G(z){return b(H((z>>16&255)/255),H((z>>8&255)/255),H((z&255)/255))}f.linearToSRGB=G})(n||(Pa.Color=n={}));function i(f,y,_,g){return{label:f,description:_,list:g,type:y}}function c(f){return f}function o(f){return f}function s(f,y,_){const g={};for(const a in f){let d=f[a];d=n.saturate(d,y),d=n.darken(d,-_),g[a]=d}return g}function h(f){return f}return Pa}var $2={},X2={},K2={},ME;function ui(){return ME||(ME=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.upperCase=e.lowerCase=void 0,e.indentString=r,e.splitCamelCase=n,e.camelCaseToWords=i,e.upperCaseAny=s,e.capitalize=h,e.splitSnakeCase=f,e.snakeCaseToWords=y,e.splitKebabCase=_,e.kebabCaseToWords=g,e.stringToWords=a,e.substringStartsWith=d,e.interpolate=p,e.trimChar=u,e.trimCharStart=m,e.trimCharEnd=v,e.stripTags=b,e.escapeRegExp=P;const t=/^/mg;function r(C,l,S){return l===0?C:C.replace(t,S.repeat(l))}function n(C,l=" "){return C.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g,`$1${l}$2`)}function i(C){return h(n(C))}const c=C=>C.toLowerCase();e.lowerCase=c;const o=C=>C.toUpperCase();e.upperCase=o;function s(C){return C?typeof C=="string"?C.toUpperCase():`${C}`.toUpperCase():""}function h(C){return C.toLowerCase().replace(/^\w|\s\w/g,e.upperCase)}function f(C){return C.replace(/_/g," ")}function y(C){return h(f(C))}function _(C){return C.replace(/-/g," ")}function g(C){return h(_(C))}function a(C){return h(n(f(_(C))))}function d(C,l,S,T){const A=T.length;if(A>S-l)return!1;for(let x=0;x<A;x++)if(C.charCodeAt(l+x)!==T.charCodeAt(x))return!1;return!0}function p(C,l){const S=Object.keys(l),T=Object.values(l);return new Function(...S,`return \`${C}\`;`)(...T)}function u(C,l){let S=0,T=C.length;for(;S<T&&C[S]===l;)++S;for(;T>S&&C[T-1]===l;)--T;return S>0||T<C.length?C.substring(S,T):C}function m(C,l){let S=0;const T=C.length;for(;S<T&&C[S]===l;)++S;return S>0?C.substring(S,T):C}function v(C,l){let S=C.length;for(;S>0&&C[S-1]===l;)--S;return S<C.length?C.substring(0,S):C}function b(C){return C.replace(/<\/?[^>]+>/g,"")}function P(C){return C.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}})(K2)),K2}var DE;function pa(){return DE||(DE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorListOptionsSet=e.ColorListOptionsScale=e.ColorListOptions=e.ColorListNames=e.ColorLists=void 0,e.getColorListFromName=n;const t=ui(),r=wn();e.ColorLists={reds:(0,r.ColorList)("Reds","sequential","Reds, sequential color scheme from ColorBrewer 2.0",[16774640,16703698,16563105,16552562,16476746,15678252,13309981,10817301,6750221]),oranges:(0,r.ColorList)("Oranges","sequential","Oranges, sequential color scheme from ColorBrewer 2.0",[16774635,16705230,16634018,16625259,16616764,15821075,14239745,10892803,8333060]),greens:(0,r.ColorList)("Greens","sequential","Greens, sequential color scheme from ColorBrewer 2.0",[16252149,15070688,13101504,10607003,7652470,4303709,2329413,27948,17435]),blues:(0,r.ColorList)("Blues","sequential","Blues, sequential color scheme from ColorBrewer 2.0",[16251903,14609399,13032431,10406625,7057110,4362950,2191797,545180,536683]),purples:(0,r.ColorList)("Purples","sequential","Purples, sequential color scheme from ColorBrewer 2.0",[16579581,15724021,14342891,12369372,10394312,8420794,6967715,5515151,4128893]),greys:(0,r.ColorList)("Greys","sequential","Greys, sequential color scheme from ColorBrewer 2.0",[16777215,15790320,14277081,12434877,9868950,7566195,5395026,2434341,0]),"orange-red":(0,r.ColorList)("Orange-Red","sequential","OrRd, sequential color scheme from ColorBrewer 2.0",[16775148,16705736,16635038,16628612,16551257,15689032,14102559,11730944,8323072]),"blue-green":(0,r.ColorList)("Blue-Green","sequential","BuGn, sequential color scheme from ColorBrewer 2.0",[16252157,15070713,13429990,10082505,6734500,4304502,2329413,27948,17435]),"purple-blue-green":(0,r.ColorList)("Purple-Blue-Green","sequential","PuBuGn, sequential color scheme from ColorBrewer 2.0",[16775163,15524592,13685222,10927579,6793679,3576e3,164234,93273,83510]),"green-blue":(0,r.ColorList)("Green-Blue","sequential","GnBu, sequential color scheme from ColorBrewer 2.0",[16252144,14742491,13429701,11066805,8113348,5157843,2854078,551084,540801]),"purple-blue":(0,r.ColorList)("Purple-Blue","sequential","PuBu, sequential color scheme from ColorBrewer 2.0",[16775163,15525874,13685222,10927579,7645647,3576e3,356528,285325,145496]),"blue-purple":(0,r.ColorList)("Blue-Purple","sequential","BuPu, sequential color scheme from ColorBrewer 2.0",[16252157,14740724,12571622,10403034,9213638,9202609,8929693,8458108,5046347]),"red-purple":(0,r.ColorList)("Red-Purple","sequential","RdPu, sequential color scheme from ColorBrewer 2.0",[16775155,16638173,16565696,16424885,16214177,14496919,11403646,7995767,4784234]),"purple-red":(0,r.ColorList)("Purple-Red","sequential","PuRd, sequential color scheme from ColorBrewer 2.0",[16250105,15196655,13941210,13210823,14640560,15149450,13505110,9961539,6750239]),"yellow-orange-red":(0,r.ColorList)("Yellow-Orange-Red","sequential","YlOrRd, sequential color scheme from ColorBrewer 2.0",[16777164,16772512,16701814,16691788,16616764,16535082,14883356,12386342,8388646]),"yellow-orange-brown":(0,r.ColorList)("Yellow-Orange-Brown","sequential","YlOrBr, sequential color scheme from ColorBrewer 2.0",[16777189,16775100,16704401,16696399,16685353,15495188,13388802,10040324,6694150]),"yellow-green":(0,r.ColorList)("Yellow-Green","sequential","YlGn, sequential color scheme from ColorBrewer 2.0",[16777189,16252089,14282915,11394446,7915129,4303709,2327619,26679,17705]),"yellow-green-blue":(0,r.ColorList)("Yellow-Green-Blue","sequential","YlGnBu, sequential color scheme from ColorBrewer 2.0",[16777177,15595697,13101492,8375739,4306628,1937856,2252456,2438292,531800]),"red-blue":(0,r.ColorList)("Red-Blue","diverging","RdBu, diverging color scheme from ColorBrewer 2.0",[6750239,11671595,14049357,16033154,16636871,16250871,13755888,9618910,4428739,2188972,340065]),"red-grey":(0,r.ColorList)("Red-Grey","diverging","RdGy, diverging color scheme from ColorBrewer 2.0",[6750239,11671595,14049357,16033154,16636871,16777215,14737632,12237498,8882055,5066061,1710618]),"pink-yellow-green":(0,r.ColorList)("Pink-Yellow-Green","diverging","PiYG, diverging color scheme from ColorBrewer 2.0",[9306450,12917629,14579630,15840986,16638191,16250871,15136208,12116358,8371265,5083681,2581529]),"brown-white-green":(0,r.ColorList)("Brown-White-Green","diverging","BrBG, diverging color scheme from ColorBrewer 2.0",[5517317,9195786,12550445,
714664317,16181443,16119285,13101797,8441281,3512207,91742,15408]),"purple-green":(0,r.ColorList)("Purple-Green","diverging","PRGn, diverging color scheme from ColorBrewer 2.0",[4194379,7744131,10055851,12756431,15193320,16250871,14282963,10935200,5942881,1800247,17435]),"purple-orange":(0,r.ColorList)("Purple-Orange","diverging","PuOr, diverging color scheme from ColorBrewer 2.0",[2949195,5515144,8418220,11709394,14211819,16250871,16703670,16627811,14713364,11753478,8338184]),"orange-purple":(0,r.ColorList)("Orange-Purple","diverging","Reversed PuOr, diverging color scheme from ColorBrewer 2.0",[8338184,11753478,14713364,16627811,16703670,16250871,14211819,11709394,8418220,5515144,2949195]),"red-yellow-green":(0,r.ColorList)("Red-Yellow-Green","diverging","RdYlGn, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703627,16777151,14282635,10934634,6733155,1742928,26679]),"red-yellow-blue":(0,r.ColorList)("Red-Yellow-Blue","diverging","RdYlBu, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703632,16777151,14742520,11262441,7646673,4552116,3225237]),spectral:(0,r.ColorList)("Spectral","diverging","Spectral, diverging color scheme from ColorBrewer 2.0",[10355010,13975119,16018755,16625249,16703627,16777151,15136152,11263396,6734501,3311805,6180770]),magma:(0,r.ColorList)("Magma","sequential","Magma, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-white",[4,131595,328726,591648,920363,1314358,1708098,2167117,2691418,3346535,3870576,4460406,4985210,5510013,5969279,6560384,7019905,7676289,8135554,8660609,9185665,9710720,10235519,10826110,11351164,12007289,12532343,13057395,13516656,14042475,14567784,14962532,15357537,15687006,16017244,16216156,16349533,16483167,16551011,16619112,16686957,16689523,16692347,16694658,16696970,16699282,16701594,16638627,16640940,16577718,16580031]),"magma-no-black":(0,r.ColorList)("Magma (no black)","sequential","Magma, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-white (with the black region removed)",[4329332,4853881,5378684,5903742,6363263,6888576,7413633,7938689,8463745,8988801,9513600,10038655,10563454,11088508,11613562,12138360,12728949,13254258,13714030,14239338,14699366,15094114,15489119,15753309,16017499,16216411,16350045,16483424,16551523,16619368,16621934,16689780,16692091,16694402,16696969,16633746,16636058,16638371,16575148,16577461,16514239]),inferno:(0,r.ColorList)("Inferno","sequential","Inferno, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-yellow",[4,131596,328727,657186,1050925,1444665,1969221,2427985,3082843,3737955,4328040,4852843,5377645,5902702,6427502,6952814,7477870,8133997,8659051,9184105,9643623,10168676,10693729,11218782,11743834,12334932,12794703,13254730,13583429,14109502,14504250,14833460,15162926,15427112,15757088,15955993,16154643,16288012,16421383,16489222,16557322,16559634,16497183,16434218,16305463,16176966,16048470,15919721,15921789,16120210,16580516]),"inferno-no-black":(0,r.ColorList)("Inferno (no black)","sequential","Inferno, sequential color scheme from Matplotlib, perceptually uniform shades of black-red-yellow (with the black region removed)",[4721514,5246316,5771373,6296430,6821486,7346542,7871597,8396651,8921450,9446504,9971557,10496610,10956127,11481435,12006486,12466258,12926285,13386056,13780802,14241085,14570295,14965297,15229227,15558693,15757342,15956248,16154897,16288267,16421638,16489734,16492043,16494612,16496926,16368426,16305463,16111429,15982678,15853928,15856253,16119953,16580260]),plasma:(0,r.ColorList)("Plasma","sequential","Plasma, sequential color scheme from Matplotlib, perceptually uniform shades of blue-red-yellow",[1771148,2426257,3081365,3671193,4195228,4784799,5308834,5833124,6357158,6815911,7340200,7864744,8324007,8783782,9309348,9769377,10164126,10624154,11018902,11413393,11808141,12137352,12466307,12795519,13124730,13453685,13717361,14046573,14309992,14573668,14837344,15035483,15299159,15497299,15695438,15893834,16091974,16224833,16357693,16425017,16557877,16625457,16627245,16629289,16631334,16567845,16438820,16310052,16115494,15921190,15726625]),viridis:(0,r.ColorList)("Viridis","sequential","Viridis, sequential color scheme from Matplotlib, perceptually uniform shades of blue-green-yellow",[4524123,4656994,4658793,4726127,4727668,4663929,4599933,4535937,4406404,4276870,4081800,3952010,3822475,3627148,3497356,3302029,3172237,3042446,2912654,2782862,2652814,2523022,2393229,2328973,2198924,2069132,2004874,2005897,2007175,2139525,2337154,2666111,3060348,3520376,4045684,4570991,5227369,5883748,6605661,7392854,8180303,8967495,9819967,10672695,11525166,12443174,13295646,14148121,15000344,15852828,16639780]),cividis:(0,r.ColorList)("Cividis","sequential","Cividis, sequential color scheme from Matplotlib, perceptually uniform shades of blue-grey-yellow, should look effectively identical to colorblind and non-colorblind users",[8273,9305,10079,76644,339560,668266,1062508,1390957,1916270,2375790,2835566,3295342,3754862,4214638,4543085,5068397,5462638,5856878,6185326,6579567,6908272,7236721,7499890,7828595,8091764,8354933,8617846,8946551,9209463,9472888,9736056,10064760,10327928,10656632,10985591,11379830,11708532,12102770,12497264,12891501,13285994,13745766,14140259,14600287,14994522,15389014,15717970,16046926,16310347,16508232,16640581]),twilight:(0,r.ColorList)("Twilight","cyclical","Twilight, cyclical color scheme from Matplotlib, perceptually uniform shades of white-blue-black-red-white",[14670305,14211037,13554648,12766675,11847630,10993866,10139847,9351365,8628419,8036290,7509952,7048895,6718653,6519739,6386105,6252470,6184114,6181293,6112935,6044831,5976470,5777291,5447293,5052270,4592479,4067665,3674181,3281211,3150646,3543352,4067644,4657728,5379141,6166345,6953549,7741007,8463184,9120336,9777743,10304079,10830671,11291984,11687762,12083541,12348505,12613471,12878439,13077872,13211771,13411209,13545111,13809830,14074293,14338756,14537169,14735067,14801121]),"set-2":(0,r.ColorList)("Set-2","qualitative","Set2, categorical color scheme from ColorBrewer 2.0",[6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),accent:(0,r.ColorList)("Accent","qualitative","Acce
7nt, categorical color scheme from ColorBrewer 2.0",[8374655,12496596,16629894,16777113,3697840,15729279,12540695,6710886]),"set-1":(0,r.ColorList)("Set-1","qualitative","Set1, categorical color scheme from ColorBrewer 2.0",[14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329]),"set-3":(0,r.ColorList)("Set-3","qualitative","Set3, categorical color scheme from ColorBrewer 2.0",[9294791,16777139,12499674,16482418,8434131,16626786,11787881,16567781,14277081,12353725,13429701,16772463]),"dark-2":(0,r.ColorList)("Dark-2","qualitative","Dark2, categorical color scheme from ColorBrewer 2.0",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886]),paired:(0,r.ColorList)("Paired","qualitative","Paired, categorical color scheme from ColorBrewer 2.0",[10931939,2062516,11722634,3383340,16489113,14883356,16629615,16744192,13284054,6962586,16777113,11622696]),"pastel-2":(0,r.ColorList)("Pastel-2","qualitative","Pastel2, categorical color scheme from ColorBrewer 2.0",[11789005,16633260,13358568,16042724,15136201,16773806,15852236,13421772]),"pastel-1":(0,r.ColorList)("Pastel-1","qualitative","Pastel1, categorical color scheme from ColorBrewer 2.0",[16495790,11783651,13429701,14601188,16701862,16777164,15063229,16636652,15921906]),turbo:(0,r.ColorList)("Turbo","sequential","Turbo color scheme from D3.js, improved (smooth) rainbow colormap for visualization",[2299675,3547990,4337541,4799658,4934343,4872413,4613867,4289780,3900152,3510520,3120629,2796271,2602726,2474716,2477264,2611140,2875575,3270826,3731101,4387984,5109892,5897080,6815085,7798371,8781145,9829201,10811209,11858498,12774460,13755446,14605618,15389486,16042283,16563496,16757029,16753699,16750369,16746782,16743196,16608538,16146200,15487253,14763026,13973263,13052940,12198408,11344133,10621442,9965056,9571328,9440256]),"turbo-no-black":(0,r.ColorList)("Turbo (no black)","sequential","Turbo color scheme from D3.js, improved (smooth) rainbow colormap for visualization, with black region removed",[4866485,4872413,4354034,3770361,3120629,2667241,2475736,2611140,3073454,3928216,5109892,6487408,8126047,9829201,11531332,13167162,14605618,15780908,16693543,16753699,16748063,16741916,16146200,15026195,13644558,12198408,10818563,9833728]),warm:(0,r.ColorList)("Warm","sequential","Warm, sequential color scheme from D3.js",[7225514,7684013,8208303,8797873,9322162,9846195,10370483,10960051,11484338,12008625,12532911,13057452,13581737,14040742,14434210,14959005,15352473,15746196,16074382,16402824,16665475,16731772,16732790,16733808,16734826,16735843,16737117,16738135,16739409,16740939,16742471,16743746,16745277,16747065,16748598,16487987,16162097,15901743,15575598,15184174,14858031,14466608,14140466,13748788,13422648,13030972,12704833,12378438,12052044,11791187,11530331]),cool:(0,r.ColorList)("Cool","sequential","Cool, sequential color scheme from D3.js",[7225514,7095217,6899639,6769597,6574275,6313160,6117837,5856977,5596117,5335513,5009115,4748510,4422368,4161761,3835361,3575009,3314401,3053791,2793438,2598363,2337752,2208213,2013137,1883340,1819335,1755074,1691068,1692086,1758640,1825706,1957795,2155164,2352790,2615695,2878601,3207042,3600764,3994230,4453489,4912492,5437031,5961315,6551391,7140956,7730778,8386136,8975703,9630807,10285911,10940761,11530331]),"cubehelix-default":(0,r.ColorList)("CubehelixDefault","sequential","CubehelixDefault, sequential color scheme from D3.js",[0,525064,984594,1313308,1576742,1709360,1776697,1712705,1649479,1520715,1457486,1394254,1396557,1529674,1662534,2057794,2518076,3109175,3765555,4618288,5536047,6519343,7568178,8550967,9599551,10516809,11368789,12155235,12745329,13270146,13663891,13861539,13928371,13929921,13800654,13606106,13411811,13217514,12957935,12829170,12700403,12768243,12835826,13099761,13428976,13823727,14349039,14939888,15530483,16186616,16777215]),rainbow:(0,r.ColorList)("Rainbow","cyclical","Rainbow, cyclical color scheme from D3.js",[7225514,8208303,9322162,10370483,11484338,12532911,13581737,14434210,15352473,16074382,16665475,16732790,16734826,16737117,16739409,16742471,16745277,16748598,16162097,15575598,14858031,14140466,13422648,12704833,12052044,11530331,10285911,8975703,7730777,6485855,5437031,4453489,3600764,2878601,2352790,1957795,1758896,1691068,1819335,2013137,2337752,2793438,3314401,3835617,4422368,5009115,5596117,6117837,6574275,6899639,7225514]),sinebow:(0,r.ColorList)("Sinebow","cyclical","Sinebow, cyclical color scheme from D3.js",[16728128,16666162,16473382,16149788,15695122,15174923,14458117,13740802,12892928,11978752,10999043,9953287,8972813,7860757,6879262,5831722,4849463,3931972,3079507,2357858,1635442,1109378,648082,317858,118193,49087,111053,303833,561890,1081837,1602292,2319098,3036157,3884287,4798463,5778172,6823928,7804402,8916458,9897952,10945493,11927752,12845243,13697708,14419357,15141773,15667837,16129133,16459357,16659022,16728128]),"category-10":(0,r.ColorList)("Category10","qualitative","Category10, categorical color scheme from D3.js / tab10 from Matplotlib (default in Matplotlib)",[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175]),"observable-10":(0,r.ColorList)("Observable10","qualitative","Observable10, categorical color scheme from D3.js",[4352464,15708440,16740956,7128496,3975505,16747191,10773490,9944053,10251086,9738400]),"tableau-10":(0,r.ColorList)("Tableau10","qualitative","Tableau10, categorical color scheme from D3.js",[5142951,15896108,14767961,7780274,5873999,15583561,11500193,16752039,10253663,12234923]),"simple-rainbow":(0,r.ColorList)("Simple rainbow","sequential","Simple 5-color rainbow (blue-green-yellow-orange-red)",[3367393,3516485,16383744,15501073,12526114]),"red-white-blue":(0,r.ColorList)("Red-White-Blue","diverging","Diverging color scheme with red-white-blue",[12526114,16777215,3367393]),"many-distinct":(0,r.ColorList)("Many-Distinct","qualitative","Customized color scheme combining colors from multiple standard schemes (Dark2, Set1, Set2)",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886,14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329,6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947])},e.ColorListNames=Object.keys(e.ColorLists),e.ColorListOptions=e.ColorListNames.map(i=>[i,e.ColorLists[i].label,(0,t.capitalize)(e.ColorLists[i].type),e.ColorLists[i].description]),e.ColorListOptionsScale=e.ColorListOptions.filter(i=>e.ColorLists[i[0]].type==="sequential"||e.ColorLists[i[0]].type==="diverging"||e.ColorLists[i[0]].type==="cyclical"),e.ColorListOptionsSet=e.ColorListOptions.filter(i=>e.ColorLists[i[0]].type==="qualitative");function n(i){return i in e.ColorLists?e.ColorLists[i]:(console.warn(`unknown color list named '${i}'`),e.ColorLists["red-yellow-blue"])}})(X2)),X2}var qm={},IE;function qa(){if(IE)return qm;
7IE=1,Object.defineProperty(qm,"__esModule",{value:!0}),qm.TableLegend=e,qm.ScaleLegend=t;function e(r){return{kind:"table-legend",table:r}}function t(r,n,i){return{kind:"scale-legend",minLabel:r,maxLabel:n,colors:i}}return qm}var wE;function ND(){return wE||(wE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorScale=e.DefaultColorScaleProps=void 0;const t=wn(),r=pa(),n=et(),i=qa(),c=Na(),o=ir();e.DefaultColorScaleProps={domain:[0,1],reverse:!1,listOrName:"red-yellow-blue",minLabel:"",maxLabel:""};var s;(function(h){function f(u){return _(u,"continuous")}h.create=f;function y(u){return _(u,"discrete")}h.createDiscrete=y;function _(u,m){const{domain:v,reverse:b,listOrName:P}={...e.DefaultColorScaleProps,...u},C=typeof P=="string"?(0,r.getColorListFromName)(P).list:P,l=b?C.slice().reverse():C;let S=0,T=0,A=0;function x(E,I){T=E,A=I,S=A-T||1}x(v[0],v[1]);const M=(0,n.defaults)(u.minLabel,T.toString()),D=(0,n.defaults)(u.maxLabel,A.toString());let V;if(l.every(E=>Array.isArray(E))){const E=[...l];E.sort((O,F)=>O[1]-F[1]);const I=E.map(O=>O[0]),B=c.SortedArray.ofSortedArray(E.map(O=>O[1])),w=I.length-1;switch(m){case"continuous":V=O=>g(O,I,B,T,w,S);break;case"discrete":V=O=>d(O,I,B,T,w,S);break}}else switch(m){case"continuous":V=E=>a(E,l,T,S);break;case"discrete":V=E=>p(E,l,T,A,S);break}return{color:V,colorToArray:(E,I,B)=>{t.Color.toArray(V(E),I,B)},normalizedColorToArray:(E,I,B)=>{t.Color.toArrayNormalized(V(E),I,B)},setDomain:x,get legend(){return(0,i.ScaleLegend)(M,D,l)}}}function g(u,m,v,b,P,C){const l=(0,o.clamp)((u-b)/C,0,1),S=c.SortedArray.findPredecessorIndex(v,l);if(S===0)return m[0];if(S>P)return m[P];const T=v[S-1],A=v[S],x=(0,o.clamp)((l-T)/(A-T),0,1);return t.Color.interpolate(m[S-1],m[S],x)}function a(u,m,v,b){const P=Math.min(m.length-1,Math.max(0,(u-v)/b*(m.length-1))),C=Math.floor(P),l=m[C],S=m[Math.ceil(P)];return t.Color.interpolate(l,S,P-C)}function d(u,m,v,b,P,C){if(m.length===0)return t.Color.fromRgb(0,0,0);const l=(0,o.clamp)((u-b)/C,0,1),S=c.SortedArray.findPredecessorIndex(v,l);return S===0?m[0]:S>P?m[P]:m[S]}function p(u,m,v,b,P){if(m.length===0)return t.Color.fromRgb(0,0,0);const C=P/m.length;if(u<=v)return m[0];if(u>=b)return m[m.length-1];const l=Math.min(m.length-1,Math.floor((u-v)/C));return m[l]}})(s||(e.ColorScale=s={}))})($2)),$2}var VE;function vt(){return VE||(VE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorScale=e.ColorTable=e.ColorMap=e.Color=void 0;var t=wn();Object.defineProperty(e,"Color",{enumerable:!0,get:function(){return t.Color}}),Object.defineProperty(e,"ColorMap",{enumerable:!0,get:function(){return t.ColorMap}}),Object.defineProperty(e,"ColorTable",{enumerable:!0,get:function(){return t.ColorTable}});var r=ND();Object.defineProperty(e,"ColorScale",{enumerable:!0,get:function(){return r.ColorScale}})})(W2)),W2}var Um={},EE;function lJ(){return EE||(EE=1,Object.defineProperty(Um,"__esModule",{value:!0}),Um.SaccharideNames=void 0,Um.SaccharideNames=new Set(["145","147","149","289","291","293","445","475","491","510","604","045","05L","07E","07Y","08U","09X","0AT","0BD","0H0","0HX","0LP","0MK","0NZ","0TS","0UB","0V4","0WK","0XY","0YT","10M","12E","14T","15L","16F","16G","16O","17T","18D","18O","18T","1AR","1BW","1CF","1FT","1GL","1GN","1JB","1LL","1NA","1S3","1S4","1SD","1X4","20S","20X","22O","22S","23V","24S","25E","26M","26O","26Q","26R","26V","26W","26Y","27C","2DG","2DR","2F8","2FG","2FL","2FP","2GL","2GS","2H5","2HA","2M4","2M5","2M8","2OS","2SI","2WP","2WS","32O","34V","38J","3BU","3CM","3DO","3DY","3FM","3GR","3HD","3J3","3J4","3LJ","3LR","3MF","3MG","3MK","3R3","3S6","3SA","3YW","40J","42D","44S","46D","46M","46Z","48Z","49A","49S","49T","49V","4AM","4CQ","4GC","4GL","4GP","4JA","4N2","4NN","4QY","4R1","4RS","4SG","4U0","4U1","4U2","4UZ","4V5","50A","51N","56N","57S","5DI","5GF","5GO","5II","5KQ","5KS","5KT","5KV","5L2","5L3","5LS","5LT","5MM","5N6","5QP","5RP","5SA","5SP","5TH","5TJ","5TK","5TM","61J","62I","64K","66O","6BG","6C2","6DM","6GB","6GP","6GR","6K3","6KH","6KL","6KS","6KU","6KW","6LA","6LS","6LW","6MJ","6MN","6PG","6PY","6PZ","6S2","6SA","6UD","6Y6","6YR","6ZC","73
7E","79J","7CV","7D1","7GP","7JZ","7K2","7K3","7NU","7SA","83Y","89Y","8B7","8B9","8EX","8GA","8GG","8GP","8I4","8LM","8LR","8OQ","8PK","8S0","8YV","95Z","96O","98U","9AM","9C1","9CD","9GP","9KJ","9MR","9OK","9PG","9QG","9QZ","9RN","9S7","9SG","9SJ","9SM","9SP","9T1","9T7","9VP","9WJ","9WN","9WZ","9YW","A0K","A1AIO","A1APB","A1APC","A1APD","A1CCV","A1CCW","A1CF3","A1CF4","A1CWR","A1E3E","A1EAX","A1EFW","A1EGT","A1EGV","A1EGW","A1EGX","A1EGY","A1EJ0","A1EJ2","A1EKO","A1EN6","A1H03","A1H0P","A1H0Z","A1H10","A1H1B","A1H1F","A1H1V","A1I0J","A1I0L","A1I9U","A1ID6","A1IH4","A1IVP","A1IZL","A1JAQ","A1JUC","A1L1P","A1Q","A2G","A5C","A6P","AAL","AAO","ABC","ABD","ABE","ABF","ABL","AC1","ACG","ACR","ACX","ADA","ADG","ADR","AF1","AFD","AFL","AFO","AFP","AFR","AGC","AGH","AGL","AGR","AH2","AH8","AHG","AHM","AHR","AIG","ALL","ALX","AMG","AMN","AMU","AMV","ANA","AOG","AOS","AQA","ARA","ARB","ARE","ARI","ARW","ASC","ASG","ASO","AXP","AXR","AY9","AZC","B0D","B16","B1H","B1N","B2G","B4G","B6D","B7G","B8D","B9D","BBK","BBV","BCD","BCW","BDF","BDG","BDP","BDR","BDZ","BEM","BFN","BFP","BG6","BG8","BGC","BGL","BGN","BGP","BGS","BHG","BM3","BM7","BMA","BMX","BND","BNG","BNX","BO1","BOG","BQY","BRI","BS7","BTG","BTU","BW3","BWG","BXF","BXP","BXX","BXY","BZD","C3B","C3G","C3X","C4B","C4W","C4X","C5X","CAP","CBF","CBI","CBK","CDR","CE5","CE6","CE8","CEG","CEX","CEY","CEZ","CGF","CJB","CKB","CKP","CNP","CR1","CR6","CRA","CT3","CTO","CTR","CTT","D0N","D1M","D5E","D6G","DAF","DAG","DAN","DDA","DDB","DDL","DEG","DEL","DFR","DFX","DG0","DGC","DGD","DGM","DGO","DGS","DGU","DIG","DJB","DJE","DK4","DKX","DKZ","DL6","DLD","DLF","DLG","DMU","DNO","DO8","DOM","DP5","DPC","DQQ","DQR","DR2","DR3","DR4","DR5","DRI","DSR","DT6","DVC","DYM","E3M","E4P","E5G","EAG","EBG","EBQ","ED6","EEN","EEQ","EGA","EJT","EMP","EMZ","EPG","EQP","EQV","ERE","ERI","ETT","EUS","F1P","F1X","F55","F58","F6P","F8X","FBP","FCA","FCB","FCT","FDP","FDQ","FFC","FFX","FIF","FIX","FK9","FKD","FMF","FMO","FNG","FNY","FRU","FSA","FSI","FSM","FSR","FSW","FU4","FUB","FUC","FUD","FUF","FUL","FUY","FVQ","FX1","FYJ","G0S","G16","G1P","G20","G28","G2F","G3F","G3I","G4D","G4S","G6D","G6P","G6S","G7P","G8Z","GAA","GAC","GAD","GAF","GAL","GAT","GBH","GC1","GC4","GC9","GCB","GCD","GCN","GCO","GCS","GCT","GCU","GCV","GCW","GDA","GDL","GE1","GE3","GFP","GIV","GL0","GL1","GL2","GL4","GL5","GL6","GL7","GL9","GLA","GLB","GLC","GLD","GLF","GLG","GLO","GLP","GLS","GLT","GLW","GM0","GMB","GMH","GMT","GMZ","GN1","GN4","GNS","GNX","GP0","GP1","GP4","GPH","GPK","GPM","GPO","GPQ","GPU","GPV","GPW","GQ1","GRF","GRX","GS1","GS4","GS9","GSA","GSD","GTE","GTH","GTK","GTM","GTR","GU0","GU1","GU2","GU3","GU4","GU5","GU6","GU8","GU9","GUF","GUL","GUP","GUZ","GXL","GXV","GYE","GYG","GYP","GYU","GYV","GZL","H1M","H1S","H2P","H3S","H53","H6Q","H6Z","HBZ","HD4","HDL","HLA","HMS","HNV","HNW","HSG","HSH","HSJ","HSQ","HSR","HSU","HSX","HSY","HSZ","HTG","HTM","HVC","I57","IAB","IDC","IDF","IDG","IDR","IDS","IDT","IDU","IDX","IDY","IEM","IN1","IPT","ISD","ISL","ISX","IVG","IXD","J5B","JFZ","JHM","JLT","JRV","JS2","JSV","JV4","JVA","JVS","JZR","K5B","K99","KBA","KBG","KD5","KDA","KDB","KDD","KDE","KDF","KDM","KDN","KDO","KDR","KFN","KG1","KGM","KHP","KME","KO1","KO2","KOT","KQC","KTU","L1L","L6N","L6S","L6T","LAG","LAH","LAI","LAK","LAO","LAT","LB2","LBS","LBT","LCN","LDY","LEC","LER","LFC","LFR","LGC","LGU","LKA","LKS","LM2","LMO","LMT","LMU","LNV","LOG","LOX","LPK","LRH","LSM","LTG","LTM","LVO","LVZ","LXB","LXC","LXZ","LZ0","M1F","M1P","M2F","M3M","M3N","M55","M6D","M6P","M7B","M7P","M8C","MA1","MA2","MA3","MA8","MAB","MAF","MAG","MAL","MAN","MAT","MAV","MAW","MBE","MBF","MBG","MCU","MDA","MDP","MFA","MFB","MFU","MG5","MGA","MGC","MGL","MGS","MJJ","MLB","MLR","MMA","MMN","MN0","MNA","MQG","MQT","MRH","MRP","MSX","MTT","MUB","MUG","MUR","MVP","MXY","MXZ","MYG","N1L","N3U","N9S","NA1","NAA","NAG","NBG","NBX","NBY","NDG","NED","NFG","NG1","NG6","NGA","NGB","NGC","NGE","NGF","NGK","NGL","NGR","NGS","NGY","NGZ","NHF","NLC","NM6","NM9","NNG","NOJ","NPF","NSQ","NT1","NTF","NTO","NTP","NXD","NYT","O1G","OAK","OEL","OI7","OPM","ORP","OSU","OTG","OTN","OTU","OX2","P53","P6P","P8E","PA1","PA5","PAV","PDX","PH5","PKM","PNA","PNG","PNJ","PNW","PPC","PRP","PSG","PSJ","PSV","PTQ","PUF","PZU","QDK","QIF","QKH","QPS","QV4","R1P","R1X","R2B","R2G","R5P","RAA","RAE","RAF","RAM","RAO","RAT","RB5","RBL","RCD","RDP","REL","RER","RF5","RG1","RGG","RHA","RHC","RI2","RIB","RIP","RM4","RNS","RNT","ROB","ROR","RP3","RP5","RP6","RPA","RR7","RRJ","RRY","RST","RTG","RTV","RUB","RUG","RUU","RV7","RVG","RVM","RWI","RY7","R
7ZM","S6P","S7P","S81","SA0","SCG","SCR","SDD","SDY","SEJ","SF6","SF9","SFJ","SFU","SG4","SG5","SG6","SG7","SGA","SGC","SGD","SGN","SGS","SHB","SHD","SHG","SI3","SIA","SID","SIO","SIZ","SLB","SLM","SLT","SMD","SN5","SNG","SOE","SOG","SOL","SOR","SR1","SSG","SSH","STW","STZ","SUC","SUP","SUS","SWE","SZZ","T68","T6D","T6P","T6T","TA6","TAG","TCB","TCG","TDG","TEU","TF0","TFU","TGA","TGK","TGR","TGY","TH1","TM5","TM6","TM9","TMR","TMX","TNX","TOA","TOC","TQY","TRE","TRV","TS8","TT7","TTV","TTZ","TU4","TUG","TUJ","TUP","TUR","TVD","TVG","TVM","TVS","TVV","TVY","TW7","TWA","TWD","TWG","TWJ","TWY","TXB","TY6","TYV","U1Y","U2A","U2D","U63","U8V","U97","U9A","U9D","U9G","U9J","U9M","UAP","UBH","UBO","UCD","UDC","UEA","V3M","V3P","V71","VDF","VG1","VJ1","VJ4","VPH","VPQ","VTB","W9T","WIA","WKO","WKT","WOO","WT8","WUN","WZ1","WZ2","WZ4","X0X","X1P","X1X","X2F","X2Y","X34","X4S","X5S","X6N","X6X","X6Y","X6Z","XBP","XDP","XDX","XGP","XIL","XIQ","XKJ","XLF","XLS","XMM","XS2","XUL","XXM","XXR","XXX","XY6","XY9","XYB","XYF","XYL","XYP","XYS","XYT","XYZ","Y8W","Y98","YDR","YIO","YJM","YKR","YO5","YX0","YX1","YYB","YYD","YYH","YYJ","YYK","YYM","YYQ","YYR","YZ0","YZT","Z0F","Z15","Z16","Z2D","Z2T","Z3K","Z3L","Z3Q","Z3U","Z4K","Z4R","Z4S","Z4U","Z4V","Z4W","Z4Y","Z57","Z5J","Z5L","Z61","Z6G","Z6H","Z6J","Z6W","Z8H","Z8T","Z9D","Z9E","Z9H","Z9K","Z9L","Z9M","Z9N","Z9W","ZB0","ZB1","ZB2","ZB3","ZCD","ZCZ","ZD0","ZDC","ZDM","ZDO","ZEE","ZEL","ZGE","ZMR","UMQ","SQD"])),Um}var BE;function xf(){return BE||(BE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SaccharideCompIdMap=e.MonosaccharidesColorTable=e.SaccharidesSnfgMap=e.UnknownSaccharideComponent=e.SaccharideType=e.SaccharideColors=e.SaccharideShape=void 0,e.getSaccharideName=o,e.getSaccharideShape=h,e.setSaccharideCompIdMapType=p;const t=vt(),r=lJ();var n;(function(u){u[u.FilledSphere=0]="FilledSphere",u[u.FilledCube=1]="FilledCube",u[u.CrossedCube=2]="CrossedCube",u[u.Divi
7dedDiamond=3]="DividedDiamond",u[u.FilledCone=4]="FilledCone",u[u.DevidedCone=5]="DevidedCone",u[u.FlatBox=6]="FlatBox",u[u.FilledStar=7]="FilledStar",u[u.FilledDiamond=8]="FilledDiamond",u[u.FlatDiamond=9]="FlatDiamond",u[u.FlatHexagon=10]="FlatHexagon",u[u.Pentagon=11]="Pentagon",u[u.DiamondPrism=12]="DiamondPrism",u[u.PentagonalPrism=13]="PentagonalPrism",u[u.HexagonalPrism=14]="HexagonalPrism",u[u.HeptagonalPrism=15]="HeptagonalPrism"})(n||(e.SaccharideShape=n={})),e.SaccharideColors=(0,t.ColorMap)({Blue:37052,Green:42577,Yellow:16765952,Orange:16021792,Pink:16162465,Purple:10830745,LightBlue:9424105,Brown:10582605,Red:15539236,Secondary:15854817});var i;(function(u){u[u.Hexose=0]="Hexose",u[u.HexNAc=1]="HexNAc",u[u.Hexosamine=2]="Hexosamine",u[u.Hexuronate=3]="Hexuronate",u[u.Deoxyhexose=4]="Deoxyhexose",u[u.DeoxyhexNAc=5]="DeoxyhexNAc",u[u.DiDeoxyhexose=6]="DiDeoxyhexose",u[u.Pentose=7]="Pentose",u[u.Deoxynonulosonate=8]="Deoxynonulosonate",u[u.DiDeoxynonulosonate=9]="DiDeoxynonulosonate",u[u.Unknown=10]="Unknown",u[u.Assigned=11]="Assigned"})(i||(e.SaccharideType=i={}));const c={[i.Hexose]:"Hexose",[i.HexNAc]:"HexNAc",[i.Hexosamine]:"Hexosamine",[i.Hexuronate]:"Hexuronate",[i.Deoxyhexose]:"Deoxyhexose",[i.DeoxyhexNAc]:"DeoxyhexNAc",[i.DiDeoxyhexose]:"Di-deoxyhexose",[i.Pentose]:"Pentose",[i.Deoxynonulosonate]:"Deoxynonulosonate",[i.DiDeoxynonulosonate]:"Di-deoxynonulosonate",[i.Unknown]:"Unknown",[i.Assigned]:"Assigned"};function o(u){return c[u]}const s={[i.Hexose]:n.FilledSphere,[i.HexNAc]:n.FilledCube,[i.Hexosamine]:n.CrossedCube,[i.Hexuronate]:n.DividedDiamond,[i.Deoxyhexose]:n.FilledCone,[i.DeoxyhexNAc]:n.DevidedCone,[i.DiDeoxyhexose]:n.FlatBox,[i.Pentose]:n.FilledStar,[i.Deoxynonulosonate]:n.FilledDiamond,[i.DiDeoxynonulosonate]:n.FlatDiamond,[i.Unknown]:n.FlatHexagon,[i.Assigned]:n.Pentagon};function h(u,m){return u===i.Unknown?m===4?n.DiamondPrism:m===5?n.PentagonalPrism:m===6?n.HexagonalPrism:m===7?n.HeptagonalPrism:n.FlatHexagon:s[u]}e.UnknownSaccharideComponent={abbr:"Unk",name:"Unknown",color:e.SaccharideColors.Secondary,type:i.Unknown};const f=[{abbr:"Glc",name:"Glucose",color:e.SaccharideColors.Blue,type:i.Hexose},{abbr:"Man",name:"Mannose",color:e.SaccharideColors.Green,type:i.Hexose},{abbr:"Gal",name:"Galactose",color:e.SaccharideColors.Yellow,type:i.Hexose},{abbr:"Gul",name:"Gulose",color:e.SaccharideColors.Orange,type:i.Hexose},{abbr:"Alt",name:"Altrose",color:e.SaccharideColors.Pink,type:i.Hexose},{abbr:"All",name:"Allose",color:e.SaccharideColors.Purple,type:i.Hexose},{abbr:"Tal",name:"Talose",color:e.SaccharideColors.LightBlue,type:i.Hexose},{abbr:"Ido",name:"Idose",color:e.SaccharideColors.Brown,type:i.Hexose},{abbr:"GlcNAc",name:"N-Acetyl Glucosamine",color:e.SaccharideColors.Blue,type:i.HexNAc},{abbr:"ManNAc",name:"N-Acetyl Mannosamine",color:e.SaccharideColors.Green,type:i.HexNAc},{abbr:"GalNAc",name:"N-Acetyl Galactosamine",color:e.SaccharideColors.Yellow,type:i.HexNAc},{abbr:"GulNAc",name:"N-Acetyl Gulosamine",color:e.SaccharideColors.Orange,type:i.HexNAc},{abbr:"AltNAc",name:"N-Acetyl Altrosamine",color:e.SaccharideColors.Pink,type:i.HexNAc},{abbr:"AllNAc",name:"N-Acetyl Allosamine",color:e.SaccharideColors.Purple,type:i.HexNAc},{abbr:"TalNAc",name:"N-Acetyl Talosamine",color:e.SaccharideColors.LightBlue,type:i.HexNAc},{abbr:"IdoNAc",name:"N-Acetyl Idosamine",color:e.SaccharideColors.Brown,type:i.HexNAc},{abbr:"GlcN",name:"Glucosamine",color:e.SaccharideColors.Blue,type:i.Hexosamine},{abbr:"ManN",name:"Mannosamine",color:e.SaccharideColors.Green,type:i.Hexosamine},{abbr:"GalN",name:"Galactosamine",color:e.SaccharideColors.Yellow,type:i.Hexosamine},{abbr:"GulN",name:"Gulosamine",color:e.SaccharideColors.Orange,type:i.Hexosamine},{abbr:"AltN",name:"Altrosamine",color:e.SaccharideColors.Pink,type:i.Hexosamine},{abbr:"AllN",name:"Allosamine",color:e.SaccharideColors.Purple,type:i.Hexosamine},{abbr:"TalN",name:"Talosamine",color:e.SaccharideColors.LightBlue,type:i.Hexosamine},{abbr:"IdoN",name:"Idosamine",color:e.SaccharideColors.Brown,type:i.Hexosamine},{abbr:"GlcNS",name:"N-sulfo Glucosamine",color:e.SaccharideColors.Blue,type:i.Hexosamine},{abbr:"GlcA",name:"Glucuronic Acid",color:e.SaccharideColors.Blue,type:i.Hexuronate},{abbr:"ManA",name:"Mannuronic Acid",color:e.SaccharideColors.Green,type:i.Hexuronate},{abbr:"GalA",name:"Galacturonic Acid",color:e.SaccharideColors.Yellow,type:i.Hexuronate},{abbr:"GulA",name:"Guluronic Acid",color:e.SaccharideColors.Orange,type:i.Hexuronate},{abbr:"AltA",name:"Altruronic Acid",color:e.SaccharideColors.Pink,type:i.Hexuronate},{abbr:"AllA",name:"Alluronic Acid",color:e.SaccharideColors.Purple,type:i.Hexuronate},{abbr:"TalA",name:"Taluronic Acid",color:e.SaccharideColors.LightBlue,type:i.Hexuronate},{abbr:"IdoA",name:"Iduronic Acid",color:e.SaccharideColors.Brown,type:i.Hexuronate},{abbr:"Qui",name:"Quinovose",color:e.SaccharideColors.Blue,type:i.Deoxyhexose},{abbr:"Rha",name:"Rhamnose",color:e.SaccharideColors.Green,type:i.Deoxyhexose},{abbr:"6dGul",name:"6-Deoxy Gulose",color:e.SaccharideColors.Orange,type:i.Deoxyhexose},{abbr:"6dAlt",name:"6-Deoxy Altrose",color:e.SaccharideColors.Pink,type:i.Deoxyhexose},{abbr:"6dTal",name:"6-Deoxy Talose",color:e.SaccharideColors.LightBlue,type:i.Deoxyhexose},{abbr:"Fuc",name:"Fucose",color:e.SaccharideColors.Red,type:i.Deoxyhexose},{abbr:"QuiNAc",name:"N-Acetyl Quinovosamine",color:e.SaccharideColors.Blue,type:i.DeoxyhexNAc}
7,{abbr:"RhaNAc",name:"N-Acetyl Rhamnosamine",color:e.SaccharideColors.Green,type:i.DeoxyhexNAc},{abbr:"6dAltNAc",name:"N-Acetyl 6-Deoxy Altrosamine",color:e.SaccharideColors.Pink,type:i.DeoxyhexNAc},{abbr:"6dTalNAc",name:"N-Acetyl 6-Deoxy Talosamine",color:e.SaccharideColors.LightBlue,type:i.DeoxyhexNAc},{abbr:"FucNAc",name:"N-Acetyl Fucosamine",color:e.SaccharideColors.Red,type:i.DeoxyhexNAc},{abbr:"AAT",name:"AAT",color:e.SaccharideColors.Red,type:i.DeoxyhexNAc},{abbr:"Oli",name:"Olivose",color:e.SaccharideColors.Blue,type:i.DiDeoxyhexose},{abbr:"Tyv",name:"Tyvelose",color:e.SaccharideColors.Green,type:i.DiDeoxyhexose},{abbr:"Abe",name:"Abequose",color:e.SaccharideColors.Orange,type:i.DiDeoxyhexose},{abbr:"Par",name:"Paratose",color:e.SaccharideColors.Pink,type:i.DiDeoxyhexose},{abbr:"Dig",name:"Digitoxose",color:e.SaccharideColors.Purple,type:i.DiDeoxyhexose},{abbr:"Col",name:"Colitose",color:e.SaccharideColors.LightBlue,type:i.DiDeoxyhexose},{abbr:"Ara",name:"Arabinose",color:e.SaccharideColors.Green,type:i.Pentose},{abbr:"Lyx",name:"Lyxose",color:e.SaccharideColors.Yellow,type:i.Pentose},{abbr:"Xyl",name:"Xylose",color:e.SaccharideColors.Orange,type:i.Pentose},{abbr:"Rib",name:"Ribose",color:e.SaccharideColors.Pink,type:i.Pentose},{abbr:"Kdn",name:"Keto-Deoxy Nonulonic Acid",color:e.SaccharideColors.Green,type:i.Deoxynonulosonate},{abbr:"Neu5Ac",name:"N-Acetyl Neuraminic Acid",color:e.SaccharideColors.Purple,type:i.Deoxynonulosonate},{abbr:"Neu5Gc",name:"N-Glycolyl Neuraminic Acid",color:e.SaccharideColors.LightBlue,type:i.Deoxynonulosonate},{abbr:"Neu",name:"Neuraminic Acid",color:e.SaccharideColors.Brown,type:i.Deoxynonulosonate},{abbr:"Sia",name:"Sialic acid",color:e.SaccharideColors.Red,type:i.Deoxynonulosonate},{abbr:"Pse",name:"Pseudaminic Acid",color:e.SaccharideColors.Green,type:i.DiDeoxynonulosonate},{abbr:"Leg",name:"Legionaminic Acid",color:e.SaccharideColors.Yellow,type:i.DiDeoxynonulosonate},{abbr:"Aci",name:"Acinetaminic Acid",color:e.SaccharideColors.Pink,type:i.DiDeoxynonulosonate},{abbr:"4eLeg",name:"4-Epilegionaminic Acid",color:e.SaccharideColors.LightBlue,type:i.DiDeoxynonulosonate},{abbr:"Bac",name:"Bacillosamine",color:e.SaccharideColors.Blue,type:i.Unknown},{abbr:"LDmanHep",name:"L-Glycero-D-Manno Heptose",color:e.SaccharideColors.Green,type:i.Unknown},{abbr:"Kdo",name:"Keto-Deoxy Octulonic Acid",color:e.SaccharideColors.Yellow,type:i.Unknown},{abbr:"Dha",name:"3-Deoxy Lyxo-Heptulosaric Acid",color:e.SaccharideColors.Orange,type:i.Unknown},{abbr:"DDmanHep",name:"D-Glycero-D-Manno-Heptose",color:e.SaccharideColors.Pink,type:i.Unknown},{abbr:"MurNAc",name:"N-Acetyl Muramic Acid",color:e.SaccharideColors.Purple,type:i.Unknown},{abbr:"MurNGc",name:"N-Glycolyl Muramic Acid",color:e.SaccharideColors.LightBlue,type:i.Unknown},{abbr:"Mur",name:"Muramic Acid",color:e.SaccharideColors.Brown,type:i.Unknown},{abbr:"K3O",name:"D-glycero-a-D-talo-oct-2-Ulosonic Acid",color:e.SaccharideColors.Red,type:i.Unknown},{abbr:"dUA",name:"4-deoxy-4,5-didehydro iduronic acid",color:e.SaccharideColors.Secondary,type:i.Unknown},{abbr:"Api",name:"Apicose",color:e.SaccharideColors.Green,type:i.Assigned},{abbr:"Fru",name:"Fructose",color:e.SaccharideColors.Green,type:i.Assigned},{abbr:"Tag",name:"Tagatose",color:e.SaccharideColors.Yellow,type:i.Assigned},{abbr:"Sor",name:"Sorbose",color:e.SaccharideColors.Orange,type:i.Assigned},{abbr:"Psi",name:"Psicose",color:e.SaccharideColors.Pink,type:i.Assigned}];e.SaccharidesSnfgMap=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m];u.set(b.abbr,b)}return u})(),e.MonosaccharidesColorTable=[["Glc-family",e.SaccharideColors.Blue],["Man-family",e.SaccharideColors.Green],["Gal-family",e.SaccharideColors.Yellow],["Gul-family",e.SaccharideColors.Orange],["Alt-family",e.SaccharideColors.Pink],["All-family",e.SaccharideColors.Purple],["Tal-family",e.SaccharideColors.LightBlue],["Ido-family",e.SaccharideColors.Brown],["Fuc-family",e.SaccharideColors.Red],["Generic/Unknown/Secondary",e.SaccharideColors.Secondary]];const y={Glc:["GLC","BGC","Z8T","TRE","MLR"],Man:["MAN","BMA"],Gal:["GLA","GAL","GZL","GXL","GIV"],Gul:["4GL","GL0","GUP","Z8H"],Alt:["Z6H","3MK","SHD"],All:["AFD","ALL","WOO","Z2D"],Tal:["ZEE","A5C","SDY"],Ido:["ZCD","Z0F","4N2"],GlcNAc:["NDG","NAG","NGZ"],ManNAc:["BM3","BM7"],GalNAc:["A2G","NGA","YYQ"],GulNAc:["LXB"],AltNAc:[],AllNAc:["NAA"],TalNAc:[],IdoNAc:["LXZ","HSQ"],GlcN:["PA1","GCS"],ManN:["95Z"],GalN:["X6X","1GN"],GulN:[],AltN:[],AllN:[],TalN:[],IdoN:[],GlcA:["GCU","BDP"],ManA:["MAV","BEM"],GalA:["ADA","GTR","GTK"],GulA:["LGU"],AltA:[],AllA:[],TalA:["X1X","X0X"],IdoA:["IDR"],Qui:["G6D","YYK"],Rha:["RAM","RM4","XXR"],"6dGul":["66O"],"6dAlt":[],"6dTal":[],Fuc:["FUC","FUL","FCA","FCB","GYE"],QuiNAc:["Z9W"],RhaNAc:[],"6dAltNAc":[],"6dTalNAc":[],FucNAc:["49T"],Oli:["DDA","RAE","Z5J"],Tyv:["TYV"],Abe:["ABE"],Par:["PZU"],Dig:["Z3U"],Col:[],Ara:["64K","ARA","ARB","AHR","FUB","BXY","BXX","SEJ"],Lyx:["LDY","Z4W"],Xyl:["XYS","XYP","XYZ","HSY","LXC"],Rib:["YYM","RIP","RIB","BDR","0MK","Z6J","32O"],Kdn:["KDM","KDN"],Neu5Ac:["SIA","SLB"],Neu5Gc:["NGC","NGE"],Neu:[],Sia:[],Pse:[],Leg:[],Aci:[],"4eLeg":[],Bac:[],LDmanHep:["GMH"],Kdo:["KDO"],Dha:[],DDmanHep:["289"],MurNAc:["MUB","AMU"],MurNGc:[],Mur:["1S4","MUR"],Api:["XXM"],Fru:["BDF","Z9N","FRU","LFR"],Tag:["T6T"],Sor:["SOE","UEA"],Psi:["PSV","SF6","SF9","TTV"]},_={Glc:["AGLC","BGLC"],GlcNAc:["AGLCNA","BGLCNA","BGLCN0"],GlcA:["AGLCA","BGLCA","BGLCA0"],Man:["AMAN","BMAN"],Rha:["ARHM","BRHM"],Ara:["AARB","BARB"],Gal:["AGAL","BGAL"],GalNAc:["AGALNA","BGALNA"],Gul:["AGUL","BGUL"],Alt:["AALT","BALT"],All:["AALL","BALL"],Tal:["ATAL","BTAL"],Ido:["AIDO","BI
7DO"],IdoA:["AIDOA","BIDOA"],Fuc:["AFUC","BFUC"],Lyx:["ALYF","BLYF"],Xyl:["AXYL","BXYL","AXYF","BXYF"],Rib:["ARIB","BRIB"],Fru:["AFRU","BFRU"],Neu5Ac:["ANE5AC","BNE5AC"]},g={Glc:["0GA","0GB","1GA","1GB","2GA","2GB","3GA","3GB","4GA","4GB","6GA","6GB","ZGA","ZGB","YGA","YGB","XGA","XGB","WGA","WGB","VGA","VGB","UGA","UGB","TGA","TGB","SGA","SGB","RGA","RGB","QGA","QGB","PGA","PGB","0gA","0gB","1gA","1gB","2gA","2gB","3gA","3gB","4gA","4gB","6gA","6gB","ZgA","ZgB","YgA","YgB","XgA","XgB","WgA","WgB","VgA","VgB","UgA","UgB","TgA","TgB","SgA","SgB","RgA","RgB","QgA","QgB","PgA","PgB"],GlcNAc:["0YA","0YB","1YA","1YB","3YA","3YB","4YA","4YB","6YA","6YB","WYA","WYB","VYA","VYB","UYA","UYB","QYA","QYB","0yA","0yB","1yA","1yB","3yA","3yB","4yA","4yB","6yA","6yB","WyA","WyB","VyA","VyB","UyA","UyB","QyA","QyB","0YS","0Ys","3YS","3Ys","4YS","4Ys","6YS","6Ys","QYS","QYs","UYS","UYs","VYS","VYs","WYS","WYs","0yS","0ys","3yS","3ys","4yS","4ys"],GlcA:["0ZA","0ZB","1ZA","1ZB","2ZA","2ZB","3ZA","3ZB","4ZA","4ZB","ZZA","ZZB","YZA","YZB","WZA","WZB","TZA","TZB","0zA","0zB","1zA","1zB","2zA","2zB","3zA","3zB","4zA","4zB","ZzA","ZzB","YzA","YzB","WzA","WzB","TzA","TzB","TZBP","WZBP","YZBP","4ZBP","ZZBP","3ZBP","2ZBP","1ZBP","0ZBP","0ZF","1ZF","4ZF","0Zf","1Zf","4Zf"],GlcN:["0YN","3YN","4YN","6YN","WYN","VYN","UYN","QYN","3Yn","4Yn","WYn","0Yn","0YP","3YP","4YP","6YP","WYP","VYP","UYP","QYP","0Yp","3Yp","4Yp","WYp","QYN","WYN","VYN","3YN","UYN","4YN","6YN","1YN","0YN","QYn","VYn","WYn","3Yn","UYn","6Yn","4Yn","1Yn","0Yn","QYNP","WYNP","VYNP","3YNP","UYNP","4YNP","6YNP","1YNP","0YNP","QYnP","UYnP","VYnP","6YnP","WYnP","4YnP","3YnP","1YnP","0YnP"],Man:["0MA","0MB","1MA","1MB","2MA","2MB","3MA","3MB","4MA","4MB","6MA","6MB","ZMA","ZMB","YMA","YMB","XMA","XMB","WMA","WMB","VMA","VMB","UMA","UMB","TMA","TMB","SMA","SMB","RMA","RMB","QMA","QMB","PMA","PMB","0mA","0mB","1mA","1mB","2mA","2mB","3mA","3mB","4mA","4mB","6mA","6mB","ZmA","ZmB","YmA","YmB","XmA","XmB","WmA","WmB","VmA","VmB","UmA","UmB","TmA","TmB","SmA","SmB","RmA","RmB","QmA","QmB","PmA","PmB"],ManNAc:["0WA","0WB","1WA","1WB","3WA","3WB","4WA","4WB","6WA","6WB","WWA","WWB","VWA","VWB","UWA","UWB","QWA","QWB","0wA","0wB","1wA","1wB","3wA","3wB","4wA","4wB","6wA","6wB","WwA","WwB","VwA","VwB","UwA","UwB","QwA","QwB"],Ara:["0AA","0AB","1AA","1AB","2AA","2AB","3AA","3AB","4AA","4AB","ZAA","ZAB","YAA","YAB","WAA","WAB","TAA","TAB","0AD","0AU","1AD","1AU","2AD","2AU","3AD","3AU","5AD","5AU","ZAD","ZAU","0aA","0aB","1aA","1aB","2aA","2aB","3aA","3aB","4aA","4aB","ZaA","ZaB","YaA","YaB","WaA","WaB","TaA","TaB","0aD","0aU","1aD","1aU","2aD","2aU","3aD","3aU","5aD","5aU","ZaD","ZaU"],Gal:["0LA","0LB","1LA","1LB","2LA","2LB","3LA","3LB","4LA","4LB","6LA","6LB","ZLA","ZLB","YLA","YLB","XLA","XLB","WLA","WLB","VLA","VLB","ULA","ULB","TLA","TLB","SLA","SLB","RLA","RLB","QLA","QLB","PLA","PLB","0lA","0lB","1lA","1lB","2lA","2lB","3lA","3lB","4lA","4lB","6lA","6lB","ZlA","ZlB","YlA","YlB","XlA","XlB","WlA","WlB","VlA","VlB","UlA","UlB","TlA","TlB","SlA","SlB","RlA","RlB","QlA","QlB","PlA","PlB"],GalNAc:["0VA","0VB","1VA","1VB","3VA","3VB","4VA","4VB","6VA","6VB","WVA","WVB","VVA","VVB","UVA","UVB","QVA","QVB","0vA","0vB","1vA","1vB","3vA","3vB","4vA","4vB","6vA","6vB","WvA","WvB","VvA","VvB","UvA","UvB","QvA","QvB"],GalA:["0OA","0OB","1OA","1OB","2OA","2OB","3OA","3OB","4OA","4OB","ZOA","ZOB","YOA","YOB","WOA","WOB","TOA","TOB","0oA","0oB","1oA","1oB","2oA","2oB","3oA","3oB","4oA","4oB","ZoA","ZoB","YoA","YoB","WoA","WoB","ToA","ToB"],Gul:["0KA","0KB","1KA","1KB","2KA","2KB","3KA","3KB","4KA","4KB","6KA","6KB","ZKA","ZKB","YKA","YKB","XKA","XKB","WKA","WKB","VKA","VKB","UKA","UKB","TKA","TKB","SKA","SKB","RKA","RKB","QKA","QKB","PKA","PKB","0kA","0kB","1kA","1kB","2kA","2kB","3kA","3kB","4kA","4kB","6kA","6kB","ZkA","ZkB","YkA","YkB","XkA","XkB","WkA","WkB","VkA","VkB","UkA","UkB","TkA","TkB","SkA","SkB","RkA","RkB","QkA","QkB","PkA","PkB"],Alt:["0EA","0EB","1EA","1EB","2EA","2EB","3EA","3EB","4EA","4EB","6EA","6EB","ZEA","ZEB","YEA","YEB","XEA","XEB","WEA","WEB","VEA","VEB","UEA","UEB","TEA","TEB","SEA","SEB","REA","REB","QEA","QEB","PEA","PEB","0eA","0eB","1eA","1eB","2eA","2eB","3eA","3eB","4eA","4eB","6eA","6eB","ZeA","ZeB","YeA","YeB","XeA","XeB","WeA","WeB","VeA","VeB","UeA","UeB","TeA","TeB","SeA","SeB","ReA","ReB","QeA","QeB","PeA","PeB"],All:["0NA","0NB","1NA","1NB","2NA","2NB","3NA","3NB","4NA","4NB","6NA","6NB","ZNA","ZNB","YNA","YNB","XNA","XNB","WNA","WNB","VNA","VNB","UNA","UNB","TNA","TNB","SNA","SNB","RNA","RNB","QNA","QNB","PNA","PNB","0nA","0nB","1nA","1nB","2nA","2nB","3nA","3nB","4nA","4nB","6nA","6nB","ZnA","ZnB","YnA","YnB","XnA","XnB","WnA","WnB","VnA","VnB","UnA","UnB","TnA","TnB","SnA","SnB","RnA","RnB","QnA","QnB","PnA","PnB"],Tal:["0TA","0TB","1TA","1TB","2TA","2TB","3TA","3TB","4TA","4TB","6TA","6TB","ZTA","ZTB","YTA","YTB","XTA","XTB","WTA","WTB","VTA","VTB","UTA","UTB","TTA","TTB","STA","STB","RTA","RTB","QTA","QTB","PTA","PTB","0tA","0tB","1tA","1tB","2tA","2tB","3tA","3tB","4tA","4tB","6tA","6tB","ZtA","ZtB","YtA","YtB","XtA","XtB","WtA","WtB","VtA","VtB","UtA","UtB","TtA","TtB","StA","StB","RtA","RtB","QtA","QtB","PtA","PtB"],Ido:["0IA","0IB","1IA","1IB","2IA","2IB","3IA","3IB","4IA","4IB","6IA","6
7IB","ZIA","ZIB","YIA","YIB","XIA","XIB","WIA","WIB","VIA","VIB","UIA","UIB","TIA","TIB","SIA","SIB","RIA","RIB","QIA","QIB","PIA","PIB","0iA","0iB","1iA","1iB","2iA","2iB","3iA","3iB","4iA","4iB","6iA","6iB","ZiA","ZiB","YiA","YiB","XiA","XiB","WiA","WiB","ViA","ViB","UiA","UiB","TiA","TiB","SiA","SiB","RiA","RiB","QiA","QiB","PiA","PiB"],IdoA:["0UA","0UB","1UA","1UB","2UA","2UB","3UA","3UB","4UA","4UB","ZUA","ZUB","YUA","YUB","WUA","WUB","TUA","TUB","0uA","0uB","1uA","1uB","2uA","2uB","3uA","3uB","4uA","4uB","ZuA","ZuB","YuA","YuB","WuA","WuB","TuA","TuB","YuAP"],Fuc:["0FA","0FB","1FA","1FB","2FA","2FB","3FA","3FB","4FA","4FB","ZFA","ZFB","YFA","YFB","WFA","WFB","TFA","TFB","0fA","0fB","1fA","1fB","2fA","2fB","3fA","3fB","4fA","4fB","ZfA","ZfB","YfA","YfB","WfA","WfB","TfA","TfB"],Rha:["0HA","0HB","1HA","1HB","2HA","2HB","3HA","3HB","4HA","4HB","ZHA","ZHB","YHA","YHB","WHA","WHB","THA","THB","0hA","0hB","1hA","1hB","2hA","2hB","3hA","3hB","4hA","4hB","ZhA","ZhB","YhA","YhB","WhA","WhB","ThA","ThB"],Qui:["0QA","0QB","1QA","1QB","2QA","2QB","3QA","3QB","4QA","4QB","ZQA","ZQB","YQA","YQB","WQA","WQB","TQA","TQB","0qA","0qB","1qA","1qB","2qA","2qB","3qA","3qB","4qA","4qB","ZqA","ZqB","YqA","YqB","WqA","WqB","TqA","TqB"],Lyx:["0DA","0DB","1DA","1DB","2DA","2DB","3DA","3DB","4DA","4DB","ZDA","ZDB","YDA","YDB","WDA","WDB","TDA","TDB","0DD","0DU","1DD","1DU","2DD","2DU","3DD","3DU","5DD","5DU","ZDD","ZDU","0dA","0dB","1dA","1dB","2dA","2dB","3dA","3dB","4dA","4dB","ZdA","ZdB","YdA","YdB","WdA","WdB","TdA","TdB","0dD","0dU","1dD","1dU","2dD","2dU","3dD","3dU","5dD","5dU","ZdD","ZdU"],Xyl:["0XA","0XB","1XA","1XB","2XA","2XB","3XA","3XB","4XA","4XB","ZXA","ZXB","YXA","YXB","WXA","WXB","TXA","TXB","0XD","0XU","1XD","1XU","2XD","2XU","3XD","3XU","5XD","5XU","ZXD","ZXU","0xA","0xB","1xA","1xB","2xA","2xB","3xA","3xB","4xA","4xB","ZxA","ZxB","YxA","YxB","WxA","WxB","TxA","TxB","0xD","0xU","1xD","1xU","2xD","2xU","3xD","3xU","5xD","5xU","ZxD","ZxU"],Rib:["0RA","0RB","1RA","1RB","2RA","2RB","3RA","3RB","4RA","4RB","ZRA","ZRB","YRA","YRB","WRA","WRB","TRA","TRB","0RD","0RU","1RD","1RU","2RD","2RU","3RD","3RU","5RD","5RU","ZRD","ZRU","0rA","0rB","1rA","1rB","2rA","2rB","3rA","3rB","4rA","4rB","ZrA","ZrB","YrA","YrB","WrA","WrB","TrA","TrB","0rD","0rU","1rD","1rU","2rD","2rU","3rD","3rU","5rD","5rU","ZrD","ZrU"],Fru:["0CA","0CB","1CA","1CB","2CA","2CB","3CA","3CB","4CA","4CB","5CA","5CB","WCA","WCB","0CD","0CU","1CD","1CU","2CD","2CU","3CD","3CU","4CD","4CU","6CD","6CU","WCD","WCU","VCD","VCU","UCD","UCU","QCD","QCU","0cA","0cB","1cA","1cB","2cA","2cB","3cA","3cB","4cA","4cB","5cA","5cB","WcA","WcB","0cD","0cU","1cD","1cU","2cD","2cU","3cD","3cU","4cD","4cU","6cD","6cU","WcD","WcU","VcD","VcU","UcD","UcU","QcD","QcU"],Tag:["0JA","0JB","1JA","1JB","2JA","2JB","3JA","3JB","4JA","4JB","5JA","5JB","WJA","WJB","0JD","0JU","1JD","1JU","2JD","2JU","3JD","3JU","4JD","4JU","6JD","6JU","WJD","WJU","VJD","VJU","UJD","UJU","QJD","QJU","0jA","0jB","1jA","1jB","2jA","2jB","3jA","3jB","4jA","4jB","5jA","5jB","WjA","WjB","0jD","0jU","1jD","1jU","2jD","2jU","3jD","3jU","4jD","4jU","6jD","6jU","WjD","WjU","VjD","VjU","UjD","UjU","QjD","QjU"],Sor:["0BA","0BB","1BA","1BB","2BA","2BB","3BA","3BB","4BA","4BB","5BA","5BB","WBA","WBB","0BD","0BU","1BD","1BU","2BD","2BU","3BD","3BU","4BD","4BU","6BD","6BU","WBD","WBU","VBD","VBU","UBD","UBU","QBD","QBU","0bA","0bB","1bA","1bB","2bA","2bB","3bA","3bB","4bA","4bB","5bA","5bB","WbA","WbB","0bD","0bU","1bD","1bU","2bD","2bU","3bD","3bU","4bD","4bU","6bD","6bU","WbD","WbU","VbD","VbU","UbD","UbU","QbD","QbU"],Psi:["0PA","0PB","1PA","1PB","2PA","2PB","3PA","3PB","4PA","4PB","5PA","5PB","WPA","WPB","0PD","0PU","1PD","1PU","2PD","2PU","3PD","3PU","4PD","4PU","6PD","6PU","WPD","WPU","VPD","VPU","UPD","UPU","QPD","QPU","0pA","0pB","1pA","1pB","2pA","2pB","3pA","3pB","4pA","4pB","5pA","5pB","WpA","WpB","0pD","0pU","1pD","1pU","2pD","2pU","3pD","3pU","4pD","4pU","6pD","6pU","WpD","WpU","VpD","VpU","UpD","UpU","QpD","QpU"],Neu5Ac:["0SA","0SB","4SA","4SB","7SA","7SB","8SA","8SB","9SA","9SB","ASA","ASB","BSA","BSB","CSA","CSB","DSA","DSB","ESA","ESB","FSA","FSB","GSA","GSB","HSA","HSB","ISA","ISB","JSA","JSB","KSA","KSB","0sA","0sB","4sA","4sB","7sA","7sB","8sA","8sB","9sA","9sB","AsA","AsB","BsA","BsB","CsA","CsB","DsA","DsB","EsA","EsB","FsA","FsB","GsA","GsB","HsA","HsB","IsA","IsB","JsA","JsB","KsA","KsB"],Neu5Gc:["0GL","4GL","7GL","8GL","9GL","CGL","DGL","EGL","FGL","GGL","HGL","IGL","JGL","KGL","0gL","4gL","7gL","8gL","9gL","AgL","BgL","CgL","DgL","EgL","FgL","GgL","HgL","IgL","JgL","KgL"],Tyv:["YTV","4TV","2TV","1TV","0TV","YTv","4Tv","2Tv","1Tv","0Tv"],Abe:["YAE","2AE","4AE","1AE","0AE","YAe","4Ae","2Ae","1Ae","0Ae"],Bac:["0BC","1BC","3BC","0bC","1bC","3bC"],Kdn:["0KN","4KN","5KN","7KN","8KN","9KN","AKN","BKN","CKN","DKN","EKN","FKN","GKN","HKN","IKN","JKN","KKN","LKN","MKN","NKN","OKN","PKN","QKN","RKN","SKN","TKN","UKN","VKN","WKN","XKN","YKN","0Kn","4Kn","5Kn","7Kn","8Kn","9Kn","AKn","BKn","CKn","DKn","EKn","FKn","GKn","HKn","IKn","JKn","KKn","LKn","MKn","NKn","OKn","PKn","QKn","RKn","SKn","TKn","UKn","VKn","WKn","XKn","YKn"],Kdo:["0KO","4KO","5KO","7KO","8KO","AKO","BKO","CKO","DKO","EKO","FKO","GKO","HKO","IKO","JKO","KKO","0Ko","4Ko","5Ko","7Ko","8Ko","AKo","BKo","CKo","DKo","EKo","FKo","GKo","HKo","IKo","JKo","KKo"],QuiNAc:["0QF","1QF","3QF","0Qf","1Qf","3Qf"],AAT:["0FC","1FC","3FC","0Fc","1Fc","3Fc"],Ara4N:["ZaN","3aN","2aN","1aN","0aN","Zan","3an","2an","1an","0an"],Aci:["JeC","8eC","4eC","2eC","0eC","Jec","8ec","4ec","2ec","0ec"],Leg:["JLG","8LG","4LG","2LG","0LG","JLg","8Lg","4Lg","2Lg","0Lg"],Pse:["JmP","8mP","4mP","2mP","0mP","Jmp","8mp","4mp","2mp","0mp"],Fus:["EgF","HgF","JgF","8gF","KgF","7gF","4gF","2gF","0gF","Egf","Hgf","Jgf","8gf","Kgf","7gf","4gf","2gf","0gf"],DDmanpHep:["ODH","NDH","LDH","MDH","KDH","7DH","PDH","SDH","RDH","XDH","QDH","VDH","UDH","6DH","TDH","ZDH","YDH","2DH","WDH","3DH","4DH","1DH","ODh","NDh","LDh","MDh","KDh","7Dh","PDh","SDh","RDh","XDh","QDh","VDh","UDh","6Dh","TDh","ZDh","YDh","2Dh","WDh","3Dh","4Dh","1Dh"],LDmanpHep:["OLH","NLH","LLH","MLH","KLH","7LH","PLH","SLH","RLH","XLH","QLH","VLH","ULH","6LH","TLH","ZLH","YLH","2LH","WLH","3LH","4LH","1LH","OLh","NLh","LLh","MLh","KLh","7Lh","PLh","SLh","RLh","XLh","QLh","VLh","ULh","6Lh","TLh","ZLh","YLh","2Lh","WLh","3Lh","4Lh","1Lh"],K3O:["dKX","EKX","hKX","HKX","jKX","JKX","pKX","8KX","MKX","kKX","KKX","qKX","7KX","xKX","WKX","tKX","3KX","sKX","4KX","5KX","2KX","0KX","dKx","EKx","hKx","HKx","jKx","JKx","pKx","8Kx","MKx","kKx","KKx","qKx","7Kx","xKx","WKx","tKx","3Kx","sKx","4Kx","5Kx","2Kx","0Kx"],MurNAc:["UMR","4MR","6MR","1MR","0MR","UMr","4Mr","6
7Mr","1Mr","0Mr"],Oli:["WdR","4dR","3dR","1dR","0dR"],dUA:["Z45","345","245","145","045"],GlcNS:["QYS","UYS","VYS","6YS","WYS","4YS","3YS","1YS","0YS","QYs","UYs","VYs","6Ys","WYs","4Ys","3Ys","1Ys","0Ys","QyS","UyS","VyS","6yS","WyS","4yS","3yS","1yS","0yS","Qys","Uys","Vys","6ys","Wys","4ys","3ys","1ys","0ys"]},a=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m],P=y[b.abbr];if(P)for(let l=0,S=P.length;l<S;++l)u.set(P[l],b);const C=_[b.abbr];if(C)for(let l=0,S=C.length;l<S;++l)u.set(C[l],b)}return r.SaccharideNames.forEach(m=>{u.has(m)||u.set(m,e.UnknownSaccharideComponent)}),u})(),d=(function(){const u=new Map;for(let m=0,v=f.length;m<v;++m){const b=f[m],P=y[b.abbr];if(P)for(let S=0,T=P.length;S<T;++S)u.set(P[S],b);const C=_[b.abbr];if(C)for(let S=0,T=C.length;S<T;++S)u.set(C[S],b);const l=g[b.abbr];if(l)for(let S=0,T=l.length;S<T;++S)u.has(l[S])||u.set(l[S],b)}return r.SaccharideNames.forEach(m=>{u.has(m)||u.set(m,e.UnknownSaccharideComponent)}),u})();function p(u){e.SaccharideCompIdMap=u==="default"?a:d}e.SaccharideCompIdMap=a})(H2)),H2}var jm={},RE;function Hi(){if(RE)return jm;RE=1,Object.defineProperty(jm,"__esModule",{value:!0}),jm.SetUtils=void 0;var e;return(function(t){function r(d){return Array.from(d.values())}t.toArray=r;function n(d,p){if(d===p)return!0;if(d.size<p.size)return!1;for(const u of p)if(!d.has(u))return!1;return!0}t.isSuperset=n;function i(d,...p){for(let u=0;u<p.length;u++)for(const m of p[u])d.add(m);return d}t.add=i;function c(d,p){const u=new Set(d);if(d===p)return u;for(const m of p)u.add(m);return u}t.union=c;function o(...d){if(d.length===0)return new Set;const p=new Set(d[0]);for(let u=1,m=d.length;u<m;u++)for(const v of d[u])p.add(v);return p}t.unionMany=o;function s(d){if(d.length===0)return new Set;const p=new Set(d[0]);for(let u=1;u<d.length;u++)for(const m of d[u])p.add(m);return p}t.unionManyArrays=s;function h(d,p){if(d===p)return new Set(d);const u=new Set;for(const m of p)d.has(m)&&u.add(m);return u}t.intersection=h;function f(d,p){if(d===p)return d.size>0;d.size<p.size&&([d,p]=[p,d]);for(const u of p)if(d.has(u))return!0;return!1}t.areIntersecting=f;function y(d,p){if(d===p)return d.size;d.size<p.size&&([d,p]=[p,d]);let u=0;for(const m of p)d.has(m)&&(u+=1);return u}t.intersectionSize=y;function _(d,p){if(d===p)return new Set;const u=new Set(d);for(const m of p)u.delete(m);return u}t.difference=_;function g(d,p){if(d===p)return 0;let u=d.size;for(const m of d)p.has(m)&&(u-=1);return u}t.differenceSize=g;function a(d,p){if(d===p)return!0;if(d.size!==p.size)return!1;for(const u of p)if(!d.has(u))return!1;return!0}t.areEqual=a})(e||(jm.SetUtils=e={})),jm}var Gm={},OE;function dJ(){return OE||(OE=1,Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.LipidNames=void 0,Gm.LipidNames=new Set(["DAPC","DBPC","DFPC","DGPC","DIPC","DLPC","DNPC","DOPC","DPPC","DRPC","DTPC","DVPC","DXPC","DYPC","LPPC","PAPC","PEPC","PGPC","PIPC","POPC","PRPC","PUPC","DAPE","DBPE","DFPE","DGPE","DIPE","DLPE","DNPE","DOPE","DPPE","DRPE","DTPE","DUPE","DVPE","DXPE","DYPE","LPPE","PAPE","PGPE","PIPE","POPE","PQPE","PRPE","PUPE","DAPS","DBPS","DFPS","DGPS","DIPS","DLPS","DNPS","DOPS","DPPS","DRPS","DTPS","DUPS","DVPS","DXPS","DYPS","LPPS","PAPS","PGPS","PIPS","POPS","PQPS","PRPS","PUPS","DAPA","DBPA","DFPA","DGPA","DIPA","DLPA","DNPA","DOPA","DPPA","DRPA","DTPA","DVPA","DXPA","DYPA","LPPA","PAPA","PGPA","PIPA","POPA","PRPA","PUPA","DAPG","DBPG","DFPG","DGPG","DIPG","DLPG","DNPG","DOPG","DPPG","DRPG","DTPG","DVPG","DXPG","DYPG","LPPG","PAPG","PGPG","PIPG","POPG","PRPG","DMPC","DPP","DPPI","PAPI","PIPI","POP","POPI","PUPI","PVP","PVPI","PADG","PIDG","PODG","PUDG","PVDG","APC","CPC","IPC","LPC","OPC","PPC","TPC","UPC","VPC","BNSM","DBSM","DPSM","DXSM","PGSM","PNSM","POSM","PVSM","XNSM","DPCE","DXCE","PNCE","XNCE","PA","ST","OL","LEO","LEN","AR","DHA","PC","PE","PS","PH-","P2-","PGR","PGS","PI","CHL"])),Gm}var zm={},kE;function fJ(){return kE||(kE=1,Object.defineProperty(zm,"__esModule",{value:!0}),zm.IonNames=void 0,zm.IonNames=new Set(["118","119","543","1AL","1CU","2FK","2HP","2OF","3CO","3MT","3NI","3OF","3P8","4MO","4PU","4TI","6MO","ACT","AG","AL","ALF","AM","ATH","AU","AU3","AUC","AZI","BA","BCT","BEF","BF4","BO4","BR","BS3","BSY","CA","CAC","CD","CD1","CD3","CD5","CE","CF","CHT","CL","CO","CO3","CO5","CON","CR","CS","CSB","CU","CU1","CU3","CUA","CUZ","CYN","DME","DMI","DSC","DTI","DY","
7E4N","EDR","EMC","ER3","EU","EU3","F","FE","FE2","FPO","GA","GD3","GEP","HAI","HG","HGC","IN","IOD","IR","IR3","IRI","IUM","K","KO4","LA","LCO","LCP","LI","LU","MAC","MG","MH2","MH3","MLI","MMC","MN","MN3","MN5","MN6","MO1","MO2","MO3","MO4","MO5","MO6","MOO","MOS","MOW","MW1","MW2","MW3","NA","NA2","NA5","NA6","NAO","NAW","ND","NET","NH4","NI","NI1","NI2","NI3","NO2","NO3","NRU","NT3","O4M","OAA","OC1","OC2","OC3","OC4","OC5","OC6","OC7","OC8","OCL","OCM","OCN","OCO","OF1","OF2","OF3","OH","OS","OS4","OXL","PB","PBM","PD","PDV","PER","PI","PO3","PO4","PR","PT","PT4","PTN","RB","RH3","RHD","RHF","RU","SB","SCN","SE4","SEK","SM","SMO","SO3","SO4","SR","T1A","TB","TBA","TCN","TEA","TH","THE","TL","TMA","TRA","UNX","V","VN3","VO4","W","WO5","Y1","YB","YB2","YH","YT3","ZCM","ZN","ZN2","ZN3","ZNO","ZO3","ZR","ZTM","NCO","OHX"])),zm}var FE;function dt(){return FE||(FE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultResidueHydrophobicity=e.ResidueHydrophobicity=e.BondType=e.DefaultMaxAsa=e.MaxAsa=e.SecondaryStructureType=e.PolymerNames=e.isPyrimidineBase=e.isPurineBase=e.BaseNames=e.PyrimidineBaseNames=e.PurineBaseNames=e.PeptideBaseNames=e.DnaBaseNames=e.RnaBaseNames=e.CommonProteinCaps=e.AminoAcidNames=e.AminoAcidNamesD=e.AminoAcidNamesL=e.WaterNames=e.LipidComponentTypeNames=e.IonComponentTypeNames=e.OtherComponentTypeNames=e.SaccharideComponentTypeNames=e.RNAComponentTypeNames=e.DNAComponentTypeNames=e.ProteinComponentTypeNames=e.OtherProteinComponentTypeNames=e.ProteinTerminusComponentTypeNames=e.BetaProteinComponentTypeNames=e.GammaProteinComponentTypeNames=e.LProteinComponentTypeNames=e.DProteinComponentTypeNames=e.TraceAtoms=e.NucleicBackboneAtoms=e.ProteinBackboneAtoms=e.PolymerTypeAtomRoleId=e.PolymerType=e.MoleculeType=e.EntityType=void 0,e.ElementSymbol=s,e.getElementFromAtomicNumber=f,e.getMoleculeType=p,e.getPolymerType=u,e.getComponentType=m,e.getDefaultChemicalComponent=v,e.getEntityType=b,e.getEntitySubtype=P,e.isPolymer=C,e.isNucleic=l,e.isProtein=S;const t=Y_(),r=xf(),n=Hi(),i=dJ(),c=fJ(),o=(function(){const x=Object.create(null),M=[];for(let D=65;D<=90;D++)M[M.length]=String.fromCharCode(D);for(let D=97;D<=122;D++)M[M.length]=String.fromCharCode(D);for(let D=48;D<=57;D++)M[M.length]=String.fromCharCode(D);for(const D of M){x[D]=D.toUpperCase();for(const V of M){x[D+V]=(D+V).toUpperCase();for(const R of M)x[D+V+R]=(D+V+R).toUpperCase()}}return x})();function s(x){return o[x]||x.toUpperCase()}const h=new Map([[1,"H"],[2,"He"],[3,"Li"],[4,"Be"],[5,"B"],[6,"C"],[7,"N"],[8,"O"],[9,"F"],[10,"Ne"],[11,"Na"],[12,"Mg"],[13,"Al"],[14,"Si"],[15,"P"],[16,"S"],[17,"Cl"],[18,"Ar"],[19,"K"],[20,"Ca"],[21,"Sc"],[22,"Ti"],[23,"V"],[24,"Cr"],[25,"Mn"],[26,"Fe"],[27,"Co"],[28,"Ni"],[29,"Cu"],[30,"Zn"],[31,"Ga"],[32,"Ge"],[33,"As"],[34,"Se"],[35,"Br"],[36,"Kr"],[37,"Rb"],[38,"Sr"],[39,"Y"],[40,"Zr"],[41,"Nb"],[42,"Mo"],[43,"Tc"],[44,"Ru"],[45,"Rh"],[46,"Pd"],[47,"Ag"],[48,"Cd"],[49,"In"],[50,"Sn"],[51,"Sb"],[52,"Te"],[53,"I"],[54,"Xe"],[55,"Cs"],[56,"Ba"],[57,"La"],[58,"Ce"],[59,"Pr"],[60,"Nd"],[61,"Pm"],[62,"Sm"],[63,"Eu"],[64,"Gd"],[65,"Tb"],[66,"Dy"],[67,"Ho"],[68,"Er"],[69,"Tm"],[70,"Yb"],[71,"Lu"],[72,"Hf"],[73,"Ta"],[74,"W"],[75,"Re"],[76,"Os"],[77,"Ir"],[78,"Pt"],[79,"Au"],[80,"Hg"],[81,"Tl"],[82,"Pb"],[83,"Bi"],[84,"Po"],[85,"At"],[86,"Rn"],[87,"Fr"],[88,"Ra"],[89,"Ac"],[90,"Th"],[91,"Pa"],[92,"U"],[93,"Np"],[94,"Pu"],[95,"Am"],[96,"Cm"],[97,"Bk"],[98,"Cf"],[99,"Es"],[100,"Fm"],[101,"Md"],[102,"No"],[103,"Lr"],[104,"Rf"],[105,"Db"],[106,"Sg"],[107,"Bh"],[108,"Hs"],[109,"Mt"],[110,"Ds"],[111,"Rg"],[112,"Cn"],[113,"Uut"],[114,"Fl"],[115,"Uup"],[116,"Lv"],[117,"Uus"],[118,"Uuo"]].map(x=>[x[0],s(x[1])]));function f(x){return h.has(x)?h.get(x):s("H")}var y;(function(x){x[x.unknown=0]="unknown",x[x.polymer=1]="polymer",x[x["non-polymer"]=2]="non-polymer",x[x.macrolide=3]="macrolide",x[x.water=4]="water",x[x.branched=5]="branched"})(y||(e.EntityType=y={}));var _;(function(x){x[x.Unknown=0]="Unknown",x[x.Other=1]="Other",x[x.Water=2]="Water",x[x.Ion=3]="Ion",x[x.Lipid=4]="Lipid",x[x.Protein=5]="Protein",x[x.RNA=6]="RNA",x[x.DNA=7]="DNA",x[x.PNA=8]="PNA",x[x.Saccharide=9]="Saccharide"})(_||(e.MoleculeType=_={}));var g;(function(x){x[x.NA=0]="NA",x[x.Protein=1]="Protein",x[x.GammaProtein=2]="GammaProtein",x[x.BetaProtein=3]="BetaProtein",x[x.RNA=4]="RNA",x[x.DNA=5]="DNA",x[x.PNA=6]="PNA"})(g||(e.PolymerType=g={})),e.PolymerTypeAtomRoleId={[g.NA]:{trace:new Set,directionFrom:new Set,directionTo:new Set,backboneStart:new Set,backboneEnd:new Set,coarseBackbone:new Set},[g.Protein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O","OC1","O1","OX1","OXT","OT1"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["C"]),coarseBackbone:new Set(["CA","CA1","BB","BAS"])},[g.GammaProtein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CD"]),coarseBackbone:new Set(["CA"])},[g.BetaProtein]:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CG"]),coarseBackbone:new Set(["CA"])},[g.RNA]:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C4'","C4*"]),directionTo:new Set(["C3'","C3*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},[g.DNA]:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C3'","C3*"]),directionTo:new Set(["C1'","C1*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},[g.PNA]:{trace:new Set(["N4'","N4*"]),directionFrom:new Set(["N4'","N4*"]),directionTo:new Set(["C7'","C7*"]),backboneStart:new Set(["N1'","N1*"]),backboneEnd:new Set(["C'","C*"]),coarseBackbone:new Set(["P"])}},e.ProteinBackboneAtoms=new Set(["CA","C","N","O","O1","O2","OC1","OC2","OT1","OT2","OX1","OXT","H","H1","H2","H3","HA","HN","HXT","CA1","BB","BAS"]),e.NucleicBackboneAtoms=new Set(["P","OP1","OP2","HOP2","HOP3","O2'","O3'","O4'","O5'","C1'","C2'","C3'","C4'","C5'","H1'","H2'","H2''","HO2'","H3'","H4'","H5'","H5''","HO3'","HO5'","O2*","O3*","O4*","O5*","C1*","C2*","C3*","C4*","C5*"]),e.TraceAtoms=new Set(["CA","CA1","BB","BAS","O3'","O3*","N4'","N4*"]),e.DProteinComponentTypeNames=new Set(["d-peptide linking","d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","d-gamma-peptide, c-delta linking","d-beta-peptide, c-gamma linking"]),e.LProteinComponentTypeNames=new Set(["l-peptide linking","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus","l-gamma-peptide, c-delta linking","l-beta-peptide, c-gamma linking"]),e.GammaProteinComponentTypeNames=new Set(["d-gamma-peptide, c-delta linking","l-gamma-peptide, c-delta linking"]),e.BetaProteinComponentTypeNames=new Set(["d-beta-peptide, c-gamma linking","l-beta-peptide, c-gamma linking"]),e.ProteinTerminusComponentTypeNames=new Set(["d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus"]),e.OtherProteinComponentTypeNames=new Set(["peptide linking","peptide-like"]),e.ProteinComponentTypeNames=n.SetUtils.unionMany(e.DProteinComponentTypeNames,e.LProteinComponentTypeNames,e.OtherProteinComponentTypeNames),e.DNAComponentTypeNames=new Set(["dna linking","l-dna linking","dna oh 5 prime terminus","dna oh 3 prime terminus"]),e.RNAComponentTypeNames=new Set(["rna linking","l-rna linking","rna oh 5 prime terminus","rna oh 3 prime terminus"]),e.SaccharideComponentTypeNames=n.SetUtils.unionMany(new Set(["d-saccharide, beta linking","l-saccharide, beta linking","d-saccharide, alpha linking","l-saccharide, alpha linking","l-saccharide","d-saccharide","saccharide"]),new Set(["d-saccharide 1,4 and 1,4 linking","l-saccharide 1,4 and 1,4 linking","d-saccharide 1,4 and 1,6 linking","l-saccharide 1,4 and 1,6 linking"])),e.OtherComponentTypeNames=new Set(["non-polymer","other"]),e.IonComponentTypeNames=new Set(["ion"]),e.LipidComponentTypeNames=new Set(["lipid"]),e.WaterNames=new Set(["SOL","WAT","HOH","H2O","W","DOD","D3O","TIP","TIP3","TIP4","SPC"]),e.AminoAcidNamesL=new Set(["HIS","ARG","LYS","ILE","PHE","LEU","TRP","ALA","MET","PRO","CYS","ASN","VAL","GLY","SER","GLN","TYR","ASP","GLU","THR","SEC","PYL","UNK","MSE","SEP","TPO","PTR","PCA","HYP","HSD","HSE","HSP","LSN","ASPP","GLUP","HID","HIE","HIP","LYN","ASH","GLH"]),e.AminoAcidNamesD=new Set(["DAL","DAR","DSG","DAS","DCY","DGL","DGN","DHI","DIL","DLE","DLY","MED","DPN","DPR","DSN","DTH","DTR","DTY","DVA","DNE"]),e.AminoAcidNames=n.SetUtils.unionMany(e.AminoAcidNamesL,e.AminoAcidNamesD),e.CommonProteinCaps=new Set(["NME","ACE","NH2","FOR","FMT"]),e.Rna
7BaseNames=new Set(["A","C","T","G","I","U","N"]),e.DnaBaseNames=new Set(["DA","DC","DT","DG","DI","DU","DN"]),e.PeptideBaseNames=new Set(["APN","CPN","TPN","GPN"]),e.PurineBaseNames=new Set(["A","G","I","DA","DG","DI","APN","GPN"]),e.PyrimidineBaseNames=new Set(["C","T","U","DC","DT","DU","CPN","TPN"]),e.BaseNames=n.SetUtils.unionMany(e.RnaBaseNames,e.DnaBaseNames,e.PeptideBaseNames);const a=x=>e.PurineBaseNames.has(x.toUpperCase());e.isPurineBase=a;const d=x=>e.PyrimidineBaseNames.has(x.toUpperCase());e.isPyrimidineBase=d,e.PolymerNames=n.SetUtils.unionMany(e.AminoAcidNames,e.BaseNames);function p(x,M){return M=M.toUpperCase(),e.PeptideBaseNames.has(M)?_.PNA:e.ProteinComponentTypeNames.has(x)?_.Protein:e.RNAComponentTypeNames.has(x)?_.RNA:e.DNAComponentTypeNames.has(x)?_.DNA:e.SaccharideComponentTypeNames.has(x)?_.Saccharide:e.WaterNames.has(M)?_.Water:c.IonNames.has(M)?_.Ion:i.LipidNames.has(M)?_.Lipid:e.OtherComponentTypeNames.has(x)?r.SaccharideCompIdMap.has(M)?_.Saccharide:e.AminoAcidNames.has(M)?_.Protein:e.RnaBaseNames.has(M)?_.RNA:e.DnaBaseNames.has(M)?_.DNA:_.Other:_.Unknown}function u(x,M){return M===_.Protein?e.GammaProteinComponentTypeNames.has(x)?g.GammaProtein:e.BetaProteinComponentTypeNames.has(x)?g.BetaProtein:e.ProteinTerminusComponentTypeNames.has(x)?g.NA:g.Protein:M===_.RNA?g.RNA:M===_.DNA?g.DNA:M===_.PNA?g.PNA:g.NA}function m(x){return x=x.toUpperCase(),e.AminoAcidNames.has(x)?"peptide linking":e.RnaBaseNames.has(x)?"rna linking":e.DnaBaseNames.has(x)?"dna linking":r.SaccharideCompIdMap.has(x)?"saccharide":"other"}function v(x){return{formula:"",formula_weight:0,id:x,name:x,mon_nstd_flag:e.PolymerNames.has(x)?"y":"n",pdbx_synonyms:[],type:m(x)}}function b(x){return x=x.toUpperCase(),e.WaterNames.has(x)?"water":e.PolymerNames.has(x)?"polymer":r.SaccharideCompIdMap.has(x)?"branched":"non-polymer"}function P(x,M){return x=x.toUpperCase(),e.LProteinComponentTypeNames.has(M)?"polypeptide(L)":e.DProteinComponentTypeNames.has(M)?"polypeptide(D)":e.RNAComponentTypeNames.has(M)?"polyribonucleotide":e.DNAComponentTypeNames.has(M)?"polydeoxyribonucleotide":e.SaccharideComponentTypeNames.has(M)||r.SaccharideCompIdMap.has(x)?"oligosaccharide":e.PeptideBaseNames.has(x)?"peptide nucleic acid":e.AminoAcidNamesL.has(x)?"polypeptide(L)":e.AminoAcidNamesD.has(x)?"polypeptide(D)":e.RnaBaseNames.has(x)?"polyribonucleotide":e.DnaBaseNames.has(x)?"polydeoxyribonucleotide":e.IonComponentTypeNames.has(M)||c.IonNames.has(x)?"ion":e.LipidComponentTypeNames.has(M)||i.LipidNames.has(x)?"lipid":e.OtherProteinComponentTypeNames.has(M)?"peptide-like":"other"}function C(x){return l(x)||S(x)}function l(x){return x===_.DNA||x===_.RNA||x===_.PNA}function S(x){return x===_.Protein}var T;(function(x){x.is=t.BitFlags.has,x.create=t.BitFlags.create;let M;(function(D){D[D.None=0]="None",D[D.DoubleHelix=1]="DoubleHelix",D[D.Helix=2]="Helix",D[D.Beta=4]="Beta",D[D.Bend=8]="Bend",D[D.Turn=16]="Turn",D[D.LeftHanded=32]="LeftHanded",D[D.RightHanded=64]="RightHanded",D[D.ClassicTurn=128]="ClassicTurn",D[D.InverseTurn=256]="InverseTurn",D[D.HelixOther=512]="HelixOther",D[D.Helix27=1024]="Helix27",D[D.Helix3Ten=2048]="Helix3Ten",D[D.HelixAlpha=4096]="HelixAlpha",D[D.HelixGamma=8192]="HelixGamma",D[D.HelixOmega=16384]="HelixOmega",D[D.HelixPi=32768]="HelixPi",D[D.HelixPolyproline=65536]="HelixPolyproline",D[D.DoubleHelixOther=131072]="DoubleHelixOther",D[D.DoubleHelixZ=262144]="DoubleHelixZ",D[D.DoubleHelixA=524288]="DoubleHelixA",D[D.DoubleHelixB=1048576]="DoubleHelixB",D[D.BetaOther=2097152]="BetaOther",D[D.BetaStrand=4194304]="BetaStrand",D[D.BetaSheet=8388608]="BetaSheet",D[D.BetaBarell=16777216]="BetaBarell",D[D.TurnOther=33554432]="TurnOther",D[D.Turn1=67108864]="Turn1",D[D.Turn2=134217728]="Turn2",D[D.Turn3=268435456]="Turn3",D[D.NA=536870912]="NA"})(M=x.Flag||(x.Flag={})),x.SecondaryStructureMmcif={helx_lh_27_p:M.Helix|M.LeftHanded|M.Helix27,helx_lh_3t_p:M.Helix|M.LeftHanded|M.Helix3Ten,helx_lh_al_p:M.Helix|M.LeftHanded|M.HelixAlpha,helx_lh_a_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixA,helx_lh_b_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixB,helx_lh_ga_p:M.Helix|M.LeftHanded|M.HelixGamma,helx_lh_n:M.DoubleHelix|M.LeftHanded,helx_lh_om_p:M.Helix|M.LeftHanded|M.HelixOmega,helx_lh_ot_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixOther,helx_lh_ot_p:M.Helix|M.LeftHanded|M.HelixOther,helx_lh_p:M.Helix|M.LeftHanded,helx_lh_pi_p:M.Helix|M.LeftHanded|M.HelixPi,helx_lh_pp_p:M.Helix|M.LeftHanded|M.HelixPolyprol
7ine,helx_lh_z_n:M.DoubleHelix|M.LeftHanded|M.DoubleHelixZ,helx_n:M.DoubleHelix,helx_ot_n:M.DoubleHelix,helx_ot_p:M.Helix,helx_p:M.Helix,helx_rh_27_p:M.Helix|M.RightHanded|M.Helix27,helx_rh_3t_p:M.Helix|M.RightHanded|M.Helix3Ten,helx_rh_al_p:M.Helix|M.RightHanded|M.HelixAlpha,helx_rh_a_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixA,helx_rh_b_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixB,helx_rh_ga_p:M.Helix|M.RightHanded|M.HelixGamma,helx_rh_n:M.DoubleHelix|M.RightHanded,helx_rh_om_p:M.Helix|M.RightHanded|M.HelixOmega,helx_rh_ot_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixOther,helx_rh_ot_p:M.Helix|M.RightHanded|M.HelixOther,helx_rh_p:M.Helix|M.RightHanded,helx_rh_pi_p:M.Helix|M.RightHanded|M.HelixPi,helx_rh_pp_p:M.Helix|M.RightHanded|M.HelixPolyproline,helx_rh_z_n:M.DoubleHelix|M.RightHanded|M.DoubleHelixZ,strn:M.Beta|M.BetaStrand,turn_ot_p:M.Turn|M.TurnOther,turn_p:M.Turn,turn_ty1p_p:M.Turn|M.InverseTurn|M.Turn1,turn_ty1_p:M.Turn|M.ClassicTurn|M.Turn1,turn_ty2p_p:M.Turn|M.InverseTurn|M.Turn2,turn_ty2_p:M.Turn|M.ClassicTurn|M.Turn2,turn_ty3p_p:M.Turn|M.InverseTurn|M.Turn3,turn_ty3_p:M.Turn|M.ClassicTurn|M.Turn3,bend:M.Bend,other:M.None},x.SecondaryStructurePdb={1:M.Helix|M.RightHanded|M.HelixAlpha,2:M.Helix|M.RightHanded|M.HelixOmega,3:M.Helix|M.RightHanded|M.HelixPi,4:M.Helix|M.RightHanded|M.HelixGamma,5:M.Helix|M.RightHanded|M.Helix3Ten,6:M.Helix|M.LeftHanded|M.HelixAlpha,7:M.Helix|M.LeftHanded|M.HelixOmega,8:M.Helix|M.LeftHanded|M.HelixGamma,9:M.Helix|M.Helix27,10:M.Helix|M.HelixPolyproline},x.SecondaryStructureStride={H:M.Helix|M.HelixAlpha,G:M.Helix|M.Helix3Ten,I:M.Helix|M.HelixPi,E:M.Beta|M.BetaSheet,B:M.Beta|M.BetaStrand,T:M.Turn,C:M.NA},x.SecondaryStructureDssp={H:M.Helix|M.HelixAlpha,B:M.Beta|M.BetaStrand,E:M.Beta|M.BetaSheet,G:M.Helix|M.Helix3Ten,I:M.Helix|M.HelixPi,T:M.Turn,S:M.Bend}})(T||(e.SecondaryStructureType=T={})),e.MaxAsa={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165,HSD:216,HSE:216,HSP:216,HID:216,HIE:216,HIP:216,ASH:187,GLH:214},e.DefaultMaxAsa=121;var A;(function(x){x.is=t.BitFlags.has;let M;(function(w){w[w.None=0]="None",w[w.Covalent=1]="Covalent",w[w.MetallicCoordination=2]="MetallicCoordination",w[w.HydrogenBond=4]="HydrogenBond",w[w.Disulfide=8]="Disulfide",w[w.Aromatic=16]="Aromatic",w[w.Computed=32]="Computed"})(M=x.Flag||(x.Flag={}));function D(w){return t.BitFlags.create(w)}x.create=D;function V(w){return(w&x.Flag.Covalent)!==0}x.isCovalent=V;function R(w){return w===Math.pow(2,6)-1}x.isAll=R,x.Names={covalent:M.Covalent,"metal-coordination":M.MetallicCoordination,"hydrogen-bond":M.HydrogenBond,disulfide:M.Disulfide,aromatic:M.Aromatic,computed:M.Computed};function E(w){return w in x.Names}x.isName=E;function I(w){switch(w){case"covalent":return M.Covalent;case"metal-coordination":return M.MetallicCoordination;case"hydrogen-bond":return M.HydrogenBond;case"disulfide":return M.Disulfide;case"aromatic":return M.Aromatic;case"computed":return M.Computed}}x.fromName=I;function B(w){let O=M.None;for(let F=0,L=w.length;F<L;++F)O|=I(w[F]);return O}x.fromNames=B})(A||(e.BondType=A={})),e.ResidueHydrophobicity={ALA:[.17,.5,.33],ARG:[.81,1.81,1],ASN:[.42,.85,.43],ASP:[1.23,3.64,2.41],ASH:[-.07,.43,.5],CYS:[-.24,-.02,.22],GLN:[.58,.77,.19],GLU:[2.02,3.63,1.61],GLH:[-.01,.11,.12],GLY:[.01,1.15,1.14],HIS:[.17,.11,-.06],ILE:[-.31,-1.12,-.81],LEU:[-.56,-1.25,-.69],LYS:[.99,2.8,1.81],MET:[-.23,-.67,-.44],PHE:[-1.13,-1.71,-.58],PRO:[.45,.14,-.31],SER:[.13,.46,.33],THR:[.14,.25,.11],TRP:[-1.85,-2.09,-.24],TYR:[-.94,-.71,.23],VAL:[.07,-.46,-.53],HSD:[.17,.11,-.06],HSE:[.17,.11,-.06],HSP:[.96,2.33,1.37],HID:[.17,.11,-.06],HIE:[.17,.11,-.06],HIP:[.96,2.33,1.37]},e.DefaultResidueHydrophobicity=[0,0,0]})(z2)),z2}var LE;function Ua(){if(LE)return Tm;LE=1,Object.defineProperty(Tm,"__esModule",{value:!0}),Tm.IndexPairBonds=void 0;const e=is(),t=as(),r=dt();function n(c,o,s,h){const f=new e.IntAdjacencyGraph.EdgeBuilder(h,c,o),y=new Int32Array(f.slotCount),_=new Array(f.slotCount),g=new Array(f.slotCount),a=new Int8Array(f.slotCount),d=new Array(f.slotCount),p=new Array(f.slotCount);for(let u=0,m=f.edgeCount;u<m;u++)f.addNextEdge(),f.assignProperty(y,s.key?s.key[u]:-1),f.assignDirectedProperty(_,s.operatorA?s.operatorA[u]:-1,g,s.operatorB?s.operatorB[u]:-1),f.assignProperty(a,s.order?s.order[u]:1),f.assignProperty(d,s.distance?s.distance[u]:-1),f.assignProperty(p,s.flag?s.flag[u]:r.BondType.Flag.Covalent);return f.createGraph({key:y,operatorA:_,operatorB:g,order:a,distance:d,flag:p})}var i;return(function(c){c.Descriptor={name:"index_pair_bonds"},c.Provider=t.FormatPropertyProvider.create(c.Descriptor,{asDynamic:!0}),c.DefaultProps={maxDistance:-1,cacheable:!0};function o(h,f={}){const y={...c.DefaultProps,...f},{pairs:_,count:g}
7=h,a=_.indexA.toArray(),d=_.indexB.toArray(),p=_.key&&_.key.toArray(),u=_.operatorA&&_.operatorA.toArray(),m=_.operatorB&&_.operatorB.toArray(),v=_.order&&_.order.toArray(),b=_.distance&&_.distance.toArray(),P=_.flag&&_.flag.toArray();let C=!1;if(u&&m){C=!0;for(let T=0,A=u.length;T<A;++T)if(u[T]===-1||m[T]===-1){C=!1;break}}const l=n(a,d,{key:p,operatorA:u,operatorB:m,order:v,distance:b,flag:P},g),S=new Map;if(C){const{operatorA:T,operatorB:A}=l.edgeProps;for(let x=0,M=T.length;x<M;++x)if(T[x]===A[x]){const D=T[x];S.has(D)?S.get(D).push(x):S.set(D,[x])}}return{bonds:l,maxDistance:y.maxDistance,cacheable:y.cacheable,hasOperators:C,bySameOperator:S}}c.fromData=o;function s(h,f,y,_,g){let a,d,p,u;f<y?(a=f,d=y,p=_,u=g):(a=y,d=f,p=g,u=_);for(let m=h.offset[a],v=h.offset[a+1];m<v;m++)if(h.b[m]===d&&h.edgeProps.operatorA[m]===p&&h.edgeProps.operatorB[m]===u)return m;return-1}c.getEdgeIndexForOperators=s})(i||(Tm.IndexPairBonds=i={})),Tm}var lC={},vc={},NE;function Pr(){if(NE)return vc;NE=1,Object.defineProperty(vc,"__esModule",{value:!0}),vc.CustomProperties=void 0,vc.CustomPropertyDescriptor=t;const e=et();function t(n){return n}(function(n){function i(c){return c.__key||(c.__key=e.UUID.create22()),c.__key}n.getUUID=i})(t||(vc.CustomPropertyDescriptor=t={}));class r{constructor(){this._list=[],this._set=new Set,this._refs=new Map,this._assets=new Map}get all(){return this._list}add(i){this._set.has(i)||(this._list.push(i),this._set.add(i))}reference(i,c){let o=this._refs.get(i)||0;o+=c?1:-1,this._refs.set(i,Math.max(o,0))}hasReference(i){return(this._refs.get(i)||0)>0}has(i){return this._set.has(i)}assets(i,c){const o=this._assets.get(i);if(o)for(const s of o)s.dispose();c?this._assets.set(i,c):this._assets.delete(i)}dispose(){this._assets.forEach(i=>{for(const c of i)c.dispose()})}}return vc.CustomProperties=r,vc}var dC={},_s={},pi={},bc={},qE;function Wi(){if(qE)return bc;qE=1,Object.defineProperty(bc,"__esModule",{value:!0}),bc.TokenColumnProvider=r,bc.TokenColumn=n,bc.areValuesEqualProvider=i,bc.areTokensEmpty=c;const e=lt(),t=La();function r(o){return function(s){return n(o,s)}}function n(o,s){const{data:h,indices:f,count:y}=o,{valueType:_}=s,g=_==="str"?a=>h.substring(f[2*a],f[2*a+1]):_==="int"?a=>(0,t.parseInt)(h,f[2*a],f[2*a+1])||0:a=>(0,t.parseFloat)(h,f[2*a],f[2*a+1])||0;return{schema:s,__array:void 0,isDefined:!0,rowCount:y,value:g,valueKind:a=>e.Column.ValueKinds.Present,toArray:a=>e.ColumnHelpers.createAndFillArray(y,g,a),areValuesEqual:i(o)}}function i(o){const{data:s,indices:h}=o;return function(f,y){const _=h[2*f],g=h[2*y],a=h[2*f+1]-_;if(a!==h[2*y+1]-g)return!1;for(let d=0;d<a;d++)if(s.charCodeAt(d+_)!==s.charCodeAt(d+g))return!1;return!0}}function c(o){const{count:s,indices:h}=o;for(let f=0;f<s;++f)if(h[2*f]!==h[2*f+1])return!1;return!0}return bc}var UE;function bT(){if(UE)return pi;UE=1,Object.defineProperty(pi,"__esModule",{value:!0}),pi.CifField=void 0,pi.CifFile=n,pi.CifBlock=i,pi.CifSaveFrame=c,pi.CifCategory=o,pi.tensorFieldNameGetter=h,pi.getTensor=f,pi.getCifFieldType=y;const e=lt(),t=La(),r=Wi();function n(_,g){return{name:g,blocks:_}}function i(_,g,a,d=[]){return{categoryNames:_,header:a,categories:g,saveFrames:d,getField(p){const[u,m]=p.split(".");return g[u].getField(m||"")}}}function c(_,g,a){return{categoryNames:_,header:a,categories:g}}function o(_,g,a,d){return{rowCount:g,name:_,fieldNames:[...a],getField(p){return d[p]}}}(function(_){function g(p){return{rowCount:0,name:p,fieldNames:[],getField(u){}}}_.empty=g;function a(p,u){const m=Object.keys(u);return{rowCount:m.length>0?u[m[0]].rowCount:0,name:p,fieldNames:m,getField(v){return u[v]}}}_.ofFields=a;function d(p,u){const m={};for(const v of u._columns)m[v]=s.ofColumn(u[v]);return a(p,m)}_.ofTable=d})(o||(pi.CifCategory=o={}));var s;(function(_){function g(v){return a([v])}_.ofString=g;function a(v){const b=v.length,P=T=>{const A=v[T];return!A||A==="."||A==="?"?"":A},C=T=>{const A=v[T];return(0,t.parseInt)(A,0,A.length)||0},l=T=>{const A=v[T];return(0,t.parseFloat)(A,0,A.length)||0};return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:b,str:P,int:C,float:l,valueKind:T=>{const A=v[T],x=A.length;if(x>1)return e.Column.ValueKinds.Present;if(x===0)return e.Column.ValueKinds.NotPresent;const M=A.charCodeAt(0);return M===46?e.Column.ValueKinds.NotPresent:M===63?e.Column.ValueKinds.Unknown:e.Column.ValueKinds.Present}
7,areValuesEqual:(T,A)=>v[T]===v[A],toStringArray:T=>T?e.ColumnHelpers.createAndFillArray(b,P,T):v,toIntArray:T=>e.ColumnHelpers.createAndFillArray(b,C,T),toFloatArray:T=>e.ColumnHelpers.createAndFillArray(b,l,T)}}_.ofStrings=a;function d(v){const b=v.length,P=T=>""+v[T],C=T=>v[T],l=T=>e.Column.ValueKinds.Present,S=T=>!T||T.array&&v instanceof T.array?v:e.ColumnHelpers.createAndFillArray(b,C,T);return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:b,str:P,int:C,float:C,valueKind:l,areValuesEqual:(T,A)=>v[T]===v[A],toStringArray:T=>e.ColumnHelpers.createAndFillArray(b,P,T),toIntArray:S,toFloatArray:S}}_.ofNumbers=d;function p(v){const{data:b,indices:P,count:C}=v,l=x=>{const M=b.substring(P[2*x],P[2*x+1]);return M==="."||M==="?"?"":M},S=x=>(0,t.parseInt)(b,P[2*x],P[2*x+1])||0,T=x=>(0,t.parseFloat)(b,P[2*x],P[2*x+1])||0;return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:C,str:l,int:S,float:T,valueKind:x=>{const M=P[2*x],D=P[2*x+1]-M;if(D>1)return e.Column.ValueKinds.Present;if(D===0)return e.Column.ValueKinds.NotPresent;const V=b.charCodeAt(M);return V===46?e.Column.ValueKinds.NotPresent:V===63?e.Column.ValueKinds.Unknown:e.Column.ValueKinds.Present}
7,areValuesEqual:(0,r.areValuesEqualProvider)(v),toStringArray:x=>e.ColumnHelpers.createAndFillArray(C,l,x),toIntArray:x=>e.ColumnHelpers.createAndFillArray(C,S,x),toFloatArray:x=>e.ColumnHelpers.createAndFillArray(C,T,x)}}_.ofTokens=p;function u(v){const{rowCount:b,valueKind:P,areValuesEqual:C,isDefined:l}=v;let S,T,A;switch(v.schema.valueType){case"float":case"int":S=M=>""+v.value(M),T=v.value,A=v.value;break;case"str":S=v.value,T=M=>{const D=v.value(M);return(0,t.parseInt)(D,0,D.length)||0},A=M=>{const D=v.value(M);return(0,t.parseFloat)(D,0,D.length)||0};break;case"list":const{separator:x}=v.schema;S=M=>v.value(M).join(x),T=M=>NaN,A=M=>NaN;break;default:throw new Error(`unsupported valueType '${v.schema.valueType}'`)}return{__array:void 0,binaryEncoding:void 0,isDefined:l,rowCount:b,str:S,int:T,float:A,valueKind:P,areValuesEqual:C,toStringArray:x=>e.ColumnHelpers.createAndFillArray(b,S,x),toIntArray:x=>e.ColumnHelpers.createAndFillArray(b,T,x),toFloatArray:x=>e.ColumnHelpers.createAndFillArray(b,A,x)}}_.ofColumn=u;function m(v,b){return u(e.Column.Undefined(v,b))}_.ofUndefined=m})(s||(pi.CifField=s={}));function h(_,g,a,d){const p=a?0:1;switch(g){case 1:return d==="brackets"?u=>`${_}[${u+p}]`:u=>`${_}_${u+p}`;case 2:return d==="brackets"?(u,m)=>`${_}[${u+p}][${m+p}]`:(u,m)=>`${_}_${u+p}${m+p}`;case 3:return d==="brackets"?(u,m,v)=>`${_}[${u+p}][${m+p}][${v+p}]`:(u,m,v)=>`${_}_${u+p}${m+p}${v+p}`;default:throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.")}}function f(_,g,a,d){const p=g.create();if(g.rank===1){const u=g.dimensions[0];for(let m=0;m<u;m++){const v=_.getField(d(m));g.set(p,m,v?v.float(a):0)}}else if(g.rank===2){const u=g.dimensions[0],m=g.dimensions[1];for(let v=0;v<u;v++)for(let b=0;b<m;b++){const P=_.getField(d(v,b));g.set(p,v,b,P?P.float(a):0)}}else if(g.rank===3){const u=g.dimensions[0],m=g.dimensions[1],v=g.dimensions[2];for(let b=0;b<u;b++)for(let P=0;P<m;P++)for(let C=0;C<v;C++){const l=_.getField(d(b,P,C));g.set(p,b,P,C,l?l.float(a):0)}}else throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.");return p}function y(_){let g=0,a=!1,d=0;for(let p=0,u=_.rowCount;p<u;p++){if(_.valueKind(p)!==e.Column.ValueKinds.Present){d++;continue}const v=(0,t.getNumberType)(_.str(p));if(v!==t.NumberTypes.Int)if(v===t.NumberTypes.Float)g++;else{a=!0;break}}return a||d===_.rowCount?e.Column.Schema.str:g>0?e.Column.Schema.float:e.Column.Schema.int}return pi}var jE;function _T(){if(jE)return _s;jE=1,Object.defineProperty(_s,"__esModule",{value:!0}),_s.FieldPath=void 0,_s.toDatabaseCollection=o,_s.toDatabase=s,_s.toTable=h;const e=At,t=lt(),r=Ge(),n=et(),i=e.__importStar(bT());var c;(function(b){function P(S){return S.replace(".","_").replace(/\[/,"_").replace(/(\[|\])/g,"")}b.canonical=P;function C(S,T){return P(S)===P(T)}b.equal=C;function l(S,T,A=!1){const x=`${S}${T?`.${T}`:""}`;return A?P(x):x}b.create=l})(c||(_s.FieldPath=c={}));function o(b,P,C){const l={};for(const S of P.blocks)l[S.header]=s(b,S,C);return l}function s(b,P,C){return p(b,P,C)}function h(b,P){return new d(P,b,!0)}function f(b){switch(b.valueType){case"str":return(P,C,l)=>y(b,P,P.str,P.toStringArray);case"int":return(P,C,l)=>_(b,P,P.int,P.toIntArray);case"float":return(P,C,l)=>_(b,P,P.float,P.toFloatArray);case"list":throw new Error("Use createListColumn instead.");case"tensor":throw new Error("Use createTensorColumn instead.")}}function y(b,P,C,l){return{schema:b,__array:P.__array,isDefined:P.isDefined,rowCount:P.rowCount,value:b.transform==="lowercase"?S=>C(S).toLowerCase():b.transform==="uppercase"?S=>C(S).toUpperCase():C,valueKind:P.valueKind,areValuesEqual:P.areValuesEqual,toArray:b.transform==="lowercase"?S=>Array.from(l(S)).map(T=>T.toLowerCase()):b.transform==="uppercase"?S=>Array.from(l(S)).map(T=>T.toUpperCase()):l}}function _(b,P,C,l){return{schema:b,__array:P.__array,isDefined:P.isDefined,rowCount:P.rowCount,value:C,valueKind:P.valueKind,areValuesEqual:P.areValuesEqual,toArray:l}}function g(b,P,C){const l=b.separator,S=b.itemParse,T=P.getField(C),A=T?M=>T.str(M).split(l).map(D=>S(D.trim())).filter(D=>!!D):M=>[],x=M=>t.ColumnHelpers.createAndFillArray(P.rowCount,A,M);return{schema:b,__array:void 0,isDefined:!!T,rowCount:P.rowCount,value:A,valueKind:T?T.valueKind:()=>t.Column.ValueKinds.NotPresent,areValuesEqual:(M,D)=>(0,n.arrayEqual)(A(M),A(D)),toArray:x}}function a(b,P,C){const l=b.space,S=P.fieldNames.includes(`${C}[0]`)||P.fieldNames.includes(`${C}[0][0]`)||P.fieldNames.includes(`${C}[0][0][0]`),T=S?0:1,A=P.fieldNames.includes(`${C}_1`)||P.fieldNames.includes(`${C}_11`)||P.fieldNames.includes(`${C}_111`)?"underscore":"brackets",x=i.tensorFieldNameGetter(C,l.rank,S,A),M=P.getField(x(T,T,T))||t.Column.Undef
7ined(P.rowCount,b),D=R=>i.getTensor(P,l,R,x),V=R=>t.ColumnHelpers.createAndFillArray(P.rowCount,D,R);return{schema:b,__array:void 0,isDefined:M.isDefined,rowCount:P.rowCount,value:D,valueKind:M.valueKind,areValuesEqual:(R,E)=>r.Tensor.areEqualExact(D(R),D(E)),toArray:V}}class d{constructor(P,C,l){this._isDefined=l;const S=Object.keys(C);this._rowCount=P.rowCount,this._columns=S,this._schema=C;const T=Object.create(null);for(const A of S)Object.defineProperty(this,A,{get:function(){if(T[A])return T[A];const x=C[A];if(x.valueType==="list")T[A]=g(x,P,A);else if(x.valueType==="tensor")T[A]=a(x,P,A);else{const M=f(x),D=P.getField(A);T[A]=D?M(D,P,A):t.Column.Undefined(P.rowCount,x)}return T[A]},enumerable:!0,configurable:!1})}}function p(b,P,C){const l=Object.create(null);for(const S of Object.keys(b))l[S]=v(S,b[S],P,C);return t.Database.ofTables(P.header,b,l)}function u(b){const P=Object.create(null);for(const C of Object.keys(b.categories))for(const l of b.categories[C].fieldNames){const S=c.create(C,l,!0);P[S]=b.categories[C].getField(l)}return P}function m(b,P,C,l){const S=c.create(P,b),T=c.canonical(S);if(T in C)return C[T];if(l&&S in l)for(const A of l[S]){const x=c.canonical(A);if(x in C)return C[x]}}function v(b,P,C,l){let S=C.categories[b];if(l){const T=u(C),A=Object.create(null),x=[];let M=0;for(const D of Object.keys(P)){const V=m(D,b,T,l);V&&(A[D]=V,x.push(D),M=V.rowCount)}S={rowCount:M,name:b,fieldNames:[...x],getField(D){return A[D]}}}return new d(S||i.CifCategory.empty(b),P,!!S)}return _s}var Y2={},Hm={},Wm={},$m={},Xm={},GE;function qD(){if(GE)return Xm;GE=1,Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.Axes3D=t;const e=Ge();function t(){return t.empty()}return(function(r){function n(d,p,u,m){return{origin:d,dirA:p,dirB:u,dirC:m}}r.create=n;function i(){return{origin:(0,e.Vec3)(),dirA:(0,e.Vec3)(),dirB:(0,e.Vec3)(),dirC:(0,e.Vec3)()}}r.empty=i;function c(d,p){return e.Vec3.copy(d.origin,p.origin),e.Vec3.copy(d.dirA,p.dirA),e.Vec3.copy(d.dirB,p.dirB),e.Vec3.copy(d.dirC,p.dirC),d}r.copy=c;function o(d){return c(i(),d)}r.clone=o;function s(d,p){return e.Vec3.set(d,e.Vec3.magnitude(p.dirA)*2,e.Vec3.magnitude(p.dirB)*2,e.Vec3.magnitude(p.dirC)*2)}r.size=s;const h=(0,e.Vec3)();function f(d){return s(h,d),h[0]*h[1]*h[2]}r.volume=f;function y(d,p){return e.Vec3.copy(d.origin,p.origin),e.Vec3.normalize(d.dirA,p.dirA),e.Vec3.normalize(d.dirB,p.dirB),e.Vec3.normalize(d.dirC,p.dirC),d}r.normalize=y;const _=(0,e.Mat3)();function g(d,p,u){e.Vec3.transformMat4(d.origin,p.origin,u);const m=e.Mat3.directionTransform(_,u);return e.Vec3.transformMat3(d.dirA,p.dirA,m),e.Vec3.transformMat3(d.dirB,p.dirB,m),e.Vec3.transformMat3(d.dirC,p.dirC,m),d}r.transform=g;function a(d,p,u){return e.Vec3.scale(d.dirA,p.dirA,u),e.Vec3.scale(d.dirB,p.dirB,u),e.Vec3.scale(d.dirC,p.dirC,u),d}r.scale=a})(t||(Xm.Axes3D=t={})),Xm}var Km={},Ym={},zE;function ST(){if(zE)return Ym;
7zE=1,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.Matrix=void 0;var e;return(function(t){function r(a,d,p=Float32Array){const u=a*d;return{data:new p(u),size:u,cols:a,rows:d}}t.create=r;function n(a,d,p){return a.data[a.rows*p+d]}t.get=n;function i(a,d,p,u){return a.data[a.rows*p+d]=u,a}t.set=i;function c(a,d,p,u){return a.data[a.rows*p+d]+=u,a}t.add=c;function o(a){return a.data.fill(0),a}t.makeZero=o;function s(a){return{data:a.data.slice(),size:a.size,cols:a.cols,rows:a.rows}}t.clone=s;function h(a,d,p){return{data:a,size:d*p,cols:d,rows:p}}t.fromArray=h;function f(a,d){if(a.cols!==d.rows||a.rows!==d.cols)throw new Error("transpose: matrix dimensions incompatible");if(a.data===d.data)throw new Error("transpose: matrices share memory");const p=d.rows,u=d.cols,m=d.data,v=a.data;for(let b=0,P=0,C=0;b<p;C+=1,P+=u,++b){let l=C;for(let S=0;S<u;l+=p,S++)v[l]=m[P+S]}return a}t.transpose=f;function y(a,d,p){const u=d.cols,m=d.rows,v=p.rows,b=d.data,P=p.data,C=a.data;for(let l=0,S=0,T=0;l<m;S+=u,l++)for(let A=0,x=0;x<v;T++,x++){let M=0,D=S;for(let V=0;V<u;D++,A++,V++)M+=b[D]*P[A];C[T]=M}return a}t.multiplyABt=y;function _(a){const d=a.rows,p=a.cols,u=a.data,m=new Array(p);for(let v=0;v<p;++v)m[v]=0;for(let v=0,b=0;v<d;++v)for(let P=0;P<p;++P,++b)m[P]+=u[b];for(let v=0;v<p;++v)m[v]/=d;return m}t.meanRows=_;function g(a,d){const p=a.rows,u=a.cols,m=a.data;for(let v=0,b=0;v<p;++v)for(let P=0;P<u;++P,++b)m[b]-=d[P];return a}t.subRows=g})(e||(Ym.Matrix=e={})),Ym}var _c={},HE;function mJ(){if(HE)return _c;HE=1,Object.defineProperty(_c,"__esModule",{value:!0}),_c.swap=t,_c.hypot=r,_c.JacobiSVDImpl=c,_c.svd=o;const e=ST();function t(s,h,f,y){y=s[h],s[h]=s[f],s[f]=y}function r(s,h){return s=Math.abs(s),h=Math.abs(h),s>h?(h/=s,s*Math.sqrt(1+h*h)):h>0?(s/=h,h*Math.sqrt(1+s*s)):0}const n=1192092896e-16,i=1e-37;function c(s,h,f,y,_,g,a,d){const p=n*2,u=i;let m=0,v=0,b=0,P=0;const C=Math.max(g,30);let l=0,S=0,T=0,A=0,x=0,M=0,D=0,V=0,R=0,E=0,I=0,B=0,w=0,O=0,F=0,L=0,U=0,q=4660,N=0,k=0,j=0;const H=new Float64Array(a<<3);for(;m<a;m++){for(b=0,I=0;b<g;b++)V=s[m*h+b],I+=V*V;if(H[m]=I,y){for(b=0;b<a;b++)y[m*_+b]=0;y[m*_+m]=1}}for(;P<C;P++){for(x=0,m=0;m<a-1;m++)for(v=m+1;v<a;v++){for(l=m*h|0,S=v*h|0,F=H[m],L=0,U=H[v],b=2,L+=s[l]*s[S],L+=s[l+1]*s[S+1];b<g;b++)L+=s[l+b]*s[S+b];if(!(Math.abs(L)<=p*Math.sqrt(F*U))){for(L*=2,B=F-U,w=r(L,B),B<0?(O=(w-B)*.5,D=Math.sqrt(O/w),M=L/(w*D*2)):(M=Math.sqrt((w+B)/(w*2)),D=L/(w*M*2)),F=0,U=0,b=2,R=M*s[l]+D*s[S],E=-D*s[l]+M*s[S],s[l]=R,s[S]=E,F+=R*R,U+=E*E,R=M*s[l+1]+D*s[S+1],E=-D*s[l+1]+M*s[S+1],s[l+1]=R,s[S+1]=E,F+=R*R,U+=E*E;b<g;b++)R=M*s[l+b]+D*s[S+b],E=-D*s[l+b]+M*s[S+b],s[l+b]=R,s[S+b]=E,F+=R*R,U+=E*E;if(H[m]=F,H[v]=U,x=1,y)for(T=m*_|0,A=v*_|0,b=2,R=M*y[T]+D*y[A],E=-D*y[T]+M*y[A],y[T]=R,y[A]=E,R=M*y[T+1]+D*y[A+1],E=-D*y[T+1]+M*y[A+1],y[T+1]=R,y[A+1]=E;b<a;b++)R=M*y[T+b]+D*y[A+b],E=-D*y[T+b]+M*y[A+b],y[T+b]=R,y[A+b]=E}}if(x===0)break}for(m=0;m<a;m++){for(b=0,I=0;b<g;b++)V=s[m*h+b],I+=V*V;H[m]=Math.sqrt(I)}for(m=0;m<a-1;m++){for(v=m,b=m+1;b<a;b++)H[v]<H[b]&&(v=b);if(m!==v&&(t(H,m,v,I),y)){for(b=0;b<g;b++)t(s,m*h+b,v*h+b,V);for(b=0;b<a;b++)t(y,m*_+b,v*_+b,V)}}for(m=0;m<a;m++)f[m]=H[m];if(y)for(m=0;m<d;m++){for(I=m<a?H[m]:0;I<=u;){for(k=1/g,b=0;b<g;b++)q=q*214013+2531011,N=(q>>16&32767&256)!==0?k:-k,s[m*h+b]=N;for(P=0;P<2;P++)for(v=0;v<m;v++){for(I=0,b=0;b<g;b++)I+=s[m*h+b]*s[v*h+b];for(j=0,b=0;b<g;b++)V=s[m*h+b]-I*s[v*h+b],s[m*h+b]=V,j+=Math.abs(V);for(j=j?1/j:0,b=0;b<g;b++)s[m*h+b]*=j}for(I=0,b=0;b<g;b++)V=s[m*h+b],I+=V*V;I=Math.sqrt(I)}for(D=1/I,b=0;b<g;b++)s[m*h+b]*=D}}function o(s,h,f,y){let _=0,g=0;const a=s.rows,d=s.cols;let p=a,u=d;p<u&&(_=1,g=p,p=u,u=g);const m=e.Matrix.create(p,p),v=e.Matrix.create(1,u),b=e.Matrix.create(u,u);if(_===0)e.Matrix.transpose(m,s);else{for(g=0;g<d*a;g++)m.data[g]=s.data[g];for(;g<u*p;g++)m.data[g]=0}if(c(m.data,p,v.data,b.data,u,p,u,p),h){for(g=0;g<u;g++)h.data[g]=v.data[g];for(;g<d;g++)h.data[g]=0}_===0?(f&&e.Matrix.transpose(f,m),y&&e.Matrix.transpose(y,b)):(f&&e.Matrix.transpose(f,b),y&&e.Matrix.transpose(y,m))}return _c}var WE;function _l(){if(WE)return Km;
7WE=1,Object.defineProperty(Km,"__esModule",{value:!0}),Km.PrincipalAxes=void 0;const e=ST(),t=wt(),r=mJ(),n=qD(),i=rn();var c;return(function(o){function s(g){const a=h(g),d=_(g,a);return{momentsAxes:a,boxAxes:d}}o.ofPositions=s;function h(g){if(g.length===3)return n.Axes3D.create(t.Vec3.fromArray((0,t.Vec3)(),g,0),t.Vec3.create(1,0,0),t.Vec3.create(0,1,0),t.Vec3.create(0,0,1));const a=e.Matrix.fromArray(g,3,g.length/3),d=a.rows,p=d/3,u=e.Matrix.create(3,3),m=e.Matrix.create(1,3),v=e.Matrix.create(3,3),b=e.Matrix.create(3,3),P=e.Matrix.meanRows(a),C=e.Matrix.subRows(e.Matrix.clone(a),P),l=e.Matrix.transpose(e.Matrix.create(d,3),C);e.Matrix.multiplyABt(u,l,l),(0,r.svd)(u,m,v,b);const S=t.Vec3.create(P[0],P[1],P[2]),T=t.Vec3.create(v.data[0],v.data[3],v.data[6]),A=t.Vec3.create(v.data[1],v.data[4],v.data[7]),x=t.Vec3.create(v.data[2],v.data[5],v.data[8]);return t.Vec3.scale(T,T,Math.sqrt(m.data[0]/p)),t.Vec3.scale(A,A,Math.sqrt(m.data[1]/p)),t.Vec3.scale(x,x,Math.sqrt(m.data[2]/p)),n.Axes3D.create(S,T,A,x)}o.calculateMomentsAxes=h;function f(g){const a=n.Axes3D.clone(g);return t.Vec3.magnitude(a.dirC)<i.EPSILON&&t.Vec3.cross(a.dirC,a.dirA,a.dirB),n.Axes3D.normalize(a,a)}o.calculateNormalizedAxes=f;const y=(0,t.Vec3)();function _(g,a){if(g.length===3)return n.Axes3D.clone(a);let d=-1/0,p=-1/0,u=-1/0,m=-1/0,v=-1/0,b=-1/0;const P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=a.origin,S=f(a);for(let I=0,B=g.length;I<B;I+=3){t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirA,l);const w=t.Vec3.dot(S.dirA,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),O=t.Vec3.distance(P,l);w>0?O>d&&(d=O):O>p&&(p=O),t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirB,l);const F=t.Vec3.dot(S.dirB,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),L=t.Vec3.distance(P,l);F>0?L>u&&(u=L):L>m&&(m=L),t.Vec3.projectPointOnVector(P,t.Vec3.fromArray(P,g,I),S.dirC,l);const U=t.Vec3.dot(S.dirC,t.Vec3.normalize(C,t.Vec3.sub(C,P,l))),q=t.Vec3.distance(P,l);U>0?q>v&&(v=q):q>b&&(b=q)}const T=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirA,(d+p)/2),A=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirB,(u+m)/2),x=t.Vec3.setMagnitude((0,t.Vec3)(),S.dirC,(v+b)/2),M=t.Vec3.isFinite(T),D=t.Vec3.isFinite(A),V=t.Vec3.isFinite(x),R=(0,t.Vec3)(),E=function(I,B,w){t.Vec3.copy(y,l),M&&t.Vec3.scaleAndAdd(y,y,S.dirA,I),D&&t.Vec3.scaleAndAdd(y,y,S.dirB,B),V&&t.Vec3.scaleAndAdd(y,y,S.dirC,w),t.Vec3.add(R,R,y)};return E(d,u,v),E(d,u,-b),E(d,-m,-b),E(d,-m,v),E(-p,-m,-b),E(-p,-m,v),E(-p,u,v),E(-p,u,-b),t.Vec3.scale(R,R,1/8),n.Axes3D.create(R,T,A,x)}o.calculateBoxAxes=_})(c||(Km.PrincipalAxes=c={})),Km}var $E;function ja(){if($E)return $m;$E=1,Object.defineProperty($m,"__esModule",{value:!0}),$m.Sphere3D=o;const e=nn(),t=qD(),r=_l(),n=wt(),i=Xr(),c=rn();function o(){return o.zero()}return(function(s){function h(L){return L.extrema!==void 0}s.hasExtrema=h;function f(L,U){return{center:L,radius:U}}s.create=f;function y(){return{center:(0,n.Vec3)(),radius:0}}s.zero=y;function _(L){const U=f(n.Vec3.clone(L.center),L.radius);return h(L)&&(U.extrema=L.extrema.map(q=>n.Vec3.clone(q))),U}s.clone=_;function g(L,U,q){return n.Vec3.copy(L.center,U),L.radius=q,L}s.set=g;function a(L,U){return n.Vec3.copy(L.center,U.center),L.radius=U.radius,h(U)&&d(L,U.extrema.map(q=>n.Vec3.clone(q))),L}s.copy=a;function d(L,U){return L.extrema!==void 0?(L.extrema.length=0,L.extrema.push(...U)):L.extrema=U,L}s.setExtrema=d;function p(L){const{x:U,y:q,z:N,indices:k}=L;let j=0,H=0,G=0,z=0;const W=e.OrderedSet.size(k);for(let X=0;X<W;X++){const Y=e.OrderedSet.getAt(k,X);j+=U[Y],H+=q[Y],G+=N[Y]}W>0&&(j/=W,H/=W,G/=W);for(let X=0;X<W;X++){const Y=e.OrderedSet.getAt(k,X),K=U[Y]-j,Q=q[Y]-H,J=N[Y]-G,ae=K*K+Q*Q+J*J;ae>z&&(z=ae)}return{center:n.Vec3.create(j,H,G),radius:Math.sqrt(z)}}s.computeBounding=p;function u(L,U,q){return n.Vec3.transformMat4(L.center,U.center,q),L.radius=U.radius*i.Mat4.getMaxScaleOnAxis(q),h(U)&&d(L,U.extrema.map(N=>n.Vec3.transformMat4((0,n.Vec3)(),N,q))),L}s.transform=u;function m(L,U,q){return n.Vec3.add(L.center,U.center,q),h(U)&&d(L,U.extrema.map(N=>n.Vec3.add((0,n.Vec3)(),N,q))),L}s.translate=m;function v(L,U,q){return n.Vec3.scale(L.center,U.center,q),L.radius=U.radius*q,h(U)&&d(L,U.extrema.map(N=>n.Vec3.scale((0,n.Vec3)(),N,q))),L}s.scale=v;function b(L,U,q){return n.Vec3.scale(L.center,U.center,q),L.radius=U.radius*q,L}s.scaleNX=b;function P(L,U,q){return n.Vec3.toArray(L.center,U,q),U[q+3]=L.radius,U}s.toArray=P;function C(L,U,q){return n.Vec3.fromArray(L.center,U,q),L.radius=U[q+3],L}s.fromArray=C;function l(L,U){return n.Vec3.scale(L.center,n.Vec3.add(L.center,U.max,U.min),.5),L.radius=n.Vec3.distance(L.center,U.max),s.setExtrema(L,[n.Vec3.create(U.min[0],U.min[1],U.min[2]),n.Vec3.create(U.max[0],U.max[1],U.max[2]),n.Vec3.create(U.max[0],U.min[1],U.min[2]),n.Vec3.create(U.min[0],U.max[1],U.max[2]),n.Vec3.create(U.min[0],U.min[1],U.max[2]),n.Vec3.create(U.max[0],U.min[1],U.max[2]),n.Vec3.create(U.max[0],U.max[1],U.min[2]),n.Vec3.create(U.min[0],U.max[1],U.min[2])]),L}
7s.fromBox3D=l;function S(L,U){return n.Vec3.copy(L.center,U.origin),L.radius=Math.max(n.Vec3.magnitude(U.dirA),n.Vec3.magnitude(U.dirB),n.Vec3.magnitude(U.dirC)),L}s.fromAxes3D=S;const T=(0,n.Vec3)();function A(L,U,q){const[N,k,j]=U,H=n.Vec3.create(0,0,0);n.Vec3.transformMat4(H,H,q);const G=n.Vec3.create(N,k,j);n.Vec3.transformMat4(G,G,q);const z=n.Vec3.create(N,0,0);n.Vec3.transformMat4(z,z,q);const W=n.Vec3.create(0,k,j);n.Vec3.transformMat4(W,W,q);const X=n.Vec3.create(0,0,j);n.Vec3.transformMat4(X,X,q);const Y=n.Vec3.create(N,0,j);n.Vec3.transformMat4(Y,Y,q);const K=n.Vec3.create(N,k,0);n.Vec3.transformMat4(K,K,q);const Q=n.Vec3.create(0,k,0);n.Vec3.transformMat4(Q,Q,q),n.Vec3.add(T,H,G),n.Vec3.scale(T,T,.5);const J=Math.max(n.Vec3.distance(H,G),n.Vec3.distance(z,W));return s.set(L,T,J/2),s.setExtrema(L,[H,G,z,W,X,Y,K,Q]),L}s.fromDimensionsAndTransform=A;const x=(0,n.Vec3)();function M(L,U,q){return n.Vec3.distance(U.center,q)<U.radius?s.copy(L,U):(n.Vec3.sub(x,U.center,q),n.Vec3.sub(x,U.center,x),n.Vec3.setMagnitude(x,x,U.radius),n.Vec3.scale(L.center,n.Vec3.add(x,x,q),.5),L.radius=n.Vec3.distance(L.center,q),L)}s.addVec3=M;function D(L,U,q){return n.Vec3.copy(L.center,U.center),L.radius=Math.max(U.radius,n.Vec3.distance(U.center,q.center)+q.radius),h(U)&&h(q)&&d(L,[...U.extrema.map(N=>n.Vec3.clone(N)),...q.extrema.map(N=>n.Vec3.clone(N))]),L}
7s.expandBySphere=D;const V=(0,n.Vec3)();function R(L,U,q){var N,k;if(n.Vec3.copy(L.center,U.center),L.radius=U.radius+q,U.radius<1e-12||((k=(N=U.extrema)===null||N===void 0?void 0:N.length)!==null&&k!==void 0?k:0)<=1)return L.extrema=void 0,L;if(h(U)){const j=new Float32Array(U.extrema.length*3);for(let G=0;G<U.extrema.length;G++)n.Vec3.toArray(U.extrema[G],j,G*3);const H=r.PrincipalAxes.calculateMomentsAxes(j);t.Axes3D.scale(H,t.Axes3D.normalize(H,H),q),d(L,U.extrema.map(G=>{n.Vec3.normalize(V,n.Vec3.sub(V,G,U.center));const z=n.Vec3.clone(G),W=n.Vec3.dot(V,H.dirA)<0?-1:1;n.Vec3.scaleAndAdd(z,z,H.dirA,W);const X=n.Vec3.dot(V,H.dirB)<0?-1:1;n.Vec3.scaleAndAdd(z,z,H.dirB,X);const Y=n.Vec3.dot(V,H.dirC)<0?-1:1;return n.Vec3.scaleAndAdd(z,z,H.dirC,Y),n.Vec3.distance(L.center,z)>L.radius&&(U.extrema.length>=14&&n.Vec3.normalize(V,n.Vec3.sub(V,z,U.center)),n.Vec3.scaleAndAdd(z,L.center,V,L.radius)),z}))}return L}s.expand=R;function E(L,U){return L.radius===U.radius&&n.Vec3.exactEquals(L.center,U.center)}s.exactEquals=E;function I(L,U){const q=L.radius,N=U.radius;return Math.abs(q-N)<=c.EPSILON*Math.max(1,Math.abs(q),Math.abs(N))&&n.Vec3.equals(L.center,U.center)}s.equals=I;function B(L,U){if(h(U)){for(const q of U.extrema)if(n.Vec3.distance(L.center,q)>L.radius)return!1;return!0}else return n.Vec3.distance(L.center,U.center)+U.radius<=L.radius}s.includes=B;function w(L,U){return n.Vec3.distance(L.center,U.center)<=L.radius+U.radius}s.overlaps=w;function O(L,U){return n.Vec3.distance(L.center,U.center)-L.radius+U.radius}s.distance=O;function F(L,U){const{center:q,radius:N}=L;return n.Vec3.distance(U,q)-N}s.distanceToVec=F})(o||($m.Sphere3D=o={})),$m}var XE;function os(){if(XE)return Wm;XE=1,Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.Box3D=n;const e=nn(),t=ja(),r=wt();function n(){return n.zero()}return(function(i){function c(w,O){return{min:w,max:O}}i.create=c;function o(){return{min:(0,r.Vec3)(),max:(0,r.Vec3)()}}i.zero=o;function s(w,O){return r.Vec3.copy(w.min,O.min),r.Vec3.copy(w.max,O.max),w}i.copy=s;function h(w,O,F){return r.Vec3.copy(w.min,O),r.Vec3.copy(w.max,F),w}i.set=h;function f(w){return s(o(),w)}i.clone=f;const y=(0,r.Vec3)();function _(w,O){return t.Sphere3D.hasExtrema(O)&&O.extrema.length>=14?a(w,O.extrema):(r.Vec3.set(y,O.radius,O.radius,O.radius),r.Vec3.sub(w.min,O.center,y),r.Vec3.add(w.max,O.center,y),w)}i.fromSphere3D=_;function g(w,O){for(let F=0,L=O.length;F<L;F++)l(w,O[F]);return w}i.addVec3Array=g;function a(w,O){return C(w),g(w,O),w}i.fromVec3Array=a;function d(w,O){return t.Sphere3D.hasExtrema(O)&&O.extrema.length>=14?g(w,O.extrema):(l(w,r.Vec3.subScalar(y,O.center,O.radius)),l(w,r.Vec3.addScalar(y,O.center,O.radius)),w)}i.addSphere3D=d;function p(w,O){return l(w,O.min),l(w,O.max),w}i.addBox3D=p;function u(w,O){return r.Vec3.clamp(y,O.center,w.min,w.max),r.Vec3.squaredDistance(y,O.center)<=O.radius*O.radius}i.intersectsSphere3D=u;function m(w){const O=r.Vec3.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),F=r.Vec3.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),{x:L,y:U,z:q,indices:N}=w;for(let k=0,j=e.OrderedSet.size(N);k<j;k++){const H=e.OrderedSet.getAt(N,k);O[0]=Math.min(L[H],O[0]),O[1]=Math.min(U[H],O[1]),O[2]=Math.min(q[H],O[2]),F[0]=Math.max(L[H],F[0]),F[1]=Math.max(U[H],F[1]),F[2]=Math.max(q[H],F[2])}return{min:O,max:F}}i.computeBounding=m;function v(w,O){return r.Vec3.sub(w,O.max,O.min)}i.size=v;const b=(0,r.Vec3)();function P(w){return v(b,w),b[0]*b[1]*b[2]}i.volume=P;function C(w){return r.Vec3.set(w.min,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),r.Vec3.set(w.max,-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),w}i.setEmpty=C;function l(w,O){return r.Vec3.min(w.min,w.min,O),r.Vec3.max(w.max,w.max,O),w}i.add=l;function S(w,O,F){return r.Vec3.sub(w.min,O.min,F),r.Vec3.add(w.max,O.max,F),w}i.expand=S;function T(w,O,F){return r.Vec3.subScalar(w.min,O.min,F),r.Vec3.addScalar(w.max,O.max,F),w}i.expandUniformly=T;function A(w,O,F){return r.Vec3.scale(w.min,O.min,F),r.Vec3.scale(w.max,O.max,F),w}i.scale=A;const x=(0,r.Vec3)();function M(w,O,F){const[L,U,q]=O.min,[N,k,j]=O.max;return C(w),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,U,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,U,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,k,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,L,k,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,U,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,U,j),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,k,q),F)),l(w,r.Vec3.transformMat4(x,r.Vec3.set(x,N,k,j),F)),w}i.transform=M;function D(w,O){return!(O[0]<w.min[0]||O[0]>w.max[0]||O[1]<w.min[1]||O[1]>w.max[1]||O[2]<w.min[2]||O[2]>w.max[2])}i.containsVec3=D;function V(w,O){return!(w.max[0]<O.min[0]||w.min[0]>O.max[0]||w.max[1]<O.min[1]||w.min[1]>O.max[1]||w.max[2]<O.min[2]||w.min[2]>O.max[2])}i.overlaps=V;function R(w,O){const F=O.center,L=O.radius;return!(F[0]-L<w.min[0]||F[0]+L>w.max[0]||F[1]-L<w.min[1]||F[1]+L>w.max[1]||F[2]-L<w.min[2]||F[2]+L>w.max[2])}i.containsSphere3D=R;function E(w,O){return r.Vec3.center(w,O.max,O.min)}i.center=E;function I(w,O){return r.Vec3.exactEquals(w.min,O.min)&&r.Vec3.exactEquals(w.max,O.max)}i.exactEquals=I;function B(w,O){return r.Vec3.equals(w.min,O.min)&&r.Vec3.equals(w.max,O.max)}i.equals=B})(n||(Wm.Box3D=n={})),Wm}var KE;function UD(){if(KE)return Hm;
7KE=1,Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.getRegularGrid3dDelta=r,Hm.fillGridDim=n;const e=wt(),t=os();function r({box:i,dimensions:c}){return e.Vec3.div((0,e.Vec3)(),t.Box3D.size((0,e.Vec3)(),i),e.Vec3.subScalar((0,e.Vec3)(),c,1))}function n(i,c,o){const s=new Float32Array(i);for(let h=0;h<s.length;h++)s[h]=c+o*h;return s}return Hm}var Qm={},YE;function eS(){if(YE)return Qm;YE=1,Object.defineProperty(Qm,"__esModule",{value:!0}),Qm.SymmetryOperator=void 0;const e=ir(),t=K_(),r=Xr(),n=rs(),i=wt();var c;(function(h){h.DefaultName="1_555",h.Default=f(h.DefaultName,r.Mat4.identity()),h.RotationTranslationEpsilon=.005;function f(D,V,R){var E;let{assembly:I,ncsId:B,hkl:w,spgrOp:O,key:F}=R||{};const L=w?i.Vec3.clone(w):(0,i.Vec3)();O=O??-1,F=F??-1,B=B||-1;const U=r.Mat4.isIdentity(V),q=a(R,U),N=(E=R?.instanceId)!==null&&E!==void 0?E:D;return U?{name:D,instanceId:N,assembly:I,matrix:V,inverse:r.Mat4.identity(),isIdentity:!0,hkl:L,spgrOp:O,ncsId:B,suffix:q,key:F}:(r.Mat4.isRotationAndTranslation(V,h.RotationTranslationEpsilon)||console.warn(`Symmetry operator (${D}) should be a composition of rotation and translation.`),{name:D,instanceId:N,assembly:I,matrix:V,inverse:r.Mat4.invert((0,r.Mat4)(),V),isIdentity:!1,hkl:L,spgrOp:O,key:F,ncsId:B,suffix:q})}h.create=f;function y(D){return!!D&&!!D.matrix&&!!D.inverse&&typeof D.name=="string"}function _(D,V,R,E){const I=B=>B>=0&&B<=9?`${B}`:`(${B})`;return`${D+1}_${I(V+5)}${I(R+5)}${I(E+5)}`}h.getSymmetryOperatorName=_;function g(D){return"ASM-"+D.join("-")}h.getAssemblyOperatorName=g;function a(D,V){if(!D)return"";if(D.assembly)return y(D)?D.suffix:V?"":`_${D.assembly.operId}`;if(typeof D.spgrOp<"u"&&typeof D.hkl<"u"&&D.spgrOp!==-1){const[R,E,I]=D.hkl;return`-${_(D.spgrOp,R,E,I)}`}return D.ncsId!==-1?`_${D.ncsId}`:""}const d=(0,r.Mat4)();function p(D,V){r.Mat4.setIdentity(d);for(let R=0;R<3;R++)for(let E=0;E<3;E++)r.Mat4.setValue(d,R,E,t.Mat3.getValue(D,R,E));return r.Mat4.setTranslation(d,V),r.Mat4.isRotationAndTranslation(d,h.RotationTranslationEpsilon)}h.checkIfRotationAndTranslation=p;function u(D,V,R,E){const I=r.Mat4.identity();for(let B=0;B<3;B++)for(let w=0;w<3;w++)r.Mat4.setValue(I,B,w,t.Mat3.getValue(V,B,w));return r.Mat4.setTranslation(I,R),f(D,I,{ncsId:E})}h.ofRotationAndOffset=u;const m=n.Quat.identity(),v=(0,n.Quat)(),b=(0,n.Quat)(),P=(0,i.Vec3)();function C(D,V,R){const E=V.inverse;if(V.isIdentity)return r.Mat4.copy(D,E);const I=1-R;r.Mat4.getRotation(v,E),n.Quat.slerp(v,m,v,I);const B=n.Quat.getAxisAngle(P,v);return r.Mat4.fromRotation(D,B,P),r.Mat4.setValue(D,0,3,I*r.Mat4.getValue(E,0,3)),r.Mat4.setValue(D,1,3,I*r.Mat4.getValue(E,1,3)),r.Mat4.setValue(D,2,3,I*r.Mat4.getValue(E,2,3)),D}h.lerpFromIdentity=C;function l(D,V,R,E){if(Math.abs(E)<=1e-5)return r.Mat4.copy(D,V);if(Math.abs(E-1)<=1e-5)return r.Mat4.copy(D,R);r.Mat4.getRotation(v,V),r.Mat4.getRotation(b,R),n.Quat.slerp(b,v,b,E);const I=n.Quat.getAxisAngle(P,b);return r.Mat4.fromRotation(D,I,P),r.Mat4.setValue(D,0,3,(0,e.lerp)(r.Mat4.getValue(V,0,3),r.Mat4.getValue(R,0,3),E)),r.Mat4.setValue(D,1,3,(0,e.lerp)(r.Mat4.getValue(V,1,3),r.Mat4.getValue(R,1,3),E)),r.Mat4.setValue(D,2,3,(0,e.lerp)(r.Mat4.getValue(V,2,3),r.Mat4.getValue(R,2,3),E)),D}h.slerp=l;function S(D,V){const R=r.Mat4.mul((0,r.Mat4)(),V.matrix,D.matrix);return f(V.name,R,V)}h.compose=S;class T{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z,this._m=V.matrix}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],i.Vec3.transformMat4(R,R,this._m),R}x(V){const R=this._m,E=R[0],I=R[4],B=R[8],w=R[12],O=this._x[V],F=this._y[
7V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}y(V){const R=this._m,E=R[1],I=R[5],B=R[9],w=R[13],O=this._x[V],F=this._y[V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}z(V){const R=this._m,E=R[2],I=R[6],B=R[10],w=R[14],O=this._x[V],F=this._y[V],L=this._z[V],U=R[3]*O+R[7]*F+R[11]*L+R[15]||1;return(E*O+I*F+B*L+w)/U}}class A{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z,this._m=V.matrix}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this.x(V),R[1]=this.y(V),R[2]=this.z(V),R}x(V){const R=this._m;return R[0]*this._x[V]+R[4]*this._y[V]+R[8]*this._z[V]+R[12]}y(V){const R=this._m;return R[1]*this._x[V]+R[5]*this._y[V]+R[9]*this._z[V]+R[13]}z(V){const R=this._m;return R[2]*this._x[V]+R[6]*this._y[V]+R[10]*this._z[V]+R[14]}}class x{constructor(V,R,E=o){this.operator=V,this.coordinates=R,this.r=E,this._x=R.x,this._y=R.y,this._z=R.z}invariantPosition(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}position(V,R){return R[0]=this._x[V],R[1]=this._y[V],R[2]=this._z[V],R}x(V){return this._x[V]}y(V){return this._y[V]}z(V){return this._z[V]}}function M(D,V,R=o){return r.Mat4.isIdentity(D.matrix)?new x(D,V,R):s(D.matrix)?new A(D,V,R):new T(D,V,R)}h.createMapping=M})(c||(Qm.SymmetryOperator=c={}));function o(h){return 0}function s(h){return h[3]===0&&h[7]===0&&h[11]===0&&h[15]===1}return Qm}var Sc={},Q2={},QE;function pJ(){return QE||(QE=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpacegroupNumber=e.SpacegroupName=e.SpacegroupNameToIndexMap=e.GroupData=e.OperatorData=e.TransformData=void 0,e.getSpacegroupIndexFromNumber=t,e.getSpacegroupNumberFromIndex=r,e.getSpacegroupIndex=n,e.TransformData=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[-1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,1,0,.5],[1,0,0,.5],[-1,0,0,.5],[0,0,1,.5],[0,-1,0,.5],[0,0,-1,.5],[1,0,0,.25],[0,-1,0,.25],[0,0,1,.25],[-1,0,0,.25],[0,1,0,.25],[0,-1,0,.75],[0,0,1,.75],[0,1,0,.75],[1,0,0,.75],[-1,0,0,.75],[0,0,-1,.25],[0,0,-1,.75],[1,-1,0,0],[-1,1,0,0],[0,0,1,1/3],[0,0,1,2/3],[1,0,0,2/3],[0,1,0,1/3],[0,-1,0,2/3],[1,-1,0,1/3],[-1,1,0,2/3],[-1,0,0,1/3],[1,0,0,1/3],[0,1,0,2/3],[0,-1,0,1/3],[1,-1,0,2/3],[-1,1,0,1/3],[-1,0,0,2/3],[0,0,-1,1/3],[0,0,-1,2/3],[0,0,1,5/6],[0,0,1,1/6],[0,0,-1,5/6],[0,0,-1,1/6]],e.OperatorData=[[0,1,2],[3,4,5],[3,1,5],[3,6,5],[7,6,2],[8,6,5],[0,4,2],[0,4,9],[7,10,2],[7,10,9],[0,10,2],[8,10,5],[3,1,11],[3,6,11],[0,10,9],[8,6,11],[3,4,2],[0,4,5],[3,4,9],[7,10,5],[8,4,9],[8,10,9],[8,10,2],[0,6,9],[3,10,9],[0,10,11],[7,1,9],[8,1,11],[7,4,11],[7,6,9],[7,10,11],[3,10,2],[8,1,5],[0,4,11],[3,1,2],[3,1,9],[7,4,2],[8,1,2],[8,1,9],[3,6,9],[7,4,9],[8,6,2],[8,6,9],[3,6,2],[12,13,14],[15,16,14],[12,17,18],[15,19,18],[20,13,18],[21,16,18],[20,17,14],[21,19,14],[0,1,5],[8,10,11],[7,6,11],[7,6,5],[8,4,2],[7,4,5],[7,1,5],[7,1,11],[0,10,5],[0,1,11],[0,6,11],[0,6,5],[3,10,11],[8,4,11],[15,13,22],[12,16,22],[15,17,23],[12,19,23],[21,13,23],[20,16,23],[21,17,22],[20,19,22],[4,0,2],[1,3,2],[4,0,14],[1,3,18],[4,0,9],[1,3,9],[4,0,18],[1,3,14],[10,7,9],[6,8,9],[4,7,14],[6,3,18],[10,0,18],[1,8,14],[1,3,5],[4,0,5],[6,8,11],[10,7,11],[1,3,11],[4,0,11],[10,7,2],[6,8,2],[3,10,22],[7,1,23],[8,4,23],[0,6,22],[1,0,5],[4,3,5],[1,0,23],[4,3,22],[10,7,14],[6,8,18],[8,6,22],[7,10,23],[4,3,11],[1,0,11],[1,0,22],[4,3,23],[10,7,18],[6,8,14],[8,6,23],[7,10,22],[6,7,11],[10,8,11],[8,1,23],[0,10,22],[3,6,22],[7,4,23],[4,3,2],[1,0,2],[10,8,2],[6,7,2],[4,3,9],[1,0,9],[10,8,9],[6,7,9],[4,8,14],[6,0,18],[10,3,18],[1,7,14],[4,8,18],[6,0,14],[10,3,14],[1,7,18],[6,7,5],[10,8,5],[6,8,5],[10,7,5],[8,1,22],[0,10,23],[3,6,23],[7,4,22],[4,24,2],[25,3,2],[4,24,26],[25,3,27],[4,24,27],[25,3,26],[28,29,26],[30,31,26],[32,33,26],[34,35,27],[36,37,27],[38,39,27],[2,0,1],[1,2,0],[1,25,5],[24,0,5],[39,36,40],[35,38,40],[37,34,40],[33,30,41],[29,32,41],[31,28,41],[5,3,4],[4,5,3],[25,1,5],[0,24,5],[24,4,5],[3,25,5],[4,3,41],[25,1,40],[24,4,41],[3,25,40],[4,3,40],[25,1,41],[24,4,40],[3,25,41],[35,34,40],[37,36,40],[39,38,40],[29,28,41],[31,30,41],[33,32,41],[3,5,4],[5,4,3],[25,1,2],[0,24,2],[24,4,2],[3,25,2],[25,1,9],[0,24,9],[24,4,9],[3,25,9],[30,33,26],[32,29,26],[28,31,26],[36,39,27],[38,35,27],[34,37,27],[0,2,1],[2,1,0],[30,33,42],[32,29,42],[28,31,42],[36,39,43],[38,35,43],[34,37,43],[7,9,6],[9,6,7],[25,1,11],[0,24,11],[24,4,11],[3,25,11],[35,34,44],[37,36,44],[39,38,44],[29,28,45],[3
71,30,45],[33,32,45],[8,11,10],[11,10,8],[1,25,2],[24,0,2],[1,25,42],[24,0,43],[1,25,43],[24,0,42],[1,25,27],[24,0,26],[1,25,26],[24,0,27],[1,25,9],[24,0,9],[4,24,5],[25,3,5],[4,24,11],[25,3,11],[1,0,40],[4,3,44],[0,24,45],[1,0,41],[4,3,45],[0,24,44],[0,24,40],[0,24,41],[2,3,4],[5,3,1],[5,0,4],[4,2,3],[1,5,3],[4,5,0],[2,7,6],[2,8,10],[5,8,6],[5,7,10],[1,9,7],[4,9,8],[1,11,8],[4,11,7],[9,0,6],[9,3,10],[11,3,6],[11,0,10],[6,2,7],[10,2,8],[6,5,8],[10,5,7],[9,7,1],[9,8,4],[11,8,1],[11,7,4],[6,9,0],[10,9,3],[6,11,3],[10,11,0],[9,7,6],[9,8,10],[11,8,6],[11,7,10],[6,9,7],[10,9,8],[6,11,8],[10,11,7],[2,3,10],[5,8,1],[11,0,4],[10,2,3],[1,5,8],[4,11,0],[5,0,1],[2,0,4],[2,3,1],[1,5,0],[4,2,0],[1,2,3],[11,8,10],[11,7,6],[9,7,10],[9,8,6],[10,11,8],[6,11,7],[10,9,7],[6,9,8],[5,8,10],[5,7,6],[2,7,10],[2,8,6],[4,11,8],[1,11,7],[4,9,7],[1,9,8],[11,3,10],[11,0,6],[9,0,10],[9,3,6],[10,5,8],[6,5,7],[10,2,7],[6,2,8],[11,8,4],[11,7,1],[9,7,4],[9,8,1],[10,11,3],[6,11,0],[10,9,0],[6,9,3],[22,15,13],[22,12,16],[14,12,13],[14,15,16],[13,22,15],[16,22,12],[13,14,12],[16,14,15],[22,21,17],[22,20,19],[14,20,17],[14,21,19],[13,23,21],[16,23,20],[13,18,20],[16,18,21],[23,15,17],[23,12,19],[18,12,17],[18,15,19],[17,22,21],[19,22,20],[17,14,20],[19,14,21],[23,21,13],[23,20,16],[18,20,13],[18,21,16],[17,23,15],[19,23,12],[17,18,12],[19,18,15],[5,0,6],[2,7,4],[9,3,1],[6,5,0],[4,2,7],[1,9,3],[0,2,4],[3,2,1],[0,5,1],[2,1,3],[2,4,0],[5,1,0],[7,9,10],[8,9,6],[7,11,6],[9,6,8],[9,10,7],[11,6,7],[1,7,11],[4,8,11],[1,8,9],[4,7,9],[0,9,10],[3,9,6],[3,11,10],[0,11,6],[2,6,8],[2,10,7],[5,6,7],[5,10,8],[6,0,11],[10,3,11],[6,3,9],[10,0,9],[7,2,10],[8,2,6],[8,5,10],[7,5,6],[9,1,8],[9,4,7],[11,1,7],[11,4,8],[7,9,4],[8,9,1],[8,11,4],[7,11,1],[9,6,3],[9,10,0],[11,6,0],[11,10,3],[19,12,23],[13,15,22],[16,21,18],[17,20,14],[20,14,17],[21,18,16],[15,22,13],[12,23,19],[18,16,21],[14,17,20],[23,19,12],[22,13,15],[19,20,22],[13,21,23],[16,15,14],[17,12,18],[20,18,13],[21,14,19],[15,23,17],[12,22,16],[18,19,15],[14,13,12],[23,16,20],[22,17,21],[16,12,22],[17,15,23],[19,21,14],[13,20,18],[12,14,13],[15,18,19],[21,22,17],[20,23,16],[14,16,15],[18,17,12],[22,19,20],[23,13,21],[16,20,23],[17,21,22],[19,15,18],[13,12,14],[12,18,17],[15,14,16],[21,23,13],[20,22,19],[14,19,21],[18,13,20],[22,16,12],[23,17,15],[19,12,22],[17,21,23],[16,15,18],[13,20,14],[20,14,13],[15,18,16],[21,23,17],[12,22,19],[18,16,15],[14,13,20],[22,19,12],[23,17,21],[3,2,4],[3,5,1],[0,5,4],[2,4,3],[5,1,3],[5,4,0],[1,7,9],[4,8,9],[1,8,11],[4,7,11],[0,9,6],[3,9,10],[3,11,6],[0,11,10],[2,6,7],[2,10,8],[5,6,8],[5,10,7],[6,0,9],[10,3,9],[6,3,11],[10,0,11],[7,2,6],[8,2,10],[8,5,6],[7,5,10],[9,1,7],[9,4,8],[11,1,8],[11,4,7],[7,9,1],[8,9,4],[8,11,1],[7,11,4],[9,6,0],[9,10,3],[11,6,3],[11,10,0],[8,9,10],[8,11,6],[7,11,10],[9,10,8],[11,6,8],[11,10,7],[6,0,2],[10,3,2],[6,3,5],[10,0,5],[7,2,1],[8,2,4],[8,5,1],[7,5,4],[9,1,0],[9,4,3],[11,1,3],[11,4,0],[1,7,2],[4,8,2],[1,8,5],[4,7,5],[0,9,1],[3,9,4],[3,11,1],[0,11,4],[2,6,0],[2,10,3],[5,6,3],[5,10,0],[0,2,6],[3,2,10],[3,5,6],[0,5,10],[2,1,7],[2,4,8],[5,1,8],[5,4,7],[16,12,14],[13,21,18],[19,15,23],[17,20,22],[12,14,16],[21,18,13],[15,23,19],[20,22,17],[14,16,12],[18,13,21],[23,19,15],[22,17,20],[19,20,18],[17,15,14],[16,21,22],[13,12,23],[20,18,19],[15,14,17],[21,22,16],[12,23,13],[18,19,20],[14,17,15],[22,16,21],[23,13,12],[6,0,5],[10,3,5],[6,3,2],[10,0,2],[7,2,4],[8,2,1],[8,5,4],[7,5,1],[9,1,3],[9,4,0],[11,1,0],[11,4,3],[1,7,5],[4,8,5],[1,8,2],[4,7,2],[0,9,4],[3,9,1],[3,11,4],[0,11,1],[2,6,3],[2,10,0],[5,6,0],[5,10,3],[0,2,10],[3,2,6],[3,5,10],[0,5,6],[2,1,8],[2,4,7],[5,1,7],[5,4,8],[21,17,23],[20,16,22],[12,13,18],[15,19,14],[23,21,17],[22,20,16],[18,12,13],[14,15,19],[17,23,21],[16,22,20],[13,18,12],[19,14,15],[21,13,22],[20,19,23],[12,17,14],[15,16,18],[23,15,13],[22,12,19],[18,20,17],[14,21,16],[17,22,15],[16,23,12],[13,14,20],[19,18,21],[15,17,22],[12,16,23],[20,13,14],[21,19,18],[22,21,13],[23,20,19],[14,12,17],[18,15,16],[13,23,15],[19,22,12],[17,18,20],[16,14,21],[15,13,23],[12,19,22],[20,17,18],[21,16,14],[22,15,17],[23,12,16],[14,20,13],[18,21,19],[13,22,21],[19,23,20],[17,14,12],[16,18,15],[6,5,3],[4,9,3],[9,3,4],[5,7,4],[4,5,7],[5,3,6]],e.GroupData
vendor: 16,485 bytes, line 7
7=[[0],[0,1],[0,2],[0,3],[0,2,4,5],[0,6],[0,7],[0,6,4,8],[0,7,4,9],[0,6,2,1],[0,3,1,10],[0,6,2,1,4,8,5,11],[0,12,1,7],[0,1,13,14],[0,12,1,7,4,15,11,9],[0,16,2,17],[0,18,12,17],[0,16,5,19],[0,20,13,19],[0,18,12,17,4,21,15,19],[0,16,2,17,4,22,5,19],[0,16,2,17,23,24,13,25,26,20,27,28,4,22,5,19],[0,16,17,2,29,21,30,15],[0,20,13,19,29,31,32,33],[0,16,6,34],[0,18,7,34],[0,16,7,35],[0,16,36,37],[0,18,36,38],[0,16,14,39],[0,20,40,34],[0,16,8,41],[0,18,8,42],[0,16,9,42],[0,16,6,34,4,22,8,41],[0,18,7,34,4,21,9,41],[0,16,7,35,4,22,9,42],[0,16,6,34,23,24,14,39],[0,16,10,43,23,24,7,35],[0,16,36,37,23,24,9,42],[0,16,8,41,23,24,40,38],[0,16,6,34,23,24,14,39,26,20,40,38,4,22,8,41],[0,16,44,45,23,24,46,47,26,20,48,49,4,22,50,51],[0,16,6,34,29,21,9,42],[0,16,8,41,29,21,7,35],[0,16,36,37,29,21,14,39],[0,16,2,17,1,52,6,34],[0,16,2,17,53,54,9,42],[0,16,12,33,1,52,7,35],[0,16,2,17,11,55,8,41],[0,56,2,57,1,58,6,37],[0,56,15,25,1,58,9,39],[0,20,27,17,1,59,40,34],[0,56,12,28,1,58,7,38],[0,16,5,19,1,52,8,41],[0,22,13,28,1,55,14,38],[0,18,13,60,1,61,14,43],[0,16,15,30,1,52,9,42],[0,16,5,19,11,55,6,34],[0,21,12,19,1,54,7,41],[0,20,13,19,1,59,14,41],[0,20,3,30,1,59,10,42],[0,18,12,17,1,61,7,34,4,21,15,19,11,54,9,41],[0,24,13,17,1,62,14,34,4,20,27,19,11,59,40,41],[0,16,2,17,1,52,6,34,4,22,5,19,11,55,8,41],[0,16,12,33,1,52,7,35,4,22,15,30,11,55,9,42],[0,31,3,17,1,63,10,34,4,56,32,19,11,58,36,41],[0,22,2,19,64,59,14,38,4,16,5,17,65,62,40,39],[0,16,2,17,1,52,6,34,23,24,13,25,64,62,14,39,26,20,27,28,65,59,40,38,4,22,5,19,11,55,8,41],[0,16,2,17,66,67,44,45,23,24,13,25,68,69,46,47,26,20,27,28,70,71,48,49,4,22,5,19,72,73,50,51],[0,16,2,17,1,52,6,34,29,21,15,30,53,54,9,42],[0,16,5,19,1,52,8,41,29,21,12,33,53,54,7,35],[0,20,13,19,1,59,14,41,29,31,32,33,53,63,36,35],[0,31,3,17,1,63,10,34,29,20,27,30,53,59,40,42],[0,16,74,75],[0,18,76,77],[0,16,78,79],[0,18,80,81],[0,16,74,75,29,21,82,83],[0,21,84,85,29,16,86,87],[0,16,88,89],[0,16,88,89,29,21,90,91],[0,16,74,75,1,52,88,89],[0,16,78,79,1,52,92,93],[0,16,94,95,11,55,88,89],[0,16,82,83,53,54,88,89],[0,16,74,75,1,52,88,89,29,21,82,83,53,54,90,91],[0,21,84,85,96,97,88,91,29,16,86,87,98,99,90,89],[0,16,74,75,2,17,100,101],[0,16,94,95,5,19,100,101],[0,18,76,77,2,33,102,103],[0,18,104,105,106,107,100,108],[0,16,78,79,2,17,109,108],[0,16,82,83,15,30,100,101],[0,18,80,81,2,33,110,111],[0,18,112,113,114,115,100,108],[0,16,74,75,2,17,100,101,29,21,82,83,15,30,116,117],[0,21,84,85,118,119,116,101,29,16,86,87,120,121,100,117],[0,16,74,75,6,34,122,123],[0,16,74,75,8,41,124,125],[0,16,78,79,7,35,122,123],[0,16,82,83,9,42,122,123],[0,16,74,75,7,35,126,127],[0,16,74,75,9,42,128,129],[0,16,78,79,6,34,126,127],[0,16,78,79,8,41,128,129],[0,16,74,75,6,34,122,123,29,21,82,83,9,42,128,129],[0,16,74,75,7,35,126,127,29,21,82,83,8,41,124,125],[0,21,84,85,6,42,130,131,29,16,86,87,9,34,132,133],[0,21,84,85,7,41,134,135,29,16,86,87,8,35,136,137],[0,16,89,88,2,17,122,123],[0,16,89,88,12,33,126,127],[0,16,89,88,5,19,124,125],[0,16,89,88,15,30,128,129],[0,16,88,89,6,34,100,101],[0,16,89,88,7,35,109,108],[0,16,89,88,8,41,138,139],[0,16,89,88,9,42,116,117],[0,16,89,88,6,34,100,101,29,21,91,90,9,42,116,117],[0,16,89,88,7,35,109,108,29,21,91,90,8,41,138,139],[0,16,89,88,2,17,122,123,29,21,91,90,15,30,128,129],[0,16,89,88,118,121,132,131,29,21,91,90,120,119,130,133],[0,16,74,75,2,17,100,101,1,52,88,89,6,34,122,123],[0,16,74,75,12,33,109,108,1,52,88,89,7,35,126,127],[0,16,74,75,2,17,100,101,11,55,140,141,8,41,124,125],[0,16,74,75,2,17,100,101,53,54,90,91,9,42,128,129],[0,16,74,75,5,19,138,139,1,52,88,89,8,41,124,125],[0,16,74,75,15,30,116,117,1,52,88,89,9,42,128,129],[0,16,94,95,5,19,100,101,11,55,88,89,6,34,124,125],[0,16,94,95,15,30,109,108,11,55,88,89,7,35,128,129],[0,16,78,79,2,17,109,108,1,52,92,93,6,34,126,127],[0,16,78,79,12,33,100,101,1,52,92,93,7,35,122,123],[0,16,82,83,12,33,138,139,53,54,88,89,8,41,126,127],[0,16,82,83,2,17,116,117,53,54,88,89,9,42,122,123],[0,16,78,79,5,19,116,117,1,52,92,93,8,41,128,129],[0,16,82,83,15,30,100,101,1,52,90,91,9,42,122,123],[0,16,82,83,15,30,100,101,53,54,88,89,6,34,128,129],[0,16,82,83,5,19,109,108,53,54,88,89,7,35,124,125],[0,16,74,75,2,17,100,101,1,52,88,89,6,34,122,123,29,21,82,83,15,30,116,117,53,54,90,91,9,42,128,129],[0,16,74,75,12,33,109,108,1,52,88,89,7,35,126,127,29,21,82,83,5,19,138,139,53,54,90,91,8,41,124,125],[0,21,84,85,118,119,116,101,96,97,88,91,9,34,132,133,29,16,86,87,120,121,100,117,98,99,90,89,6,42,130,131],[0,21,84,85,142,143,138,108,96,97,88,91,8,35,136,137,29,16,86,87,144,145,109,139,98,99,90,89,7,41,134,135],[0,146,147],[0,148,149],[0,150,151],[0,146,147,152,153,154,155,156,157],[0,158,159],[0,146,147,1,160,161],[0,146,147,1,160,161,152,153,154,162,163,164,155,156,157,165,166,167],[0,158,159,1,168,169],[0,146,147,101,170,171],[0,146,147,100,172,173],[0,148,149,174,175,171],[0,148,149,100,176,177],[0,150,151,178,179,171],[0,150,151,100,180,181],[0,146,147,100,172,173,152,153,154,182,183,184,155,156,157,185,186,187],[0,158,159,101,188,189],[0,146,147,122,190,191],[0,146,147,123,192,193],[0,146,147,126,194,195],[0,146,147,127,196,197],[0,146,147,122,190,191,152,153,154,198,199,200,155,156,157,201,202,203],[0,158,159,123,204,205],[0,146,147,126,194,195,152,153,154,206,207,208,155,156,157,209,210,211],[0,158,159,129,212,213],[0,146,147,101,170,171,1,160,161,123,192,193],[0,146,147,108,214,215,1,160,161,127,196,197],[0,146,147,100,172,173,1,160,161,122,190,191],[0,146,147,109,216,217,1,160,161,126,194,195],[0,146,147,100,172,173,1,160,161,122,190,191,152,153,154,182,183,184,162,163,164,198,199,200,155,156,157,185,186,187,165,166,167,201,202,203],[0,158,159,101,188,189,1,168,169,123,204,205],[0,146,147,109,216,217,1,160,161,126,194,195,152,153,154,218,219,220,162,163,164,206,207,208,155,156,157,221,222,223,165,166,167,209,210,211],[0,158,159,117,224,225,1,168,169,129,212,213],[0,146,147,16,226,227],[0,148,149,18,228,229],[0,150,151,18,230,231],[0,150,151,16,232,233],[0,148,149,16,234,235],[0,146,147,18,236,237],[0,146,147,52,238,239],[0,146,147,16,226,227,1,160,161,52,238,239],[0,146,147,18,236,237,1,160,161,61,240,241],[0,146,147,16,226,227,100,172,173,101,170,171],[0,148,149,18,228,229,242,172,181,243,214,244],[0,150,151,18,230,231,245,172,177,246,214,247],[0,150,151,16,232,233,245,172,177,174,170,248],[0,148,149,16,234,235,242,172,181,178,170,249],[0,146,147,18,236,237,100,172,173,108,214,215],[0,146,147,16,226,227,122,190,191,123,192,193],[0,146,147,16,226,227,126,194,195,127,196,197],[0,146,147,18,236,237,126,194,195,123,192,193],[0,146,147,18,236,237,122,190,191,127,196,197],[0,146,147,52,238,239,122,190,191,101,170,171],[0,146,147,61,240,241,126,194,195,101,170,171],[0,146,147,52,238,239,100,172,173,123,192,193],[0,146,147,61,240,241,100,172,173,127,196,197],[0,146,147,16,226,227,100,172,173,101,170,171,1,160,161,52,239,238,122,190,191,123,192,193],[0,146,147,16,226,227,109,216,217,108,214,215,1,160,161,52,239,238,126,194,195,127,196,197],[0,146,147,18,236,237,109,216,217,101,170,171,1,160,161,61,241,240,126,194,195,123,192,193],[0,146,147,18,236,237,100,172,173,108,214,215,1,160,161,61,241,240,122,190,191,127,196,197],[0,16,2,17,158,250,251,252,159,253,254,255],[0,16,2,17,158,250,251,252,159,253,254,255,23,24,13,25,256,257,258,259,260,261,262,263,26,20,27,28,264,265,266,267,268,269,270,271,4,22,5,19,272,273,274,275,276,277,278,279],[0,16,2,17,158,250,251,252,159,253,254,255,29,21,15,30,280,281,282,283,284,285,286,287],[0,20,13,19,158,273,266,259,159,261,278,271],[0,20,13,19,158,273,266,259,159,261,278,271,29,31,32,33,280,288,289,290,284,291,292,293],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299],[0,16,2,17,158,250,251,252,159,253,254,255,53,54,9,42,300,301,302,303,304,305,306,307],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299,23,24,13,25,256,257,258,259,260,261,262,263,64,62,14,39,308,309,310,311,312,313,314,315,26,20,27,28,264,265,266,267,268,269,270,271,65,59,40,38,316,317,318,319,320,321,322,323,4,22,5,19,272,273,274,275,276,277,278,279,11,55,8,41,324,325,326,327,328,329,330,331],[0,16,2,17,158,250,251,252,159,253,254,255,66,67,44,45,332,333,334,335,336,337,338,339,23,24,13,25,256,257,258,259,260,261,262,263,68,69,46,47,340,341,342,343,344,345,346,347,26,20,27,28,264,265,266,267,268,269,270,271,70,71,48,49,348,349,350,351,352,353,354,355,4,22,5,19,272,273,274,275,276,277,278,279,72,73,50,51,356,357,358,359,360,361,362,363],[0,16,2,17,158,250,251,252,159,253,254,255,1,52,6,34,168,294,295,296,169,297,298,299,29,21,15,30,280,281,282,283,284,285,286,287,53,54,9,42,300,301,302,303,304,305,306,307],[0,20,13,19,158,273,266,259,159,261,278,271,1,59,14,41,168,325,318,311,169,313,330,323],[0,20,13,19,158,273,266,259,159,261,278,271,1,59,14,41,168,325,318,311,169,313,330,323,29,31,32,33,280,288,289,290,284,291,292,293,53,63,36,35,300,364,365,366,304,367,368,369],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,23,24,13,25,256,257,258,259,260,261,262,263,382,383,384,385,386,387,388,389,390,391,392,393,26,20,27,28,264,265,266,267,268,269,270,271,394,395,396,397,398,399,400,401,402,403,404,405,4,22,5,19,272,273,274,275,276,277,278,279,138,139,95,94,406,407,408,409,410,411,412,413],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,29,21,15,30,280,281,282,283,284,285,286,287,116,117,83,82,376,377,224,378,379,380,381,225],[0,20,13,19,158,273,266,259,159,261,278,271,450,415,440,429,454,431,420,445,458,447,436,425],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473,29,31,32,33,280,288,289,290,284,291,292,293,450,415,440,429,454,431,420,445,458,447,436,425],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479,23,24,13,25,256,257,258,259,260,261,262,263,480,481,482,483,484,485,486,487,488,489,490,491,26,20,27,28,264,265,266,267,268,269,270,271,492,493,494,495,496,497,498,499,500,501,502,503,4,22,5,19,272,273,274,275,276,277,278,279,125,124,140,141,504,505,506,507,508,509,510,511],[0,16,2,17,158,250,251,252,159,253,254,255,123,122,88,89,204,474,475,476,205,477,478,479,29,21,15,30,280,281,282,283,284,285,286,287,129,128,90,91,212,512,513,514,213,515,516,517],[0,16,2,17,158,250,251,252,159,253,254,255,129,128,90,91,212,512,513,514,213,515,516,517],[0,16,2,17,158,250,251,252,159,253,254,255,129,128,90,91,212,512,513,514,213,515,516,517,23,24,13,25,256,257,258,259,260,261,262,263,518,519,520,521,522,523,524,525,526,527,528,529,26,20,27,28,264,265,266,267,268,269,270,271,530,531,532,533,534,535,536,537,538,539,540,541,4,22,5,19,272,273,274,275,276,277,278,279,127,126,92,93,542,543,544,545,546,547,548,549],[0,20,13,19,158,273,266,259,159,261,278,271,550,551,552,553,554,555,556,557,558,559,560,561,29,31,32,33,280,288,289,290,284,291,292,293,562,563,564,565,566,567,568,569,570,571,572,573],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,53,54,9,42,300,301,302,303,304,305,306,307,128,129,91,90,513,514,212,512,517,516,515,213],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,1,52,6,34,168,294,295,296,169,297,298,299,128,129,91,90,513,514,212,512,517,516,515,213],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,53,54,9,42,300,301,302,303,304,305,306,307,122,123,89,88,475,476,204,474,479,478,477,205],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205,23,24,13,25,256,257,258,259,260,261,262,263,382,383,384,385,386,387,388,389,390,391,392,393,64,62,14,39,308,309,310,311,312,313,314,315,481,480,483,482,486,487,484,485,491,490,489,488,26,20,27,28,264,265,266,267,268,269,270,271,394,395,396,397,398,399,400,401,402,403,404,405,65,59,40,38,316,317,318,319,320,321,322,323,493,492,495,494,498,499,496,497,503,502,501,500,4,22,5,19,272,273,274,275,276,277,278,279,138,139,95,94,406,407,408,409,410,411,412,413,11,55,8,41,324,325,326,327,328,329,330,331,124,125,141,140,506,507,504,505,511,510,509,508],[0,16,2,17,158,250,251,252,159,253,254,255,116,117,83,82,376,377,224,378,379,380,381,225,1,52,6,34,168,294,295,296,169,297,298,299,128,129,91,90,513,514,212,512,517,516,515,213,23,24,13,25,256,257,258,259,260,261,262,263,574,575,576,577,578,579,580,581,582,583,584,585,64,62,14,39,308,309,310,311,312,313,314,315,519,518,521,520,524,525,522,523,529,528,527,526,26,20,27,28,264,265,266,267,268,269,270,271,586,587,588,589,590,591,592,593,594,595,596,597,65,59,40,38,316,317,318,319,320,321,322,323,531,530,533,532,536,537,534,535,541,540,539,538,4,22,5,19,272,273,274,275,276,277,278,279,109,108,79,78,598,599,600,601,602,603,604,605,11,55,8,41,324,325,326,327,328,329,330,331,126,127,93,92,544,545,542,543,549,548,547,546],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,66,69,50,49,332,349,342,359,336,361,354,347,493,123,483,140,498,507,204,485,503,490,509,205,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,68,67,48,51,340,357,334,351,344,353,362,339,124,480,89,494,506,499,484,474,511,478,501,488,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,70,73,46,45,348,333,358,343,352,345,338,363,122,492,141,482,475,487,496,505,479,510,489,500,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461,72,71,44,47,356,341,350,335,360,337,346,355,481,125,495,88,486,476,504,497,491,502,477,508],[0,24,5,28,158,265,258,275,159,277,270,263,414,415,416,417,418,419,420,421,422,423,424,425,606,607,608,609,610,611,612,613,614,615,616,617,531,129,521,92,536,545,212,523,541,528,547,213,23,16,27,19,256,273,251,267,260,269,278,255,426,427,428,429,430,431,432,433,434,435,436,437,618,619,620,621,622,623,624,625,626,627,628,629,126,518,91,532,544,537,522,512,549,516,539,526,26,22,13,17,264,250,274,259,268,261,254,279,438,439,440,441,442,443,444,445,446,447,448,449,630,631,632,633,634,635,636,637,638,639,640,641,128,530,93,520,513,525,534,543,517,548,527,538,4,20,2,25,272,257,266,252,276,253,262,271,450,451,452,453,454,455,456,457,458,459,460,461,642,643,644,645,646,647,648,649,650,651,652,653,519,127,533,90,524,514,542,535,529,540,515,546],[0,16,2,17,158,250,251,252,159,253,254,255,100,101,75,74,370,371,188,372,373,374,375,189,1,52,6,34,168,294,295,296,169,297,298,299,122,123,89,88,475,476,204,474,479,478,477,205,29,21,15,30,280,281,282,283,284,285,286,287,116,117,83,82,376,377,224,378,379,380,381,225,53,54,9,42,300,301,302,303,304,305,306,307,128,129,91,90,513,514,212,512,517,516,515,213],[0,20,13,19,158,273,266,259,159,261,278,271,462,463,464,465,466,467,468,469,470,471,472,473,1,59,14,41,168,325,318,311,169,313,330,323,551,550,553,552,556,557,554,555,561,560,559,558,29,31,32,33,280,288,289,290,284,291,292,293,450,415,440,429,454,431,420,445,458,447,436,425,53,63,36,35,300,364,365,366,304,367,368,369,563,562,565,564,568,569,566,567,573,572,571,570],[0,16],[0,18],[0,16,26,20],[0,2,23,13],[0,3,4,32],[0,2,29,15],[0,3,29,27],[0,52],[0,63],[0,52,26,59],[0,63,26,54],[0,52,16,1],[0,18,1,61],[0,52,16,1,26,59,20,65],[0,31,1,63],[0,1,24,62],[0,15,1,9],[0,5,1,8],[0,31,1,63,26,21,65,54],[0,2,57,56],[0,60,3,16],[0,22,57,3],[0,2,28,20],[0,17,13,24],[0,20,19,13,4,24,17,27],[0,22,57,3,4,16,60,32],[0,22,57,3,23,20,30,12,26,24,33,15,4,16,60,32],[0,22,57,3,29,18,27,25],[0,22,3,57,1,55,10,37],[0,22,385,396,3,57,109,117],[0,22,57,3,159,279,654,655,158,274,656,657,29,18,25,27,284,658,262,269,280,659,257,267]],
7e.SpacegroupNameToIndexMap
vendor: 5,234 bytes, line 7
7={"P 1":0,"P -1":1,"P 1 2 1":2,"P 1 21 1":3,"C 1 2 1":4,"P 1 m 1":5,"P 1 c 1":6,"C 1 m 1":7,"C 1 c 1":8,"P 1 2/m 1":9,"P 1 21/m 1":10,"C 1 2/m 1":11,"P 1 2/c 1":12,"P 1 21/c 1":13,"C 1 2/c 1":14,"P 2 2 2":15,"P 2 2 21":16,"P 21 21 2":17,"P 21 21 21":18,"C 2 2 21":19,"C 2 2 2":20,"F 2 2 2":21,"I 2 2 2":22,"I 21 21 21":23,"P m m 2":24,"P m c 21":25,"P c c 2":26,"P m a 2":27,"P c a 21":28,"P n c 2":29,"P m n 21":30,"P b a 2":31,"P n a 21":32,"P n n 2":33,"C m m 2":34,"C m c 21":35,"C c c 2":36,"A m m 2":37,"A b m 2":38,"A m a 2":39,"A b a 2":40,"F m m 2":41,"F d d 2":42,"I m m 2":43,"I b a 2":44,"I m a 2":45,"P 2/m 2/m 2/m":46,"P m m m":46,"P 2/n 2/n 2/n":47,"P n n n":47,"P 2/c 2/c 2/m":48,"P c c m":48,"P 2/b 2/a 2/n":49,"P b a n":49,"P 21/m 2/m 2/a":50,"P m m a":50,"P 2/n 21/n 2/a":51,"P n n a":51,"P 2/m 2/n 21/a":52,"P m n a":52,"P 21/c 2/c 2/a":53,"P c c a":53,"P 21/b 21/a 2/m":54,"P b a m":54,"P 21/c 21/c 2/n":55,"P c c n":55,"P 2/b 21/c 21/m":56,"P b c m":56,"P 21/n 21/n 2/m":57,"P n n m":57,"P 21/m 21/m 2/n":58,"P m m n":58,"P 21/b 2/c 21/n":59,"P b c n":59,"P 21/b 21/c 21/a":60,"P b c a":60,"P 21/n 21/m 21/a":61,"P n m a":61,"C 2/m 2/c 21/m":62,"C m c m":62,"C 2/m 2/c 21/a":63,"C m c a":63,"C 2/m 2/m 2/m":64,"C m m m":64,"C 2/c 2/c 2/m":65,"C c c m":65,"C 2/m 2/m 2/a":66,"C m m a":66,"C 2/c 2/c 2/a":67,"C c c a":67,"F 2/m 2/m 2/m":68,"F m m m":68,"F 2/d 2/d 2/d":69,"F d d d":69,"I 2/m 2/m 2/m":70,"I m m m":70,"I 2/b 2/a 2/m":71,"I b a m":71,"I 21/b 21/c 21/a":72,"I b c a":72,"I 21/m 21/m 21/a":73,"I m m a":73,"P 4":74,"P 41":75,"P 42":76,"P 43":77,"I 4":78,"I 41":79,"P -4":80,"I -4":81,"P 4/m":82,"P 42/m":83,"P 4/n":84,"P 42/n":85,"I 4/m":86,"I 41/a":87,"P 4 2 2":88,"P 4 21 2":89,"P 41 2 2":90,"P 41 21 2":91,"P 42 2 2":92,"P 42 21 2":93,"P 43 2 2":94,"P 43 21 2":95,"I 4 2 2":96,"I 41 2 2":97,"P 4 m m":98,"P 4 b m":99,"P 42 c m":100,"P 42 n m":101,"P 4 c c":102,"P 4 n c":103,"P 42 m c":104,"P 42 b c":105,"I 4 m m":106,"I 4 c m":107,"I 41 m d":108,"I 41 c d":109,"P -4 2 m":110,"P -4 2 c":111,"P -4 21 m":112,"P -4 21 c":113,"P -4 m 2":114,"P -4 c 2":115,"P -4 b 2":116,"P -4 n 2":117,"I -4 m 2":118,"I -4 c 2":119,"I -4 2 m":120,"I -4 2 d":121,"P 4/m 2/m 2/m":122,"P4/m m m":122,"P 4/m 2/c 2/c":123,"P4/m c c":123,"P 4/n 2/b 2/m":124,"P4/n b m":124,"P 4/n 2/n 2/c":125,"P4/n n c":125,"P 4/m 21/b 2/m":126,"P4/m b m":126,"P 4/m 21/n 2/c":127,"P4/m n c":127,"P 4/n 21/m 2/m":128,"P4/n m m":128,"P 4/n 2/c 2/c":129,"P4/n c c":129,"P 42/m 2/m 2/c":130,"P42/m m c":130,"P 42/m 2/c 2/m":131,"P42/m c m":131,"P 42/n 2/b 2/c":132,"P42/n b c":132,"P 42/n 2/n 2/m":133,"P42/n n m":133,"P 42/m 21/b 2/c":134,"P42/m b c":134,"P 42/m 21/n 2/m":135,"P42/m n m":135,"P 42/n 21/m 2/c":136,"P42/n m c":136,"P 42/n 21/c 2/m":137,"P42/n c m":137,"I 4/m 2/m 2/m":138,"I4/m m m":138,"I 4/m 2/c 2/m":139,"I4/m c m":139,"I 41/a 2/m 2/d":140,"I41/a m d":140,"I 41/a 2/c 2/d":141,"I41/a c d":141,"P 3":142,"P 31":143,"P 32":144,"H 3":145,"R 3":146,"P -3":147,"H -3":148,"R -3":149,"P 3 1 2":150,"P 3 2 1":151,"P 31 1 2":152,"P 31 2 1":153,"P 32 1 2":154,"P 32 2 1":155,"H 3 2":156,"R 3 2":157,"P 3 m 1":158,"P 3 1 m":159,"P 3 c 1":160,"P 3 1 c":161,"H 3 m":162,"R 3 m":163,"H 3 c":164,"R 3 c":165,"P -3 1 2/m":166,"P -3 1 m":166,"P -3 1 2/c":167,"P -3 1 c":167,"P -3 2/m 1":168,"P -3 m 1":168,"P -3 2/c 1":169,"P -3 c 1":169,"H -3 2/m":170,"H -3 m":170,"R -3 2/m":171,"R -3 m":171,"H -3 2/c":172,"H -3 c":172,"R -3 2/c":173,"R -3 c":173,"P 6":174,"P 61":175,"P 65":176,"P 62":177,"P 64":178,"P 63":179,"P -6":180,"P 6/m":181,"P 63/m":182,"P 6 2 2":183,"P 61 2 2":184,"P 65 2 2":185,"P 62 2 2":186,"P 64 2 2":187,"P 63 2 2":188,"P 6 m m":189,"P 6 c c":190,"P 63 c m":191,"P 63 m c":192,"P -6 m 2":193,"P -6 c 2":194,"P -6 2 m":195,"P -6 2 c":196,"P 6/m 2/m 2/m":197,"P 6/m m m":197,"P 6/m 2/c 2/c":198,"P 6/m c c":198,"P 63/m 2/c 2/m":199,"P 63/m c m":199,"P 63/m 2/m 2/c":200,"P 63/m m c":200,"P 2 3":201,"F 2 3":202,"I 2 3":203,"P 21 3":204,"I 21 3":205,"P 2/m -3":206,"P m -3":206,"P 2/n -3":207,"P n -3":207,"F 2/m -3":208,"F m -3":208,"F 2/d -3":209,"F d -3":209,"I 2/m -3":210,"I m -3":210,"P 21/a -3":211,"P a -3":211,"I 21/a -3":212,"I a -3":212,"P 4 3 2":213,"P 42 3 2":214,"F 4 3 2":215,"F 41 3 2":216,"I 4 3 2":217,"P 43 3 2":218,"P 41 3 2":219,"I 41 3 2":220,"P -4 3 m":221,"F -4 3 m":222,"I -4 3 m":223,"P -4 3 n":224,"F -4 3 c":225,"I -4 3 d":226,"P 4/m -3 2/m":227,"P m -3 m":227,"P 4/n -3 2/n":228,"P n -3 n":228,"P 42/m -3 2/n":229,"P m -3 n":229,"P 42/n -3 2/m":230,"P n -3 m":230,"F 4/m -3 2/m":231,"F m -3 m":231,"F 4/m -3 2/c":232,"F m -3 c":232,"F 41/d -3 2/m":233,"F d -3 m":233,"F 41/d -3 2/c":234,"F d -3 c":234,"I 4/m -3 2/m":235,"I m -3 m":235,"I 41/a -3 2/d":236,"I a -3 d":236,"P 1 1 2":237,"P 1 1 21":238,"B 1 1 2":239,"B 2":239,"A 1 2 1":240,"C 1 21 1":241,"I 1 2 1":242,"I 2":242,"I 1 21 1":243,"P 1 1 m":244,"P 1 1 b":245,"B 1 1 m":246,"B 1 1 b":247,"P 1 1 2/m":248,"P 1 1 21/m":249,"B 1 1 2/m":250,"P 1 1 2/b":251,"P 1 1 21/b":252,"P 1 21/n 1":253,"P 1 21/a 1":254,"B 1 1 2/b":255,"P 21 2 2":256,"P 2 21 2":257,"P 21 21 2 (a)":258,"P 21 2 21":259,"P 2 21 21":260,"C 2 2 21a)":261,"C 2 2 2a":262,"F 2 2 2a":263,"I 2 2 2a":264,"P 21/m 21/m 2/n a":265,"P 42 21 2a":266,"I 2 3a":267};function
7t(i){switch(i){case 1146:return 146;case 1148:return 149;case 1155:return 157;case 1160:return 163;case 1161:return 165;case 1166:return 171;case 1167:return 173;case 1003:return 237;case 1004:return 238;case 1005:return 239;case 2005:return 240;case 3005:return 241;case 4005:return 242;case 5005:return 243;case 1006:return 244;case 1007:return 245;case 1008:return 246;case 1009:return 247;case 1010:return 248;case 1011:return 249;case 1012:return 250;case 1013:return 251;case 1014:return 252;case 2014:return 253;case 3014:return 254;case 1015:return 255;case 1017:return 256;case 2017:return 257;case 1018:return 258;case 2018:return 259;case 3018:return 260;case 1020:return 261;case 1021:return 262;case 1022:return 263;case 1023:return 264;case 1059:return 265;case 1094:return 266;case 1197:return 267}let c=0;return i>146&&++c,i>148&&++c,i>155&&++c,i>160&&++c,i>161&&++c,i>166&&++c,i>167&&++c,i-1+c}function r(i){if(i<146)return i+1;if(i===146)return 1146;if(i<149)return i+1-1;if(i===149)return 1148;if(i<157)return i+1-2;if(i===157)return 1155;if(i<163)return i+1-3;if(i===163)return 1160;if(i<165)return i+1-4;if(i===165)return 1161;if(i<171)return i+1-5;if(i===171)return 1166;if(i<173)return i+1-6;if(i===173)return 1167;if(i<237)return i+1-7;if(i===237)return 1003;if(i===238)return 1004;if(i===239)return 1005;if(i===240)return 2005;if(i===241)return 3005;if(i===242)return 4005;if(i===243)return 5005;if(i===244)return 1006;if(i===245)return 1007;if(i===246)return 1008;if(i===247)return 1009;if(i===248)return 1010;if(i===249)return 1011;if(i===250)return 1012;if(i===251)return 1013;if(i===252)return 1014;if(i===253)return 2014;if(i===254)return 3014;if(i===255)return 1015;if(i===256)return 1017;if(i===257)return 2017;if(i===258)return 1018;if(i===259)return 2018;if(i===260)return 3018;if(i===261)return 1020;if(i===262)return 1021;if(i===263)return 1022;if(i===264)return 1023;if(i===265)return 1059;if(i===266)return 1094;if(i===267)return 1197;throw new Error(`unknown spacegroup index '${i}'`)}e.SpacegroupName=(function(){const i=Object.create(null);for(const c of Object.keys(e.SpacegroupNameToIndexMap))i[e.SpacegroupNameToIndexMap[c]]=c;return i})(),e.SpacegroupNumber=(function(){const i=Object.create(null);for(const c of Object.keys(e.SpacegroupNameToIndexMap)){const o=e.SpacegroupNameToIndexMap[c];i[o]=r(o)}return i})();function n(i){const c=typeof i=="number"?t(i):e.SpacegroupNameToIndexMap[i];return typeof c>"u"||typeof e.SpacegroupName[c]>"u"?-1:c}})(Q2)),Q2}var ZE;function hJ(){if(ZE)return Sc;ZE=1,Object.defineProperty(Sc,"__esModule",{value:!0}),Sc.SpacegroupCell=Sc.Spacegroup=void 0;const e=Ge(),t=pJ(),r=eS();var n;(function(c){c.Zero=s("P 1",e.Vec3.create(1,1,1),e.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));function o(h){return h?h.index===0&&h.size[0]===1&&h.size[1]===1&&h.size[1]===1:!0}c.isZero=o;function s(h,f,y){const _=(0,t.getSpacegroupIndex)(h);if(_<0)return console.warn(`Unknown spacegroup '${h}', returning a 'P 1' with cellsize [1, 1, 1]`),c.Zero;const g=f[0]*f[1]*f[2],a=y[0],d=y[1],p=y[2],u=f[0],m=f[1],v=f[2],b=Math.cos(d),P=(Math.cos(a)-Math.cos(d)*Math.cos(p))/Math.sin(p),C=Math.sqrt(1-b*b-P*P),l=[u,0,0],S=[Math.cos(p)*m,Math.sin(p)*m,0],T=[b*v,P*v,C*v],A=e.Mat4.ofRows([[l[0],S[0],T[0],0],[0,S[1],T[1],0],[0,0,T[2],0],[0,0,0,1]]),x=e.Mat4.invert(e.Mat4.zero(),A);return{index:_,size:f,volume:g,anglesInRadians:y,toFractional:x,fromFractional:A}}c.create=s})(n||(Sc.SpacegroupCell=n={}));var i;return(function(c){c.ZeroP1=o(n.Zero);function o(C){const l=t.GroupData[C.index].map(A=>u(t.OperatorData[A])),S=t.SpacegroupName[C.index],T=t.SpacegroupNumber[C.index];return{name:S,num:T,cell:C,operators:l}}c.create=o;const s=(0,e.Vec3)(),h=(0,e.Mat4)();function f(C,l,S,T,A,x){return e.Vec3.set(s,S,T,A),e.Mat4.fromTranslation(h,s),e.Mat4.mul(x,e.Mat4.mul(x,e.Mat4.mul(x,C.cell.fromFractional,h),C.operators[l]),C.cell.toFractional)}c.setOperatorMatrix=f;function y(C,l,S,T,A){const x=f(C,l,S,T,A,e.Mat4.zero());return r.SymmetryOperator.create(r.SymmetryOperator.getSymmetryOperatorName(l,S,T,A),x,{hkl:e.Vec3.create(S,T,A),spgrOp:l})}c.getSymmetryOperator=y;const _=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)();function p(C,l,S,T,A,x){const M=e.Mat4.zero();e.Vec3.set(s,S,T,A),e.Vec3.floor(_,x),e.Mat4.copy(M,C.operators[l]),e.Vec3.floor(g,e.Vec3.transformMat4(g,x,M)),e.Mat4.getTranslation(d,M),e.Vec3.sub(d,d,g),e.Vec3.add(d,d,_),e.Vec3.add(d,d,s),e.Mat4.setTranslation(M,d),e.Mat4.mul(M,C.cell.fromFractional,M),e.Mat4.mul(M,M,C.cell.toFractional),e.Vec3.sub(a,g,_);const D=S-a[0],V=T-a[1],R=A-a[2];return r.SymmetryOperator.create(r.SymmetryOperator.getSymmetryOperatorName(l,D,V,R),M,{hkl:e.Vec3.create(D,V,R),spgrOp:l})}c.getSymmetryOperatorRef=p;
7function u(C){const l=t.TransformData[C[0]],S=t.TransformData[C[1]],T=t.TransformData[C[2]];return e.Mat4.ofRows([l,S,T,[0,0,0,1]])}function m(C){return[P(v(C[0],C[4],C[8]),b(C[12])),P(v(C[1],C[5],C[9]),b(C[13])),P(v(C[2],C[6],C[10]),b(C[14]))].join(",")}c.getOperatorXyz=m;function v(C,l,S){const T=[];if(C>0?T.push("+X"):C<0&&T.push("-X"),l>0?T.push("+Y"):l<0&&T.push("-Y"),S>0?T.push("+Z"):S<0&&T.push("-Z"),T.length===1)return T[0].charAt(0)==="+"?T[0].substr(1):T[0];if(T.length===2){const A=T[0].charAt(0),x=T[1].charAt(0);if(A==="+")return`${T[0].substr(1)}${T[1]}`;if(x==="+")return`${T[1].substr(1)}${T[0]}`}throw new Error(`unknown rotation '${T}', ${C} ${l} ${S}`)}function b(C){switch(C){case 1/2:return"1/2";case 1/4:return"1/4";case 3/4:return"3/4";case 1/3:return"1/3";case 2/3:return"2/3";case 1/6:return"1/6";case 5/6:return"5/6"}return""}function P(C,l){return l===""?C:C.length>2?`${C}+${l}`:C.charAt(0)==="-"?`${l}${C}`:`${l}+${C}`}})(i||(Sc.Spacegroup=i={})),Sc}var Zm={},JE;function Y$(){if(JE)return Zm;JE=1,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.Result=void 0;var e;return(function(t){function r(o,s,h){o.squaredDistances[o.count]=h,o.indices[o.count++]=s}t.add=r;function n(o){o.count=0}t.reset=n;function i(){return{count:0,indices:[],squaredDistances:[]}}t.create=i;function c(o,s){for(let h=0;h<s.count;++h)o.indices[h]=s.indices[h],o.squaredDistances[h]=s.squaredDistances[h];return o.count=s.count,o}t.copy=c})(e||(Zm.Result=e={})),Zm}var fC={},Jm={},eB;function Q$(){if(eB)return Jm;eB=1,Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.FibonacciHeap=void 0;class e{constructor(c,o){this.parent=null,this.child=null,this.degree=0,this.isMarked=!1,this.key=c,this.value=o,this.prev=this,this.next=this}}class t{constructor(c){if(this._index=-1,this._items=[],this._len=0,c){let o=c,s=0;do this._items[s++]=o,o=o.next;while(c!==o);this._len=s}}hasNext(){return this._index<this._len-1}next(){return this._items[++this._index]}reset(c){this._index=-1,this._len=0;let o=c,s=0;do this._items[s++]=o,o=o.next;while(c!==o);this._len=s}}const r=new t;class n{constructor(c){this._minNode=null,this._nodeCount=0,this._compare=c||this._defaultCompare}clear(){this._minNode=null,this._nodeCount=0}decreaseKey(c,o){if(!c)throw new Error("Cannot decrease key of non-existent node");if(this._compare({key:o},{key:c.key})>0)throw new Error("New key is larger than old key");c.key=o;const s=c.parent;s&&this._compare(c,s)<0&&(this._cut(c,s,this._minNode),this._cascadingCut(s,this._minNode)),this._compare(c,this._minNode)<0&&(this._minNode=c)}delete(c){const o=c.parent;o&&(this._cut(c,o,this._minNode),this._cascadingCut(o,this._minNode)),this._minNode=c,this.extractMinimum()}extractMinimum(){const c=this._minNode;if(c){if(c.child){let s=c.child;do s.parent=null,s=s.next;while(s!==c.child)}let o=null;c.next!==c&&(o=c.next),this._removeNodeFromList(c),this._nodeCount--,this._minNode=this._mergeLists(o,c.child),this._minNode&&(this._minNode=this._consolidate(this._minNode))}return c}findMinimum(){return this._minNode}insert(c,o){const s=new e(c,o);return this._minNode=this._mergeLists(this._minNode,s),this._nodeCount++,s}isEmpty(){return this._minNode===null}size(){return this._minNode===null?0:this._getNodeListSize(this._minNode)}union(c){this._minNode=this._mergeLists(this._minNode,c._minNode),this._nodeCount+=c._nodeCount}_defaultCompare(c,o){return c.key>o.key?1:c.key<o.key?-1:0}_cut(c,o,s){c.parent=null,o.degree--,c.next===c?o.child=null:o.child=c.next,this._removeNodeFromList(c);const h=this._mergeLists(s,c);return c.isMarked=!1,h}_cascadingCut(c,o){const s=c.parent;return s&&(c.isMarked?(o=this._cut(c,s,o),o=this._cascadingCut(s,o)):c.isMarked=!0),o}_consolidate(c){const o=[];for(r.reset(c);r.hasNext();){let h=r.next(),f=o[h.degree];for(;f;){if(this._compare(h,f)>0){const y=h;h=f,f=y}this._linkHeaps(f,h),o[h.degree]=null,h.degree++,f=o[h.degree]}o[h.degree]=h}let s=null;for(let h=0;h<o.length;h++){const f=o[h];f&&(f.next=f,f.prev=f,s=this._mergeLists(s,f))}return s}_removeNodeFromList(c){const o=c.prev,s=c.next;o.next=s,s.prev=o,c.next=c,c.prev=c}_linkHeaps(c,o){this._removeNodeFromList(c),o.child=this._mergeLists(c,o.child),c.parent=o,c.isMarked=!1}_mergeLists(c,o){if(!c)return o||null;if(!o)return c;const s=c.next;return c.next=o.next,c.next.prev=c,o.next=s,o.next.prev=o,this._compare(c,o)<0?c:o}_getNodeListSize(c){let o=0,s=c;do o++,s.child&&(o+=this._getNodeListSize(s.child)),s=s.next;while(s!==c);return o}}return Jm.FibonacciHeap=n,Jm}var ep={},tB;function Af(){if(tB)return ep;tB=1,Object.defineProperty(ep,"__esModule",{value:!0}),ep.memoizeLatest=e,ep.memoize1=t;function e(r){let n,i;return(...c)=>{if(!n||n.length!==c.length)return n=c,i=r.apply(void 0,c),i;for(let o=0,s=c.length;o<s;o++)if(c[o]!==n[o])return n=c,i=r.apply(void 0,c),i;return i}}function t(r){const n=new Map;return i=>{if(n.has(i))return n.get(i);const c=r(i);return n.set(i,c),c}}return ep}var tp={},rB;function CT(){if(rB)return tp;rB=1,Object.defineProperty(tp,"__esModule",{value:!0}),tp.Ray3D=t;const e=wt();function t(){return t.create(e.Vec3.create(0,0,0),e.Vec3.create(1,0,0))}return(function(r){function n(u,m){return{origin:u,direction:m}}r.create=n;function i(u,m){return e.Vec3.copy(u.origin,m.origin),e.Vec3.copy(u.direction,m.direction),u}r.copy=i;function c(u){return i(r(),u)}r.clone=c;function o(u,m,v){return e.Vec3.copy(u.origin,m.origin),e.Vec3.normalize(u.direction,e.Vec3.sub(u.direction,v,m.origin)),u}r.targetTo=o;function s(u,m,v){return e.Vec3.transformMat4(u.origin,m.origin,v),e.Vec3.transformDirection(u.direction,m.direction,v),u}r.transform=s;const h=(0,e.Vec3)();function f(u,m){const{center:v,radius:b}=m,{origin:P,direction:C}=u,l=e.Vec3.sub(h,P,v),S=e.Vec3.dot(C,C),T=2*e.Vec3.dot(l,C),A=e.Vec3.dot(l,l)-b*b,x=T*T-4*S*A;if(x<0)return-1;const M=(-T-Math.sqrt(x))/(2*S);return M<0?-1:M}function y(u,m,v){const b=f(m,v);return b<0?!1:(e.Vec3.scaleAndAdd(u,m.origin,m.direction,b),!0)}r.intersectSphere3D=y;function _(u,m){return f(u,m)>=0}r.isIntersectingSphere3D=_;function g(u,m){return e.Vec3.distance(u.origin,m.center)<m.radius}r.isInsideSphere3D=g;function a(u,m){const{origin:v,direction:b}=u,[P,C,l]=m.min,[S,T,A]=m.max,[x,M,D]=v,V=1/b[0],R=1/b[1],E=1/b[2];let I,B,w,O,F,L;return V>=0?(I=(P-x)*V,B=(S-x)*V):(I=(S-x)*V,B=(P-x)*V),R>=0?(w=(C-M)*R,O=(T-M)*R):(w=(T-M)*R,O=(C-M)*R),I>O||w>B||(w>I&&(I=w),O<B&&(B=O),E>=0?(F=(l-D)*E,L=(A-D)*E):(F=(A-D)*E,L=(l-D)*E),I>L||F>B)?-1:(F>I&&(I=F),L<B&&(B=L),I>=0?I:-1)}function d(u,m,v){const b=a(m,v);return b<0?!1:(e.Vec3.scaleAndAdd(u,m.origin,m.direction,b),!0)}r.intersectBox3D=d;function p(u,m){return a(u,m)>=0}r.isIntersectingBox3D=p})(t||(tp.Ray3D=t={})),tp}var nB;function jD(){if(nB)return fC;nB=1,Object.defineProperty(fC,"__esModule",{value:!0}),fC.GridLookup3D=s;const e=Y$(),t=os(),r=Ge(),n=at(),i=Q$(),c=Af(),o=CT();function s(A,x,M){return new h(A,x,M)}class h{find(x,M,D,V,R){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!1;const E=R??this.result;return a(this.ctx,E),E}nearest(x,M,D,V=1,R,E){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.k=V,this.ctx.stopIf=R;const I=E??this.result;return T(this.ctx,I),I}check(x,M,D,V){return this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!0,a(this.ctx,this.result)}approxNearest(x,M,D,V,R){this.ctx.x=x,this.ctx.y=M,this.ctx.z=D,this.ctx.radius=V,this.ctx.isCheck=!1;const E=R??this.result;return u(this.ctx,E),E}constructor(x,M,D){const V=_(x,M,D);this.ctx=g(V),this.boundary={box:V.boundingBox,sphere:V.boundingSphere},this.buckets={offset:V.bucketOffset,count:V.bucketCounts,array:V.bucketArray},this.result=e.Result.create()}}function f(A){const{expandedBox:x,size:[M,D,V],data:{x:R,y:E,z:I,radius:B,indices:w},elementCount:O,delta:F}=A,L=M*D*V,{min:[U,q,N]}=x;let k=0,j=0;const H=new Uint32Array(L),G=new Int32Array(O);for(let K=0;K<O;K++){const Q=n.OrderedSet.getAt(w,K),J=Math.floor((R[Q]-U)/F[0]),ae=Math.floor((E[Q]-q)/F[1]),te=Math.floor((I[Q]-N)/F[2]),ne=(J*D+ae)*V+te;(H[ne]+=1)===1&&(j+=1),G[K]=ne}if(B)for(let K=0;K<O;K++){const Q=n.OrderedSet.getAt(w,K);B[Q]>k&&(k=B[Q])}const z=new Int32Array(j);for(let K=0,Q=0;K<L;K++){const J=H[K];J>0&&(H[K]=Q+1,z[Q]=J,Q+=1)}const W=new Uint32Array(j);for(let K=1;K<j;++K)W[K]+=W[K-1]+z[K-1];const X=new Int32Array(j),Y=new Int32Array(O);for(let K=0;K<O;K++){const Q=H[G[K]];if(Q>0){const J=Q-1;Y[W[J]+X[J]]=K,X[J]+=1}}
7return{size:A.size,bucketArray:Y,bucketCounts:z,bucketOffset:W,grid:H,delta:F,min:A.expandedBox.min,data:A.data,maxRadius:k,expandedBox:A.expandedBox,boundingBox:A.boundingBox,boundingSphere:A.boundingSphere}}const y=2**24;function _(A,x,M){const D=t.Box3D.expand((0,t.Box3D)(),x.box,r.Vec3.create(.5,.5,.5)),{indices:V}=A,R=t.Box3D.size((0,r.Vec3)(),D);let E,I;const B=n.OrderedSet.size(V),w=typeof M=="number"?M:32,O=Array.isArray(M)&&M;if(O&&!r.Vec3.isZero(O))I=[Math.ceil(R[0]/O[0]),Math.ceil(R[1]/O[1]),Math.ceil(R[2]/O[2])],E=O;else if(B>0){const q=Math.ceil(B/w),N=Math.pow(q/(R[0]*R[1]*R[2]),1/3);I=[Math.ceil(R[0]*N),Math.ceil(R[1]*N),Math.ceil(R[2]*N)],E=[R[0]/I[0],R[1]/I[1],R[2]/I[2]]}else E=R,I=[1,1,1];const F=I[0]*I[1]*I[2];if(F>y){const q=Math.cbrt(F/y);I=[Math.ceil(I[0]/q),Math.ceil(I[1]/q),Math.ceil(I[2]/q)],E=[R[0]/I[0],R[1]/I[1],R[2]/I[2]]}const L={x:A.x,y:A.y,z:A.z,indices:V,radius:A.radius},U={size:I,data:L,expandedBox:D,boundingBox:x.box,boundingSphere:x.sphere,elementCount:B,delta:E};return f(U)}function g(A){return{grid:A,x:.1,y:.1,z:.1,k:1,stopIf:void 0,radius:.1,isCheck:!1}}function a(A,x){const{min:M,size:[D,V,R],bucketOffset:E,bucketCounts:I,bucketArray:B,grid:w,data:{x:O,y:F,z:L,indices:U,radius:q},delta:N,maxRadius:k}=A.grid,{radius:j,isCheck:H,x:G,y:z,z:W}=A,X=j+k,Y=X*X;e.Result.reset(x);const K=Math.max(0,Math.floor((G-X-M[0])/N[0])),Q=Math.max(0,Math.floor((z-X-M[1])/N[1])),J=Math.max(0,Math.floor((W-X-M[2])/N[2])),ae=Math.min(D-1,Math.floor((G+X-M[0])/N[0])),te=Math.min(V-1,Math.floor((z+X-M[1])/N[1])),ne=Math.min(R-1,Math.floor((W+X-M[2])/N[2]));if(K>ae||Q>te||J>ne)return!1;for(let $=K;$<=ae;$++)for(let ie=Q;ie<=te;ie++)for(let Z=J;Z<=ne;Z++){const re=w[($*V+ie)*R+Z];if(re===0)continue;const oe=re-1,ce=E[oe],ue=I[oe],pe=ce+ue;for(let he=ce;he<pe;he++){const fe=n.OrderedSet.getAt(U,B[he]),de=O[fe]-G,ge=F[fe]-z,Ce=L[fe]-W,ve=de*de+ge*ge+Ce*Ce;if(ve<=Y){if(k>0&&Math.sqrt(ve)-q[fe]>j)continue;if(H)return!0;e.Result.add(x,B[he],ve)}}}return x.count>0}function d(A){const x=[],M=A*2+1;for(let D=0;D<M;++D)for(let V=0;V<M;++V)for(let R=0;R<M;++R)x.push(r.Vec3.create(D-A,V-A,R-A));return x.sort((D,V)=>r.Vec3.squaredMagnitude(D)-r.Vec3.squaredMagnitude(V)),x.flat()}const p=(0,c.memoize1)(d);function u(A,x){const{min:M,size:[D,V,R],bucketOffset:E,bucketCounts:I,bucketArray:B,grid:w,data:{x:O,y:F,z:L,indices:U},delta:q}=A.grid,{radius:N,x:k,y:j,z:H}=A,G=N*N;e.Result.reset(x);const z=Math.max(0,Math.floor((k-N-M[0])/q[0])),W=Math.max(0,Math.floor((j-N-M[1])/q[1])),X=Math.max(0,Math.floor((H-N-M[2])/q[2])),Y=Math.min(D-1,Math.floor((k+N-M[0])/q[0])),K=Math.min(V-1,Math.floor((j+N-M[1])/q[1])),Q=Math.min(R-1,Math.floor((H+N-M[2])/q[2]));if(z>Y||W>K||X>Q)return!1;const J=Math.floor((k-M[0])/q[0]),ae=Math.floor((j-M[1])/q[1]),te=Math.floor((H-M[2])/q[2]),ne=p(Math.max(Y-z,K-W,Q-X)+1);for(let $=0,ie=ne.length;$<ie;$+=3){const Z=J+ne[$],re=ae+ne[$+1],oe=te+ne[$+2];if(Z<z||Z>Y||re<W||re>K||oe<X||oe>Q)continue;const ce=w[(Z*V+re)*R+oe];if(ce===0)continue;const ue=ce-1,pe=E[ue],he=I[ue],fe=pe+he;let de=Number.MAX_VALUE;for(let ge=pe;ge<fe;ge++){const Ce=n.OrderedSet.getAt(U,B[ge]),ve=O[Ce]-k,le=F[Ce]-j,me=L[Ce]-H,ee=ve*ve+le*le+me*me;ee<=G&&ee<de&&(e.Result.add(x,B[ge],ee),de=ee)}if(de!==Number.MAX_VALUE)return!0}return x.count>0}const m=(0,o.Ray3D)(),v=new Set,b=new Set,P=[.1],C=[.1],l=[.1],S=new i.FibonacciHeap;function T(A,x){const{min:M,expandedBox:D,boundingSphere:{center:V},size:[R,E,I],bucketOffset:B,bucketCounts:w,bucketArray:O,grid:F,data:{x:L,y:U,z:q,indices:N,radius:k},delta:j,maxRadius:H}=A.grid,{x:G,y:z,z:W,k:X,stopIf:Y}=A,K=n.OrderedSet.size(N);if(e.Result.reset(x),K===0||X<=0)return!1;let Q,J,ae,te=!1,ne=1,$=!0,ie=0,Z=P,re=C,oe=0,ce=!0,ue,pe=!1;const he=l,fe=H*H;Z.length=0,he.length=0,v.clear(),S.clear(),r.Vec3.set(m.origin,G,z,W),t.Box3D.containsVec3(D,m.origin)?(Q=Math.floor((G-M[0])/j[0]),J=Math.floor((z-M[1])/j[1]),ae=Math.floor((W-M[2])/j[2])):(o.Ray3D.targetTo(m,m,V),o.Ray3D.intersectBox3D(m.origin,m,D),Q=Math.max(0,Math.min(R-1,Math.floor((m.origin[0]-M[0])/j[0]))),J=Math.max(0,Math.min(E-1,Math.floor((m.origin[1]-M[1])/j[1]))),ae=Math.max(0,Math.min(I-1,Math.floor((m.origin[2]-M[2])/j[2]))));const de=H!==0?Math.max(1,Math.min(R-1,Math.ceil(H/j[0]))):1,ge=H!==0?Math.max(1,Math.min(E-1,Math.ceil(H/j[1]))):1,Ce=H!==0?Math.max(1,Math.min(I-1,Math.ceil(H/j[2]))):1;for(Z.push(Q,J,ae,(Q*E+J)*I+ae);x.count<K;){const ve=ne*4;for(let le=0;le<ve;le+=4)if(ue=Z[le+3],!v.has(ue)){v.add(ue),pe=v.size>=F.length;const me=F[ue];if(me!==0){const ee=oe,se=me-1,ye=B[se],Se=w[se],Ae=ye+Se;for(let _e=ye;_e<Ae;
7_e++){const be=O[_e],xe=n.OrderedSet.getAt(N,be),we=L[xe]-G,Be=U[xe]-z,Me=q[xe]-W;let Re=we*we+Be*Be+Me*Me;if(H!==0){const Te=k[xe];Re-=Te*Te}ce&&Re>oe&&(oe=Re),S.insert(Re,be)}ee<oe&&(ce=!1)}}re.length=0,ie=0,b.clear();for(let le=0;le<ve;le+=4){Q=Z[le],J=Z[le+1],ae=Z[le+2];for(let me=-de;me<=de;me++){const ee=Q+me;if(!(ee<0||ee>=R))for(let se=-ge;se<=ge;se++){const ye=J+se;if(!(ye<0||ye>=E))for(let Se=-Ce;Se<=Ce;Se++){const Ae=ae+Se;if(!(Ae<0||Ae>=I)&&(ue=(ee*E+ye)*I+Ae,!b.has(ue)&&(b.add(ue),!v.has(ue)))){if(!$){const _e=M[0]+ee*j[0]-G,be=M[1]+ye*j[1]-z,xe=M[2]+Ae*j[2]-W;if(_e*_e+be*be+xe*xe-fe>oe){he.push(ee,ye,Ae,ue);continue}}re.push(ee,ye,Ae,ue),ie++}}}}}if($=!1,ie===0){if(X===1){const le=S.findMinimum();if(le){const{key:me,value:ee}=le;return e.Result.add(x,ee,me),!0}}else for(;!S.isEmpty()&&(pe||S.findMinimum().key<=oe)&&x.count<X;){const le=S.extractMinimum(),me=le.key,ee=le.value;e.Result.add(x,ee,me),Y&&!te&&(te=Y(ee,me))}if(x.count>=X||te||x.count>=K)return x.count>0;if($=!0,ce=!0,he.length>0){for(let le=0,me=he.length;le<me;le++)Z.push(he[le]);he.length=0,ne=Z.length}}else{const le=Z;Z=re,re=le,ne=ie}}return x.count>0}return fC}var iB;function rt(){return iB||(iB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(UD(),e),t.__exportStar(eS(),e),t.__exportStar(hJ(),e),t.__exportStar(Y$(),e),t.__exportStar(jD(),e),t.__exportStar(os(),e),t.__exportStar(ja(),e),t.__exportStar(qD(),e)})(Y2)),Y2}var Ss={},Z2={},rp={},J2={},np={},aB;function GD(){if(aB)return np;aB=1,Object.defineProperty(np,"__esModule",{value:!0}),np.Location=void 0;const e=Ge();var t;return(function(r){function n(p,u,m){return{kind:"element-location",structure:p,unit:u,element:m||0}}r.create=n;function i(p){return n(p.structure,p.unit,p.element)}r.clone=i;function c(p,u,m,v){return u&&(p.structure=u),m&&(p.unit=m),v!==void 0&&(p.element=v),p}r.set=c;function o(p,u){return p.unit=u.unit,p.element=u.element,p}r.copy=o;function s(p){return!!p&&p.kind==="element-location"}r.is=s;function h(p,u){return p.unit===u.unit&&p.element===u.element}r.areEqual=h;const f=(0,e.Vec3)(),y=(0,e.Vec3)();function _(p,u){return p.unit.conformation.position(p.element,f),u.unit.conformation.position(u.element,y),e.Vec3.distance(f,y)}r.distance=_;function g(p,u){return u.unit.conformation.position(u.element,p)}r.position=g;function a(p){return p.unit.model.atomicHierarchy.residueAtomSegments.index[p.element]}r.residueIndex=a;function d(p){return p.unit.model.atomicHierarchy.chainAtomSegments.index[p.element]}r.chainIndex=d})(t||(np.Location=t={})),np}var ip={},ex={},mC={},oB;function gJ(){if(oB)return mC;oB=1,Object.defineProperty(mC,"__esModule",{value:!0}),mC.HashSet=t;class e{add(n){const i=this.getHash(n);if(this.byHash.has(i)){const c=this.byHash.get(i);for(let o=0,s=c.length;o<s;o++)if(this.areEqual(n,c[o]))return!1;return c[c.length]=n,this.size++,!0}else return this.byHash.set(i,[n]),this.size++,!0}has(n){const i=this.getHash(n);if(!this.byHash.has(i))return!1;const c=this.byHash.get(i);for(let o=0,s=c.length;o<s;o++)if(this.areEqual(n,c[o]))return!0;return!1}constructor(n,i){this.getHash=n,this.areEqual=i,this.size=0,this.byHash=new Map}}function t(r,n){return new e(r,n)}return mC}var pC={},sB;function zD(){if(sB)return pC;sB=1,Object.defineProperty(pC,"__esModule",{value:!0}),pC.LinkedList=e;function e(){return new r}function t(n){return{previous:null,next:null,inList:!0,value:n}}class r{constructor(){this.count=0,this.first=null,this.last=null}addFirst(i){const c=t(i);return c.inList=!0,this.first&&(this.first.previous=c),c.next=this.first,this.first=c,this.count++,this.last||(this.last=c),c}addLast(i){const c=t(i);return this.last!==null&&(this.last.next=c),c.previous=this.last,this.last=c,this.first===null&&(this.first=c),c.inList=!0,this.count++,c}removeFirst(){const i=this.first;if(i)return this.remove(i),i.value}removeLast(){const i=this.last;if(i)return this.remove(i),i.value}remove(i){i.inList&&(i.inList=!1,i.previous!==null?i.previous.next=i.next:i.previous===null&&(this.first=i.next),i.next!==null?i.next.previous=i.previous:i.next===null&&(this.last=i.previous),i.next=null,i.previous=null,this.count--)}find(i){let c=this.first;for(;c!==null;){if(c.value===i)return c;c=c.next}}}return pC}var ap={},cB;function HD(){if(cB)return ap;cB=1,Object.defineProperty(ap,"__esModule",{value:!0}),ap.UniqueArray=void 0;var e;return(function(t){function r(){return{keys:new Set,array:[]}}t.create=r;
7function n({keys:c,array:o},s,h){return c.has(s)?!1:(c.add(s),o[o.length]=h,!0)}t.add=n;function i({keys:c},o){return c.has(o)}t.has=i})(e||(ap.UniqueArray=e={})),ap}var uB;function ha(){return uB||(uB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(gJ(),e),t.__exportStar(zD(),e),t.__exportStar(HD(),e)})(ex)),ex}var op={},tx={},rx={},sp={},lB;function tS(){if(lB)return sp;lB=1,Object.defineProperty(sp,"__esModule",{value:!0}),sp.Type=void 0;var e;return(function(t){function r(h,f,y){return{kind:"variable",name:h,type:f,isConstraint:y}}t.Variable=r;function n(h,f,y){return{kind:"value",namespace:h,name:f,parent:y}}t.Value=n;function i(h,f,y,_){return{kind:"container",namespace:h,name:f,child:y,alias:_}}t.Container=i;function c(h){return{kind:"union",types:h}}t.Union=c;function o(h,f,y,_){const g=Object.create(null);for(const a of _)g[a]=!0;return{kind:"oneof",namespace:h,name:f,type:y,values:g}}t.OneOf=o,t.Any={kind:"any"},t.AnyValue={kind:"any-value"},t.Num=n("","Number"),t.Str=n("","String"),t.Bool=o("","Bool",t.Str,["true","false"]);function s({values:h}){return Object.keys(h).sort()}t.oneOfValues=s})(e||(sp.Type=e={})),sp}var uo={},cp={},dB;function PT(){if(dB)return cp;dB=1,Object.defineProperty(cp,"__esModule",{value:!0}),cp.Expression=void 0;var e;return(function(t){function r(f){return{name:f}}t.Symbol=r;function n(f,y){return y?{head:f,args:y}:{head:f}}t.Apply=n;function i(f){return!!f&&Array.isArray(f)}t.isArgumentsArray=i;function c(f){return!!f&&!Array.isArray(f)}t.isArgumentsMap=c;function o(f){return!s(f)&&!h(f)}t.isLiteral=o;function s(f){return!!f&&!!f.head&&typeof f=="object"}t.isApply=s;function h(f){return!!f&&typeof f.name=="string"}t.isSymbol=h})(e||(cp.Expression=e={})),cp}var fB;function Mf(){if(fB)return uo;fB=1,Object.defineProperty(uo,"__esModule",{value:!0}),uo.Arguments=void 0,uo.Argument=t,uo.MSymbol=n,uo.CustomPropSymbol=i,uo.isSymbol=c;const e=PT();function t(o,s){const{description:h=void 0,isOptional:f=!1,isRest:y=!1,defaultValue:_=void 0}=s||{};return{type:o,isOptional:f,isRest:y,defaultValue:_,description:h}}var r;(function(o){o.None=s({});function s(f){return{kind:"dictionary",map:f,"@type":0}}o.Dictionary=s;function h(f,y){const{nonEmpty:_=!1}=y||{};return{kind:"list",type:f,nonEmpty:_,"@type":0}}o.List=h})(r||(uo.Arguments=r={}));function n(o,s,h,f){const y=function(_){return e.Expression.Apply(e.Expression.Symbol(y.id),_)};return y.info={namespace:"",name:o,description:f},y.id="",y.args=s,y.type=h,y}function i(o,s,h,f){const y=function(_){return e.Expression.Apply(e.Expression.Symbol(y.id),_)};return y.info={namespace:o,name:s,description:f},y.id=`${o}.${s}`,y.args=r.None,y.type=h,y}function c(o){const s=o;return typeof s=="function"&&!!s.info&&!!s.args&&typeof s.info.namespace=="string"&&!!s.type}return uo}var Jl={},mB;function TT(){if(mB)return Jl;mB=1,Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.symbol=t,Jl.normalizeTable=r,Jl.symbolList=n;const e=Mf();function t(s,h,f){return(0,e.MSymbol)("",s,h,f)}function r(s){c("","",s)}function n(s){const h=[];return o(s,h),h}function i(s){const h=/([a-z])([A-Z])([a-z]|$)/g;return s.replace(h,(f,y,_,g)=>`${y}-${_.toLocaleLowerCase()}${g}`).replace(h,(f,y,_,g)=>`${y}-${_.toLocaleLowerCase()}${g}`)}function c(s,h,f){if((0,e.isSymbol)(f)){f.info.namespace=s,f.info.name=f.info.name||i(h),f.id=`${f.info.namespace}.${f.info.name}`;return}const y=`${f["@namespace"]||i(h)}`,_=s?`${s}.${y}`:y;for(const g of Object.keys(f))typeof f[g]!="object"&&!(0,e.isSymbol)(f[g])||c(_,g,f[g])}function o(s,h){if((0,e.isSymbol)(s)){h.push(s);return}for(const f of Object.keys(s))typeof s[f]!="object"&&!(0,e.isSymbol)(s[f])||o(s[f],h)}return Jl}var pB;function Z$(){return pB||(pB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SymbolMap=e.SymbolList=e.core=e.TTargs=e.Types=void 0;const t=tS(),r=Mf(),n=TT();var i;(function(m){m.AnyVar=t.Type.Variable("a",t.Type.Any),m.AnyValueVar=t.Type.Variable("a",t.Type.Any),m.ConstrainedVar=t.Type.Variable("a",t.Type.Any,!0),m.Regex=t.Type.Value("Core","Regex"),m.Set=v=>t.Type.Container("Core","Set",v||m.AnyValueVar),m.List=v=>t.Type.Container("Core","List",v||m.AnyVar),m.Fn=(v,b)=>t.Type.Container("Core","Fn",v||m.AnyVar,b),m.Flags=(v,b)=>t.Type.Container("Core","Flags",v,b),m.BitFlags=m.Flags(t.Type.Num,"BitFlags")})(i||(e.Types=i={}));function c(m,v){return(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(m)}),m,v)}function o(m,v){return(0,n.symbol)(r.Arguments.List(m,{nonEmpty:!0}),m,v)}function s(m,v,b){return(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(m),1:(0,r.Argument)(m)}),v,b)}e.TTargs=r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num),1:(0,r.Argument)(t.Type.Num)});const h={"@header":"Types",bool:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}),t.Type.Bool,"Convert a value to boolean."),num:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}
7),t.Type.Num,"Convert a value to number."),str:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.AnyValue)}),t.Type.Str,"Convert a value to string."),regex:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Str,{description:"Expression"}),1:(0,r.Argument)(t.Type.Str,{isOptional:!0,description:"Flags, e.g. 'i' for ignore case"})}),i.Regex,"Creates a regular expression from a string using the ECMAscript syntax."),list:(0,n.symbol)(r.Arguments.List(i.AnyVar),i.List()),set:(0,n.symbol)(r.Arguments.List(i.AnyValueVar),i.Set()),bitflags:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num)}),i.BitFlags,"Interpret a number as bitflags."),compositeKey:(0,n.symbol)(r.Arguments.List(t.Type.AnyValue),t.Type.AnyValue)},f={"@header":"Logic",not:c(t.Type.Bool),and:o(t.Type.Bool),or:o(t.Type.Bool)},y={"@header":"Control",eval:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Fn(i.AnyVar))}),i.AnyVar,"Evaluate a function."),fn:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.AnyVar)}),i.Fn(i.AnyVar),'Wrap an expression to a "lazy" function.'),if:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Bool,{description:"Condition"}),1:(0,r.Argument)(t.Type.Variable("a",t.Type.Any),{description:"If true"}),2:(0,r.Argument)(t.Type.Variable("b",t.Type.Any),{description:"If false"})}),t.Type.Union([t.Type.Variable("a",t.Type.Any),t.Type.Variable("b",t.Type.Any)])),assoc:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Str,{description:"Name"}),1:(0,r.Argument)(t.Type.Variable("a",t.Type.Any),{description:"Value to assign"})}),t.Type.Variable("a",t.Type.Any))},_={"@header":"Relational",eq:s(t.Type.Variable("a",t.Type.AnyValue,!0),t.Type.Bool),neq:s(t.Type.Variable("a",t.Type.AnyValue,!0),t.Type.Bool),lt:s(t.Type.Num,t.Type.Bool),lte:s(t.Type.Num,t.Type.Bool),gr:s(t.Type.Num,t.Type.Bool),gre:s(t.Type.Num,t.Type.Bool),inRange:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num,{description:"Value to test"}),1:(0,r.Argument)(t.Type.Num,{description:"Minimum value"}),2:(0,r.Argument)(t.Type.Num,{description:"Maximum value"})}),t.Type.Bool,"Check if the value of the 1st argument is >= 2nd and <= 3rd.")},g={"@header":"Math",add:o(t.Type.Num),sub:o(t.Type.Num),mult:o(t.Type.Num),div:s(t.Type.Num,t.Type.Num),pow:s(t.Type.Num,t.Type.Num),mod:s(t.Type.Num,t.Type.Num),min:o(t.Type.Num),max:o(t.Type.Num),cantorPairing:s(t.Type.Num,t.Type.Num),sortedCantorPairing:s(t.Type.Num,t.Type.Num),invertCantorPairing:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(t.Type.Num)}),i.List(t.Type.Num)),floor:c(t.Type.Num),ceil:c(t.Type.Num),roundInt:c(t.Type.Num),trunc:c(t.Type.Num),abs:c(t.Type.Num),sign:c(t.Type.Num),sqrt:c(t.Type.Num),cbrt:c(t.Type.Num),sin:c(t.Type.Num),cos:c(t.Type.Num),tan:c(t.Type.Num),asin:c(t.Type.Num),acos:c(t.Type.Num),atan:c(t.Type.Num),sinh:c(t.Type.Num),cosh:c(t.Type.Num),tanh:c(t.Type.Num),exp:c(t.Type.Num),log:c(t.Type.Num),log10:c(t.Type.Num),atan2:s(t.Type.Num,t.Type.Num)},a={"@header":"Strings",concat:o(t.Type.Str),match:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Regex),1:(0,r.Argument)(t.Type.Str)}),t.Type.Bool)},d={"@header":"Lists",getAt:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.List()),1:(0,r.Argument)(t.Type.Num)}),i.AnyVar),equal:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.List()),1:(0,r.Argument)(i.List())}),t.Type.Bool)},p={"@header":"Sets",has:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Set(i.ConstrainedVar)),1:(0,r.Argument)(i.ConstrainedVar)}),t.Type.Bool,"Check if the the 1st argument includes the value of the 2nd."),isSubset:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Set(i.ConstrainedVar)),1:(0,r.Argument)(i.Set(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument is a subset of the 2nd.")},u={"@header":"Flags",hasAny:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Flags(i.ConstrainedVar)),1:(0,r.Argument)(i.Flags(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument has at least one of the 2nd one's flags."),hasAll:(0,n.symbol)(r.Arguments.Dictionary({0:(0,r.Argument)(i.Flags(i.ConstrainedVar)),1:(0,r.Argument)(i.Flags(i.ConstrainedVar))}),t.Type.Bool,"Check if the the 1st argument has all 2nd one's flags.")};e.core={"@header":"Language Primitives",type:h,logic:f,ctrl:y,rel:_,math:g,str:a,list:d,set:p,flags:u},(0,n.normalizeTable)(e.core),e.SymbolList=(0,n.symbolList)(e.core),e.SymbolMap=(function(){const m=Object.create(null);for(const v of e.SymbolList)m[v.id]=v;return m})()})(rx)),rx}var Cc={},hB;function WD(){if(hB)return Cc;hB=1,Object.defineProperty(Cc,"__esModule",{value:!0}),Cc.structureQuery=Cc.Types=void 0;const e=At,t=tS(),r=e.__importStar(Z$()),n=Mf(),i=TT();var c;(function(m){m.ElementSymbol=t.Type.Value("Structure","ElementSymbol"),m.AtomName=t.Type.Value("Structure","AtomName"),m.BondFlag=t.Type.OneOf("Structure","BondFlag",t.Type.Str,["covalent","metallic","ion","hydrogen","sulfide","computed","aromatic"]),m.BondFlags=r.Types.Flags(m.BondFlag,"BondFlags"),m.SecondaryStructureFlag=t.Type.OneOf("Structure","SecondaryStructureFlag",t.Type.Str,["alpha","beta","3-10","pi","sheet","strand","helix","turn","none"]),m.SecondaryStructureFlags=r.Types.Flags(m.SecondaryStructureFlag,"SecondaryStructureFlag"),m.RingFingerprint=t.Type.Value("Structure","RingFingerprint"),m.EntityType=t.Type.OneOf("Structure","EntityType",t.Type.Str,["polymer","non-polymer","water","branched"]),m.
7EntitySubtype=t.Type.OneOf("Structure","EntitySubtype",t.Type.Str,["other","polypeptide(D)","polypeptide(L)","polydeoxyribonucleotide","polyribonucleotide","polydeoxyribonucleotide/polyribonucleotide hybrid","cyclic-pseudo-peptide","peptide nucleic acid","oligosaccharide"]),m.ObjectPrimitive=t.Type.OneOf("Structure","ObjectPrimitive",t.Type.Str,["atomistic","sphere","gaussian","other"]),m.ResidueId=t.Type.Value("Structure","ResidueId"),m.ElementSet=t.Type.Value("Structure","ElementSet"),m.ElementSelection=t.Type.Value("Structure","ElementSelection"),m.ElementReference=t.Type.Value("Structure","ElementReference"),m.ElementSelectionQuery=r.Types.Fn(m.ElementSelection,"ElementSelectionQuery")})(c||(Cc.Types=c={}));const o={"@header":"Types",elementSymbol:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str)}),c.ElementSymbol,"Create element symbol representation from a string value."),atomName:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.AnyValue)}),c.AtomName,"Convert a value to an atom name."),entityType:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.EntityType)}),c.EntityType,`Create normalized representation of entity type: ${t.Type.oneOfValues(c.EntityType).join(", ")}.`),bondFlags:(0,i.symbol)(n.Arguments.List(c.BondFlag),c.BondFlags,`Create bond flags representation from a list of strings. Allowed flags: ${t.Type.oneOfValues(c.BondFlag).join(", ")}.`),ringFingerprint:(0,i.symbol)(n.Arguments.List(c.ElementSymbol,{nonEmpty:!0}),c.RingFingerprint,"Create ring fingerprint from the supplied atom element list."),secondaryStructureFlags:(0,i.symbol)(n.Arguments.List(c.SecondaryStructureFlag),c.SecondaryStructureFlags,`Create secondary structure flags representation from a list of strings. Allowed flags: ${t.Type.oneOfValues(c.SecondaryStructureFlag).join(", ")}.`),authResidueId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str,{description:"auth_asym_id"}),1:(0,n.Argument)(t.Type.Num,{description:"auth_seq_id"}),2:(0,n.Argument)(t.Type.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),c.ResidueId,'Residue identifier based on "auth_" annotation.'),labelResidueId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Str,{description:"label_entity_id"}),1:(0,n.Argument)(t.Type.Str,{description:"label_asym_id"}),2:(0,n.Argument)(t.Type.Num,{description:"label_seq_id"}),3:(0,n.Argument)(t.Type.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),c.ResidueId,`Residue identifier based on mmCIF's "label_" annotation.`)},s={"@header":"Iteration Slots",element:(0,i.symbol)(n.Arguments.None,c.ElementReference,"A reference to the current element."),elementSetReduce:(0,i.symbol)(n.Arguments.None,t.Type.Variable("a",t.Type.AnyValue,!0),"Current value of the element set reducer.")},h={"@header":"Generators",all:(0,i.symbol)(n.Arguments.None,c.ElementSelectionQuery,"The entire structure."),atomGroups:(0,i.symbol)(n.Arguments.Dictionary({"entity-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every entity"}),"chain-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every chain"}),"residue-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom every residue"}),"atom-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0}),"group-by":(0,n.Argument)(t.Type.Any,{isOptional:!0,defaultValue:"atom-key",description:"Group atoms to sets based on this property. Default: each atom has its own set"})}),c.ElementSelectionQuery,"Return all atoms for which the tests are satisfied, grouped into sets."),bondedAtomicPairs:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds",description:"Test each bond with this predicate. Each bond is visited twice with swapped atom order."})}),c.ElementSelectionQuery,"Return all pairs of atoms for which the test is satisfied."),rings:(0,i.symbol)(n.Arguments.Dictionary({fingerprint:(0,n.Argument)(c.RingFingerprint,{isOptional:!0}),"only-aromatic":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1})}),c.ElementSelectionQuery,"Return all rings or those with the specified fingerprint and/or only aromatic rings."),queryInSelection:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),query:(0,n.Argument)(c.ElementSelectionQuery),"in-complement":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1})}),c.ElementSelectionQuery,"Executes query only on atoms that are in the source selection."),empty:(0,i.symbol)(n.Arguments.None,c.ElementSelectionQuery,"Nada.")},f={"@header":"Selection Modifications",queryEach:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),query:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Query every atom set in the input selection separately."),intersectBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Intersect each atom set from the first sequence from atoms in the second one."),exceptBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Remove all atoms from 'selection' that occur in 'by'."),unionBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"For each atom set A in the orginal sequence, combine all atoms sets in the target selection that intersect with A."),union:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Collects all atom sets in the sequence into a single atom set."),cluster:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),"min-distance":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0}),"max-distance":(0,n.Argument)(t.Type.Num),"min-size":(0,n.Argument)(t.Type.Num,{description:"Minimal number of sets to merge, must be at least 2",isOptional:!0,defaultValue:2}),"max-size":(0,n.Argument)(t.Type.Num,{description:"Maximal number of sets to merge, if not set, no limit",isOptional:!0})}),c.ElementSelectionQuery,"Combines atom sets that have mutual distance in the interval [min-radius, max-radius]. Minimum/maximum size determines how many atom sets can be combined."),includeSurroundings:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),radius:(0,n.Argument)(t.Type.Num),"atom-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),"as-whole-residues":(0,n.Argument)(t.Type.Bool,{isOptional:!0})}),c.ElementSelectionQuery,"For each atom set in the selection, include all surrouding atoms/residues that are within the specified radius."),surroundingLigands:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),radius:(0,n.Argument)(t.Type.Num),"include-water":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0})}),c.ElementSelectionQuery,"Find all ligands components around the source query."),includeConnected:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),"bond-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),"layer-count":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:1,description:"Number of bonded layers to include."}),"fixed-point":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"Continue adding layers as long as new connections exist."}),"as-whole-residues":(0,n.Argument)(t.Type.Bool,{isOptional:!0})}),c.ElementSelectionQuery,"Pick all atom sets that are connected to the target."),wholeResidues:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Expand the selection to whole residues."),expandProperty:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),property:(0,n.Argument)(t.Type.AnyValue)}),c.ElementSelectionQuery,"To each atom set in the selection, add all atoms that have the same property value that was already present in the set.")},y={"@header":"Selection Filters",pick:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),test:(0,n.Argument)(t.Type.Bool)}),c.ElementSelectionQuery,"Pick all atom sets that satisfy the test."),first:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Take the 1st atom set in the sequence."),withSameAtomProperties:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),source:(0,n.Argument)(c.ElementSelectionQuery),property:(0,n.Argument)(t.Type.Any)}),c.ElementSelectionQuery,"Pick all atom sets for which the set of given atom properties is a subset of the source properties."),intersectedBy:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),by:(0,n.Argument)(c.ElementSelectionQuery)}),c.ElementSelectionQuery,"Pick all atom sets that have non-zero intersection with the target."),within:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),target:(0,n.Argument)(c.ElementSelectionQuery),"min-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0}),"max-radius":(0,n.Argument)(t.Type.Num),"atom-radius":(0,n.Argument)(t.Type.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),invert:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"If true, pick only atom sets that are further than the specified radius."})}),c.ElementSelectionQuery,"Pick all atom sets from selection that have any atom within the radius of any atom from target."),isConnectedTo:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery),target:(0,n.Argument)(c.ElementSelectionQuery),"bond-test":(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),disjunct:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!0,description:"If true, there must exist a bond to an atom that lies outside the given atom set to pass test."}),invert:(0,n.Argument)(t.Type.Bool,{isOptional:!0,defaultValue:!1,description:"If true, return atom sets that are not connected."})}),c.ElementSelectionQuery,"Pick all atom sets that are connected to the target.")},_={"@header":"Selection Combinators",intersect:(0,i.symbol)(n.Arguments.List(c.ElementSelectionQuery),c.ElementSelectionQuery,"Return all unique atom sets that appear in all of the source selections."),merge:(0,i.symbol)(n.Arguments.List(c.ElementSelectionQuery),c.ElementSelectionQuery,"Merges multiple selections into a single one. Only unique atom sets are kept."),distanceCluster:(0,i.symbol)(n.Arguments.Dictionary({matrix:(0,n.Argument)(r.Types.List(r.Types.List(t.Type.Num)),{description:"Distance matrix, represented as list of rows (num[][])). Lower triangle is min distance, upper triangle is max distance."}),selections:(0,n.Argument)(r.Types.List(c.ElementSelectionQuery),{description:"A list of held selections."})}),c.ElementSelectionQuery,"Pick combinations of atom sets from the source sequences that are mutually within distances specified by a matrix.")},g={"@header":"Atom Sets",atomCount:(0,i.symbol)(n.Arguments.None,t.Type.Num),countQuery:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementSelectionQuery)}
7),t.Type.Num,"Counts the number of occurences of a specific query inside the current atom set."),reduce:(0,i.symbol)(n.Arguments.Dictionary({initial:(0,n.Argument)(t.Type.Variable("a",t.Type.AnyValue,!0),{description:"Initial value assigned to slot.atom-set-reduce. Current atom is set to the 1st atom of the current set for this."}),value:(0,n.Argument)(t.Type.Variable("a",t.Type.AnyValue,!0),{description:"Expression executed for each atom in the set"})}),t.Type.Variable("a",t.Type.AnyValue,!0),"Execute the value expression for each atom in the current atom set and return the result. Works the same way as Array.reduce in JavaScript (``result = value(value(...value(initial)))``)"),propertySet:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(r.Types.ConstrainedVar)}),r.Types.Set(r.Types.ConstrainedVar),"Returns a set with all values of the given property in the current atom set.")},a={"@header":"Atom Properties",core:{"@header":"Core Properties",elementSymbol:p(c.ElementSymbol),vdw:p(t.Type.Num,"Van der Waals radius"),mass:p(t.Type.Num,"Atomic weight"),atomicNumber:p(t.Type.Num,"Atomic number"),x:p(t.Type.Num,"Cartesian X coordinate"),y:p(t.Type.Num,"Cartesian Y coordinate"),z:p(t.Type.Num,"Cartesian Z coordinate"),atomKey:p(t.Type.AnyValue,"Unique value for each atom. Main use case is grouping of atoms."),bondCount:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"}),flags:(0,n.Argument)(c.BondFlags,{isOptional:!0,defaultValue:"covalent"})}
7),t.Type.Num,"Number of bonds (by default only covalent bonds are counted)."),sourceIndex:p(t.Type.Num,"Index of the atom/element in the input file."),operatorName:p(t.Type.Str,"Name of the symmetry operator applied to this element."),instanceId:p(t.Type.Str,"Canonical name of the symmetry operator applied to this element."),operatorKey:p(t.Type.Num,"Key of the symmetry operator applied to this element."),modelIndex:p(t.Type.Num,"Index of the model in the input file."),modelLabel:p(t.Type.Str,"Label/header of the model in the input file."),modelEntryId:p(t.Type.Str,"Entry ID of the model (e.g., PDB ID).")},topology:{connectedComponentKey:p(t.Type.AnyValue,"Unique value for each connected component.")},macromolecular:{"@header":"Macromolecular Properties (derived from the mmCIF format)",authResidueId:p(c.ResidueId,"type.auth-residue-id symbol executed on current atom's residue"),labelResidueId:p(c.ResidueId,"type.label-residue-id symbol executed on current atom's residue"),residueKey:p(t.Type.AnyValue,"Unique value for each tuple ``(label_entity_id,auth_asym_id, auth_seq_id, pdbx_PDB_ins_code)``, main use case is grouping of atoms"),chainKey:p(t.Type.AnyValue,"Unique value for each tuple ``(label_entity_id, auth_asym_id)``, main use case is grouping of atoms"),entityKey:p(t.Type.AnyValue,"Unique value for each tuple ``label_entity_id``, main use case is grouping of atoms"),isHet:p(t.Type.Bool,"Equivalent to atom_site.group_PDB !== ATOM"),id:p(t.Type.Num,"_atom_site.id"),label_atom_id:p(c.AtomName),label_alt_id:p(t.Type.Str),label_comp_id:p(t.Type.Str),label_asym_id:p(t.Type.Str),label_entity_id:p(t.Type.Str),label_seq_id:p(t.Type.Num),auth_atom_id:p(c.AtomName),auth_comp_id:p(t.Type.Str),auth_asym_id:p(t.Type.Str),auth_seq_id:p(t.Type.Num),residueSourceIndex:p(t.Type.Num),pdbx_PDB_ins_code:p(t.Type.Str),pdbx_formal_charge:p(t.Type.Num),occupancy:p(t.Type.Num),B_iso_or_equiv:p(t.Type.Num),entityType:p(c.EntityType,"Type of the entity as defined in mmCIF (polymer, non-polymer, branched, water)"),entitySubtype:p(c.EntitySubtype,"Subtype of the entity as defined in mmCIF _entity_poly.type and _pdbx_entity_branch.type (other, polypeptide(D), polypeptide(L), polydeoxyribonucleotide, polyribonucleotide, polydeoxyribonucleotide/polyribonucleotide hybrid, cyclic-pseudo-peptide, peptide nucleic acid, oligosaccharide)"),entityPrdId:p(t.Type.Str,"The PRD ID of the entity."),entityDescription:p(r.Types.List(t.Type.Str)),objectPrimitive:p(c.ObjectPrimitive,"Type of the primitive object used to model this segment as defined in mmCIF/IHM (atomistic, sphere, gaussian, other)"),secondaryStructureKey:p(t.Type.AnyValue,"Unique value for each secondary structure element."),secondaryStructureFlags:p(c.SecondaryStructureFlags),isModified:p(t.Type.Bool,"True if the atom belongs to modification of a standard residue."),modifiedParentName:p(t.Type.Str,"'3-letter' code of the modifed parent residue."),isNonStandard:p(t.Type.Bool,"True if this is a non-standard residue."),chemCompType:p(t.Type.Str,"Type of the chemical component as defined in mmCIF.")},ihm:{hasSeqId:(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(t.Type.Num)}),t.Type.Bool,"Checks if the current element represents a given sequence id"),overlapsSeqIdRange:(0,i.symbol)(n.Arguments.Dictionary({beg:(0,n.Argument)(t.Type.Num),end:(0,n.Argument)(t.Type.Num)}),t.Type.Bool,"Checks if the current element overlaps with the specified residue range")}},d={"@header":"Bond Properties",flags:u(c.BondFlags),order:u(t.Type.Num),key:u(t.Type.Num),length:u(t.Type.Num),atomA:u(c.ElementReference),atomB:u(c.ElementReference)};function p(m,v){return(0,i.symbol)(n.Arguments.Dictionary({0:(0,n.Argument)(c.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"})}),m,v)}function u(m,v){return(0,i.symbol)(n.Arguments.None,m,v)}return Cc.structureQuery={"@header":"Structure Queries",type:o,slot:s,generator:h,modifier:f,filter:y,combinator:_,atomSet:g,atomProperty:a,bondProperty:d},Cc}var up={},gB;function yJ(){if(gB)return up;gB=1,Object.defineProperty(up,"__esModule",{value:!0}),up.internal=void 0;const e=At,t=tS(),r=e.__importStar(WD()),n=Mf(),i=TT(),c={"@header":"Generators",bundleElement:(0,i.symbol)(n.Arguments.Dictionary({groupedUnits:(0,n.Argument)(t.Type.Any),set:(0,n.Argument)(t.Type.Any),ranges:(0,n.Argument)(t.Type.Any)}),t.Type.Any),bundle:(0,i.symbol)(n.Arguments.Dictionary({elements:(0,n.Argument)(t.Type.Any)}),r.Types.ElementSelectionQuery,"A selection with single structure containing represented by the bundle."),current:(0,i.symbol)(n.Arguments.None,r.Types.ElementSelectionQuery,"Current selection provided by the query context. Avoid using this in State Transforms.")};return up.internal={"@header":"Internal Queries",generator:c},up}var yB;function $D(){return yB||(yB=1,(function(e){Object.defineProperty(e,"__esMo
7dule",{value:!0}),e.MolScriptSymbolTable=e.SymbolMap=e.SymbolList=void 0;const t=Z$(),r=WD(),n=yJ(),i=TT(),c={core:t.core,structureQuery:r.structureQuery,internal:n.internal};e.MolScriptSymbolTable=c,(0,i.normalizeTable)(c),e.SymbolList=(0,i.symbolList)(c),e.SymbolMap=(function(){const o=Object.create(null);for(const s of e.SymbolList)o[s.id]=s;return o})()})(tx)),tx}var vB;function dr(){if(vB)return op;vB=1,Object.defineProperty(op,"__esModule",{value:!0}),op.MolScriptBuilder=void 0;const e=$D();var t;return(function(r){r.core=e.MolScriptSymbolTable.core,r.struct=e.MolScriptSymbolTable.structureQuery,r.internal=e.MolScriptSymbolTable.internal;function n(P){return r.struct.type.atomName([P])}r.atomName=n;function i(P){return r.struct.type.elementSymbol([P])}r.es=i;function c(...P){return r.core.type.list(P)}r.list=c;function o(...P){return r.core.type.set(P)}r.set=o;function s(P,C){return r.core.type.regex([P,C])}r.re=s;function h(P){return r.core.ctrl.fn([P])}r.fn=h;function f(P){return r.core.ctrl.eval([P])}r.evaluate=f;const y=r.struct.atomProperty.core,_=r.struct.atomProperty.macromolecular,g=r.struct.atomProperty.topology;function a(P){return y[P]()}r.acp=a;function d(P){return g[P]()}r.atp=d;function p(P){return _[P]()}r.ammp=p;const u=r.struct.atomSet.propertySet;function m(P){return u([a(P)])}r.acpSet=m;function v(P){return u([d(P)])}r.atpSet=v;function b(P){return u([p(P)])}r.ammpSet=b})(t||(op.MolScriptBuilder=t={})),op}var ed={},lp={},nx={},td={},bB;function rS(){if(bB)return td;bB=1,Object.defineProperty(td,"__esModule",{value:!0}),td.CentroidHelper=void 0;const e=wt(),t=ja(),r=e.Vec3.add,n=e.Vec3.squaredDistance,i=e.Vec3.distance;class c{reset(){e.Vec3.set(this.center,0,0,0),this.radiusSq=0,this.count=0}includeStep(s){r(this.center,this.center,s),this.count++}finishedIncludeStep(){this.count!==0&&e.Vec3.scale(this.center,this.center,1/this.count)}radiusStep(s){const h=n(s,this.center);h>this.radiusSq&&(this.radiusSq=h)}radiusSphereStep(s,h){const f=i(s,this.center)+h,y=f*f;y>this.radiusSq&&(this.radiusSq=y)}getSphere(s){return s||(s=(0,t.Sphere3D)()),e.Vec3.copy(s.center,this.center),s.radius=Math.sqrt(this.radiusSq),s}getCount(){return this.count}constructor(){this.count=0,this.center=(0,e.Vec3)(),this.radiusSq=0}}return td.CentroidHelper=c,(function(o){const s=new o,h=(0,e.Vec3)(),f=(0,e.Vec3)();function y({x:a,y:d,z:p},u){s.reset();const m=a.length;for(let v=0;v<m;v++)e.Vec3.set(h,a[v],d[v],p[v]),s.includeStep(h);s.finishedIncludeStep();for(let v=0;v<m;v++)e.Vec3.set(h,a[v],d[v],p[v]),s.radiusStep(h);return e.Vec3.copy(u.center,s.center),u.radius=Math.sqrt(s.radiusSq),u}o.fromArrays=y;function _(a,d,p){s.reset();for(let u=0;u<a;u++)d(u,h),s.includeStep(h);s.finishedIncludeStep();for(let u=0;u<a;u++)d(u,h),s.radiusStep(h);return e.Vec3.copy(p.center,s.center),p.radius=Math.sqrt(s.radiusSq),p}o.fromProvider=_;function g(a,d,p){s.reset();for(let u=0;u<a;u++)d(u,h,f),s.includeStep(h),s.includeStep(f);s.finishedIncludeStep();for(let u=0;u<a;u++)d(u,h,f),s.radiusStep(h),s.radiusStep(f);return e.Vec3.copy(p.center,s.center),p.radius=Math.sqrt(s.radiusSq),p}o.fromPairProvider=g})(c||(td.CentroidHelper=c={})),td}var Cs={},rd={},_B;function xT(){if(_B)return rd;_B=1,Object.defineProperty(rd,"__esModule",{value:!0}),rd.InterUnitGraph=void 0;const e=ha(),t=_t();class r{getConnectedUnits(c){return this.map.has(c)?this.map.get(c):n}getEdgeIndex(c,o,s,h){const f=this.edgeKeyIndex.get(r.getEdgeUnitKey(o,h));if(f===void 0)return-1;const y=f.get(r.getEdgeIndexKey(c,s));return y!==void 0?y:-1}hasEdge(c,o,s,h){return this.getEdgeIndex(c,o,s,h)!==-1}getEdge(c,o,s,h){const f=this.getEdgeIndex(c,o,s,h);return f!==-1?this.edges[f]:void 0}getEdgeIndices(c,o){return this.vertexKeyIndex.get(r.getVertexKey(c,o))||[]}constructor(c){this.map=c;let o=0;const s=[],h=new Map,f=new Map;this.map.forEach(y=>{y.forEach(_=>{o+=_.edgeCount,_.connectedIndices.forEach(g=>{_.getEdges(g).forEach(a=>{const{unitA:d,unitB:p}=_,u=r.getEdgeIndexKey(d,p),m=r.getEdgeIndexKey(g,a.indexB),v=h.get(u);v===void 0?h.set(u,new Map([[m,s.length]])):v.set(m,s.length);const b=r.getVertexKey(g,d),P=f.get(b);P===void 0?f.set(b,[s.length]):P.push(s.length),s.push({...a,indexA:g,unitA:d,unitB:p})})})})}),this.edgeCount=o,this.edges=s,this.edgeKeyIndex=h,this.vertexKeyIndex=f}}rd.InterUnitGraph=r,(function(i){class c{hasEdges(g){return this.edgeMap.has(g)}getEdges(g){return this.edgeMap.has(g)?this.edgeMap.get(g):n}get areUnitsOrdered(){return this.unitA<this.unitB}constructor(g,a,d,p,u){this.unitA=g,this.unitB=a,this.edgeCount=d,this.connectedIndices=p,this.edgeMap=u}}i.UnitPairEdges=c;function o(_,g){return(0,t.cantorPairing)(_,g)}i.getEdgeUnitKey=o;function s(_,g){return(0,t.cantorPairing)(_,g)}i.getEdgeIndexKey=s;function h(_,g){return(0,t.cantorPairing)(_,g)}i.getVertexKey=h;function f(_,g,a){_.has(g)?_.get(g).push(a):_.set(g,[a])}class y{constructor(){this.map=new Map}startUnitPair(g,a){this.uA=g,this.uB=a,this.mapAB=new Map,this.mapBA=new Map,this.linkedA=e.UniqueArray.create(),this.linkedB=e.UniqueArray.create(),this.linkCount=0}finishUnitPair(){this.linkCount!==0&&(f(this.map,this.uA,new c(this.uA,this.uB,this.linkCount,this.linkedA.array,this.mapAB)),f(this.map,this.uB,new c(this.uB,this.uA,this.linkCount,this.linkedB.array,this.mapBA)))}add(g,a,d){f(this.mapAB,g,{indexB:a,props:d}),f(this.mapBA,a,{indexB:g,props:d}),e.UniqueArray.add(this.linkedA,g,g),e.UniqueArray.add(this.linkedB,a,a),this.linkCount+=1}getMap(){return this.map}}i.Builder=y})(r||(rd.InterUnitGraph=r={}));const n=[];return rd}var SB;function XD(){if(SB)return Cs;SB=1,Object.defineProperty(Cs,"__esModule",{value:!0}),Cs.InterUnitBonds=Cs.IntraUnitBonds=void 0;const e=is(),t=Zn(),r=xT();var n;(function(c){c.Empty=e.IntAdjacencyGraph.create([],[],[],0,{flags:[],order:[],key:[]})})(n||(Cs.IntraUnitBonds=n={}));class i extends r.InterUnitGraph{getBondFromLocation(o){return t.Unit.isAtomic(o.aUnit)&&t.Unit.isAtomic(o.bUnit)?this.getEdge(o.aIndex,o.aUnit.id,o.bIndex,o.bUnit.id):void 0}getBondIndexFromLocation(o){return t.Unit.isAtomic(o.aUnit)&&t.Unit.isAtomic(o.bUnit)?this.getEdgeIndex(o.aIndex,o.aUnit.id,o.bIndex,o.bUnit.id):-1}}return Cs.InterUnitBonds=i,(function(c){class o extends r.InterUnitGraph.UnitPairEdges{}c.UnitPairBonds=o})(i||(Cs.InterUnitBonds=i={})),Cs}var hC={},ix={},CB;function AT(){return CB||(CB=1,(function(e){Object.defineProperty(e,"__esMo
7dule",{value:!0}),e.MetalsSet=e.DefaultBondComputationProps=e.DefaultBondMaxRadius=void 0,e.getElementIdx=o,e.getElementPairThreshold=s,e.getElementThreshold=h,e.getPairingThreshold=f,e.isHydrogen=_,e.DefaultBondMaxRadius=4,e.DefaultBondComputationProps={forceCompute:!1,noCompute:!1,maxRadius:e.DefaultBondMaxRadius};const t={H:0,h:0,D:0,d:0,T:0,t:0,He:2,HE:2,he:2,Li:3,LI:3,li:3,Be:4,BE:4,be:4,B:5,b:5,C:6,c:6,N:7,n:7,O:8,o:8,F:9,f:9,Ne:10,NE:10,ne:10,Na:11,NA:11,na:11,Mg:12,MG:12,mg:12,Al:13,AL:13,al:13,Si:14,SI:14,si:14,P:15,p:15,S:16,s:16,Cl:17,CL:17,cl:17,Ar:18,AR:18,ar:18,K:19,k:19,Ca:20,CA:20,ca:20,Sc:21,SC:21,sc:21,Ti:22,TI:22,ti:22,V:23,v:23,Cr:24,CR:24,cr:24,Mn:25,MN:25,mn:25,Fe:26,FE:26,fe:26,Co:27,CO:27,co:27,Ni:28,NI:28,ni:28,Cu:29,CU:29,cu:29,Zn:30,ZN:30,zn:30,Ga:31,GA:31,ga:31,Ge:32,GE:32,ge:32,As:33,AS:33,as:33,Se:34,SE:34,se:34,Br:35,BR:35,br:35,Kr:36,KR:36,kr:36,Rb:37,RB:37,rb:37,Sr:38,SR:38,sr:38,Y:39,y:39,Zr:40,ZR:40,zr:40,Nb:41,NB:41,nb:41,Mo:42,MO:42,mo:42,Tc:43,TC:43,tc:43,Ru:44,RU:44,ru:44,Rh:45,RH:45,rh:45,Pd:46,PD:46,pd:46,Ag:47,AG:47,ag:47,Cd:48,CD:48,cd:48,In:49,IN:49,in:49,Sn:50,SN:50,sn:50,Sb:51,SB:51,sb:51,Te:52,TE:52,te:52,I:53,i:53,Xe:54,XE:54,xe:54,Cs:55,CS:55,cs:55,Ba:56,BA:56,ba:56,La:57,LA:57,la:57,Ce:58,CE:58,ce:58,Pr:59,PR:59,pr:59,Nd:60,ND:60,nd:60,Pm:61,PM:61,pm:61,Sm:62,SM:62,sm:62,Eu:63,EU:63,eu:63,Gd:64,GD:64,gd:64,Tb:65,TB:65,tb:65,Dy:66,DY:66,dy:66,Ho:67,HO:67,ho:67,Er:68,ER:68,er:68,Tm:69,TM:69,tm:69,Yb:70,YB:70,yb:70,Lu:71,LU:71,lu:71,Hf:72,HF:72,hf:72,Ta:73,TA:73,ta:73,W:74,w:74,Re:75,RE:75,re:75,Os:76,OS:76,os:76,Ir:77,IR:77,ir:77,Pt:78,PT:78,pt:78,Au:79,AU:79,au:79,Hg:80,HG:80,hg:80,Tl:81,TL:81,tl:81,Pb:82,PB:82,pb:82,Bi:83,BI:83,bi:83,Po:84,PO:84,po:84,At:85,AT:85,at:85,Rn:86,RN:86,rn:86,Fr:87,FR:87,fr:87,Ra:88,RA:88,ra:88,Ac:89,AC:89,ac:89,Th:90,TH:90,th:90,Pa:91,PA:91,pa:91,U:92,u:92,Np:93,NP:93,np:93,Pu:94,PU:94,pu:94,Am:95,AM:95,am:95,Cm:96,CM:96,cm:96,Bk:97,BK:97,bk:97,Cf:98,CF:98,cf:98,Es:99,ES:99,es:99,Fm:100,FM:100,fm:100,Md:101,MD:101,md:101,No:102,NO:102,no:102,Lr:103,LR:103,lr:103,Rf:104,RF:104,rf:104,Db:105,DB:105,db:105,Sg:106,SG:106,sg:106,Bh:107,BH:107,bh:107,Hs:108,HS:108,hs:108,Mt:109,MT:109,mt:109},r={0:1.42,1:1.42,3:2.7,4:2.7,6:1.75,7:1.6,8:1.52,11:2.7,12:2.7,13:2.7,14:1.9,15:2,16:1.9,17:1.8,19:2.7,20:2.7,21:2.7,22:2.7,23:2.7,24:2.7,25:2.7,26:2.7,27:2.7,28:2.7,29:2.7,30:2.7,31:2.7,33:2.68,37:2.7,38:2.7,39:2.7,40:2.7,41:2.7,42:2.7,43:2.7,44:2.7,45:2.7,46:2.7,47:2.7,48:2.7,49:2.7,50:2.7,55:2.7,56:2.7,57:2.7,58:2.7,59:2.7,60:2.7,61:2.7,62:2.7,63:2.7,64:2.7,65:2.7,66:2.7,67:2.7,68:2.7,69:2.7,70:2.7,71:2.7,72:2.7,73:2.7,74:2.7,75:2.7,76:2.7,77:2.7,78:2.7,79:2.7,80:2.7,81:2.7,82:2.7,83:2.7,87:2.7,88:2.7,89:2.7,90:2.7,91:2.7,92:2.7,93:2.7,94:2.7,95:2.7,96:2.7,97:2.7,98:2.7,99:2.7,100:2.7,101:2.7,102:2.7,103:2.7,104:2.7,105:2.7,106:2.7,107:2.7,108:2.7,109:2.88},n={0:.8,20:1.31,27:1.2,35:1.15,44:1.1,54:1,60:1.84,72:1.88,84:1.75,85:1.56,86:1.76,98:1.6,99:1.68,100:1.63,112:1.6,113:1.59,114:1.36,129:1.45,135:1.47,144:1.6,152:1.45,170:1.4,180:1.55,202:2.4,222:2.24,224:1.91,225:1.98,243:2.02,269:2,293:1.9,316:1.8,420:2.37,480:2.3,512:2.3,544:2.3,612:2.1,629:1.54,665:1,813:2.6,851:2.65,854:2.27,894:1.93,896:2.1,937:2.05,938:2.06,981:1.62,1258:2.68,1309:2.33,1484:1,1763:2.14,1823:2.48,1882:2.1,1944:1.72,2063:2.72,2380:2.34,3132:2.6,3367:2.44,3733:2.11,3819:2.6,3821:2.36,4736:2.75,5724:2.73,5959:2.63,6519:2.84,6750:2.87,8991:2.81},i=2.001;e.MetalsSet=(function(){const g=["LI","NA","K","RB","CS","FR","BE","MG","CA","SR","BA","RA","AL","GA","IN","SN","TL","PB","BI","SC","TI","V","CR","MN","FE","CO","NI","CU","ZN","Y","ZR","NB","MO","TC","RU","RH","PD","AG","CD","LA","HF","TA","W","RE","OS","IR","PT","AU","HG","AC","RF","DB","SG","BH","HS","MT","CE","PR","ND","PM","SM","EU","GD","TB","DY","HO","ER","TM","YB","LU","TH","PA","U","NP","PU","AM","CM","BK","CF","ES","FM","MD","NO","LR"],a=new Set;for(const d of g)a.add(t[d]);return a})();function c(g,a){return g<a?(g+a)*(g+a+1)/2+a:(g+a)*(g+a+1)/2+g}function o(g){const a=t[g];return a===void 0?-1:a}function s(g,a){if(g<0||a<0)return-1;const d=n[c(g,a)];return d===void 0?-1:d}function h(g){if(g<0)return i;const a=r[g];return a===void 0?i:a}function f(g,a,d,p){const u=s(g,a);return u>0?u:a<0?d:(d+p)/1.95}const y=t.H;function _(g){return g===y}})(ix)),ix}var dp={},PB;function KD(){if(PB)return dp;PB=1,Object.defineProperty(dp,"__esModule",{value:!0}),dp.getIntraBondOrderFromTable=r,dp.getInterBondOrderFromTable=i;const e=dt(),t=new Map([["HIS|CD2|CG",2],["HIS|CE1|ND1",2],["ARG|CZ|NH2",2],["PHE|CE1|CZ",2],["PHE|CD2|CE2",2],["PHE|CD1|CG",2],["TRP|CD1|CG",2],["TRP|CD2|CE2",2],["TRP|CE3|CZ3",2],["TRP|CH2|CZ2",2],["ASN|CG|OD1",2],["GLN|CD|OE1",2],["TYR|CD1|CG",2],["TYR|CD2|CE2",2],["TYR|CE1|CZ",2],["ASP|CG|OD1",2],["GLU|C
7D|OE1",2],["G|C8|N7",2],["G|C4|C5",2],["G|C2|N3",2],["G|C6|O6",2],["C|C4|N3",2],["C|C5|C6",2],["C|C2|O2",2],["A|C2|N3",2],["A|C6|N1",2],["A|C4|C5",2],["A|C8|N7",2],["U|C5|C6",2],["U|C2|O2",2],["U|C4|O4",2],["DG|C8|N7",2],["DG|C4|C5",2],["DG|C2|N3",2],["DG|C6|O6",2],["DC|C4|N3",2],["DC|C5|C6",2],["DC|C2|O2",2],["DA|C2|N3",2],["DA|C6|N1",2],["DA|C4|C5",2],["DA|C8|N7",2],["DT|C5|C6",2],["DT|C2|O2",2],["DT|C4|O4",2]]);function r(c,o,s){return[o,s]=o<s?[o,s]:[s,o],e.AminoAcidNames.has(c)&&o==="C"&&s==="O"||e.BaseNames.has(c)&&o==="OP1"&&s==="P"?2:t.get(`${c}|${o}|${s}`)||1}const n=new Map([["LYS|NZ|RET|C15",2]]);function i(c,o,s,h){return c>s&&([c,s]=[s,c],[o,h]=[h,o]),n.get(`${c}|${o}|${s}|${h}`)||1}return dp}var fp={},mp={},pp={},lo={},ax={},gC={},Pc={},TB;function YD(){if(TB)return Pc;TB=1,Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.Encoding=Pc.VERSION=void 0,Pc.VERSION="0.3.0";var e;return(function(t){(function(i){i[i.Int8=1]="Int8",i[i.Int16=2]="Int16",i[i.Int32=3]="Int32",i[i.Uint8=4]="Uint8",i[i.Uint16=5]="Uint16",i[i.Uint32=6]="Uint32"})(t.IntDataType||(t.IntDataType={})),(function(i){i[i.Float32=32]="Float32",i[i.Float64=33]="Float64"})(t.FloatDataType||(t.FloatDataType={}));function r(i){let c;return i instanceof Int8Array?c=t.IntDataType.Int8:i instanceof Int16Array?c=t.IntDataType.Int16:i instanceof Int32Array?c=t.IntDataType.Int32:i instanceof Uint8Array?c=t.IntDataType.Uint8:i instanceof Uint16Array?c=t.IntDataType.Uint16:i instanceof Uint32Array?c=t.IntDataType.Uint32:i instanceof Float32Array?c=t.FloatDataType.Float32:i instanceof Float64Array?c=t.FloatDataType.Float64:c=t.IntDataType.Int32,c}t.getDataType=r;function n(i){if(i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array)return!0;for(let c=0,o=i.length;c<o;c++)if(c<0)return!1;return!0}t.isSignedIntegerDataType=n})(e||(Pc.Encoding=e={})),Pc}var Tc={},xB;function QD(){if(xB)return Tc;xB=1,Object.defineProperty(Tc,"__esModule",{value:!0}),Tc.IsNativeEndianLittle=void 0,Tc.flipByteOrder=e,Tc.uint8ToString=r,Tc.IsNativeEndianLittle=new Uint16Array(new Uint8Array([18,52]).buffer)[0]===13330;function e(n,i){const c=new ArrayBuffer(n.length),o=new Uint8Array(c);for(let s=0,h=n.length;s<h;s+=i)for(let f=0;f<i;f++)o[s+i-f-1]=n[s+f];return c}const t=28672;function r(n){if(n.length>t){const i=[];for(let c=0;c<n.length;c+=t)i.push(String.fromCharCode.apply(null,n.subarray(c,c+t)));return i.join("")}else return String.fromCharCode.apply(null,n)}return Tc}var AB;function vJ(){if(AB)return gC;AB=1,Object.defineProperty(gC,"__esModule",{value:!0}),gC.decode=n;const e=YD(),t=QD(),r=Gt();function n(S){let T=S.data;for(let A=S.encoding.length-1;A>=0;A--)T=i(T,S.encoding[A]);return T}function i(S,T){switch(T.kind){case"ByteArray":switch(T.type){case e.Encoding.IntDataType.Uint8:return S;case e.Encoding.IntDataType.Int8:return s(S);case e.Encoding.IntDataType.Int16:return f(S);case e.Encoding.IntDataType.Uint16:return y(S);case e.Encoding.IntDataType.Int32:return _(S);case e.Encoding.IntDataType.Uint32:return g(S);case e.Encoding.FloatDataType.Float32:return a(S);case e.Encoding.FloatDataType.Float64:return d(S);default:(0,r.assertUnreachable)(T.type)}case"FixedPoint":return p(S,T);case"IntervalQuantization":return u(S,T);case"RunLength":return m(S,T);case"Delta":return v(S,T);case"IntegerPacking":return C(S,T);case"StringArray":return l(S,T)}}function c(S,T){switch(S){case e.Encoding.IntDataType.Int8:return new Int8Array(T);case e.Encoding.IntDataType.Int16:return new Int16Array(T);case e.Encoding.IntDataType.Int32:return new Int32Array(T);case e.Encoding.IntDataType.Uint8:return new Uint8Array(T);case e.Encoding.IntDataType.Uint16:return new Uint16Array(T);case e.Encoding.IntDataType.Uint32:return new Uint32Array(T);default:return new Int32Array(T)}}function o(S,T){switch(S){case e.Encoding.FloatDataType.Float32:return new Float32Array(T);case e.Encoding.FloatDataType.Float64:return new Float64Array(T);default:return new Float64Array(T)}}function s(S){return new Int8Array(S.buffer,S.byteOffset)}function h(S,T,A){return t.IsNativeEndianLittle?new A(S.buffer):new A((0,t.flip
7ByteOrder)(S,T))}function f(S){return h(S,2,Int16Array)}function y(S){return h(S,2,Uint16Array)}function _(S){return h(S,4,Int32Array)}function g(S){return h(S,4,Uint32Array)}function a(S){return h(S,4,Float32Array)}function d(S){return h(S,8,Float64Array)}function p(S,T){const A=S.length,x=o(T.srcType,A),M=1/T.factor;for(let D=0;D<A;D++)x[D]=M*S[D];return x}function u(S,T){const A=S.length,x=o(T.srcType,A),M=(T.max-T.min)/(T.numSteps-1),D=T.min;for(let V=0;V<A;V++)x[V]=D+M*S[V];return x}function m(S,T){const A=c(T.srcType,T.srcSize);let x=0;for(let M=0,D=S.length;M<D;M+=2){const V=S[M],R=S[M+1];for(let E=0;E<R;++E)A[x++]=V}return A}function v(S,T){const A=S.length,x=c(T.srcType,A);if(!A)return S;x[0]=S[0]+(T.origin|0);for(let M=1;M<A;++M)x[M]=S[M]+x[M-1];return x}function b(S,T){const A=T.byteCount===1?127:32767,x=-A-1,M=S.length,D=new Int32Array(T.srcSize);let V=0,R=0;for(;V<M;){let E=0,I=S[V];for(;I===A||I===x;)E+=I,V++,I=S[V];E+=I,D[R]=E,V++,R++}return D}function P(S,T){const A=T.byteCount===1?255:65535,x=S.length,M=new Int32Array(T.srcSize);let D=0,V=0;for(;D<x;){let R=0,E=S[D];for(;E===A;)R+=E,D++,E=S[D];R+=E,M[V]=R,D++,V++}return M}function C(S,T){return S.length===T.srcSize?S:T.isUnsigned?P(S,T):b(S,T)}function l(S,T){const A=n({encoding:T.offsetEncoding,data:T.offsets}),x=n({encoding:T.dataEncoding,data:S}),M=T.stringData,D=new Array(A.length);D[0]="";for(let E=1,I=A.length;E<I;E++)D[E]=M.substring(A[E-1],A[E]);let V=0;const R=new Array(x.length);for(let E=0,I=x.length;E<I;E++)R[V++]=D[x[E]+1];return R}return gC}var fo={},hp={},Ta={},MB;function Df(){if(MB)return Ta;MB=1,Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.getMantissaMultiplier=e,Ta.integerDigitCount=t,Ta.getArrayDigitCount=r,Ta.isInteger=n,Ta.getPrecision=i,Ta.toPrecision=c,Ta.toFixed=o;function e(s,h,f){let y=1,_;for(_=0;_<h;_++){const g=y*s;if(Math.abs(Math.round(g)-g)<=f)return _;y*=10}return-1}function t(s,h){return Math.abs(s)<h?0:Math.floor(Math.log10(Math.abs(s)))+1}function r(s,h,f){let y=1,_=0;for(let g=0,a=s.length;g<a;g++){if(y>=0){const p=e(s[g],h,f);p<0?y=-1:p>y&&(y=p)}const d=Math.abs(s[g]);if(d>f){const p=Math.floor(Math.log10(Math.abs(d)))+1;p>_&&(_=p)}}return{mantissaDigits:y,integerDigits:_}}function n(s){s=s.trim();const h=parseInt(s,10);return Number.isNaN(h)?!1:h.toString()===s}function i(s){if(!isFinite(s))return 0;let h=1,f=0;for(;Math.round(s*h)/h!==s;)h*=10,++f;return f}function c(s,h){return parseFloat(s.toPrecision(h))}function o(s,h){return parseFloat(s.toFixed(h))}return Ta}var DB;function ZD(){if(DB)return hp;DB=1,Object.defineProperty(hp,"__esModule",{value:!0}),hp.classifyIntArray=n,hp.classifyFloatArray=i;const e=J$(),t=Df(),r=Gt();function n(s){return c.classify(s)}function i(s){return o.classify(s)}var c;(function(s){function h(P,C){return P>=0?Math.ceil((P+1)/C):Math.ceil((P+1)/(-C-1))}function f(P){let C=!1;for(let l=0,S=P.length;l<S;l++)if(P[l]<0){C=!0;break}return C?{signed:C,limit8:127,limit16:32767}:{signed:C,limit8:255,limit16:65535}}function y(){return{pack8:0,pack16:0,count:0}}function _({limit8:P,limit16:C},l,S){l.pack8+=h(S,P),l.pack16+=h(S,C),l.count+=1}function g(P,C){P.pack8+=h(C,127),P.pack16+=h(C,32767),P.count+=1}function a(P){return P.count*4<P.pack16*2?{length:P.count*4,elem:4}:P.pack16*2<P.pack8?{length:P.pack16*2,elem:2}:{length:P.pack8,elem:1}}function d(P,C){const l=y();for(let S=0,T=P.length;S<T;S++)_(C,l,P[S]);return{...a(l),kind:"pack"}}function p(P,C){const l=y();let S=P[0];for(let T=1,A=P.length;T<A;T++)g(l,P[T]-S),S=P[T];return{...a(l),kind:"delta"}}function u(P,C){const l=y();let S=1;for(let T=1,A=P.length;T<A;T++)P[T-1]!==P[T]?(_(C,l,P[T-1]),_(C,l,S),S=1):S++;return _(C,l,P[P.length-1]),_(C,l,S),{...a(l),kind:"rle"}}function m(P,C){const l=y();let S=1,T=0,A=0;for(let x=1,M=P.length;x<M;x++){const D=P[x]-T;A!==D?(g(l,A),g(l,S),S=1):S++,A=D,T=P[x]}return g(l,A),g(l,S),{...a(l),kind:"delta-rle"}}function v(P){const C=f(P),l=[d(P,C),u(P,C),p(P),m(P)];return l.sort((S,T)=>S.length-T.length),l}s.getSize=v;function b(P){if(P.length<2)return e.ArrayEncoding.by(e.ArrayEncoding.byteArray);const l=v(P)[0];switch(l.kind){case"pack":return e.ArrayEncoding.by(e.ArrayEncoding.integerPacking);case"rle":return e.ArrayEncoding.by(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);case"delta":return e.ArrayEncoding.by(e.ArrayEncoding.delta).and(e.ArrayEncoding.integerPacking);case"delta-rle":return e.ArrayEncoding.by(e.ArrayEncoding.delta).and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);default:(0,r.assertUnreachable)(l)}}s.classify=b})(c||(c={}));var o;return(function(s){function f(_){const{mantissaDigits:a,integerDigits:d}=(0,t.getArrayDigitCount)(_,4,1e-6);if(a<0||a+d>10)return e.ArrayEncoding.by(e.ArrayEncoding.byteArray);if(a===0)return c.classify(_);const p=y(a),u=new Int32Array(_.length);for(let P=0,C=_.length;P<C;P++)u[P]=Math.round(p*_[P]);const v=c.getSize(u)[0],b=e.ArrayEncoding.by(e.ArrayEncoding.fixedPoint(p));switch(v.kind){case"pack":return b.and(e.ArrayEncoding.integerPacking);case"rle":return b.and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);case"delta":return b.and(e.ArrayEncoding.delta).and(e.ArrayEncoding.integerPacking);case"delta-rle":return b.and(e.ArrayEncoding.delta).and(e.ArrayEncoding.runLength).and(e.ArrayEncoding.integerPacking);default:(0,r.assertUnreachable)(v)}}s.classify=f;function y(_){let g=1;for(let a=0;a<_;a++)g*=10;return g}})(o||(o={})),hp}var IB;
7function J$(){if(IB)return fo;IB=1,Object.defineProperty(fo,"__esModule",{value:!0}),fo.ArrayEncoding=fo.ArrayEncoder=fo.ArrayEncoderImpl=void 0;const e=_t(),t=YD(),r=ZD();class n{and(s){return new n(this.providers.concat([s]))}encode(s){const h=[];for(const f of this.providers){const y=f(s);if(!y.encodings.length)throw new Error("Encodings must be non-empty.");s=y.data;for(const _ of y.encodings)h.push(_)}if(!(s instanceof Uint8Array))throw new Error("The encoding must result in a Uint8Array. Fix your encoding chain.");return{encoding:h,data:s}}constructor(s){this.providers=s}}fo.ArrayEncoderImpl=n;var i;(function(o){function s(y){return new n([y])}o.by=s;function h(y){let _=s(f(y[0]));for(let g=1;g<y.length&&y[g-1].kind!=="IntegerPacking";g++)_=_.and(f(y[g]));return _}o.fromEncoding=h;function f(y){switch(y.kind){case"ByteArray":return c.byteArray;case"FixedPoint":return c.fixedPoint(y.factor);case"IntervalQuantization":return c.intervalQuantizaiton(y.min,y.max,y.numSteps);case"RunLength":return c.runLength;case"Delta":return c.delta;case"IntegerPacking":return c.integerPacking;case"StringArray":return c.stringArray}}})(i||(fo.ArrayEncoder=i={}));var c;return(function(o){function s(x){return new n([x])}o.by=s;function h(x){return{encodings:[{kind:"ByteArray",type:t.Encoding.IntDataType.Uint8}],data:x}}function f(x){return{encodings:[{kind:"ByteArray",type:t.Encoding.IntDataType.Int8}],data:new Uint8Array(x.buffer,x.byteOffset)}}const y={[t.Encoding.IntDataType.Int16]:function(x,M,D){x.setInt16(2*M,D,!0)},[t.Encoding.IntDataType.Uint16]:function(x,M,D){x.setUint16(2*M,D,!0)},[t.Encoding.IntDataType.Int32]:function(x,M,D){x.setInt32(4*M,D,!0)},[t.Encoding.IntDataType.Uint32]:function(x,M,D){x.setUint32(4*M,D,!0)},[t.Encoding.FloatDataType.Float32]:function(x,M,D){x.setFloat32(4*M,D,!0)},[t.Encoding.FloatDataType.Float64]:function(x,M,D){x.setFloat64(8*M,D,!0)}},_={[t.Encoding.IntDataType.Int16]:2,[t.Encoding.IntDataType.Uint16]:2,[t.Encoding.IntDataType.Int32]:4,[t.Encoding.IntDataType.Uint32]:4,[t.Encoding.FloatDataType.Float32]:4,[t.Encoding.FloatDataType.Float64]:8};function g(x){const M=t.Encoding.getDataType(x);if(M===t.Encoding.IntDataType.Int8)return f(x);if(M===t.Encoding.IntDataType.Uint8)return h(x);const D=new Uint8Array(x.length*_[M]),V=y[M],R=new DataView(D.buffer);for(let E=0,I=x.length;E<I;E++)V(R,E,x[E]);return{encodings:[{kind:"ByteArray",type:M}],data:D}}o.byteArray=g;function a(x,M){const D=t.Encoding.getDataType(x),V=new Int32Array(x.length);for(let R=0,E=x.length;R<E;R++)V[R]=Math.round(x[R]*M);return{encodings:[{kind:"FixedPoint",factor:M,srcType:D}],data:V}}function d(x){return M=>a(M,x)}o.fixedPoint=d;function p(x,M,D,V,R){const E=t.Encoding.getDataType(x);if(!x.length)return{encodings:[{kind:"IntervalQuantization",min:M,max:D,numSteps:V,srcType:E}],data:new Int32Array(0)};if(D<M){const w=M;M=D,D=w}const I=(D-M)/(V-1),B=new R(x.length);for(let w=0,O=x.length;w<O;w++){const F=x[w];F<=M?B[w]=0:F>=D?B[w]=V-1:B[w]=Math.round((F-M)/I)|0}return{encodings:[{kind:"IntervalQuantization",min:M,max:D,numSteps:V,srcType:E}],data:B}}function u(x,M,D,V=Int32Array){return R=>p(R,x,M,D,V)}o.intervalQuantizaiton=u;function m(x){let M=t.Encoding.getDataType(x);if(M===void 0&&(x=new Int32Array(x),M=t.Encoding.IntDataType.Int32),!x.length)return{encodings:[{kind:"RunLength",srcType:M,srcSize:0}],data:new Int32Array(0)};let D=2;for(let I=1,B=x.length;I<B;I++)x[I-1]!==x[I]&&(D+=2);const V=new Int32Array(D);let R=0,E=1;for(let I=1,B=x.length;I<B;I++)x[I-1]!==x[I]?(V[R]=x[I-1],V[R+1]=E,E=1,R+=2):++E;return V[R]=x[x.length-1],V[R+1]=E,{encodings:[{kind:"RunLength",srcType:M,srcSize:x.length}],data:V}}o.runLength=m;function v(x){if(!t.Encoding.isSignedIntegerDataType(x))throw new Error("Only signed integer types can be encoded using delta encoding.");let M=t.Encoding.getDataType(x);if(M===void 0&&(x=new Int32Array(x),M=t.Encoding.IntDataType.Int32),!x.length)return{encodings:[{kind:"Delta",origin:0,srcType:M}],data:new x.constructor(0)};const D=new x.constructor(x.length),V=x[0];D[0]=x[0];for(let R=1,E=x.length;R<E;R++)D[R]=x[R]-x[R-1];return D[0]=0,{encodings:[{kind:"Delta",origin:V,srcType:M}],data:D}}o.delta=v;function b(x){for(let M=0,D=x.length;M<D;M++)if(x[M]<0)return!0;return!1}function P(x,M){let D=0;for(let V=0,R=x.length;V<R;V++)D+=x[V]/M|0;return D+=x.length,D}function C(x,M){const D=-M-1;let V=0;for(let R=0,E=x.length;R<E;R++){const I=x[R];I>=0?V+=I/M|0:V+=I/D|0}return V+=x.length,V}
7function l(x){const M=b(x),D=M?C(x,127):P(x,255),V=M?C(x,32767):P(x,65535);return x.length*4<V*2?{isSigned:M,size:x.length,bytesPerElement:4}:V*2<D?{isSigned:M,size:V,bytesPerElement:2}:{isSigned:M,size:D,bytesPerElement:1}}function S(x,M){const D=M.isSigned?M.bytesPerElement===1?127:32767:M.bytesPerElement===1?255:65535,V=-D-1,R=x.length,E=M.isSigned?M.bytesPerElement===1?new Int8Array(M.size):new Int16Array(M.size):M.bytesPerElement===1?new Uint8Array(M.size):new Uint16Array(M.size);let I=0;for(let w=0;w<R;w++){let O=x[w];if(O>=0)for(;O>=D;)E[I]=D,++I,O-=D;else for(;O<=V;)E[I]=V,++I,O-=V;E[I]=O,++I}const B=g(E);return{encodings:[{kind:"IntegerPacking",byteCount:M.bytesPerElement,isUnsigned:!M.isSigned,srcSize:R},B.encodings[0]],data:B.data}}function T(x){const M=l(x);return M.bytesPerElement===4?g(x):S(x,M)}o.integerPacking=T;function A(x){const M=Object.create(null),D=[],V=new Int32Array(x.length),R=e.ChunkedArray.create(Int32Array,1,Math.min(1024,x.length<32?x.length+1:Math.round(x.length/8)+1));e.ChunkedArray.add(R,0);let E=0,I=0;for(const U of x){if(U==null){V[I++]=-1;continue}let q=M[U];q===void 0&&(E+=U.length,q=D.length,D[q]=U,M[U]=q,e.ChunkedArray.add(R,E)),V[I++]=q}const B=e.ChunkedArray.compact(R),O=(0,r.classifyIntArray)(B).encode(B),L=(0,r.classifyIntArray)(V).encode(V);return{encodings:[{kind:"StringArray",dataEncoding:L.encoding,stringData:D.join(""),offsetEncoding:O.encoding,offsets:O.data}],data:L.data}}o.stringArray=A})(c||(fo.ArrayEncoding=c={})),fo}var wB;function MT(){return wB||(wB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.decode=void 0;const t=At;var r=vJ();Object.defineProperty(e,"decode",{enumerable:!0,get:function(){return r.decode}}),t.__exportStar(YD(),e),t.__exportStar(J$(),e),t.__exportStar(ZD(),e)})(ax)),ax}var VB;function JD(){if(VB)return lo;VB=1,Object.defineProperty(lo,"__esModule",{value:!0}),lo.Encoder=lo.Category=lo.Field=void 0;const e=kD(),t=MT(),r=Gt();var n;(function(g){let a;(function(P){P[P.Str=0]="Str",P[P.Int=1]="Int",P[P.Float=2]="Float"})(a=g.Type||(g.Type={}));function d(P,C,l){return{name:P,type:a.Str,value:C,valueKind:l&&l.valueKind,defaultFormat:l&&l.encoder?{encoder:l.encoder}:void 0,shouldInclude:l&&l.shouldInclude}}g.str=d;function p(P,C,l){return{name:P,type:a.Int,value:C,valueKind:l&&l.valueKind,defaultFormat:l?{encoder:l.encoder,typedArray:l.typedArray}:void 0,shouldInclude:l&&l.shouldInclude}}g.int=p;function u(P,C,l){return{name:P,type:a.Float,value:C,valueKind:l&&l.valueKind,defaultFormat:l?{encoder:l.encoder,typedArray:l.typedArray,digitCount:typeof l.digitCount<"u"?l.digitCount:void 0}:void 0,shouldInclude:l&&l.shouldInclude}}g.float=u;function m(P){return p(P,(C,l,S)=>S+1,{typedArray:Int32Array,encoder:t.ArrayEncoding.by(t.ArrayEncoding.delta).and(t.ArrayEncoding.runLength).and(t.ArrayEncoding.integerPacking)})}g.index=m;class v{constructor(){this.fields=[]}index(C){return this.fields.push(g.index(C)),this}str(C,l,S){return this.fields.push(g.str(C,l,S)),this}int(C,l,S){return this.fields.push(g.int(C,l,S)),this}vec(C,l,S){for(let T=0;T<l.length;T++)this.fields.push(g.int(`${C}[${T+1}]`,l[T],S));return this}float(C,l,S){return this.fields.push(g.float(C,l,S)),this}many(C){for(let l=0;l<C.length;l++)this.fields.push(C[l]);return this}add(C){return this.fields.push(C),this}getFields(){return this.fields}}g.Builder=v;function b(){return new v}g.build=b})(n||(lo.Field=n={}));var i;(function(g){g.Empty={fields:[],source:[]};function a(p){const u=[],m=[],v=[],b=[];for(let C of p.split(/[\r\n]+/)){if(C=C.trim(),C.length===0)continue;const l=/^!/.test(C);l&&(C=C.substr(1));const S=C.split(/\./),T=S[1],A=l?T?b:m:T?v:u;A[A.length]=C,T&&!u.includes(S[0])&&(u[u.length]=S[0])}const P=v.map(C=>C.split(".")[0]);return{includeCategory(C){return m.includes(C)?!1:u.length<=0||u.indexOf(C)!==-1},includeField(C,l){const S=C+"."+l;return b.includes(S)?!1:!P.includes(C)||v.includes(S)}}}g.filterOf=a,g.DefaultFilter={includeCategory(p){return!0},includeField(p,u){return!0}},g.DefaultFormatter={getFormat(p,u){}};function d(p,u){return u?{fields:_(p._schema),source:[{data:p,rowCount:u.length,keys:()=>e.Iterator.Array(u)}]}:{fields:_(p._schema),source:[{data:p,rowCount:p._rowCount}]}}g.ofTable=d})(i||(lo.Category=i={}));var c;(function(g){function a(p,u,m){p.startDataBlock(u);for(const v of m._tableNames)p.writeCategory({name:v,instance:()=>i.ofTable(m[v])})}g.writeDatabase=a;function d(p,u){for(const m of Object.keys(u))a(p,m,u[m])}g.writeDatabaseCollection=d})(c||(lo.Encoder=c={}));function o(g){return(a,d)=>d[g].value(a)}function s(g){return(a,d)=>d[g].value(a).join(d[g].schema.separator)}function h(g,...a){return(d,p)=>p[g].schema.space.get(p[g].value(d),...a)}function f(g){return(a,d)=>d[g].valueKind(a)}function y(g,a){const d=[],p=n.Type.Float,u=f(g);if(a.rank===1){const m=a.dimensions[0];for(let v=0;v<m;v++){const b=`${g}[${v+1}]`;d.push({name:b,type:p,value:h(g,v),valueKind:u})}}else if(a.rank===2){const m=a.dimensions[0],v=a.dimensions[1];for(let b=0;b<m;b++)for(let P=0;P<v;P++){const C=`${g}[${b+1}][${P+1}]`;d.push({name:C,type:p,value:h(g,b,P),valueKind:u})}}else if(a.rank===3){const m=a.dimensions[0],v=a.dimensions[1],b=a.dimensions[2];for(let P=0;P<m;P++)for(let C=0;C<v;C++)for(let l=0;l<b;l++){const S=`${g}[${P+1}][${C+1}][${l+1}]`;d.push({name:S,type:p,value:h(g,P,C,l),valueKind:u})}}else throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.");return d}function _(g){const a=[];for(const d of Object.keys(g)){const p=g[d];p.valueType==="int"?a.push({name:d,type:n.Type.Int,value:o(d),valueKind:f(d)}):p.valueType==="float"?a.push({name:d,type:n.Type.Float,value:o(d),valueKind:f(d)}):p.valueType==="str"?a.push({name:d,type:n.Type.Str,value:o(d),valueKind:f(d)}):p.valueType==="list"?a.push({name:d,type:n.Type.Str,value:s(d),valueKind:f(d)}):p.valueType==="tensor"?a.push(...y(d,p.space)):(0,r.assertUnreachable)(p.valueType)}return a}return lo}var nd={},ox={},EB;
7function bJ(){return EB||(EB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Generic=e.Util=e.Iterator=e.Int=e.DB=void 0;const t=At,r=t.__importStar(lt());e.DB=r;const n=t.__importStar(at());e.Int=n;const i=kD();Object.defineProperty(e,"Iterator",{enumerable:!0,get:function(){return i.Iterator}});const c=t.__importStar(_t());e.Util=c;const o=t.__importStar(ha());e.Generic=o})(ox)),ox}var BB;function eX(){if(BB)return nd;BB=1,Object.defineProperty(nd,"__esModule",{value:!0}),nd.getFieldDigitCount=t,nd.getIncludedFields=r,nd.getCategoryInstanceData=n;const e=bJ();function t(i){return i.defaultFormat&&typeof i.defaultFormat.digitCount<"u"?Math.max(0,Math.min(i.defaultFormat.digitCount,16)):6}function r(i){return i.fields.some(c=>!!c.shouldInclude)?i.fields.filter(c=>!c.shouldInclude||i.source.some(o=>c.shouldInclude(o.data))):i.fields}function n(i,c){const o=i.instance(c),s=o.source.filter(y=>y.rowCount>0);if(!s.length)return{instance:o,rowCount:0,source:[]};const h=s.reduce((y,_)=>y+_.rowCount,0),f=s.map(y=>({data:y.data,keys:()=>y.keys?y.keys():e.Iterator.Range(0,y.rowCount-1),rowCount:y.rowCount}));return{instance:o,rowCount:h,source:f}}return nd}var RB;function _J(){if(RB)return pp;RB=1,Object.defineProperty(pp,"__esModule",{value:!0}),pp.TextEncoder=void 0;const e=lt(),t=ED(),r=JD(),n=eX();class i{constructor(){this.builder=t.StringBuilder.create(),this.encoded=!1,this.dataBlockCreated=!1,this.filter=r.Category.DefaultFilter,this.formatter=r.Category.DefaultFormatter,this.isBinary=!1,this.binaryEncodingProvider=void 0}setFilter(v){this.filter=v||r.Category.DefaultFilter}isCategoryIncluded(v){return this.filter.includeCategory(v)}setFormatter(v){this.formatter=v||r.Category.DefaultFormatter}startDataBlock(v){this.dataBlockCreated=!0,t.StringBuilder.write(this.builder,`data_${(v||"").replace(/[ \n\t]/g,"").toUpperCase()} 8# 9`)}writeCategory(v,b,P){if(this.encoded)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlockCreated)throw new Error("No data block created.");if(!P?.ignoreFilter&&!this.filter.includeCategory(v.name))return;const{instance:C,rowCount:l,source:S}=(0,n.getCategoryInstanceData)(v,b);l&&(l===1?s(v,C,S,this.builder,this.filter,this.formatter):h(v,C,S,this.builder,this.filter,this.formatter))}encode(){this.encoded=!0}writeTo(v){const b=t.StringBuilder.getChunks(this.builder);for(let P=0,C=b.length;P<C;P++)v.writeString(b[P])}getSize(){return t.StringBuilder.getSize(this.builder)}getData(){return t.StringBuilder.getString(this.builder)}}pp.TextEncoder=i;function c(m,v,b,P,C,l){const S=P.valueKind,T=S?S(b,v):e.Column.ValueKinds.Present;if(T!==e.Column.ValueKinds.Present)T===e.Column.ValueKinds.NotPresent?a(m):d(m);else{const A=P.value(b,v,l),x=P.type;if(x===r.Field.Type.Str)return f(A)?(u(m,A),!0):p(m,A);x===r.Field.Type.Int?_(m,A):g(m,A,C)}return!1}function o(m,v,b){const P=[];for(const C of v){const l=b.getFormat(m,C.name);l&&typeof l.digitCount<"u"?P[P.length]=C.type===r.Field.Type.Float?Math.pow(10,Math.max(0,Math.min(l.digitCount,15))):0:P[P.length]=C.type===r.Field.Type.Float?Math.pow(10,(0,n.getFieldDigitCount)(C)):0}return P}function s(m,v,b,P,C,l){const S=(0,n.getIncludedFields)(v),T=b[0],A=T.data;let x=S.reduce((R,E)=>C.includeField(m.name,E.name)?Math.max(R,E.name.length):0,0);if(x===0)return;x+=m.name.length+6;const D=T.keys().move(),V=o(m.name,v.fields,l);for(let R=0;R<S.length;R++){const E=S[R];if(!C.includeField(m.name,E.name))continue;t.StringBuilder.writePadRight(P,`_${m.name}.${E.name}`,x),c(P,A,D,E,V[R],0)||t.StringBuilder.newline(P)}t.StringBuilder.write(P,`# 10`)}function h(m,v,b,P,C,l){const S=(0,n.getIncludedFields)(v),T=C===r.Category.DefaultFilter?S:S.filter(D=>C.includeField(m.name,D.name)),A=T.length;if(A===0)return;const x=o(m.name,T,l);y(P,"loop_");for(let D=0;D<A;D++)y(P,`_${m.name}.${T[D].name}`);let M=0;for(let D=0;D<b.length;D++){const V=b[D],R=V.data;if(V.rowCount===0)continue;const E=V.keys();for(;E.hasNext;){const I=E.move();let B=!1;for(let w=0;w<A;w++)B=c(P,R,I,T[w],x[w],M);B||t.StringBuilder.newline(P),M++}}t.StringBuilder.write(P,`# 11`)}function f(m){return typeof m=="string"&&m.indexOf(` 12`)>=0}function y(m,v){t.StringBuilder.write(m,v),t.StringBuilder.newline(m)}function _(m,v){t.StringBuilder.writeInteger(m,v),t.StringBuilder.whitespace1(m)}function g(m,v,b){t.StringBuilder.writeFloat(m,v,b),t.StringBuilder.whitespace1(m)}function a(m){t.StringBuilder.writeSafe(m,". ")}function d(m){t.StringBuilder.writeSafe(m,"? ")}function p(m,v){if(!v)return t.StringBuilder.writeSafe(m,". "),!1;const b=v.charCodeAt(0);let P=!1,C=0,l=!1,S=!1;for(let T=0,A=v.length-1;T<=A;T++)switch(v.charCodeAt(T)){case 9:P=!0;break;case 10:return u(m,v),!0;case 32:P=!0;break;case 34:if(T&&T===A)break;if(l)return u(m,v),!0;S=!0,P=!0,C=0;break;case 39:if(T&&T===A)break;if(S)return u(m,v),!0;l=!0,P=!0,C=1;break}return!P&&(b===35||b===36||b===59||b===91||b===93||b===95)&&(P=!0),P?(t.StringBuilder.writeSafe(m,C?'"':"'"),t.StringBuilder.writeSafe(m,v),t.StringBuilder.writeSafe(m,C?'" ':"' ")):(t.StringBuilder.writeSafe(m,v),t.StringBuilder.writeSafe(m," ")),!1}function u(m,v){t.StringBuilder.writeSafe(m,` 13;`+v),t.StringBuilder.writeSafe(m,` 14; 15`)}return pp}var gp={},yC={},xc={},sx={},OB;function nS(){return OB||(OB=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.ChunkedBigString=e.MAX_STRING_LENGTH=e.StringLike=void 0;const t=$s();e.StringLike={is(i){return typeof i.charCodeAt=="function"},toString(i){try{return i.toString()}catch(c){throw new Error(`Failed to convert StringLike object into string. This might be because the length ${i.length} exceeds maximum allowed string length ${e.MAX_STRING_LENGTH}. (${c})`)}}},e.MAX_STRING_LENGTH=536870888;const r=28;class n{get length(){return this._length}constructor(c=r){this._chunks=[],this._length=0,this._tmpArray=[],this.STRING_CHUNK_SIZE=2**c,this.STRING_CHUNK_SHIFT=c,this.STRING_CHUNK_MASK=2**c-1}static fromString(c,o=r){const s=new n(o);return s._append(c),s}static fromStrings(c,o=r){const s=new n(o);for(const h of c)s._append(h);return s}static fromUtf8Data(c,o=0,s=c.length,h=r){const f=2**h,y=[];let _=o;for(;_<s;){let g=Math.min(_+f,s);if(g<s){for(;(c[g]&192)===128;)if(g--,g===_)throw new Error("Input is rubbish, no UTF-8 character start found in a chunk")}const a=(0,t.utf8Read)(c,_,g-_);y.push(a),_=g}return n.fromStrings(y,h)}_append(c){const o=this.STRING_CHUNK_SIZE,s=this._chunks.length===0||this._chunks[this._chunks.length-1].length===o?"":this._chunks.pop();let h=o-s.length;for(this._chunks.push(s+c.substring(0,h));h<c.length;)this._chunks.push(c.substring(h,h+o)),h+=o;this._length+=c.length}_getChunkIndex(c){return c>>>this.STRING_CHUNK_SHIFT}_getIndexInChunk(c){return c&this.STRING_CHUNK_MASK}_isOutOfRange(c){return c<0||c>=this.length}at(c){return-this.length<=c&&c<0?this.at(c+this.length):this.charAt(c)||void 0}charAt(c){if(this._isOutOfRange(c))return"";const o=this._getChunkIndex(c),s=this._getIndexInChunk(c);return this._chunks[o][s]}charCodeAt(c){if(this._isOutOfRange(c))return NaN;const o=this._getChunkIndex(c),s=this._getIndexInChunk(c);return this._chunks[o].charCodeAt(s)}substring(c,o){const s=Math.min(Math.max(c??0,0),this.length),h=Math.min(Math.max(o??this.length,0),this.length);if(s>h)return this.substring(h,s);if(s===h)return"";if(h-s>e.MAX_STRING_LENGTH)throw new Error(`Trying to create get a substring longer (${h-s}) than maximum allowed string length (${e.MAX_STRING_LENGTH}).`);const f=this._getChunkIndex(s),y=this._getIndexInChunk(s),_=this._getChunkIndex(h),g=this._getIndexInChunk(h);if(f===_)return this._chunks[f].substring(y,g);{const a=this._getTmpArray();a.push(this._chunks[f].substring(y,this.STRING_CHUNK_SIZE));for(let d=f+1;d<_;d++)a.push(this._chunks[d]);return a.push(this._chunks[_].substring(0,g)),a.join("")}}_getTmpArray(){for(;this._tmpArray.length;)this._tmpArray.pop();return this._tmpArray}indexOf(c,o=0){if(c.length>this.STRING_CHUNK_SIZE)throw new Error("NotImplementedError: indexOf is only implemented for searchString shorter than STRING_CHUNK_SIZE");o<0&&(o=0);const s=this._getChunkIndex(o);for(let h=s;h<this._chunks.length;h++){const f=this._chunks[h],y=h===s?this._getIndexInChunk(o):0,_=f.indexOf(c,y);if(_>=0)return h*this.STRING_CHUNK_SIZE+_;if(h!==this._chunks.length-1){const g=Math.max(this.STRING_CHUNK_SIZE-c.length+1,y),d=(f.substring(g,void 0)+this._chunks[h+1].substring(0,c.length-1)).indexOf(c);if(d>=0)return h*this.STRING_CHUNK_SIZE+g+d}}return-1}includes(c,o=0){return this.indexOf(c,o)>=0}startsWith(c,o=0){if(c.length>this.STRING_CHUNK_SIZE)throw new Error("NotImplementedError: startsWith is only implemented for searchString shorter than STRING_CHUNK_SIZE");return this.substring(o,o+c.length)===c}toString(){try{return this._chunks.join("")}catch(c){throw new Error(`Failed to convert StringLike object into string. This might be because the length ${this.length} exceeds maximum allowed string length ${e.MAX_STRING_LENGTH}. (${c})`)}}}e.ChunkedBigString=n})(sx)),sx}var kB;function $s(){if(kB)return xc;kB=1,Object.defineProperty(xc,"__esModule",{value:!0}),xc.utf8Write=t,xc.utf8Read=o,xc.utf8ReadLong=s,xc.utf8ByteCount=h;const e=nS();function t(f,y,_){for(let g=0,a=_.length;g<a;g++){const d=_.charCodeAt(g);if(d<128){f[y++]=d>>>0&127|0;continue}if(d<2048){f[y++]=d>>>6&31|192,f[y++]=d>>>0&63|128;continue}if(d<65536){f[y++]=d>>>12&15|224,f[y++]=d>>>6&63|128,f[y++]=d>>>0&63|128;continue}if(d<1114112){f[y++]=d>>>18&7|240,f[y++]=d>>>12&63|128,f[y++]=d>>>6&63|128,f[y++]=d>>>0&63|128;continue}throw new Error("bad codepoint "+d)}}const r=(function(){const f=[];for(let y=0;y<1024;y++)f[y]=String.fromCharCode(y);return f})();function n(f){throw new Error(f)}function i(f,y,_){const g=r;let a,d=0;const p=[],u=512;for(let m=y,v=y+_;m<v;m++){const b=f[m];(b&128)===0?p[d++]=g[b]:(b&224)===192?p[d++]=g[(b&15)<<6|f[++m]&63]:(b&240)===224?p[d++]=String.fromCharCode((b&15)<<12|(f[++m]&63)<<6|(f[++m]&63)<<0):(b&248)===240?p[d++]=String.fromCharCode((b&7)<<18|(f[++m]&63)<<12|(f[++m]&63)<<6|(f[++m]&63)<<0):n("Invalid byte "+b.toString(16)),d===u&&(a=a||[],a[a.length]=p.join(""),d=0)}return a?(d>0&&(a[a.length]=p.slice(0,d).join("")),a.join("")):p.slice(0,d).join("")}const c=typeof TextDecoder<"u"?new TextDecoder:void 0;function o(f,y=0,_=f.length){if(c){const g=y||_!==f.length?f.subarray(y,y+_):f;return c.decode(g)}else return i(f,y,_)}function s(f,y=0,_=f.length){if(_<=e.MAX_STRING_LENGTH)return o(f,y,_);const g=e.ChunkedBigString.fromUtf8Data(f,y,y+_);return g.length<=e.MAX_STRING_LENGTH?g.toString():g}function h(f){let y=0;for(let _=0,g=f.length;_<g;_++){const a=f.charCodeAt(_);if(a<128){y+=1;continue}if(a<2048){y+=2;continue}if(a<65536){y+=3;continue}if(a<1114112){y+=4;continue}n("bad codepoint "+a)}return y}return xc}var FB;
15function SJ(){if(FB)return yC;FB=1,Object.defineProperty(yC,"__esModule",{value:!0}),yC.encodeMsgPack=t;const e=$s();function t(i){const c=new ArrayBuffer(r(i)),o=new DataView(c),s=new Uint8Array(c);return n(i,o,s,0),s}function r(i){const c=typeof i;if(c==="string"){const o=(0,e.utf8ByteCount)(i);if(o<32)return 1+o;if(o<256)return 2+o;if(o<65536)return 3+o;if(o<4294967296)return 5+o}if(i instanceof Uint8Array){const o=i.byteLength;if(o<256)return 2+o;if(o<65536)return 3+o;if(o<4294967296)return 5+o}if(c==="number"){if(Math.floor(i)!==i)return 9;if(i>=0){if(i<128)return 1;if(i<256)return 2;if(i<65536)return 3;if(i<4294967296)return 5;throw new Error("Number too big 0x"+i.toString(16))}if(i>=-32)return 1;if(i>=-128)return 2;if(i>=-32768)return 3;if(i>=-2147483648)return 5;throw new Error("Number too small -0x"+i.toString(16).substr(1))}if(c==="boolean"||i===null||i===void 0)return 1;if(c==="object"){let o,s=0;if(Array.isArray(i)){o=i.length;for(let h=0;h<o;h++)s+=r(i[h])}else{const h=Object.keys(i);o=h.length;for(let f=0;f<o;f++){const y=h[f];s+=r(y)+r(i[y])}}if(o<16)return 1+s;if(o<65536)return 3+s;if(o<4294967296)return 5+s;throw new Error("Array or object too long 0x"+o.toString(16))}throw new Error("Unknown type "+c)}function n(i,c,o,s){const h=typeof i;if(h==="string"){const f=(0,e.utf8ByteCount)(i);if(f<32)return c.setUint8(s,f|160),(0,e.utf8Write)(o,s+1,i),1+f;if(f<256)return c.setUint8(s,217),c.setUint8(s+1,f),(0,e.utf8Write)(o,s+2,i),2+f;if(f<65536)return c.setUint8(s,218),c.setUint16(s+1,f),(0,e.utf8Write)(o,s+3,i),3+f;if(f<4294967296)return c.setUint8(s,219),c.setUint32(s+1,f),(0,e.utf8Write)(o,s+5,i),5+f}if(i instanceof Uint8Array){const f=i.byteLength,y=new Uint8Array(c.buffer);if(f<256)return c.setUint8(s,196),c.setUint8(s+1,f),y.set(i,s+2),2+f;if(f<65536)return c.setUint8(s,197),c.setUint16(s+1,f),y.set(i,s+3),3+f;if(f<4294967296)return c.setUint8(s,198),c.setUint32(s+1,f),y.set(i,s+5),5+f}if(h==="number"){if(!isFinite(i))throw new Error("Number not finite: "+i);if(Math.floor(i)!==i)return c.setUint8(s,203),c.setFloat64(s+1,i),9;if(i>=0){if(i<128)return c.setUint8(s,i),1;if(i<256)return c.setUint8(s,204),c.setUint8(s+1,i),2;if(i<65536)return c.setUint8(s,205),c.setUint16(s+1,i),3;if(i<4294967296)return c.setUint8(s,206),c.setUint32(s+1,i),5;throw new Error("Number too big 0x"+i.toString(16))}if(i>=-32)return c.setInt8(s,i),1;if(i>=-128)return c.setUint8(s,208),c.setInt8(s+1,i),2;if(i>=-32768)return c.setUint8(s,209),c.setInt16(s+1,i),3;if(i>=-2147483648)return c.setUint8(s,210),c.setInt32(s+1,i),5;throw new Error("Number too small -0x"+(-i).toString(16).substr(1))}if(i==null)return c.setUint8(s,192),1;if(h==="boolean")return c.setUint8(s,i?195:194),1;if(h==="object"){let f,y=0;const _=Array.isArray(i);let g;if(_?f=i.length:(g=Object.keys(i),f=g.length),f<16?(c.setUint8(s,f|(_?144:128)),y=1):f<65536?(c.setUint8(s,_?220:222),c.setUint16(s+1,f),y=3):f<4294967296&&(c.setUint8(s,_?221:223),c.setUint32(s+1,f),y=5),_)for(let a=0;a<f;a++)y+=n(i[a],c,o,s+y);else for(let a=0,d=g.length;a<d;a++){const p=g[a];y+=n(p,c,o,s+y),y+=n(i[p],c,o,s+y)}return y}throw new Error("Unknown type "+h)}return yC}var LB;function CJ(){if(LB)return gp;LB=1,Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryEncoder=void 0;const e=lt(),t=SJ(),r=MT(),n=JD(),i=eX(),c=ZD();class o{setFilter(d){this.filter=d||n.Category.DefaultFilter}isCategoryIncluded(d){return this.filter.includeCategory(d)}setFormatter(d){this.formatter=d||n.Category.DefaultFormatter}startDataBlock(d){this.dataBlocks.push({header:(d||"").replace(/[ \n\t]/g,"").toUpperCase(),categories:[]})}writeCategory(d,p,u){if(!this.data)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlocks.length)throw new Error("No data block created.");if(!u?.ignoreFilter&&!this.filter.includeCategory(d.name))return;const{instance:m,rowCount:v,source:b}=(0,i.getCategoryInstanceData)(d,p);if(!v)return;const P={name:"_"+d.name,columns:[],rowCount:v},C=(0,i.getIncludedFields)(m);for(const l of C){if(!this.filter.includeField(d.name,l.name))continue;const S=this.formatter.getFormat(d.name,l.name);P.columns.push(_(d.name,l,b,v,S,this.binaryEncodingProvider,this.autoClassify))}P.columns.length&&this.dataBlocks[this.dataBlocks.length-1].categories.push(P)}encode(){this.encodedData||(this.encodedData=(0,t.encodeMsgPack)(this.data),this.data=null,this.dataBlocks=null)}writeTo(d){d.writeBinary(this.encodedData)}getData(){return this.encode(),this.encodedData}getSize(){return this.encodedData.length}constructor(d,p,u){this.autoClassify=u,this.dataBlocks=[],this.filter=n.Category.DefaultFilter,this.formatter=n.Category.DefaultFormatter,this.isBinary=!0,this.binaryEncodingProvider=void 0,this.binaryEncodingProvider=p,this.data={encoder:d,version:r.VERSION,dataBlocks:this.dataBlocks}}}gp.BinaryEncoder=o;function s(a,d){return d&&d.typedArray?d.typedArray:a.defaultFormat&&a.defaultFormat.typedArray?a.defaultFormat.typedArray:a.type===n.Field.Type.Str?Array:a.type===n.Field.Type.Int?Int32Array:Float64Array}function h(a){return a===n.Field.Type.Str?r.ArrayEncoder.by(r.ArrayEncoding.stringArray):r.ArrayEncoder.by(r.ArrayEncoding.byteArray)}function f(a,d,p,u){return p&&p.encoder?p.encoder:d.defaultFormat&&d.defaultFormat.encoder?d.defaultFormat.encoder:u?u.get(a,d.name):void 0}function y(a,d){return a===n.Field.Type.Str?r.ArrayEncoder.by(r.ArrayEncoding.stringArray):a===n.Field.Type.Int?(0,c.classifyIntArray)(d):(0,c.classifyFloatArray)(d)}function _(a,d,p,u,m,v,b){const{array:P,allPresent:C,mask:l}=g(d,s(d,m),u,p);let S;d.type===n.Field.Type.Str?S=r.ArrayEncoder.by(r.ArrayEncoding.stringArray):S=f(a,d,m,v),S||(b?S=y(d.type,P):S=h(d.type));const T=S.encode(P);let A;if(!C){const x=r.ArrayEncoder.by(r.ArrayEncoding.runLength).and(r.ArrayEncoding.byteArray).encode(l);x.data.length<l.length?A=x:A=r.ArrayEncoder.by(r.ArrayEncoding.byteArray).encode(l)}return{name:d.name,data:T,mask:A}}function g(a,d,p,u){const m=a.type===n.Field.Type.Str,v=new d(p),b=new Uint8Array(p),P=a.valueKind,C=a.value;let l=!0,S=0;for(let T=0;T<u.length;T++){const A=u[T].data,x=u[T].keys();for(;x.hasNext;){const M=x.move(),D=P?P(M,A):e.Column.ValueKinds.Present;if(D!==e.Column.ValueKinds.Present)b[S]=D,m&&(v[S]=""),l=!1;else{const V=C(M,A,S);typeof V=="string"&&!V?(b[S]=e.Column.ValueKinds.NotPresent,l=!1):b[S]=e.Column.ValueKinds.Present,v[S]=V}S++}}return{array:v,allPresent:l,mask:b}}return gp}var NB;
15function $i(){if(NB)return mp;NB=1,Object.defineProperty(mp,"__esModule",{value:!0}),mp.CifWriter=void 0;const e=At,t=_J(),r=CJ(),n=e.__importStar(JD()),i=MT();var c;return(function(o){o.Encoder=n.Encoder,o.Category=n.Category,o.Field=n.Field,o.Encoding=i.ArrayEncoding;function s(d){const{binary:p=!1,encoderName:u="mol*"}=d||{};return p?new r.BinaryEncoder(u,d?d.binaryEncodingPovider:void 0,d?!!d.binaryAutoClassifyEncoding:!1):new t.TextEncoder}o.createEncoder=s;function h(){return o.Field.build()}o.fields=h;var f=o.Encoding;o.Encodings={deltaRLE:f.by(f.delta).and(f.runLength).and(f.integerPacking),fixedPoint2:f.by(f.fixedPoint(100)).and(f.delta).and(f.integerPacking),fixedPoint3:f.by(f.fixedPoint(1e3)).and(f.delta).and(f.integerPacking)};function y(d,p){return{fields:d,source:[p]}}o.categoryInstance=y;function _(d){return{get(p,u){const m=d.categories[p];if(!m)return;const v=m.getField(u);return v&&v.binaryEncoding?i.ArrayEncoder.fromEncoding(v.binaryEncoding):void 0}}}o.createEncodingProviderFromCifFrame=_;function g(d){return{get(p,u){for(let m=0;m<d.length;m++){const v=d[m];if(v.categoryName===p&&v.columnName===u)return a(v)}}}}o.createEncodingProviderFromJsonConfig=g;function a(d){const p=d.precision;if(p!==void 0){const u=Math.pow(10,p),m=f.by(f.fixedPoint(u));switch(d.encoding){case"pack":return m.and(f.integerPacking);case"rle":return m.and(f.runLength).and(f.integerPacking);case"delta":return m.and(f.delta).and(f.integerPacking);case"delta-rle":return m.and(f.delta).and(f.runLength).and(f.integerPacking)}}else switch(d.encoding){case"pack":return f.by(f.integerPacking);case"rle":return f.by(f.runLength).and(f.integerPacking);case"delta":return f.by(f.delta).and(f.integerPacking);case"delta-rle":return f.by(f.delta).and(f.runLength).and(f.integerPacking)}throw new Error("cannot be reached")}})(c||(mp.CifWriter=c={})),mp}var qB;function tX(){if(qB)return fp;qB=1,Object.defineProperty(fp,"__esModule",{value:!0}),fp.ComponentBond=void 0;const e=dt(),t=bl(),r=$i(),n=lt(),i=as();var c;return(function(o){o.Descriptor={name:"chem_comp_bond",cifExport:{prefix:"",categories:[{name:"chem_comp_bond",instance(g){const a=o.Provider.get(g.firstModel);if(!a)return r.CifWriter.Category.Empty;const d=a.data;if(!d)return r.CifWriter.Category.Empty;const p=g.structures[0].uniqueResidueNames,{comp_id:u,_rowCount:m}=d,v=[];for(let b=0;b<m;b++)p.has(u.value(b))&&(v[v.length]=b);return r.CifWriter.Category.ofTable(d,v)}}]}},o.Provider=i.FormatPropertyProvider.create(o.Descriptor);function s(g,a){return n.Table.pick(a,t.mmCIF_Schema.chem_comp_bond,d=>g.properties.chemicalComponentMap.has(a.comp_id.value(d)))}o.chemCompBondFromTable=s;function h(g){const a=new Map;function d(S){if(a.has(S))return a.get(S);const T=new _(S);return a.set(S,T),T}const{comp_id:p,atom_id_1:u,atom_id_2:m,value_order:v,pdbx_aromatic_flag:b,_rowCount:P,pdbx_ordinal:C}=g;let l=d(p.value(0));for(let S=0;S<P;S++){const T=p.value(S),A=u.value(S),x=m.value(S),M=v.value(S),D=b.value(S)==="y",V=C.value(S);l.compId!==T&&(l=d(T));let R=e.BondType.Flag.Covalent,E=1;switch(D&&(R|=e.BondType.Flag.Aromatic),M.toLowerCase()){case"delo":R|=e.BondType.Flag.Aromatic;break;case"doub":E=2;break;case"trip":E=3;break;case"quad":E=4;break}l.add(A,x,E,R,V)}return a}o.getEntriesFromChemCompBond=h;function f(g,a,d,p){return p&&d.startsWith("D")&&a!=="DOD"&&(d="H"+d.substring(1)),g.get(d)}class y{get(a,d){return f(this.map,this.compId,a,d)}constructor(a,d){this.atomId=a,this.compId=d,this.map=new Map}}o.Pairs=y;class _{add(a,d,p,u,m,v=!0){const b=this.map.get(a);if(b!==void 0)b.map.get(d)===void 0&&b.map.set(d,{order:p,flags:u,key:m});else{const P=new y(a,this.compId);P.map.set(d,{order:p,flags:u,key:m}),this.map.set(a,P)}v&&this.add(d,a,p,u,m,!1)}get(a,d){return f(this.map,this.compId,a,d)}constructor(a){this.compId=a,this.map=new Map}}o.Entry=_})(c||(fp.ComponentBond=c={})),fp}var yp={},UB;function DT(){if(UB)return yp;UB=1,Object.defineProperty(yp,"__esModule",{value:!0}),yp.StructConn=void 0;const e=dt(),t=lt(),r=at(),n=$i(),i=KD(),c=as();var o;return(function(s){s.Descriptor={name:"struct_conn",cifExport:{prefix:"",categories:[{name:"struct_conn",instance(g){const a=s.Provider.get(g.firstModel);if(!a||a.entries.length===0)return n.CifWriter.Category.Empty;const d=g.structures[0],p=[];for(const u of a.entries)f(d,u.partnerA.atomIndex)&&f(d,u.partnerB.atomIndex)&&(p[p.length]=u.rowIndex);return n.CifWriter.Category.ofTable(a.data,p)}}]}},s.Provider=c.FormatPropertyProvider.create(s.Descriptor);function h(g){const a=s.Provider.get(g);return!!a&&a.entries.length/g.atomicConformation.atomId.rowCount>.95}s.isExhaustive=h;function f({units:g},a){for(let d=0,p=g.length;d<p;d++)if(r.SortedArray.indexOf(g[d].elements,a)>=0)return!0;return!1}function y(g){const a=new Map;for(const d of g){const{partnerA:{atomIndex:p},partnerB:{atomIndex:u}}=d;a.has(p)?a.get(p).push(d):a.set(p,[d]),a.has(u)?a.get(u).push(d):a.set(u,[d])}return a}s.getAtomIndexFromEntries=y;function _(g,a){const{conn_type_id:d,pdbx_dist_value:p,pdbx_value_order:u}=g,m={label_asym_id:g.ptnr1_label_asym_id,label_seq_id:g.ptnr1_label_seq_id,auth_seq_id:g.ptnr1_auth_seq_id,label_atom_id:g.ptnr1_label_atom_id,label_alt_id:g.pdbx_ptnr1_label_alt_id,ins_code:g.pdbx_ptnr1_PDB_ins_code,symmetry:g.ptnr1_symmetry},v={label_asym_id:g.ptnr2_label_asym_id,label_seq_id:g.ptnr2_label_seq_id,auth_seq_id:g.ptnr2_auth_seq_id,label_atom_id:g.ptnr2_label_atom_id,label_alt_id:g.pdbx_ptnr2_label_alt_id,ins_code:g.pdbx_ptnr2_PDB_ins_code,symmetry:g.ptnr2_symmetry},b=Array.from(a.entities.data.id.toArray()),P=(l,S)=>{if(S.label_asym_id.valueKind(l)!==t.Column.ValueKinds.Present)return;const T=S.label_asym_id.value(l),A=S.label_atom_id.value(l);if(!A)return;const x=S.auth_seq_id.valueKind(l)===t.Column.ValueKind.Present?S.auth_seq_id.value(l):S.label_seq_id.value(l),M=S.ins_code.value(l),D=S.label_alt_id.value(l);for(const V of b){const R=a.atomicHierarchy.index.findResidue(V,T,x,M);if(R<0)continue;const E=a.atomicHierarchy.index.findAtomOnResidue(R,A,D);if(!(E<0))return{residueIndex:R,atomIndex:E,symmetry:S.symmetry.value(l)}}},C=[];for(let l=0;l<g._rowCount;l++){const S=P(l,m),T=P(l,v);if(S===void 0||T===void 0)continue;const A=d.value(l),x=u.value(l)||"";let M=e.BondType.Flag.None,D=1;switch(x){case"sing":D=1;break;case"doub":D=2;break;case"trip":D=3;break;case"quad":D=4;break;default:D=(0,i.getInterBondOrderFromTable)(g.ptnr1_label_comp_id.value(l),g.ptnr1_label_atom_id.value(l),g.ptnr2_label_comp_id.value(l),g.ptnr2_label_atom_id.value(l))}switch(A){case"covale":M=e.BondType.Flag.Covalent;break;case"disulf":M=e.BondType.Flag.Covalent|e.BondType.Flag.Disulfide;break;case"hydrog":M=e.BondType.Flag.HydrogenBond;break;case"metalc":M=e.BondType.Flag.MetallicCoordination;break}C.push({rowIndex:l,flags:M,order:D,distance:p.value(l),partnerA:S,partnerB:T})}return C}s.getEntriesFromStructConn=_})(o||(yp.StructConn=o={})),yp}var jB;function PJ(){if(jB)return hC;jB=1,Object.defineProperty(hC,"__esModule",{value:!0}),hC.computeIntraUnitBonds=x;const e=dt(),t=XD(),r=is(),n=AT(),i=at(),c=KD(),o=Ua(),s=tX(),h=DT(),f=Ge(),y=rn(),_=NT(),g=_t(),a=f.Vec3.distance,d=6,p=5.5,u=3.9;function m(M,D,V,R,E,I,B){const w=new r.IntAdjacencyGraph.EdgeBuilder(I,M,D),O=new
15Uint16Array(w.slotCount),F=new Int8Array(w.slotCount),L=new Uint32Array(w.slotCount);for(let U=0,q=w.edgeCount;U<q;U++)w.addNextEdge(),w.assignProperty(O,R[U]),w.assignProperty(F,V[U]),w.assignProperty(L,E[U]);return w.createGraph({flags:O,order:F,key:L},B)}const v=(0,f.Vec3)(),b=(0,f.Vec3)();function P(M,D,V){return M.conformation.position(D,v),M.conformation.position(V,b),a(v,b)}const C=new Set;function l(M){const D=o.IndexPairBonds.Provider.get(M.model),{elements:V}=M,{type_symbol:R}=M.model.atomicHierarchy.atoms,E=M.elements.length,{maxDistance:I}=D,{offset:B,b:w,edgeProps:{order:O,distance:F,flag:L,key:U,operatorA:q,operatorB:N}}=D.bonds,{atomSourceIndex:k}=M.model.atomicHierarchy,{invertedIndex:j}=_.Model.getInvertedAtomSourceIndex(M.model),H=[],G=[],z=[],W=[],X=[],Y=M.conformation.operator.key;for(let K=0;K<E;K++){const Q=V[K],J=(0,n.getElementIdx)(R.value(Q)),ae=(0,n.isHydrogen)(J),te=k.value(Q);for(let ne=B[te],$=B[te+1];ne<$;++ne){const ie=j[w[ne]];if(Q>=ie)continue;const Z=i.SortedArray.indexOf(M.elements,ie);if(Z<0)continue;const re=q[ne],oe=N[ne];if(re>=0&&re!==Y||oe>=0&&oe!==Y)continue;const ce=(0,n.getElementIdx)(R.value(ie)),ue=F[ne],pe=P(M,Q,ie);let he=!1;if(ue>=0)he=(0,y.equalEps)(pe,ue,.3);else if(I>=0)he=pe<I;else{const fe=(0,n.getPairingThreshold)(J,ce,(0,n.getElementThreshold)(J),(0,n.getElementThreshold)(ce));he=pe<fe,ae&&(0,n.isHydrogen)(ce)&&(he=!1)}he&&(H[H.length]=K,G[G.length]=Z,W[W.length]=O[ne],z[z.length]=L[ne],X[X.length]=U[ne])}}return m(H,G,W,z,X,E,{canRemap:!1,cacheable:D.cacheable})}function S(M,D){const V=_.Model.isCoarseGrained(M.model),R=V?d:D.maxRadius,{x:E,y:I,z:B}=M.model.atomicConformation,w=M.elements.length,{elements:O,residueIndex:F,chainIndex:L}=M,{type_symbol:U,label_atom_id:q,label_alt_id:N,label_comp_id:k}=M.model.atomicHierarchy.atoms,{label_seq_id:j}=M.model.atomicHierarchy.residues,{traceElementIndex:H}=M.model.atomicHierarchy.derived.residue,{index:G}=M.model.atomicHierarchy,{byEntityKey:z}=M.model.sequence,W=M.lookup3d,X=h.StructConn.Provider.get(M.model),Y=s.ComponentBond.Provider.get(M.model),K=h.StructConn.isExhaustive(M.model),Q=[],J=[],ae=[],te=[],ne=[];let $=-1,ie,Z=!0,re=!0,oe=!0;const ce=C,ue=!!X?.residueCantorPairs.size;for(let pe=0;pe<w;pe++){const he=O[pe],fe=U.value(he);Z&&fe!=="H"&&fe!=="O"&&(Z=!1);const de=D.forceCompute?void 0:X&&X.byAtomIndex.get(he);let ge=!1;if(de)for(const Be of de){const{partnerA:Me,partnerB:Re}=Be;if(Me.symmetry!==Re.symmetry)continue;const Te=Me.atomIndex===he?Re:Me,Ve=i.SortedArray.indexOf(M.elements,Te.atomIndex);Ve<0||O[Ve]<he||(Q[Q.length]=pe,J[J.length]=Ve,ae[ae.length]=Be.flags,te[te.length]=Be.order,ne[ne.length]=Be.rowIndex,ge||ce.clear(),ge=!0,ce.add(Ve))}if(K)continue;const Ce=F[he],ve=j.value(Ce),le=k.value(he);if(!D.forceCompute&&Ce!==$)if(Y&&Y.entries.has(le)){const Be=z[G.getEntityFromChain(L[he])];Be&&Be.sequence.microHet.has(ve)?ie=void 0:ie=Y.entries.get(le)}else ie=void 0;$=Ce;const me=(0,n.getElementIdx)(fe),ee=(0,n.isHydrogen)(me),se=q.value(he),ye=ie?ie.get(se,ee):void 0,{indices:Se,count:Ae,squaredDistances:_e}=W.find(E[he],I[he],B[he],R),be=(0,n.getElementThreshold)(me),xe=N.value(he),we=n.MetalsSet.has(me);for(let Be=0;Be<Ae;Be++){const Me=Se[Be];if(ge&&ce.has(Me))continue;const Re=O[Me];if(Re<=he)continue;const Te=N.value(Re);if(xe&&Te&&xe!==Te)continue;if(ue){const De=(0,g.sortedCantorPairing)(F[he],F[Re]);if(X.residueCantorPairs.has(De))continue}const Ve=(0,n.getElementIdx)(U.value(Re)),qe=(0,n.isHydrogen)(Ve);if(ee&&qe)continue;const ke=(we||n.MetalsSet.has(Ve))&&!(ee||qe),ze=F[Re];if(Ce===ze&&ye){const De=ye.get(q.value(Re),qe);if(De){Q[Q.length]=pe,J[J.length]=Me,te[te.length]=De.order;let Oe=De.flags;ke&&(Oe|e.BondType.Flag.Covalent&&(Oe^=e.BondType.Flag.Covalent),Oe|=e.BondType.Flag.MetallicCoordination),ae[ae.length]=Oe,ne[ne.length]=De.key}continue}const We=Math.sqrt(_e[Be]);if(We===0)continue;let Je=!1;if(V)Ce===ze?Je=We<=p:Je=We<=u&&H[Ce]===he&&H[ze]===Re;else{const De=(0,n.getPairingThreshold)(me,Ve,be,(0,n.getElementThreshold)(Ve));Je=We<=De}if(Je){Q[Q.length]=pe,J[J.length]=Me,te[te.length]=(0,c.getIntraBondOrderFromTable)(le,se,q.value(Re)),ae[ae.length]=(ke?e.BondType.Flag.MetallicCoordination:e.BondType.Flag.Covalent)|e.BondType.Flag.Computed,ne[ne.length]=-1;const De=j.value(ze);ve===De&&(re=!1),Math.abs(ve-De)>1&&(oe=!1)}}}return m(Q,J,te,ae,ne,w,{canRemap:Z||re&&oe})}function T(M){if(M.conformation.operator.key===-1)return!1;const D=o.IndexPairBonds.Provider.get(M.model);return!!D?.hasOperators}function A(M){const D=o.IndexPairBonds.Provider.get(M.model),V=D.bySameOperator.get(M.conformation.operator.key);if(!V)return t.IntraUnitBonds.Empty;const{a:R,b:E,edgeProps:{key:I,flag:B,order:w}}=D.bonds,{invertedIndex:O}=_.Model.getInvertedAtomSourceIndex(M.model),{elements:F}=M,L=[],U=[],q=[],N=[],k=[];for(let j=0,H=V.length;j<H;++j){const G=V[j];if(R[G]>=E[G])continue;const z=O[R[G]],W=i.SortedArray.indexOf(F,z);if(W<0)continue;const X=O[E[G]],Y=i.SortedArray.indexOf(F,X);Y<0||(L[L.length]=W,U[U.length]=Y,q[q.length]=B[G],N[N.length]=w[G],k[k.length]=I[G])}return m(L,U,N,q,k,F.length,{canRemap:!1,cacheable:D.cacheable})}function x(M,D){const V={...n.DefaultBondComputationProps,...D};return V.noCompute||M.elements.length<=1?t.IntraUnitBonds.Empty:!V.forceCompute&&o.IndexPairBonds.Provider.get(M.model)?T(M)?A(M):l(M):S(M,V)}return hC}var vC={},GB;function TJ(){if(GB)return vC;GB=1,Object.defineProperty(vC,"__esModule",{value:!0}),vC.computeInterUnitBonds=D;const e=dt(),t=Wa(),r=Zn(),n=AT(),i=XD(),c=at(),o=Ge(),s=KD(),h=Ua(),f=xT(),y=DT(),_=rn(),g=Al(),a=_t(),d=o.Vec3.distance,p=o.Vec3.set,u=o.Vec3.squaredDistance,m=o.Vec3.transformMat4,v=(0,o.Vec3)(),b=(0,o.Vec3)();function P(R,E,I,B){return R.conformation.position(E,v),I.conformation.position(B,b),d(v,b)}const C=(0,o.Mat4)(),l=(0,o.Vec3)();function S(R,E,I,B){const{maxRadius:w}=I,{elements:O,residueIndex:F}=R,{x:L,y:U,z:q}=R.model.atomicConformation,{elements:N,residueIndex:k}=E,j=R.elements.length,{type_symbol:H,label_alt_id:G,label_atom_id:z,label_comp_id:W}=R.model.atomicHierarchy.atoms,{type_symbol:X,label_alt_id:Y,label_atom_id:K,label_comp_id:Q}=E.model.atomicHierarchy.atoms,{auth_seq_id:J}=R.model.atomicHierarchy.residues,{auth_seq_id:ae}=E.model.atomicHierarchy.residues,{occupancy:te}=R.model.atomicConformation,{occupancy:ne}=E.model.atomicConformation,$=te.isDefined&&ne.isDefined,ie=R.model===E.model&&y.StructConn.Provider.get(R.model),Z=!I.forceCompute&&R.model===E.model&&h.IndexPairBonds.Provider.get(R.model),{atomSourceIndex:re}=R.model.atomicHierarchy,{invertedIndex:oe}=Z?g.Model.getInvertedAtomSourceIndex(E.model):{invertedIndex:void 0},ce=R.model===E.model&&y.StructConn.isExhaustive(R.model),ue=o.Mat4.mul(C,E.conformation.operator.inverse,R.conformation.operator.matrix),pe=!o.Mat4.isIdentity(ue),{center:he,radius:fe}=E.boundary.sphere,de=(fe+w)*(fe+w);B.startUnitPair(R.id,E.id);const ge=R.conformation.operator.key,Ce=E.conformation.operator.key;for(let ve=0;ve<j;ve++){const le=O[ve];if(p(l,L[le],U[le],q[le]),pe&&m(l,l,ue),u(l,he)>de)continue;if(!I.forceCompute&&Z){const{maxDistance:Te}=Z,{offset:Ve,b:qe,edgeProps:{order:ke,distance:ze,flag:We,key:Je,operatorA:De,operatorB:Oe}}=Z.bonds,Fe=re.value(le),Le=(0,n.getElementIdx)(H.value(le));for(let He=Ve[Fe],Pe=Ve[Fe+1];He<Pe;++He){const Ie=oe[qe[He]],Ee=c.SortedArray.indexOf(E.elements,Ie);if(Ee<0)continue;const Ue=De[He],$e=Oe[He];if(Ue>=0&&$e>=0&&(Ue===$e||Ue!==ge||$e!==Ce))continue;const Ye=(0,n.getElementIdx)(H.value(Ie)),Qe=ze[He],it=P(R,le,E,Ie);let ht=!1;if(Qe>=0)ht=(0,_.equalEps)(it,Qe,.3);else if(Te>=0)ht=it<Te;else{const mt=(0,n.getPairingThreshold)(Le,Ye,(0,n.getElementThreshold)(Le),(0,n.getElementThreshold)(Ye));ht=it<mt,(0,n.isHydrogen)(Le)&&(0,n.isHydrogen)(Ye)&&(ht=!1)}ht&&B.add(ve,Ee,{order:ke[He],flag:We[He],key:Je[He]})}continue}const me=I.forceCompute?void 0:ie&&ie.byAtomIndex.get(le);if(me&&me.length){let Te=!1;for(const Ve of me){const{partnerA:qe,partnerB:ke}=Ve,ze=qe.atomIndex===le?ke:qe,We=c.SortedArray.indexOf(E.elements,ze.atomIndex);We<0||P(R,le,E,ze.atomIndex)>w||(B.add(ve,We,{order:Ve.order,flag:Ve.flags,key:Ve.rowIndex}),Te=!0)}if(Te)continue}if(ce)continue;const ee=te.value(le),{lookup3d:se}=E,{indices:ye,count:Se,squaredDistances:Ae}=se.find(l[0],l[1],l[2],w);if(Se===0)continue;const _e=(0,n.getElementIdx)(H.value(le)),be=(0,n.isHydrogen)(_e),xe=(0,n.getElementThreshold)(_e),we=G.value(le),Be=n.MetalsSet.has(_e),Me=z.value(le),Re=W.value(F[le]);for(let Te=0;Te<Se;Te++){const Ve=ye[Te],qe=N[Ve],ke=Y.value(qe);if(we&&ke&&we!==ke||$&&ne.value(qe)<1&&ee<1&&J.value(F[le])===ae.value(k[qe]))continue;if(ie&&R.model===E.model){const Fe=(0,a.sortedCantorPairing)(F[le],k[qe]);
15if(ie.residueCantorPairs.has(Fe))continue}const ze=(0,n.getElementIdx)(X.value(qe)),We=(0,n.isHydrogen)(ze);if(be&&We)continue;const Je=(Be||n.MetalsSet.has(ze))&&!(be||We),De=Math.sqrt(Ae[Te]);if(De===0)continue;const Oe=(0,n.getPairingThreshold)(_e,ze,xe,(0,n.getElementThreshold)(ze));if(De<=Oe){const Fe=K.value(qe),Le=Q.value(k[qe]);B.add(ve,Ve,{order:(0,s.getInterBondOrderFromTable)(Re,Le,Me,Fe),flag:(Je?e.BondType.Flag.MetallicCoordination:e.BondType.Flag.Covalent)|e.BondType.Flag.Computed,key:-1})}}}B.finishUnitPair()}function T(R){for(const E of R.models){const I=h.IndexPairBonds.Provider.get(E);if(!I?.hasOperators)return!1}for(const E of R.units)if(E.conformation.operator.key===-1)return!1;return!0}function A(R,E){const I=new Map;for(const B of R.units){const{key:w}=B.conformation.operator;I.has(w)?I.get(w).add(B):I.set(w,new Set([B]))}for(const B of R.models){const w=h.IndexPairBonds.Provider.get(B),{a:O,b:F}=w.bonds,{order:L,flag:U,key:q,operatorA:N,operatorB:k}=w.bonds.edgeProps,{invertedIndex:j}=g.Model.getInvertedAtomSourceIndex(B),H=new Map;for(const W of R.units)if(W.model===B)for(let X=0,Y=W.elements.length;X<Y;++X){const K=W.elements[X];H.has(K)?H.get(K).add(W):H.set(K,new Set([W]))}const G=new Map;for(let W=0,X=N.length;W<X;++W){let Y,K;if(N[W]===k[W]?(Y=H.get(j[O[W]]),K=H.get(j[F[W]])):(Y=I.get(N[W]),K=I.get(k[W])),!(!Y||!K)){for(const Q of Y)if(N[W]===Q.conformation.operator.key)for(const J of K){if(k[W]!==J.conformation.operator.key||Q===J||!r.Unit.isAtomic(Q)||!r.Unit.isAtomic(J)||Q.id>J.id)continue;const ae=(0,a.cantorPairing)(Q.id,J.id);G.has(ae)?G.get(ae).add(W):G.set(ae,new Set([W]))}}}const z=[-1,-1];G.forEach((W,X)=>{const[Y,K]=(0,a.invertCantorPairing)(z,X),Q=R.unitMap.get(Y),J=R.unitMap.get(K);E.startUnitPair(Y,K),W.forEach(ae=>{const te=j[O[ae]],ne=c.SortedArray.indexOf(Q.elements,te);if(ne<0)return;const $=j[F[ae]],ie=c.SortedArray.indexOf(J.elements,$);ie<0||E.add(ne,ie,{order:L[ae],flag:U[ae],key:q[ae]})}),E.finishUnitPair()})}}const x={...n.DefaultBondComputationProps,ignoreWater:!0,ignoreIon:!0};function M(R,E){const I=new f.InterUnitGraph.Builder,B=R.models.some(O=>h.IndexPairBonds.Provider.get(O)),w=R.models.some(O=>y.StructConn.isExhaustive(O));return E.noCompute||R.isCoarseGrained&&!B&&!w?new i.InterUnitBonds(I.getMap()):!E.forceCompute&&T(R)?(A(R,I),new i.InterUnitBonds(I.getMap())):(t.Structure.eachUnitPair(R,(O,F)=>{S(O,F,E,I)},{maxRadius:E.maxRadius,validUnit:O=>E.validUnit(O),validUnitPair:(O,F)=>E.validUnitPair(R,O,F)}),new i.InterUnitBonds(I.getMap()))}function D(R,E){const I={...x,...E};return M(R,{...I,validUnit:E&&E.validUnit||(B=>r.Unit.isAtomic(B)),validUnitPair:E&&E.validUnitPair||((B,w,O)=>{if(!t.Structure.validUnitPair(B,w,O))return!1;const L=w.model.atomicHierarchy.derived.residue.moleculeType,U=O.model.atomicHierarchy.derived.residue.moleculeType,q=(!r.Unit.isAtomic(w)||L[w.residueIndex[w.elements[0]]]!==e.MoleculeType.Water)&&(!r.Unit.isAtomic(O)||U[O.residueIndex[O.elements[0]]]!==e.MoleculeType.Water),N=!r.Unit.isAtomic(w)||L[w.residueIndex[w.elements[0]]]!==e.MoleculeType.Ion,k=!r.Unit.isAtomic(O)||U[O.residueIndex[O.elements[0]]]!==e.MoleculeType.Ion,j=N&&k;return(q||!I.ignoreWater)&&(j||!I.ignoreIon)?!0:V(w,O)})})}function V(R,E){if(R.model!==E.model||!r.Unit.isAtomic(R)||!r.Unit.isAtomic(E))return!1;const I=y.StructConn.Provider.get(R.model);if(!I)return!1;const B=R.elements.length<E.elements.length?R:E,w=R.elements.length>=E.elements.length?R:E,{elements:O}=B,{elements:F}=w,{indexOf:L}=c.SortedArray;for(let U=0,q=O.length;U<q;U++){const N=O[U],k=I.byAtomIndex.get(N);if(k?.length)for(const j of k){const H=j.partnerA.atomIndex===N?j.partnerB.atomIndex:j.partnerA.atomIndex;if(L(F,H)>=0)return!0}}return!1}return vC}var zB;function IT(){return zB||(zB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Bond=void 0;const t=At,r=jr(),n=dt(),i=at(),c=rS();t.__exportStar(XD(),e),t.__exportStar(PJ(),e),t.__exportStar(TJ(),e);var o;(function(s){function h(S,T,A,x,M,D){return{kind:"bond-location",aStructure:S,aUnit:T,aIndex:A,bStructure:x,bUnit:M,bIndex:D}}s.Location=h;function f(S){return!!S&&S.kind==="bond-location"}s.isLocation=f;
15function y(S,T){return S.aStructure.label===T.aStructure.label&&S.bStructure.label===T.bStructure.label&&S.aIndex===T.aIndex&&S.bIndex===T.bIndex&&S.aUnit.id===T.aUnit.id&&S.bUnit.id===T.bUnit.id}s.areLocationsEqual=y;function _(S,T){return{kind:"bond-loci",structure:S,bonds:T}}s.Loci=_;function g(S){return!!S&&S.kind==="bond-loci"}s.isLoci=g;function a(S,T){if(S.structure!==T.structure||S.bonds.length!==T.bonds.length)return!1;for(let A=0,x=S.bonds.length;A<x;++A)if(!y(S.bonds[A],T.bonds[A]))return!1;return!0}s.areLociEqual=a;function d(S){return S.bonds.length===0}s.isLociEmpty=d;function p(S,T){if(T===S.structure)return S;const A=[];return S.bonds.forEach(x=>{const M=T.unitMap.get(x.aUnit.id);if(!M)return;const D=T.unitMap.get(x.bUnit.id);if(!D)return;const V=x.aUnit.elements[x.aIndex],R=i.SortedArray.indexOf(M.elements,V);if(R===-1)return;const E=x.bUnit.elements[x.bIndex],I=i.SortedArray.indexOf(D.elements,E);I!==-1&&A.push(h(S.structure,M,R,S.structure,D,I))}),_(T,A)}s.remapLoci=p;function u(S){const T=[],A=new Map;for(const x of S.bonds){const{aIndex:M,aUnit:D,bIndex:V,bUnit:R}=x;D===R?A.has(D.id)?A.get(D.id).push(M,V):A.set(D.id,[M,V]):(A.has(D.id)?A.get(D.id).push(M):A.set(D.id,[M]),A.has(R.id)?A.get(R.id).push(V):A.set(R.id,[V]))}return A.forEach((x,M)=>{T.push({unit:S.structure.unitMap.get(M),indices:i.SortedArray.deduplicate(i.SortedArray.ofUnsortedArray(x))})}),r.StructureElement.Loci(S.structure,T)}s.toStructureElementLoci=u;function m(S){const{aUnit:T,aIndex:A}=S.bonds[0];return r.StructureElement.Loci(S.structure,[{unit:T,indices:i.OrderedSet.ofSingleton(A)}])}s.toFirstStructureElementLoci=m;function v(S,T){if(T.aUnit===T.bUnit){const A=T.aUnit.bonds,x=A.getEdgeIndex(T.aIndex,T.bIndex);return x<0?n.BondType.create(n.BondType.Flag.None):n.BondType.create(A.edgeProps.flags[x])}else{const A=S.interUnitBonds.getBondFromLocation(T);return A?n.BondType.create(A.props.flag):n.BondType.create(n.BondType.Flag.None)}}s.getType=v;function b(S,T){if(T.aUnit===T.bUnit){const A=T.aUnit.bonds,x=A.getEdgeIndex(T.aIndex,T.bIndex);return x<0?0:A.edgeProps.order[x]}else{const A=S.interUnitBonds.getBondFromLocation(T);return A?A.props.order:0}}s.getOrder=b;function P(S){let T=0;for(const A of S.unitSymmetryGroups){const x=A.units[0];r.Unit.isAtomic(x)&&(T+=x.bonds.edgeCount*A.units.length)}return T}s.getIntraUnitBondCount=P;class C{move(){return this.advance(),this.current}setElement(T,A,x){this.structure=T,this.unit=A,this.index=x,this.interBondIndices=T.interUnitBonds.getEdgeIndices(x,A.id),this.interBondCount=this.interBondIndices.length,this.interBondIndex=0,this.intraBondEnd=A.bonds.offset[x+1],this.intraBondIndex=A.bonds.offset[x],this.hasNext=this.interBondIndex<this.interBondCount||this.intraBondIndex<this.intraBondEnd}advance(){if(this.intraBondIndex<this.intraBondEnd)this.current.otherUnit=this.unit,this.current.otherIndex=this.unit.bonds.b[this.intraBondIndex],this.current.type=this.unit.bonds.edgeProps.flags[this.intraBondIndex],this.current.order=this.unit.bonds.edgeProps.order[this.intraBondIndex],this.intraBondIndex+=1;else if(this.interBondIndex<this.interBondCount){const T=this.structure.interUnitBonds.edges[this.interBondIndices[this.interBondIndex]];this.current.otherUnit=this.structure.unitMap.get(T.unitA!==this.unit.id?T.unitA:T.unitB),this.current.otherIndex=T.indexA!==this.index?T.indexA:T.indexB,this.current.type=T.props.flag,this.current.order=T.props.order,this.interBondIndex+=1}else{this.hasNext=!1;return}this.hasNext=this.interBondIndex<this.interBondCount||this.intraBondIndex<this.intraBondEnd}constructor(){this.current={},this.hasNext=!1}}s.ElementBondIterator=C;function l(S,T){return c.CentroidHelper.fromPairProvider(S.bonds.length,(A,x,M)=>{const{aUnit:D,aIndex:V,bUnit:R,bIndex:E}=S.bonds[A];D.conformation.position(D.elements[V],x),R.conformation.position(R.elements[E],M)},T)}s.getBoundingSphere=l})(o||(e.Bond=o={}))})(nx)),nx}var Ps={},id={},HB;function xJ(){if(HB)return id;HB=1,Object.defineProperty(id,"__esModule",{value:!0}),id.computeRings=c,id.getFingerprint=p,id.createIndex=v;const e=at(),t=is(),r=dt(),n=_t(),i=Vt();function c(b){const P=y(b),C=s(b,P),l=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,b.elements);for(;l.hasNext;){const S=l.move();g(C,S.start,S.end)}return C.rings}var o;(function(b){b[b.MaxDepth=5]="MaxDepth"})(o||(o={}));function s(b,P){return{startVertex:0,endVertex:0,count:0,isRingAtom:new Int32Array(P),marked:new Int32Array(P),queue:new Int32Array(P),pred:new Int32Array(P),depth:new Int32Array(P),left:new Int32Array(o.MaxDepth),right:new Int32Array(o.MaxDepth),color:new Int32Array(P),currentColor:0,currentAltLoc:"",hasAltLoc:!1,rings:[],currentRings:[],unit:b,bonds:b.bonds,altLoc:b.model.atomicHierarchy.atoms.label_alt_id}}function h(b){b.count=b.endVertex-b.startVertex;const{isRingAtom:P,pred:C,color:l,depth:S,marked:T}=b;
15for(let A=0;A<b.count;A++)P[A]=0,C[A]=-1,T[A]=-1,l[A]=0,S[A]=0;b.currentColor=0,b.currentAltLoc="",b.hasAltLoc=!1}function f(b){const{depth:P}=b;for(let C=0;C<b.count;C++)P[C]=b.count+1}function y(b){const P=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,b.elements);let C=0;for(;P.hasNext;){const l=P.move();C=Math.max(C,l.end-l.start)}return C}function _(b,P){const C=b.bonds.offset,l=b.startVertex+P,S=C[l],A=C[l+1]-S;return!(A<=1||b.isRingAtom[P]&&A===2)}function g(b,P,C){if(b.startVertex=P,b.endVertex=C,b.endVertex-b.startVertex<3)return;b.currentRings=[];const{elements:l}=b.unit,S=[];for(let A=b.startVertex;A<b.endVertex;A++){const x=b.altLoc.value(l[A]);(0,i.arraySetAdd)(S,x)}(0,i.arraySetRemove)(S,"");let T=1;if(S.length===0){h(b);for(let A=0;A<b.count;A++)_(b,A)&&(f(b),T=d(b,A,T))}else for(let A=0;A<S.length;A++){h(b),b.hasAltLoc=!0,b.currentAltLoc=S[A];for(let x=0;x<b.count;x++){if(!_(b,x))continue;const M=b.altLoc.value(l[b.startVertex+x]);M&&M!==b.currentAltLoc||(f(b),T=d(b,x,T))}}for(let A=0,x=b.currentRings.length;A<x;A++)b.rings.push(b.currentRings[A])}function a(b,P,C,l){if(C<P)return!1;const{pred:S,color:T,left:A,right:x}=b,M=++b.currentColor;let D=P;for(let F=0;F<o.MaxDepth&&(T[D]=M,D=S[D],!(D<0));F++);let V=0,R=0,E=!1,I=0;D=C;for(let F=0;F<o.MaxDepth;F++){if(T[D]===M){I=D,E=!0;break}if(x[R++]=D,D=S[D],D<0)break}if(!E)return!1;D=P;for(let F=0;F<o.MaxDepth&&(A[V++]=D,!(I===D||(D=S[D],D<0)));F++);const B=V+R;if(B<3)return!1;const w=new Int32Array(B);let O=0;for(let F=0;F<V;F++)w[O++]=b.startVertex+A[F],l[A[F]]=1;for(let F=R-1;F>=0;F--)w[O++]=b.startVertex+x[F],l[x[F]]=1;(0,n.sortArray)(w);for(let F=0,L=b.currentRings.length;F<L;F++){const U=b.currentRings[F];if(w.length===U.length){if(e.SortedArray.areEqual(w,U))return!1}else if(w.length>U.length&&e.SortedArray.isSubset(w,U))return!1}return b.currentRings.push(e.SortedArray.ofSortedArray(w)),!0}function d(b,P,C){const{bonds:l,startVertex:S,endVertex:T,isRingAtom:A,marked:x,queue:M,pred:D,depth:V}=b,{elements:R}=b.unit,{b:E,edgeProps:{flags:I},offset:B}=l;x[P]=C,V[P]=0,M[0]=P;let w=0,O=1;for(;w<O;){const F=M[w++],L=V[F],U=S+F,q=B[U],N=B[U+1];for(let k=q;k<N;k++){const j=E[k];if(j<S||j>=T||!r.BondType.isCovalent(I[k]))continue;if(b.hasAltLoc){const z=b.altLoc.value(R[j]);if(z&&b.currentAltLoc!==z)continue}const H=j-S;if(x[H]===C){if(D[H]!==F&&D[F]!==H&&a(b,F,H,A))return C+1;continue}const G=Math.min(V[H],L+1);G>o.MaxDepth||(V[H]=G,x[H]=C,M[O++]=H,D[H]=F)}}return C+1}function p(b){const P=b.length,C=new Array(P);for(let A=0;A<P;A++)C[A]=b[P-A-1];const l=u(b),S=u(C);let T=!1;for(let A=0;A<P;A++){const x=b[(A+l)%P],M=C[(A+S)%P];if(x!==M){T=x<M;break}}return T?m(b,l):m(C,S)}function u(b){const P=b.length,C=new Int32Array(P*2);for(let A=0;A<C.length;A++)C[A]=-1;let l="",S="",T=0;for(let A=1;A<C.length;A++){let x=C[A-T-1];for(;x!==-1&&(l=b[A%P],S=b[(T+x+1)%P],l!==S);)l<S&&(T=A-x-1),x=C[x];x===-1?(l=b[A%P],S=b[(T+x+1)%P],l!==S?(l<S&&(T=A),C[A-T]=-1):C[A-T]=x+1):C[A-T]=x+1}return T}function m(b,P){const C=b.length,l=[];let S;for(S=0;S<C-1;S++)l.push(b[(S+P)%C]),l.push("-");return l.push(b[(S+P)%C]),l.join("")}function v(b,P){const C=new Map,l=new Map;for(let M=0,D=b.length;M<D;M++){const V=b[M];for(let R=0,E=V.length;R<E;R++){const I=V[R];C.has(I)?C.get(I).push(M):C.set(I,[M])}}for(let M=0,D=P.length;M<D;M++){const V=P[M],R=b[V];for(let E=0,I=R.length;E<I;E++){const B=R[E];l.has(B)?l.get(B).push(V):l.set(B,[V])}}const S=new t.IntAdjacencyGraph.UniqueEdgeBuilder(b.length);for(let M=0,D=b.length;M<D;M++){const V=b[M];for(let R=0,E=V.length;R<E;R++){const I=V[R],B=C.get(I);if(B.length!==1)for(let w=0,O=B.length;w<O;w++){const F=B[w];M>=F||S.addEdge(M,F)}}}const T=t.IntAdjacencyGraph.connectedComponents(S.getGraph()),A=T.componentIndex,x=[];for(let M=0;M<T.componentCount;M++)x[M]=[];for(let M=0,D=b.length;M<D;M++)x[A[M]].push(M);return{elementRingIndices:C,elementAromaticRingIndices:l,ringComponentIndex:A,ringComponents:x}}return id}var cx={},WB;function Xi(){return WB||(WB=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Halogens=e.Metalloids=e.PostTransitionMetals=e.NobleGases=e.DiatomicNonmetals=e.PolyatomicNonmetals=e.AlkalineEarthMetals=e.AlkaliMetals=e.ElementNames=e.Elements=void 0,e.isAlkaliMetal=n,e.isAlkalineEarthMetal=i,e.isPolyatomicNonmetal=c,e.isDiatomicNonmetal=o,e.isNobleGas=s,e.isPostTransitionMetal=h,e.isMetalloid=f,e.isHalogen=y,e.isTransitionMetal=_,e.isLanthanide=g,e.isActinide=a,e.isMetal=d,e.isNonmetal=p;const t=BD();var r;(function(u){u.H="H",u.D="D",u.T="T",u.HE="HE",u.LI="LI",u.BE="BE",u.B="B",u.C="C",u.N="N",u.O="O",u.F="F",u.NE="NE",u.NA="NA",u.MG="MG",u.AL="AL",u.SI="SI",u.P="P",u.S="S",u.CL="CL",u.AR="AR",u.K="K",u.CA="CA",u.SC="SC",u.TI="TI",u.V="V",u.CR="CR",u.MN="MN",u.FE="FE",u.CO="CO",u.NI="NI",u.CU="CU",u.ZN="ZN",u.GA="GA",u.GE="GE",u.AS="AS",u.SE="SE",u.BR="BR",u.KR="KR",u.RB="RB",u.SR="SR",u.Y="Y",u.ZR="ZR",u.NB="NB",u.MO="MO",u.TC="TC",u.RU="RU",u.RH="RH",u.PD="PD",u.AG="AG",u.CD="CD",u.IN="IN",u.SN="SN",u.SB="SB",u.TE="TE",u.I="I",u.XE="XE",u.CS="CS",u.BA="BA",u.LA="LA",u.CE="CE",u.PR="PR",u.ND="ND",u.PM="PM",u.SM="SM",u.EU="EU",u.GD="GD",u.TB="TB",u.DY="DY",u.HO="HO",u.ER="ER",u.TM="TM",u.YB="YB",u.LU="LU",u.HF="HF",u.TA="TA",u.W="W",u.RE="RE",u.OS="OS",u.IR="IR",u.PT="PT",u.AU="AU",u.HG="HG",u.TL="TL",u.PB="PB",u.BI="BI",u.PO="PO",u.AT="AT",u.RN="RN",u.FR="FR",u.RA="RA",u.AC="AC",u.TH="TH",u.PA="PA",u.U="U",u.NP="NP",u.PU="PU",u.AM="AM",u.CM="CM",u.BK="BK",u.CF="CF",u.ES="ES",u.FM="FM",u.MD="MD",u.NO="NO",u.LR="LR",u.RF="RF",u.DB="DB",u.SG="SG",u.BH="BH",u.HS="HS",u.MT="MT",u.DS="DS",u.RG="RG",u.CN="CN",u.NH="NH",u.FL="FL",u.MC="MC",u.LV="LV",u.TS="TS",u.OG="OG"})(r||(e.Elements=r={})),e.ElementNames={H:"Hydrogen",HE:"Helium",LI:"Lithium",BE:"Beryllium",B:"Boron",C:"Carbon",N:"Nitrogen",O:"Oxygen",F:"Fluorine",NE:"Neon",NA:"Sodium",MG:"Magnesium",AL:"Aluminum",
15SI:"Silicon",P:"Phosphorus",S:"Sulfur",CL:"Chlorine",AR:"Argon",K:"Potassium",CA:"Calcium",SC:"Scandium",TI:"Titanium",V:"Vanadium",CR:"Chromium",MN:"Manganese",FE:"Iron",CO:"Cobalt",NI:"Nickel",CU:"Copper",ZN:"Zinc",GA:"Gallium",GE:"Germanium",AS:"Arsenic",SE:"Selenium",BR:"Bromine",KR:"Krypton",RB:"Rubidium",SR:"Strontium",Y:"Yttrium",ZR:"Zirconium",NB:"Niobium",MO:"Molybdenum",TC:"Technetium",RU:"Ruthenium",RH:"Rhodium",PD:"Palladium",AG:"Silver",CD:"Cadmium",IN:"Indium",SN:"Tin",SB:"Antimony",TE:"Tellurium",I:"Iodine",XE:"Xenon",CS:"Cesium",BA:"Barium",LA:"Lanthanum",CE:"Cerium",PR:"Praseodymium",ND:"Neodymium",PM:"Promethium",SM:"Samarium",EU:"Europium",GD:"Gadolinium",TB:"Terbium",DY:"Dysprosium",HO:"Holmium",ER:"Erbium",TM:"Thulium",YB:"Ytterbium",LU:"Lutetium",HF:"Hafnium",TA:"Tantalum",W:"Wolfram",RE:"Rhenium",OS:"Osmium",IR:"Iridium",PT:"Platinum",AU:"Gold",HG:"Mercury",TL:"Thallium",PB:"Lead",BI:"Bismuth",PO:"Polonium",AT:"Astatine",RN:"Radon",FR:"Francium",RA:"Radium",AC:"Actinium",TH:"Thorium",PA:"Protactinium",U:"Uranium",NP:"Neptunium",PU:"Plutonium",AM:"Americium",CM:"Curium",BK:"Berkelium",CF:"Californium",ES:"Einsteinium",FM:"Fermium",MD:"Mendelevium",NO:"Nobelium",LR:"Lawrencium",RF:"Rutherfordium",DB:"Dubnium",SG:"Seaborgium",BH:"Bohrium",HS:"Hassium",MT:"Meitnerium",DS:"Darmstadtium",RG:"Roentgenium",CN:"Copernicium",NH:"Nihonium",FL:"Flerovium",MC:"Moscovium",LV:"Livermorium",TS:"Tennessine",OG:"Oganesson"},e.AlkaliMetals=new Set(["LI","NA","K","RB","CS","FR"]);function n(u){return e.AlkaliMetals.has(u)}e.AlkalineEarthMetals=new Set(["BE","MG","CA","SR","BA","RA"]);function i(u){return e.AlkalineEarthMetals.has(u)}e.PolyatomicNonmetals=new Set(["C","P","S","SE"]);function c(u){return e.PolyatomicNonmetals.has(u)}e.DiatomicNonmetals=new Set(["H","N","O","F","CL","BR","I"]);function o(u){return e.DiatomicNonmetals.has(u)}e.NobleGases=new Set(["HE","NE","AR","KR","XE","RN"]);function s(u){return e.NobleGases.has(u)}e.PostTransitionMetals=new Set(["ZN","GA","CD","IN","SN","HG","TI","PB","BI","PO","CN"]);function h(u){return e.PostTransitionMetals.has(u)}e.Metalloids=new Set(["B","SI","GE","AS","SB","TE","AT"]);function f(u){return e.Metalloids.has(u)}e.Halogens=new Set(["F","CL","BR","I","AT"]);function y(u){return e.Halogens.has(u)}function _(u){const m=(0,t.AtomNumber)(u);return m>=21&&m<=29||m>=39&&m<=47||m>
15=72&&m<=79||m>=104&&m<=108}function g(u){const m=(0,t.AtomNumber)(u);return m>=57&&m<=71}function a(u){const m=(0,t.AtomNumber)(u);return m>=89&&m<=103}function d(u){return n(u)||i(u)||g(u)||a(u)||_(u)||h(u)}function p(u){return o(u)||c(u)||s(u)}})(cx)),cx}var Ts={},$B;function Sl(){if($B)return Ts;$B=1,Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getCoarseBegCompId=n,Ts.getElementMoleculeType=i,Ts.getAtomicMoleculeType=c,Ts.getAtomIdForAtomRole=s,Ts.getPositions=f;const e=dt(),t=Ge(),r=jr();function n(y,_){const g=y.coarseElements.entityKey[_],a=y.model.sequence.byEntityKey[g].sequence,d=y.coarseElements.seq_id_begin.value(_);return a.compId.value(d-1)}function i(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return y.model.atomicHierarchy.derived.residue.moleculeType[y.residueIndex[_]];case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:const g=n(y,_),a=y.model.properties.chemicalComponentMap.get(g);if(a)return(0,e.getMoleculeType)(a.type,g)}return e.MoleculeType.Unknown}function c(y,_){return y.atomicHierarchy.derived.residue.moleculeType[_]}const o=new Set;function s(y,_){const g=e.PolymerTypeAtomRoleId[y];if(g!==void 0){const a=g[_];if(a!==void 0)return a}return o}const h=t.Vec3.zero();function f(y,_){const g=y.conformation,a=new Float32Array(_.length*3),{elements:d}=y;for(let p=0,u=_.length;p<u;++p)g.position(d[_[p]],h),t.Vec3.toArray(h,a,p*3);return a}return Ts}var XB;function eI(){if(XB)return Ps;XB=1,Object.defineProperty(Ps,"__esModule",{value:!0}),Ps.UnitRings=Ps.UnitRing=void 0;const e=xJ(),t=Zn(),r=at(),n=dt(),i=Xi(),c=Sl(),o=_l(),s=Ge();class h{get index(){return this._index?this._index:(this._index=(0,e.createIndex)(this.all,this.aromaticRings),this._index)}get byFingerprint(){return this._byFingerprint?this._byFingerprint:(this._byFingerprint=y(this.unit,this.all),this._byFingerprint)}get elementRingIndices(){return this.index.elementRingIndices}get elementAromaticRingIndices(){return this.index.elementAromaticRingIndices}get ringComponentIndex(){return this.index.ringComponentIndex}get ringComponents(){return this.index.ringComponents}get aromaticRings(){return this._aromaticRings?this._aromaticRings:(this._aromaticRings=a(this.unit,this.all),this._aromaticRings)}constructor(p,u){this.unit=u,this.all=p}}Ps.UnitRings=h;var f;(function(d){function p(l,S){const{elements:T}=l,{type_symbol:A}=l.model.atomicHierarchy.atoms,x=[];for(let M=0,D=S.length;M<D;M++)x[x.length]=A.value(T[S[M]]);return u(x)}d.fingerprint=p;function u(l){return(0,e.getFingerprint)(l)}d.elementFingerprint=u;const m=new Set([i.Elements.B,i.Elements.C,i.Elements.N,i.Elements.O,i.Elements.SI,i.Elements.P,i.Elements.S,i.Elements.GE,i.Elements.AS,i.Elements.SN,i.Elements.SB,i.Elements.BI]),v=new Set([i.Elements.B,i.Elements.C,i.Elements.N,i.Elements.SI,i.Elements.P,i.Elements.S,i.Elements.GE,i.Elements.AS,i.Elements.SN,i.Elements.SB,i.Elements.BI]),b=.05;function P(l,S){const{elements:T,bonds:{b:A,offset:x,edgeProps:{flags:M,order:D}}}=l,{type_symbol:V,label_comp_id:R}=l.model.atomicHierarchy.atoms;if(R.value(l.elements[S[0]])==="PRO")return!1;let E=0,I=!1;for(let w=0,O=S.length;w<O;++w){const F=S[w];!I&&m.has(V.value(T[F]))&&(I=!0);for(let L=x[F],U=x[F+1];L<U;++L)n.BondType.is(n.BondType.Flag.Aromatic,M[L])&&r.SortedArray.has(S,A[L])&&(E+=1)}for(let w=0,O=S.length;w<O;++w){const F=S[w],L=V.value(T[F]);if(!v.has(L))continue;let U=0,q=!1;for(let N=x[F],k=x[F+1];N<k;++N){U+=1;const j=M[N],H=D[N];(n.BondType.is(n.BondType.Flag.Aromatic,j)||H===2||H===3)&&(q=!0)}if(U>=4&&!q)return!1}if(E===2*S.length)return!0;if(!I||S.length<5||E>0)return!1;const B=o.PrincipalAxes.calculateMomentsAxes((0,c.getPositions)(l,S));return s.Vec3.magnitude(B.dirC)<b}d.isAromatic=P;function C(l,S){const{label_alt_id:T}=l.model.atomicHierarchy.atoms,{elements:A}=l;for(let x=0,M=S.length;x<M;++x){const D=A[S[x]],V=T.value(D);if(V)return V}return""}d.getAltId=C})(f||(Ps.UnitRing=f={})),(function(d){function p(m){if(t.Unit.Traits.is(m.traits,t.Unit.Trait.Water)||t.Unit.Traits.is(m.traits,t.Unit.Trait.CoarseGrained))return new d([],m);const v=(0,e.computeRings)(m);return new d(v,m)}d.create=p;function u(m,v){const b=new Map;for(let P=0,C=v.length;P<C;P++){const l=v[P];g(m,l,b)}return b}d.byFingerprintAndResidue=u})(h||(Ps.UnitRings=h={}));function y(d,p){const u=new Map;let m=0;for(let v=0,b=p.length;v<b;v++){const P=p[v],C=f.fingerprint(d,P);u.has(C)?u.get(C).push(m):u.set(C,[m]),m++}return u}function _(d,p){const{elements:u}=d,m=d.model.atomicHierarchy.residueAtomSegments.index,v=m[u[p[0]]];for(let b=1,P=p.length;b<P;b++)if(v!==m[u[p[b]]])return-1;return v}function g(d,p,u){const m=d.byFingerprint.get(p);if(m)for(let v=0,b=m.length;v<b;v++){const P=m[v],C=_(d.unit,d.all[P]);C>=0&&(u.has(C)?u.get(C).push(P):u.set(C,[P]))}}function a(d,p){const u=[];for(let m=0,v=p.length;m<v;++m)f.isAromatic(d,p[m])&&u.push(m);return u}return Ps}var mo={},vp={},KB;function Ga(){if(KB)return vp;KB=1,Object.defineProperty(vp,"__esModule",{value:!0}),vp.SortedRanges=void 0;const e=In(),t=nn(),r=Na();var n;return(function(i){function c(T){return r.SortedArray.ofSortedArray(T)}i.ofSortedRanges=c;function o(T){return T[0]}i.start=o;function s(T){return T[T.length-1]+1}i.end=s;function h(T){return T[0]}i.min=h;function f(T){return T[T.length-1]}i.max=f;function y(T){let A=0;for(let x=0,M=T.length;x<M;x+=2)A+=T[x+1]-T[x]+1;return A}i.size=y;function _(T){return T.length/2}i.count=_;function g(T,A){return T[A*2]}i.startAt=g;function a(T,A){return T[A*2+1]+1}i.endAt=a;function d(T,A){return T[A*2]}i.minAt=d;function p(T,A){return T[A*2+1]}i.maxAt=p;function u(T,A){if(T.length!==A.length)return!1;for(let x=0,M=T.length;x<M;++x)if(T[x]!==A[x])return!1;return!0}i.areEqual=u;function m(T,A){let x=0;for(let M=0,D=T.length;M<D;M+=2)for(let V=T[M],R=T[M+1];V<=R;++V)A(V,x),++x}i.forEach=m;function v(T,A){return P(T,A)!==-1}i.has=v;function b(T,A,x){return C(T,A,x)!==-1}i.hasFrom=b;function P(T,A){return C(T,A,0)}i.firstIntersectionIndex=P;function C(T,A,x){if(d(T,x)>t.OrderedSet.max(A)||f(T)<t.OrderedSet.min(A))return-1;for(let M=x,D=_(T);M<D;++M){const V=e.Interval.ofRange(d(T,M),p(T,M));if(t.OrderedSet.areIntersecting(V,A))return M}return-1}i.firstIntersectionIndexFrom=C;function l(T,A){return new S(T,A)}i.transientSegments=l;class S{updateValue(){this.value.index=this.curIndex,this.value.start=t.OrderedSet.findPredecessorIndex(this.set,g(this.ranges,this.curIndex)),this.value.end=t.OrderedSet.findPredecessorIndex(this.set,a(this.ranges,this.curIndex))}
15move(){return this.hasNext&&(this.updateValue(),this.curIndex=C(this.ranges,this.set,this.curIndex+1),this.hasNext=this.curIndex!==-1),this.value}constructor(A,x){this.ranges=A,this.set=x,this.value={index:0,start:0,end:0},this.curIndex=0,this.hasNext=!1,this.curIndex=P(A,x),this.hasNext=this.curIndex!==-1}}i.Iterator=S})(n||(vp.SortedRanges=n={})),vp}var YB;function AJ(){if(YB)return mo;YB=1,Object.defineProperty(mo,"__esModule",{value:!0}),mo.getAtomicPolymerElements=i,mo.getCoarsePolymerElements=c,mo.getAtomicGapElements=o,mo.getCoarseGapElements=s,mo.getNucleotideElements=h,mo.getProteinElements=f;const e=Ke(),t=at(),r=Ga(),n=dt();function i(y){const _=[],{elements:g,model:a}=y,{residueAtomSegments:d}=y.model.atomicHierarchy,{traceElementIndex:p}=a.atomicHierarchy.derived.residue,u=r.SortedRanges.transientSegments(y.model.atomicRanges.polymerRanges,g),m=t.Segmentation.transientSegments(d,g);for(;u.hasNext;){const v=u.move();for(m.setSegment(v);m.hasNext;){const b=m.move(),{start:P,end:C,index:l}=b;if(t.OrderedSet.areIntersecting(t.Interval.ofRange(g[P],g[C-1]),g)){const S=p[l];_.push(S===-1?d.offsets[l]:S)}}}return t.SortedArray.ofSortedArray(_)}function c(y){const _=[],{elements:g,model:a}=y,{spheres:d,gaussians:p}=a.coarseHierarchy,u=e.Unit.isSpheres(y)?d.polymerRanges:p.polymerRanges,m=r.SortedRanges.transientSegments(u,g);for(;m.hasNext;){const{start:v,end:b}=m.move();for(let P=v;P<b;++P)_.push(g[P])}return t.SortedArray.ofSortedArray(_)}function o(y){const _=[],{elements:g,model:a,residueIndex:d}=y,{residueAtomSegments:p}=y.model.atomicHierarchy,{traceElementIndex:u}=a.atomicHierarchy.derived.residue,m=r.SortedRanges.transientSegments(y.model.atomicRanges.gapRanges,y.elements);for(;m.hasNext;){const v=m.move(),b=d[g[v.start]],P=d[g[v.end-1]],C=u[b],l=u[P];_.push(C===-1?p.offsets[b]:C),_.push(l===-1?p.offsets[P]:l)}return t.SortedArray.ofSortedArray(_)}function s(y){const _=[],{elements:g,model:a}=y,{spheres:d,gaussians:p}=a.coarseHierarchy,u=e.Unit.isSpheres(y)?d.gapRanges:p.gapRanges,m=r.SortedRanges.transientSegments(u,g);for(;m.hasNext;){const{start:v,end:b}=m.move();_.push(g[v],g[b-1])}return t.SortedArray.ofSortedArray(_)}function h(y){const _=[],{elements:g,model:a}=y,{chainAtomSegments:d,residueAtomSegments:p}=a.atomicHierarchy,{moleculeType:u,traceElementIndex:m}=a.atomicHierarchy.derived.residue,v=t.Segmentation.transientSegments(d,g),b=t.Segmentation.transientSegments(p,g);for(;v.hasNext;)for(b.setSegment(v.move());b.hasNext;){const{index:P}=b.move();if((0,n.isNucleic)(u[P])){const C=m[P];_.push(C===-1?p.offsets[P]:C)}}return t.SortedArray.ofSortedArray(_)}function f(y){const _=[],{elements:g,model:a}=y,{chainAtomSegments:d,residueAtomSegments:p}=a.atomicHierarchy,{moleculeType:u,traceElementIndex:m}=a.atomicHierarchy.derived.residue,v=t.Segmentation.transientSegments(d,g),b=t.Segmentation.transientSegments(p,g);for(;v.hasNext;)for(b.setSegment(v.move());b.hasNext;){const{index:P}=b.move();if((0,n.isProtein)(u[P])){const C=m[P];_.push(C===-1?p.offsets[P]:C)}}return t.SortedArray.ofSortedArray(_)}return mo}var bp={},QB;function MJ(){if(QB)return bp;QB=1,Object.defineProperty(bp,"__esModule",{value:!0}),bp.toPositionsArray=n,bp.getPrincipalAxes=i;const e=_l(),t=Ge(),r=(0,t.Vec3)();function n(c){const{elements:o,conformation:s}=c,h=new Float32Array(o.length*3);for(let f=0,y=o.length;f<y;f++)s.invariantPosition(o[f],r),t.Vec3.toArray(r,h,f*3);return h}function i(c){const o=n(c);return e.PrincipalAxes.ofPositions(o)}return bp}var _p={},Sp={},ZB;function Ki(){if(ZB)return Sp;ZB=1,Object.defineProperty(Sp,"__esModule",{value:!0}),Sp.BoundaryHelper=void 0;const e=wt(),t=rS(),r=ja(),n=os(),i=Af(),c=e.Vec3.dot,o=e.Vec3.copy,s=e.Vec3.scaleAndSub,h=e.Vec3.scaleAndAdd;class f{computeExtrema(v,b){const P=c(this.dir[v],b);P<this.minDist[v]&&(this.minDist[v]=P,o(this.extrema[v*2],b)),P>this.maxDist[v]&&(this.maxDist[v]=P,o(this.extrema[v*2+1],b))}computeSphereExtrema(v,b,P){const C=this.dir[v],l=c(C,b);l-P<this.minDist[v]&&(this.minDist[v]=l-P,s(this.extrema[v*2],b,C,P)),l+P>this.maxDist[v]&&(this.maxDist[v]=l+P,h(this.extrema[v*2+1],b,C,P))}includeSphere(v){if(r.Sphere3D.hasExtrema(v)&&v.extrema.length>1)for(const b of v.extrema)this.includePosition(b);else this.includePositionRadius(v.center,v.radius)}includePosition(v){for(let b=0;b<this.dirLength;++b)this.computeExtrema(b,v)}includePositionRadius(v,b){for(let P=0;P<this.dirLength;++P)this.computeSphereExtrema(P,v,b)}finishedIncludeStep(){this.dirLength<49&&this.refineExtrema();for(let v=0;v<this.extrema.length;v++)this.centroidHelper.includeStep(this.extrema[v]);this.centroidHelper.finishedIncludeStep()}refineExtrema(){const v=y("98"),b=[],P=[],C=[];for(let l=0,S=v.length;l<S;++l){b[l]=1/0,P[l]=-1/0,C[l*2]=(0,e.Vec3)(),C[l*2+1]=(0,e.Vec3)();const T=v[l];for(let A=0,x=this.extrema.length;A<x;++A){const M=this.extrema[A],D=c(T,M);D<b[l]&&(b[l]=D,o(C[l*2],M)),D>P[l]&&(P[l]=D,o(C[l*2+1],M))}}this.extrema=C}radiusSphere(v){if(r.Sphere3D.hasExtrema(v)&&v.extrema.length>1)for(const b of v.extrema)this.radiusPosition(b);else this.radiusPositionRadius(v.center,v.radius)}
15radiusPosition(v){this.centroidHelper.radiusStep(v)}radiusPositionRadius(v,b){this.centroidHelper.radiusSphereStep(v,b)}getSphere(v){return r.Sphere3D.setExtrema(this.centroidHelper.getSphere(v),this.extrema.slice())}getBox(v){return n.Box3D.fromVec3Array(v||(0,n.Box3D)(),this.extrema)}reset(){this.extrema.length=this.dirLength*2;for(let v=0;v<this.dirLength;++v)this.minDist[v]=1/0,this.maxDist[v]=-1/0,this.extrema[v*2]=(0,e.Vec3)(),this.extrema[v*2+1]=(0,e.Vec3)();this.centroidHelper.reset()}constructor(v){this.minDist=[],this.maxDist=[],this.extrema=[],this.centroidHelper=new t.CentroidHelper,this.dir=y(v),this.dirLength=this.dir.length,this.reset()}}Sp.BoundaryHelper=f;const y=(0,i.memoize1)(m=>{let v;switch(m){case"6":v=[..._];break;case"14":v=[..._,...g];break;case"26":v=[..._,...g,...a];break;case"98":v=[..._,...g,...a,...d,...p,...u];break}return v.map(b=>{const P=e.Vec3.create(b[0],b[1],b[2]);return e.Vec3.normalize(P,P)})}),_=[[1,0,0],[0,1,0],[0,0,1]],g=[[1,1,1],[-1,1,1],[-1,-1,1],[1,-1,1]],a=[[1,1,0],[1,-1,0],[1,0,1],[1,0,-1],[0,1,1],[0,1,-1]],d=[[0,1,2],[0,2,1],[1,0,2],[2,0,1],[1,2,0],[2,1,0],[0,1,-2],[0,2,-1],[1,0,-2],[2,0,-1],[1,-2,0],[2,-1,0]],p=[[1,1,2],[2,1,1],[1,2,1],[1,-1,2],[1,1,-2],[1,-1,-2],[2,-1,1],[2,1,-1],[2,-1,-1],[1,-2,1],[1,2,-1],[1,-2,-1]],u=[[2,2,1],[1,2,2],[2,1,2],[2,-2,1],[2,2,-1],[2,-2,-1],[1,-2,2],[1,2,-2],[1,-2,-2],[2,-1,2],[2,1,-2],[2,-1,-2]];return Sp}var JB;function wT(){if(JB)return _p;JB=1,Object.defineProperty(_p,"__esModule",{value:!0}),_p.getFastBoundary=f,_p.getBoundary=_;const e=Ge(),t=nn(),r=Ki(),n=os(),i=ja(),c=e.Vec3.set,o=new r.BoundaryHelper("14"),s=new r.BoundaryHelper("98");function h(g){return g>1e4?o:s}function f(g){const a=n.Box3D.computeBounding(g);return{box:a,sphere:i.Sphere3D.fromBox3D((0,i.Sphere3D)(),a)}}const y=(0,e.Vec3)();function _(g){const{x:a,y:d,z:p,radius:u,indices:m}=g,v=t.OrderedSet.size(m);if(v>25e4)return f(g);const b=h(v);b.reset();for(let C=0;C<v;C++){const l=t.OrderedSet.getAt(m,C);c(y,a[l],d[l],p[l]),b.includePositionRadius(y,u&&u[l]||0)}b.finishedIncludeStep();for(let C=0;C<v;C++){const l=t.OrderedSet.getAt(m,C);c(y,a[l],d[l],p[l]),b.radiusPositionRadius(y,u&&u[l]||0)}const P=b.getSphere();if(!u&&i.Sphere3D.hasExtrema(P)&&v<=P.extrema.length){const C=[];for(let l=0;l<v;l++){const S=t.OrderedSet.getAt(m,l);C.push(e.Vec3.create(a[S],d[S],p[S]))}i.Sphere3D.setExtrema(P,C)}return{box:b.getBox(),sphere:P}}return _p}var Cp={},eR;function DJ(){if(eR)return Cp;eR=1,Object.defineProperty(Cp,"__esModule",{value:!0}),Cp.ElementSetIntraBondCache=void 0;const e=at();class t{constructor(){this.data=new Map}get(n){const i=e.SortedArray.hashCode(n);if(this.data.has(i)){for(const[c,o]of this.data.get(i))if(e.SortedArray.areEqual(n,c))return o}}set(n,i){const c=e.SortedArray.hashCode(n);if(this.data.has(c)){const o=this.data.get(c);for(const s of o)if(e.SortedArray.areEqual(n,s[0])){s[1]=i;return}o.push([n,i])}else this.data.set(c,[[n,i]])}static get(n){return n._dynamicPropertyData.ElementSetIntraBondCache||(n._dynamicPropertyData.ElementSetIntraBondCache=new t),n._dynamicPropertyData.ElementSetIntraBondCache}}return Cp.ElementSetIntraBondCache=t,Cp}var Pp={},ad={},xs={},tR;function tI(){if(tR)return xs;tR=1,Object.defineProperty(xs,"__esModule",{value:!0}),xs.Symmetry=xs.Assembly=void 0;const e=_t(),t=rt(),r=Qn(),n=er();class i{get operatorGroups(){return this._operators?this._operators:(this._operators=this.operatorsProvider(),this._operators)}constructor(s,h,f){this.operatorsProvider=f,this.id=s,this.details=h}}xs.Assembly=i,(function(o){function s(h,f,y){return new o(h,f,y)}o.create=s})(i||(xs.Assembly=i={}));var c;return(function(o){o.Default={assemblies:[],spacegroup:t.Spacegroup.ZeroP1,isNonStandardCrystalFrame:!1};function s(f,y){const _=y.toLocaleLowerCase(),g=r.ModelSymmetry.Provider.get(f);return g?(0,e.arrayFind)(g.assemblies,a=>a.id.toLowerCase()===_):void 0}o.findAssembly=s;function h(f){const{cell:y,name:_,num:g}=f.spacegroup,{size:a,anglesInRadians:d}=y,p=a[0].toFixed(2),u=a[1].toFixed(2),m=a[2].toFixed(2),v=(0,n.radToDeg)(d[0]).toFixed(2),b=(0,n.radToDeg)(d[1]).toFixed(2),P=(0,n.radToDeg)(d[2]).toFixed(2),C=[];return C.push(`Unit Cell <b>${_}</b> #${g}`),C.push(`${p}Ã${u}Ã${m} â«`),C.push(`α=${v}° β=${b}° γ=${P}°`),C.join(" | ")}o.getUnitcellLabel=h})(c||(xs.Symmetry=c={})),xs}var rR;function IJ(){if(rR)return ad;rR=1,Object.defineProperty(ad,"__esModule",{value:!0}),ad.createAssemblies=c,ad.operatorGroupsProvider=s,ad.getMatrices=h;const e=Ge(),t=eS(),r=tI(),n=Ke(),i=Ke();function c(a,d,p){if(!a._rowCount)return[];const u=h(p),m=[];for(let v=0;v<a._rowCount;v++)m[m.length]=o(a,d,v,u);return m}function o(a,d,p,u){const m=a.id.value(p),v=a.details.value(p),b=[],{assembly_id:P,oper_expression:C,asym_id_list:l}=d;for(let S=0,T=d._rowCount;S<T;S++)P.value(S)===m&&(b[b.length]={assemblyId:m,expression:C.value(S),asymIds:l.value(S)});return r.Assembly.create(m,v,s(b,u))}function s(a,d){return()=>{const p=[];let u=0;for(let m=0;m<a.length;m++){const v=a[m],b=g(v.expression),P=f(b),C=_(d,P,u,v.assemblyId),l=n.Queries.generators.atoms({chainTest:n.Queries.pred.and(n.Queries.pred.eq(S=>i.StructureProperties.unit.operator_name(S.element),t.SymmetryOperator.DefaultName),n.Queries.pred.inSet(S=>i.StructureProperties.chain.label_asym_id(S.element),v.asymIds))});p[p.length]={selector:l,operators:C,asymIds:v.asymIds},u+=C.length}return p}}function h(a){const{id:d,matrix:p,vector:u,_schema:m}=a,v=new Map,b=(0,e.Vec3)();for(let P=0,C=a._rowCount;P<C;P++){const l=e.Tensor.toMat4((0,e.Mat4)(),m.matrix.space,p.value(P));e.Tensor.toVec3(b,m.vector.space,u.value(P)),e.Mat4.setTranslation(l,b),e.Mat4.setValue(l,3,3,1),v.set(d.value(P),l)}return v}function f(a){const d=[],p=[];for(let u=0;u<a.length;u++)p[u]="";return y(a,d,a.length-1,p),d}function y(a,d,p,u){if(p<0){d[d.length]=u.slice(0);return}const m=a[p],v=m.length;for(let b=0;b<v;b++)u[p]=m[b],y(a,d,p-1,u)}function _(a,d,p,u){const m=[];let v=p;for(const b of d){const P=e.Mat4.identity();for(let S=0;S<b.length;S++)e.Mat4.mul(P,P,a.get(b[S]));v++;const C=`ASM_${v}`,l=t.SymmetryOperator.getAssemblyOperatorName(b);m[m.length]=t.SymmetryOperator.create(C,P,{instanceId:l,assembly:{id:u,operId:v,operList:b}})}return m}
15function g(a){const d=/\(?([^\(\)]+)\)?]*/g,p=[],u=[];let m;for(;m=d.exec(a);)p[p.length]=m[1];return p.forEach(v=>{const b=[];v.split(",").forEach(P=>{const C=P.indexOf("-");if(C>0){const l=parseInt(P.substring(0,C)),S=parseInt(P.substr(C+1));for(let T=l;T<=S;T++)b[b.length]=T.toString()}else b[b.length]=P.trim()}),u[u.length]=b}),u}return ad}var nR;function Qn(){if(nR)return Pp;nR=1,Object.defineProperty(Pp,"__esModule",{value:!0}),Pp.ModelSymmetry=void 0;const e=bl(),t=rt(),r=Ge(),n=IJ(),i=as();var c;(function(y){y.Descriptor={name:"model_symmetry"},y.Provider=i.FormatPropertyProvider.create(y.Descriptor);function _(a){const d=(0,n.createAssemblies)(a.pdbx_struct_assembly,a.pdbx_struct_assembly_gen,a.pdbx_struct_oper_list),p=h(a.symmetry,a.cell),u=o(a.atom_sites);return{assemblies:d,spacegroup:p,isNonStandardCrystalFrame:u,ncsOperators:f(a.struct_ncs_oper)}}y.fromData=_;function g(a,d){const p=t.SpacegroupCell.create("P 1",a,d),u=t.Spacegroup.create(p);return{assemblies:[],spacegroup:u,isNonStandardCrystalFrame:!1}}y.fromCell=g})(c||(Pp.ModelSymmetry=c={}));function o(y,_){return y._rowCount===0,!1}function s(y){const _=y.Int_Tables_number.value(0),g=y["space_group_name_H-M"].value(0);return y.Int_Tables_number.isDefined?y["space_group_name_H-M"].isDefined?g:_:g}function h(y,_){if(y._rowCount===0||_._rowCount===0)return t.Spacegroup.ZeroP1;const g=_.length_a.value(0),a=_.length_b.value(0),d=_.length_c.value(0);if(g===0||a===0||d===0)return t.Spacegroup.ZeroP1;const p=_.angle_alpha.value(0),u=_.angle_beta.value(0),m=_.angle_gamma.value(0);if(p===0||u===0||m===0)return t.Spacegroup.ZeroP1;const v=s(y),b=t.SpacegroupCell.create(v,r.Vec3.create(g,a,d),r.Vec3.scale((0,r.Vec3)(),r.Vec3.create(p,u,m),Math.PI/180));return t.Spacegroup.create(b)}function f(y){if(y._rowCount===0)return;const{id:_,matrix:g,vector:a}=y,d=e.mmCIF_Schema.struct_ncs_oper.matrix.space,p=e.mmCIF_Schema.struct_ncs_oper.vector.space,u=[];for(let m=0;m<y._rowCount;m++){const v=r.Tensor.toMat3((0,r.Mat3)(),d,g.value(m)),b=r.Tensor.toVec3((0,r.Vec3)(),p,a.value(m));if(!t.SymmetryOperator.checkIfRotationAndTranslation(v,b)||y.code.value(m)==="given"&&!r.Mat3.isIdentity(v)&&!r.Vec3.isZero(b))continue;const P=_.value(m);u[u.length]=t.SymmetryOperator.ofRotationAndOffset(`ncs_${P}`,v,b,P)}return u}return Pp}var bC={},iR;function wJ(){if(iR)return bC;iR=1,Object.defineProperty(bC,"__esModule",{value:!0}),bC.getResonance=c;const e=Na(),t=_t(),r=dt(),n=Zn(),i={delocalizedTriplets:{getThirdElement:()=>{},getTripletIndices:()=>{},triplets:[]}};function c(s){return n.Unit.Traits.is(s.traits,n.Unit.Trait.Water)||n.Unit.Traits.is(s.traits,n.Unit.Trait.CoarseGrained)?i:{delocalizedTriplets:o(s)}}function o(s){const h=s.bonds,{b:f,edgeProps:y,offset:_}=h,{order:g,flags:a}=y,{elementAromaticRingIndices:d}=s.rings,p=[],u=new Map,m=new Map,v=(b,P,C)=>{const l=p.length;p.push(e.SortedArray.ofUnsortedArray([b,P,C])),u.set((0,t.sortedCantorPairing)(b,P),C),m.has(b)?m.get(b).push(l):m.set(b,[l])};for(let b=0;b<s.elements.length;b++){if(d.has(b)||_[b+1]-_[b]+1<2)continue;const C=[];for(let l=_[b],S=_[b+1];l<S;l++){const T=a[l];r.BondType.is(T,r.BondType.Flag.Aromatic)&&C.push(f[l])}if(C.length>=2){v(b,C[0],C[1]);for(let l=1,S=C.length;l<S;l++)v(b,C[l],C[0])}}return{getThirdElement:(b,P)=>u.get((0,t.sortedCantorPairing)(b,P)),getTripletIndices:b=>m.get(b),triplets:p}}return bC}var aR;function Zn(){if(aR)return lp;aR=1,Object.defineProperty(lp,"__esModule",{value:!0}),lp.Unit=void 0;const e=eS(),t=Al(),r=rt(),n=IT(),i=ma(),c=et(),o=eI(),s=at(),h=_t(),f=AJ(),y=MJ(),_=wT(),g=Ge(),a=Ua(),d=DJ(),p=Qn(),u=wJ();var m;return(function(v){let b;(function(ne){ne[ne.Atomic=0]="Atomic",ne[ne.Spheres=1]="Spheres",ne[ne.Gaussians=2]="Gaussians"})(b=v.Kind||(v.Kind={})),(function(ne){ne[ne.Atomic=0]="Atomic",ne[ne.Spheres=1]="Spheres",ne[ne.Gaussians=2]="Gaussians"})(v.Kinds||(v.Kinds={}));function P(ne){return ne.kind===b.Atomic}v.isAtomic=P;function C(ne){return ne.kind===b.Spheres||ne.kind===b.Gaussians}v.isCoarse=C;function l(ne){return ne.kind===b.Spheres}v.isSpheres=l;function S(ne){return ne.kind===b.Gaussians}v.isGaussians=S;function T(ne,$,ie,Z,re,oe,ce,ue,pe){switch(re){case b.Atomic:return new F(ne,$,ie,Z,oe,ue,e.SymmetryOperator.createMapping(ce,oe.atomicConformation,B(oe)),pe??L());case b.Spheres:return G(ne,$,ie,Z,oe,b.Spheres,ue,e.SymmetryOperator.createMapping(ce,oe.coarseConformation.spheres,w(oe)),pe??k());case b.Gaussians:return G(ne,$,ie,Z,oe,b.Gaussians,ue,e.SymmetryOperator.createMapping(ce,oe.coarseConformation.gaussians,O()),pe??k())}}v.create=T;function A(ne){const $=s.IntMap.Mutable();for(let ie=0,Z=ne.length;ie<Z;ie++)$.set(ne[ie].id,ie);return $}function x(ne){const $=[];for(let ie=0,Z=ne.length;ie<Z;ie++)$.push(ne[ie].id);return(0,h.hashFnv32a)($)}function M(ne){const $={};return{elements:ne[0].elements,units:ne,get unitIndexMap(){return $.unitIndexMap||($.unitIndexMap=A(ne)),$.unitIndexMap},hashCode:V(ne[0]),transformHash:x(ne)}}v.SymmetryGroup=M,(function(ne){function $(Z,re){return Z.hashCode!==re.hashCode?!1:s.SortedArray.areEqual(Z.elements,re.elements)}ne.areInvariantElementsEqual=$;function ie(Z){const re=s.IntMap.Mutable();for(let oe=0,ce=Z.length;oe<ce;++oe){const ue=Z[oe];for(let pe=0,he=ue.units.length;pe<he;++pe)re.set(ue.units[pe].id,oe)}return re}ne.getUnitSymmetryGroupsIndexMap=ie})(M=v.SymmetryGroup||(v.SymmetryGroup={}));function D(ne){return v.isAtomic(ne)?ne.model.atomicConformation.id:ne.model.coarseConformation.id}v.conformationId=D;function V(ne){return(0,h.hash2)(ne.invariantId,s.SortedArray.hashCode(ne.elements))}v.hashUnit=V;let R;(function(ne){ne[ne.None=0]="None",ne[ne.MultiChain=1]="MultiChain",ne[ne.Partitioned=2]="Partitioned",ne[ne.FastBoundary=4]="FastBoundary",ne[ne.Water=8]="Water",ne[ne.CoarseGrained=16]="CoarseGrained"})(R=v.Trait||(v.Trait={}));let E;(function(ne){ne.is=c.BitFlags.has,ne.create=c.BitFlags.create})(E=v.Traits||(v.Traits={}));function I(){return{}}function B(ne){const $=ne.atomicHierarchy.atoms.type_symbol.value;return ie=>(0,i.VdwRadius)($(ie))}function w(ne){const $=ne.coarseConformation.spheres.radius;return ie=>$[ie]}function O(ne){return $=>0}class F{get transientCache(){return this._transientCache===void 0&&(this._transientCache=new Map),this._transientCache}getChild($){return $.length===this.elements.length?this:new F(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,$,this.conformation,L())}getCopy($,ie,Z,re){const oe=new F($,ie,Z,this.traits,this.model,this.elements,this.conformation,this.props);return re?.propagateTransientCache&&(oe._transientCache=this._transientCache),oe}applyOperator($,ie,Z=!1){const re=Z?ie:e.SymmetryOperator.compose(this.conformation.operator,ie);return new F($,this.invariantId,this.chainGroupId,this.traits,this.model,this.elements,e.SymmetryOperator.createMapping(re,this.model.atomicConformation,this.conformation.r),this.props)}remapModel($,ie,Z){var re,oe;Z||(Z={...this.props,bonds:ie&&!(!((oe=(re=this.props.bonds)===null||re===void 0?void 0:re.props)===null||oe===void 0)&&oe.canRemap)?void 0:Y(this,this.props.bonds,$,ie)},v.isSameConformation(this,$)||(Z.boundary=void 0,Z.lookup3d=void 0,Z.principalAxes=void 0));let ce=this.conformation.operator;const ue=p.ModelSymmetry.Provider.get($);if(ce.spgrOp!==-1&&ue&&ue!==p.ModelSymmetry.Provider.get(this.model)){const[he,fe,de]=ce.hkl,{toFractional:ge}=ue.spacegroup.cell,Ce=g.Vec3.transformMat4((0,g.Vec3)(),t.Model.getCenter($),ge);ce=r.Spacegroup.getSymmetryOperatorRef(ue.spacegroup,ce.spgrOp,he,fe,de,Ce)}const pe=this.model.atomicConformation!==$.atomicConformation||ce!==this.conformation.operator?e.SymmetryOperator.createMapping(ce,$.atomicConformation,B($)):this.conformation;return new F(this.id,this.invariantId,this.chainGroupId,this.traits,$,this.elements,pe,Z)}get boundary(){if(this.props.boundary)return this.props.boundary;const $=E.is(this.traits,R.FastBoundary),{x:ie,y:Z,z:re}=this.model.atomicConformation,oe=$?void 0:t.Model.getAtomicRadii(this.model);return this.props.boundary=$?(0,_.getFastBoundary)({x:ie,y:Z,z:re,radius:oe,indices:this.elements}):(0,_.getBoundary)({x:ie,y:Z,z:re,radius:oe,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;const{x:$,y:ie,z:Z}=this.model.atomicConformation;return this.props.lookup3d=(0,r.GridLookup3D)({x:$,y:ie,z:Z,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=(0,y.getPrincipalAxes)(this),this.props.principalAxes)}get bonds(){var $;if(this.props.bonds)return this.props.bonds;const ie=d.ElementSetIntraBondCache.get(this.model);let Z=ie.get(this.elements);return Z||(Z=(0,n.computeIntraUnitBonds)(this),!(($=Z.props)===null||$===void 0)&&$.cacheable&&ie.set(this.elements,Z)),this.props.bonds=Z,this.props.bonds}get rings(){return this.props.rings?this.props.rings:(this.props.rings=o.UnitRings.create(this),this.props.rings)}get resonance(){return this.props.resonance?this.props.resonance:(this.props.resonance=(0,u.getResonance)(this),this.props.resonance)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=(0,f.getAtomicPolymerElements)(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=(0,f.getAtomicGapElements)(this),this.props.gapElements)}get nucleotideElements(){return this.props.nucleotideElements?this.props.nucleotideElements:(this.props.nucleotideElements=(0,f.getNucleotideElements)(this),this.props.nucleotideElements)}get proteinElements(){return this.props.proteinElements?this.props.proteinElements:(this.props.proteinElements=(0,f.getProteinElements)(this),this.props.proteinElements)}get residueCount(){if(this.props.residueCount!==void 0)return this.props.residueCount;let $=0;const ie=s.Segmentation.transientSegments(this.model.atomicHierarchy.residueAtomSegments,this.elements);for(;ie.hasNext;)ie.move(),$+=1;return this.props.residueCount=$,this.props.residueCount}getResidueIndex($){return this.residueIndex[this.elements[$]]}constructor($,ie,Z,re,oe,ce,ue,pe){this.kind=b.Atomic,this.objectPrimitive="atomistic",this._transientCache=void 0,this.id=$,this.invariantId=ie,this.chainGroupId=Z,this.traits=re,this.model=oe,this.elements=ce,this.conformation=ue,this.residueIndex=oe.atomicHierarchy.residueAtomSegments.index,this.chainIndex=oe.atomicHierarchy.chainAtomSegments.index,this.props=pe}}v.Atomic=F;function L(){return I()}class U{get transientCache(){return this._transientCache===void 0&&(this._transientCache=new Map),this._transientCache}getChild($){return $.length===this.elements.length?this:G(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,$,this.conformation,k())}getCopy($,ie,Z,re){const oe=G($,ie,Z,this.traits,this.model,this.kind,this.elements,this.conformation,this.props);return re?.propagateTransientCache&&(oe._transientCache=this._transientCache),oe}applyOperator($,ie,Z=!1){const re=Z?ie:e.SymmetryOperator.compose(this.conformation.operator,ie);return G($,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,this.elements,e.SymmetryOperator.createMapping(re,this.getCoarseConformation(),this.conformation.r),this.props)}remapModel($,ie,Z){const re=this.getCoarseConformation(),oe=q(this.kind,$);Z||(Z={...this.props},v.isSameConformation(this,$)||(Z.boundary=void 0,Z.lookup3d=void 0,Z.principalAxes=void 0));const ce=re!==oe?e.SymmetryOperator.createMapping(this.conformation.operator,oe,this.kind===v.Kind.Spheres?w($):O()):this.conformation;return new U(this.id,this.invariantId,this.chainGroupId,this.traits,$,this.kind,this.elements,ce,Z)}get boundary(){if(this.props.boundary)return this.props.boundary;const{x:$,y:ie,z:Z}=this.getCoarseConformation(),re=this.getCoarseRadii();return this.props.boundary=E.is(this.traits,R.FastBoundary)?(0,_.getFastBoundary)({x:$,y:ie,z:Z,radius:re,indices:this.elements}):(0,_.getBoundary)({x:$,y:ie,z:Z,radius:re,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;const{x:$,y:ie,z:Z}=this.getCoarseConformation();return this.props.lookup3d=(0,r.GridLookup3D)({x:$,y:ie,z:Z,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=(0,y.getPrincipalAxes)(this),this.props.principalAxes)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=(0,f.getCoarsePolymerElements)(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=(0,f.getCoarseGapElements)(this),this.props.gapElements)}getCoarseConformation(){return q(this.kind,this.model)}getCoarseRadii(){return N(this.kind,this.model)}constructor($,ie,Z,re,oe,ce,ue,pe,he){this._transientCache=void 0,this.kind=ce,this.objectPrimitive=ce===b.Spheres?"sphere":"gaussian",this.id=$,this.invariantId=ie,this.chainGroupId=Z,this.traits=re,this.model=oe,this.elements=ue,this.conformation=pe,this.coarseElements=ce===b.Spheres?oe.coarseHierarchy.spheres:oe.coarseHierarchy.gaussians,this.coarseConformation=ce===b.Spheres?oe.coarseConformation.spheres:oe.coarseConformation.gaussians,this.props=he}}function q(ne,$){return ne===b.Spheres?$.coarseConformation.spheres:$.coarseConformation.gaussians}function N(ne,$){return ne===b.Spheres?$.coarseConformation.spheres.radius:void 0}function k(){return I()}class j extends U{}v.Spheres=j;class H extends U{}v.Gaussians=H;function G(ne,$,ie,Z,re,oe,ce,ue,pe){return new U(ne,$,ie,Z,re,oe,ce,ue,pe)}function z(ne,$){return ne.chainGroupId===$.chainGroupId&&ne.conformation.operator.name===$.conformation.operator.name}v.areSameChainOperatorGroup=z;function W(ne,$){return g.Mat4.areEqual(ne.conformation.operator.matrix,$.conformation.operator.matrix,1e-6)}v.areOperatorsEqual=W;function X(ne,$){return ne===$?!0:s.SortedArray.areEqual(ne.elements,$.elements)?K(ne,$.model):!1}v.areConformationsEqual=X;function Y(ne,$,ie,Z){var re;if(!$)return;if(ne.model.atomicConformation.id===ie.atomicConformation.id)return $;const oe=a.IndexPairBonds.Provider.get(ne.model);if(oe){const ce=a.IndexPairBonds.Provider.get(ie);return!ce||oe===ce?$:void 0}return!((re=$.props)===null||re===void 0)&&re.canRemap||!Z||K(ne,ie)?$:void 0}function K(ne,$){const ie=t.Model.CoordinatesHistory.get(t.Model.getRoot($));if(ie)return ie.areEqual(ne.elements,ne.kind,$);const Z=ne.elements,{x:re,y:oe,z:ce}=ne.conformation.coordinates,{x:ue,y:pe,z:he}=Q(ne.kind,$);for(let fe=0,de=Z.length;fe<de;fe++){const ge=Z[fe];if(re[ge]!==ue[ge]||oe[ge]!==pe[ge]||ce[ge]!==he[ge])return!1}return!0}v.isSameConformation=K;function Q(ne,$){return ne===b.Atomic?$.atomicConformation:ne===b.Spheres?$.coarseConformation.spheres:$.coarseConformation.gaussians}v.getModelConformationOfKind=Q;function J(ne){return Q(ne.kind,ne.model)}
15v.getConformation=J;function ae(ne,$){return ne===b.Atomic?$.atomicHierarchy:ne===b.Spheres?$.coarseHierarchy.spheres:$.coarseHierarchy.gaussians}v.getModelHierarchyOfKind=ae;function te(ne){return ae(ne.kind,ne.model)}v.getHierarchy=te})(m||(lp.Unit=m={})),lp}var As={},oR;function VT(){if(oR)return As;oR=1,Object.defineProperty(As,"__esModule",{value:!0}),As.StructureLookup3D=As.StructureResult=void 0,As.StructureLookup3DResultContext=o;const e=rt(),t=Ge(),r=at(),n=xl(),i=Q$();var c;(function(h){function f(g,a,d,p){g.indices[g.count]=d,g.units[g.count]=a,g.squaredDistances[g.count]=p,g.count++}h.add=f;function y(){return{count:0,indices:[],units:[],squaredDistances:[]}}h.create=y;function _(g,a){for(let d=0;d<a.count;++d)g.indices[d]=a.indices[d],g.units[d]=a.units[d],g.squaredDistances[d]=a.squaredDistances[d];return g.count=a.count,g}h.copy=_})(c||(As.StructureResult=c={}));function o(){return{result:c.create(),closeUnitsResult:e.Result.create(),unitGroupResult:e.Result.create()}}class s{findUnitIndices(f,y,_,g){return this.unitLookup.find(f,y,_,g)}find(f,y,_,g,a){return this._find(f,y,_,g,a??this.findContext)}_find(f,y,_,g,a){e.Result.reset(a.result);const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g,a.closeUnitsResult);if(p.count===0)return a.result;for(let u=0,m=p.count;u<m;u++){const v=d[p.indices[u]];t.Vec3.set(this.pivot,f,y,_),v.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,v.conformation.operator.inverse);const P=v.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g,a.unitGroupResult);for(let C=0,l=P.count;C<l;C++)c.add(a.result,v,P.indices[C],P.squaredDistances[C])}return a.result}nearest(f,y,_,g=1,a){return this._nearest(f,y,_,g,a??this.findContext)}_nearest(f,y,_,g,a){const d=a.result,p=this.heap;e.Result.reset(d),p.clear();const{units:u}=this.structure;let m=0;const v=this.unitLookup.nearest(f,y,_,u.length,C=>(m+=u[C].elements.length)>=g,a.closeUnitsResult);if(v.count===0)return d;let b=0,P=-Number.MAX_VALUE;for(let C=0,l=v.count;C<l;C++){const S=v.squaredDistances[C];if(b>=g&&P<S)break;t.Vec3.set(this.pivot,f,y,_);const T=u[v.indices[C]];T.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,T.conformation.operator.inverse);const x=T.lookup3d.nearest(this.pivot[0],this.pivot[1],this.pivot[2],g,void 0,a.unitGroupResult);if(x.count!==0){b+=x.count,P=Math.max(P,x.squaredDistances[x.count-1]);for(let M=0,D=x.count;M<D;M++)p.insert(x.squaredDistances[M],{index:x.indices[M],unit:T})}}if(g===1){const C=p.findMinimum();if(C){const{key:l}=C,{unit:S,index:T}=C.value;c.add(d,S,T,l)}}else for(;!p.isEmpty()&&d.count<g;){const C=p.extractMinimum(),{key:l}=C,{unit:S,index:T}=C.value;c.add(d,S,T,l)}return d}findIntoBuilder(f,y,_,g,a){const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g);if(p.count!==0)for(let u=0,m=p.count;u<m;u++){const v=d[p.indices[u]];t.Vec3.set(this.pivot,f,y,_),v.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,v.conformation.operator.inverse);const P=v.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g);if(P.count===0)continue;const C=v.elements;a.beginUnit(v.id);for(let l=0,S=P.count;l<S;l++)a.addElement(C[P.indices[l]]);a.commitUnit()}}findIntoBuilderIf(f,y,_,g,a,d){const{units:p}=this.structure,u=this.unitLookup.find(f,y,_,g);if(u.count===0)return;const m=n.StructureElement.Location.create(this.structure);for(let v=0,b=u.count;v<b;v++){const P=p[u.indices[v]];t.Vec3.set(this.pivot,f,y,_),P.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,P.conformation.operator.inverse);const l=P.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],g);if(l.count===0)continue;const S=P.elements;m.unit=P,a.beginUnit(P.id);for(let T=0,A=l.count;T<A;T++)m.element=S[l.indices[T]],d(m)&&a.addElement(m.element);a.commitUnit()}}findIntoBuilderWithRadius(f,y,_,g,a,d,p,u){const{units:m}=this.structure,v=this.unitLookup.find(f,y,_,d);if(v.count===0)return;const b=n.StructureElement.Location.create(this.structure),P=g+a+d;for(let C=0,l=v.count;C<l;C++){const S=m[v.indices[C]];t.Vec3.set(this.pivot,f,y,_),S.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,S.conformation.operator.inverse);const A=S.lookup3d.find(this.pivot[0],this.pivot[1],this.pivot[2],P);if(A.count===0)continue;const x=S.elements;b.unit=S,u.beginUnit(S.id);for(let M=0,D=A.count;M<D;M++){b.element=x[A.indices[M]];const V=p(b);Math.sqrt(A.squaredDistances[M])-g-V>d||u.addElement(x[A.indices[M]])}u.commitUnit()}}check(f,y,_,g){const{units:a}=this.structure,d=this.unitLookup.find(f,y,_,g);if(d.count===0)return!1;for(let p=0,u=d.count;p<u;p++){const m=a[d.indices[p]];if(t.Vec3.set(this.pivot,f,y,_),m.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,m.conformation.operator.inverse),m.lookup3d.check(this.pivot[0],this.pivot[1],this.pivot[2],g))return!0}return!1}approxNearest(f,y,_,g,a){return this._approxNearest(f,y,_,g,a??this.findContext)}_approxNearest(f,y,_,g,a){e.Result.reset(a.result);const{units:d}=this.structure,p=this.unitLookup.find(f,y,_,g,a.closeUnitsResult);if(p.count===0)return a.result;let u=Number.MAX_VALUE;for(let m=0,v=p.count;m<v;m++){const b=d[p.indices[m]];t.Vec3.set(this.pivot,f,y,_),b.conformation.operator.isIdentity||t.Vec3.transformMat4(this.pivot,this.pivot,b.conformation.operator.inverse);const C=b.lookup3d.approxNearest(this.pivot[0],this.pivot[1],this.pivot[2],g,a.unitGroupResult);for(let l=0,S=C.count;l<S;l++)C.squaredDistances[l]<u&&(c.add(a.result,b,C.indices[l],C.squaredDistances[l]),u=C.squaredDistances[l])}return a.result}get boundary(){return this.structure.boundary}constructor(f){this.structure=f,this.pivot=(0,t.Vec3)(),this.heap=new i.FibonacciHeap,this.findContext=o();const{units:y,boundary:_}=f,g=y.length,a=new Float32Array(g),d=new Float32Array(g),p=new Float32Array(g),u=new Float32Array(g),m=(0,t.Vec3)();for(let b=0;b<g;b++){const P=y[b],C=P.boundary.sphere;t.Vec3.transformMat4(m,C.center,P.conformation.operator.matrix),a[b]=m[0],d[b]=m[1],p[b]=m[2],u[b]=C.radius}const v={x:a,y:d,z:p,radius:u,indices:r.OrderedSet.ofBounds(0,g)};this.unitLookup=(0,e.GridLookup3D)(v,_)}}return As.StructureLookup3D=s,As}var Tp={},xp={},ux={},Ap={},Ms={},sR;function If(){if(sR)return Ms;sR=1,Object.defineProperty(Ms,"__esModule",{value:!0}),Ms.structureUnion=r,Ms.structureAreEqual=i,Ms.structureAreIntersecting=c,Ms.structureIntersect=o,Ms.structureSubtract=s;const e=jr(),t=at();function r(h,f){if(f.length===0)return e.Structure.Empty;if(f.length===1)return f[0];const y=new Map,_=new Set;for(const{units:a}of f)for(let d=0,p=a.length;d<p;d++){const u=a[d];if(y.has(u.id)){if(_.has(u.id))continue;const m=t.SortedArray.union(y.get(u.id),u.elements);
15y.set(u.id,m),m.length===h.unitMap.get(u.id).elements.length&&_.add(u.id)}else y.set(u.id,u.elements),u.elements.length===h.unitMap.get(u.id).elements.length&&_.add(u.id)}const g=h.subsetBuilder(!0);return y.forEach(n,g),g.getStructure()}function n(h,f){this.setUnit(f,h)}function i(h,f){if(h===f)return!0;if(h.units.length!==f.units.length)return!1;const y=h.units,_=f.unitMap;for(let g=0,a=y.length;g<a;g++){const d=y[g];if(!_.has(d.id))return!1;const p=_.get(d.id);if(!t.SortedArray.areEqual(d.elements,p.elements))return!1}return!0}function c(h,f){if(h===f)return!0;let y,_;h.units.length<f.units.length?(y=h,_=f):(y=f,_=h);const g=y.units,a=_.unitMap;for(let d=0,p=g.length;d<p;d++){const u=g[d];if(!a.has(u.id))continue;const m=a.get(u.id);if(t.SortedArray.areIntersecting(u.elements,m.elements))return!0}return!1}function o(h,f){if(h===f)return h;if(!c(h,f))return e.Structure.Empty;let y,_;h.units.length<f.units.length?(y=h,_=f):(y=f,_=h);const g=y.units,a=_.unitMap,d=[];for(let p=0,u=g.length;p<u;p++){const m=g[p];if(!a.has(m.id))continue;const v=a.get(m.id);if(t.SortedArray.areIntersecting(m.elements,v.elements)){const b=t.SortedArray.intersect(m.elements,v.elements);d[d.length]=m.getChild(b)}}return e.Structure.create(d,{parent:h.parent||f.parent})}function s(h,f){if(h===f)return e.Structure.Empty;if(!c(h,f))return h;const y=h.units,_=f.unitMap,g=[];for(let a=0,d=y.length;a<d;a++){const p=y[a];if(!_.has(p.id)){g[g.length]=p;continue}const u=_.get(p.id),m=t.SortedArray.subtract(p.elements,u.elements);m.length>0&&(g[g.length]=p.getChild(m))}return e.Structure.create(g,{parent:h.parent||f.parent})}return Ms}var cR;function za(){if(cR)return Ap;cR=1,Object.defineProperty(Ap,"__esModule",{value:!0}),Ap.StructureSelection=void 0;const e=ha(),t=jr(),r=If(),n=at();var i;return(function(c){function o(l,S){return{kind:"singletons",source:l,structure:S}}c.Singletons=o;function s(l,S){return{kind:"sequence",source:l,structures:S}}c.Sequence=s;function h(l){return o(l,t.Structure.Empty)}c.Empty=h;function f(l){return l.kind==="singletons"}c.isSingleton=f;function y(l){return f(l)?l.structure.units.length===0:l.structures.length===0}c.isEmpty=y;function _(l){return f(l)?l.structure.elementCount:l.structures.length}c.structureCount=_;function g(l){return y(l)?t.Structure.Empty:f(l)?l.structure:(0,r.structureUnion)(l.source,l.structures)}c.unionStructure=g;function a(l){const S=[],{unitMap:T}=l.source;for(const A of g(l).units)A===T.get(A.id)?S[S.length]={unit:A,indices:n.OrderedSet.ofBounds(0,A.elements.length)}:S[S.length]={unit:A,indices:n.OrderedSet.ofSortedArray(n.SortedArray.indicesOf(T.get(A.id).elements,A.elements))};return t.StructureElement.Loci(l.source,S)}c.toLociWithCurrentUnits=a;function d(l){const S=[],{unitMap:T}=l.source;for(const A of g(l).units){const x=T.get(A.id);x===A?S[S.length]={unit:x,indices:n.OrderedSet.ofBounds(0,x.elements.length)}:S[S.length]={unit:x,indices:n.OrderedSet.ofSortedArray(n.SortedArray.indicesOf(x.elements,A.elements))}}return t.StructureElement.Loci(l.source,S)}c.toLociWithSourceUnits=d;function p(l,S,T){return S.length===0?h(l):T?o(l,(0,r.structureUnion)(l,S)):s(l,S)}class u{add(S){const T=S.elementCount;T!==0&&(this.structures[this.structures.length]=S,T!==1&&(this.allSingletons=!1))}getSelection(){return p(this.source,this.structures,this.allSingletons)}constructor(S){this.source=S,this.structures=[],this.allSingletons=!0}}class m{add(S){const T=S.elementCount;T===0||!this.uniqueSets.add(S)||(this.structures[this.structures.length]=S,T!==1&&(this.allSingletons=!1))}getSelection(){return p(this.structure,this.structures,this.allSingletons)}constructor(S){this.structure=S,this.structures=[],this.allSingletons=!0,this.uniqueSets=(0,e.HashSet)(t.Structure.hashCode,t.Structure.areUnitIdsAndIndicesEqual)}}function v(l){return new u(l)}c.LinearBuilder=v;function b(l){return new m(l)}c.UniqueBuilder=b;function P(l,S){let T=0;if(c.isSingleton(l))for(const A of l.structure.units){const{elements:x}=A;for(let M=0,D=x.length;M<D;M++){const V=t.Structure.create([A.getChild(n.SortedArray.ofSingleton(x[M]))],{parent:l.source});S(V,T++)}}else for(const A of l.structures)S(A,T++)}c.forEach=P;function C(l,S){return f(l)?o(S,l.structure):s(S,l.structures)}c.withInputStructure=C})(i||(Ap.StructureSelection=i={})),Ap}var Mp={},Dp={},xa={},Ip={},wp={},uR;function rI(){if(uR)return wp;uR=1,Object.defineProperty(wp,"__esModule",{value:!0}),wp.Schema=void 0;const e=dr(),t=nI(),r=kT();function n(_){return!!_.items}function i(_){const{and:g}=e.MolScriptBuilder.core.logic,{eq:a,gre:d,lte:p}=e.MolScriptBuilder.core.rel,{macromolecular:u,ihm:m,core:v}=e.MolScriptBuilder.struct.atomProperty,b={};s(_.label_entity_id)&&(b["entity-test"]=a([u.label_entity_id(),_.label_entity_id]));const P=[];s(_.operator_name)&&P.push(a([v.operatorName(),_.operator_name])),s(_.instance_id)&&P.push(a([v.instanceId(),_.instance_id])),s(_.label_asym_id)&&P.push(a([u.label_asym_id(),_.label_asym_id])),s(_.auth_asym_id)&&P.push(a([u.auth_asym_id(),_.auth_asym_id])),P.length===1?b["chain-test"]=P[0]:P.length>1&&(b["chain-test"]=g(P));const C=[];s(_.label_seq_id)&&C.push(m.hasSeqId({0:_.label_seq_id})),s(_.auth_seq_id)&&C.push(a([u.auth_seq_id(),_.auth_seq_id])),s(_.residue_index)&&C.push(a([u.residueSourceIndex(),_.residue_index])),s(_.pdbx_PDB_ins_code)&&C.push(a([u.pdbx_PDB_ins_code(),_.pdbx_PDB_ins_code])),(s(_.beg_label_seq_id)||s(_.end_label_seq_id))&&C.push(m.overlapsSeqIdRange({beg:_.beg_label_seq_id,end:_.end_label_seq_id})),s(_.beg_auth_seq_id)&&C.push(d([u.auth_seq_id(),_.beg_auth_seq_id])),s(_.end_auth_seq_id)&&C.push(p([u.auth_seq_id(),_.end_auth_seq_id])),C.length===1?b["residue-test"]=C[0]:C.length>1&&(b["residue-test"]=g(C));const l=[];return s(_.label_comp_id)&&l.push(a([u.label_comp_id(),_.label_comp_id])),s(_.auth_comp_id)&&l.push(a([u.auth_comp_id(),_.auth_comp_id])),s(_.atom_id)&&l.push(a([u.id(),_.atom_id])),s(_.atom_index)&&l.push(a([e.MolScriptBuilder.struct.atomProperty.core.sourceIndex(),_.atom_index])),s(_.label_atom_id)&&l.push(a([u.label_atom_id(),_.label_atom_id])),s(_.auth_atom_id)&&l.push(a([u.auth_atom_id(),_.auth_atom_id])),s(_.type_symbol)&&l.push(a([e.MolScriptBuilder.struct.atomProperty.core.elementSymbol(),_.type_symbol.toUpperCase()])),l.length===1?b["atom-test"]=l[0]:l.length>1&&(b["atom-test"]=g(l)),e.MolScriptBuilder.struct.generator.atomGroups(b)}function c(_){const g=[];return h(_,a=>g.push(i(a))),g.length===1?g[0]:o(g)}function o(_){return e.MolScriptBuilder.struct.combinator.merge(_.map(g=>e.MolScriptBuilder.struct.modifier.union([g])))}function s(_){return _!=null}function h(_,g){if(n(_))if(Array.isArray(_.items))if(_.prefix)for(const a of _.items)g(Object.assign({},_.prefix,a));else for(const a of _.items)g(a);else{const a={..._.prefix},d=Object.keys(_.items),p=_.items[d[0]].length;for(let u=0;u<p;u++){for(const m of d)a[m]=_.items[m][u];g(a)}}else g(_)}function f(_,g,a){const d=c(g);return r.Loci.fromExpression(_,d,a)}function y(_,g,a){const d=f(_,g,a);return t.Bundle.fromLoci(d)}return wp.Schema={forEachItem:h,toExpression:c,toLoci:f,toBundle:y},wp}var lR;function nI(){if(lR)return Ip;lR=1,Object.defineProperty(Ip,"__esModule",{value:!0}),Ip.Bundle=void 0;const e=at(),t=Wa(),r=_t(),n=Ga(),i=kT(),c=dr(),o=RT(),s=rI();var h;return(function(f){f.Empty={hash:-1,elements:[]};function y(l,S){return p(o.StructureSelection.toLociWithSourceUnits(o.StructureSelection.Singletons(l,S)))}f.fromSubStructure=y;function _(l){return p(o.StructureSelection.toLociWithSourceUnits(l))}f.fromSelection=_;function g(l,S,T){return p(i.Loci.fromExpression(l,S,T))}f.fromExpression=g;function a(l,S,T){return p(i.Loci.fromQuery(l,S,T))}f.fromQuery=a;function d(l,S,T){return s.Schema.toBundle(l,S,T)}f.fromSchema=d;function p(l){const S=[];for(const x of l.elements){const{unit:M,indices:D}=x;if(e.OrderedSet.size(D)===0)continue;const V=[],R=[];if(e.OrderedSet.isInterval(D))e.OrderedSet.size(D)===1?R.push(e.Interval.min(D)):V.push(e.Interval.min(D),e.Interval.max(D));else{let E=0;const I=D.length;for(;E<I;){const B=E;for(E++;E<I&&D[E-1]+1===D[E];)E++;const w=E;if(w-B>2)V.push(D[B],D[w-1]);else for(let O=B;O<w;O++)R[R.length]=D[O]}}S.push({unit:M,set:e.SortedArray.ofSortedArray(R),ranges:n.SortedRanges.ofSortedRanges(V)})}const T=new Map;for(let x=0,M=S.length;x<M;++x){const D=S[x],V=(0,r.hash2)((0,r.hashFnv32a)(D.ranges),(0,r.hashFnv32a)(D.set));if(T.has(V)){const{groupedUnits:R}=T.get(V);R.has(D.unit.invariantId)?R.get(D.unit.invariantId).push(D.unit.id):R.set(D.unit.invariantId,[D.unit.id])}else{const R=new Map;R.set(D.unit.invariantId,[D.unit.id]),T.set(V,{groupedUnits:R,set:D.set,ranges:D.ranges})}}const A=[];return T.forEach(x=>{const M=[];
15x.groupedUnits.forEach(D=>M.push(e.SortedArray.ofUnsortedArray(D))),M.sort((D,V)=>D[0]-V[0]),A.push({groupedUnits:M,set:x.set,ranges:x.ranges})}),{hash:l.structure.hashCode,elements:A}}f.fromLoci=p;function u(l,S){const T=[];for(let A=0,x=l.length;A<x;++A){const M=l[A];S.unitMap.has(M)&&T.push(S.unitMap.get(M))}return T}function m(l,S){l.hash!==-1&&(l.hash,S.hashCode);const T=[];for(const A of l.elements)for(const x of A.groupedUnits){const M=u(x,S);if(M.length===0)continue;let D;if(A.ranges.length===0)D=A.set;else if(A.set.length===0)if(A.ranges.length===2)D=e.Interval.ofRange(A.ranges[0],A.ranges[1]);else{const V=new Int32Array(n.SortedRanges.size(A.ranges));n.SortedRanges.forEach(A.ranges,(R,E)=>V[E]=R),D=e.SortedArray.ofSortedArray(V)}else{const V=n.SortedRanges.size(A.ranges),R=new Int32Array(A.set.length+V);n.SortedRanges.forEach(A.ranges,(E,I)=>R[I]=E),R.set(A.set,V),D=e.SortedArray.ofUnsortedArray(R)}for(const V of M)T.push({unit:V,indices:D})}return(0,i.Loci)(S,T)}f.toLoci=m;function v(l,S){l.hash!==-1&&(l.hash,S.hashCode);const T=[];for(const A of l.elements)for(const x of A.groupedUnits){const M=u(x,S);if(M.length===0)continue;const D=M[0].elements,V=n.SortedRanges.size(A.ranges),R=A.set.length,E=new Int32Array(R+V);let I;if(V===0){for(let B=0,w=R;B<w;++B)E[B]=D[A.set[B]];I=e.SortedArray.ofSortedArray(E)}
15else if(R===0)n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]),I=e.SortedArray.ofSortedArray(E);else if(e.SortedArray.min(A.set)>n.SortedRanges.max(A.ranges)){n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]);for(let B=0,w=R;B<w;++B)E[B+V]=D[A.set[B]];I=e.SortedArray.ofSortedArray(E)}else if(n.SortedRanges.min(A.ranges)>e.SortedArray.max(A.set)){for(let B=0,w=R;B<w;++B)E[B]=D[A.set[B]];n.SortedRanges.forEach(A.ranges,(B,w)=>E[w+R]=D[B]),I=e.SortedArray.ofSortedArray(E)}else{n.SortedRanges.forEach(A.ranges,(B,w)=>E[w]=D[B]);for(let B=0,w=R;B<w;++B)E[B+V]=D[A.set[B]];I=e.SortedArray.ofUnsortedArray(E)}for(const B of M)T.push(B.getChild(I))}return t.Structure.create(T,{parent:S})}f.toStructure=v;function b(l){return c.MolScriptBuilder.internal.generator.bundleElement({groupedUnits:c.MolScriptBuilder.core.type.list(l.groupedUnits.map(S=>c.MolScriptBuilder.core.type.list(S))),ranges:c.MolScriptBuilder.core.type.list(l.ranges),set:c.MolScriptBuilder.core.type.list(l.set)})}function P(l){return c.MolScriptBuilder.internal.generator.bundle({elements:c.MolScriptBuilder.core.type.list(l.elements.map(b))})}f.toExpression=P;function C(l,S){if(l.elements.length!==S.elements.length)return!1;for(let T=0,A=l.elements.length;T<A;++T){const x=l.elements[T],M=S.elements[T];if(x.groupedUnits.length!==M.groupedUnits.length)return!1;for(let D=0,V=M.groupedUnits.length;D<V;++D)if(!e.SortedArray.areEqual(x.groupedUnits[D],M.groupedUnits[D]))return!1;if(!e.SortedArray.areEqual(x.set,M.set)||!n.SortedRanges.areEqual(x.ranges,M.ranges))return!1}return!0}f.areEqual=C})(h||(Ip.Bundle=h={})),Ip}var dR;function iI(){if(dR)return xa;dR=1,Object.defineProperty(xa,"__esModule",{value:!0}),xa.defaultBondTest=s,xa.atomicSequence=h,xa.water=f,xa.atomicHet=y,xa.spheres=_,xa.bundleElementImpl=g,xa.bundleGenerator=a;const e=at(),t=xl(),r=jr(),n=Wa(),i=za(),c=dt(),o=nI();function s(d){return c.BondType.isCovalent(d.atomicBond.type)}function h(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;if(m.element=P[0],r.StructureProperties.entity.type(m)!=="polymer")continue;const C=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,P);let l=0;for(;C.hasNext;)l++,C.move();l<8||v.push(b)}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function f(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;m.element=P[0],r.StructureProperties.entity.type(m)==="water"&&v.push(b)}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function y(){return function(p){const{inputStructure:u}=p,m=t.StructureElement.Location.create(u),v=[];for(const b of u.units){if(b.kind!==r.Unit.Kind.Atomic)continue;m.unit=b;const P=b.elements;if(m.element=P[0],r.StructureProperties.entity.type(m)!=="water"){if(r.StructureProperties.entity.type(m)==="polymer"){const C=e.Segmentation.transientSegments(b.model.atomicHierarchy.residueAtomSegments,P);let l=0;for(;C.hasNext;)l++,C.move();if(l>=8)continue}v.push(b)}}return i.StructureSelection.Singletons(u,n.Structure.create(v,{parent:u}))}}function _(){return function(p){const{inputStructure:u}=p,m=[];for(const v of u.units)v.kind===r.Unit.Kind.Spheres&&m.push(v);return i.StructureSelection.Singletons(u,n.Structure.create(m,{parent:u}))}}function g(d,p,u){return{groupedUnits:d,ranges:p,set:u}}function a(d){return function(u){const m={hash:u.inputStructure.hashCode,elements:d};return i.StructureSelection.Sequence(u.inputStructure,[o.Bundle.toStructure(m,u.inputStructure)])}}return xa}var fR;function rX(){if(fR)return Dp;fR=1,Object.defineProperty(Dp,"__esModule",{value:!0}),Dp.QueryContext=void 0;const e=jr(),t=ci(),r=dt(),n=iI();class i{pushCurrentElement(){return this.currentElementStack[this.currentElementStack.length]=this.element,this.element=e.StructureElement.Location.create(void 0),this.element}popCurrentElement(){this.element=this.currentElementStack.pop()}pushCurrentBond(){return this.atomicBond&&this.currentAtomicBondStack.push(this.atomicBond),this.atomicBond=new c,this.atomicBond}popCurrentBond(){this.currentAtomicBondStack.length>0?this.atomicBond=this.currentAtomicBondStack.pop():this.atomicBond=void 0}pushCurrentStructure(){this.currentStructure&&this.currentStructureStack.push(this.currentStructure)}popCurrentStructure(){this.currentStructureStack.length?this.currentStructure=this.currentStructureStack.pop():this.currentStructure=void 0}pushInputStructure(s){this.inputStructureStack.push(this.inputStructure),this.inputStructure=s}popInputStructure(){if(this.inputStructureStack.length===0)throw new Error("Mu
15st push before pop.");this.inputStructure=this.inputStructureStack.pop()}throwIfTimedOut(){if(this.timeoutMs!==0&&(0,t.now)()-this.timeCreated>this.timeoutMs)throw new Error(`The query took too long to execute (> ${this.timeoutMs/1e3}s).`)}tryGetCurrentSelection(){if(!this.currentSelection)throw new Error("The current selection is not assigned.");return this.currentSelection}constructor(s,h){this.currentElementStack=[],this.currentAtomicBondStack=[],this.currentStructureStack=[],this.inputStructureStack=[],this.timeCreated=(0,t.now)(),this.element=e.StructureElement.Location.create(void 0),this.currentStructure=void 0,this.atomicBond=new c,this.currentSelection=void 0,this.inputStructure=s,this.timeoutMs=h&&h.timeoutMs||0,this.currentSelection=h&&h.currentSelection}}Dp.QueryContext=i;class c{constructor(){this.a=e.StructureElement.Location.create(void 0),this.aIndex=0,this.b=e.StructureElement.Location.create(void 0),this.bIndex=0,this.type=r.BondType.Flag.None,this.order=0,this.key=-1,this.testFn=n.defaultBondTest}setStructure(s){this.a.structure=s,this.b.structure=s}setTestFn(s){this.testFn=s||n.defaultBondTest}test(s,h){return this.testFn(s)?!0:h?(this.swap(),this.testFn(s)):!1}swap(){const s=this.aIndex;this.aIndex=this.bIndex,this.bIndex=s;const h=this.a.unit;this.a.unit=this.b.unit,this.b.unit=h;const f=this.a.element;this.a.element=this.b.element,this.b.element=f}get length(){return e.StructureElement.Location.distance(this.a,this.b)}}return Dp}var mR;function VJ(){if(mR)return Mp;mR=1,Object.defineProperty(Mp,"__esModule",{value:!0}),Mp.StructureQuery=void 0;const e=za(),t=rX();var r;return(function(n){function i(o,s,h){return o(new t.QueryContext(s,h))}n.run=i;function c(o,s,h){const f=o(new t.QueryContext(s,h));return e.StructureSelection.toLociWithSourceUnits(f)}n.loci=c})(r||(Mp.StructureQuery=r={})),Mp}var lx={},Ac={},pR;function nX(){if(pR)return Ac;pR=1,Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.LinearGroupingBuilder=Ac.UniqueStructuresBuilder=void 0;const e=jr(),t=za(),r=ha(),n=If();class i{add(s){s.elementCount&&(s.elementCount!==1&&(this.allSingletons=!1),this.set.add(s)&&(this.structures[this.structures.length]=s))}getSelection(){return this.allSingletons?t.StructureSelection.Singletons(this.source,(0,n.structureUnion)(this.source,this.structures)):t.StructureSelection.Sequence(this.source,this.structures)}constructor(s){this.source=s,this.set=(0,r.HashSet)(e.Structure.hashCode,e.Structure.areUnitIdsAndIndicesEqual),this.structures=[],this.allSingletons=!0}}Ac.UniqueStructuresBuilder=i;class c{add(s,h,f){let y=this.builderMap.get(s);y||(y=this.source.subsetBuilder(!0),this.builders[this.builders.length]=y,this.builderMap.set(s,y)),y.addToUnit(h,f)}allSingletons(){for(let s=0,h=this.builders.length;s<h;s++)if(this.builders[s].elementCount>1)return!1;return!0}singletonSelection(){const s=this.source.subsetBuilder(!0),h=e.StructureElement.Location.create(this.source);for(let f=0,y=this.builders.length;f<y;f++)this.builders[f].setSingletonLocation(h),s.addToUnit(h.unit.id,h.element);return t.StructureSelection.Singletons(this.source,s.getStructure())}fullSelection(){const s=new Array(this.builders.length);for(let h=0,f=this.builders.length;h<f;h++)s[h]=this.builders[h].getStructure();return t.StructureSelection.Sequence(this.source,s)}getSelection(){return this.builders.length===0?t.StructureSelection.Empty(this.source):this.allSingletons()?this.singletonSelection():this.fullSelection()}constructor(s){this.source=s,this.builders=[],this.builderMap=new Map}}return Ac.LinearGroupingBuilder=c,Ac}var hR;function iX(){return hR||(hR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.all=e.none=void 0,e.residues=y,e.chains=_,e.atoms=d,e.rings=b,e.querySelection=P,e.bondedAtomicPairs=C;const t=ha(),r=at(),n=jr(),i=Wa(),c=za(),o=nX(),s=If(),h=l=>c.StructureSelection.Sequence(l.inputStructure,[]);e.none=h;const f=l=>c.StructureSelection.Singletons(l.inputStructure,l.inputStructure);e.all=f;function y(l){return d({...l,groupBy:S=>n.StructureProperties.residue.key(S.element)})}function _(l){return d({...l,groupBy:S=>n.StructureProperties.chain.key(S.element)})}function g(l){return!0}function a(l){return 0}function d(l){if(!l||!l.atomTest&&!l.residueTest&&!l.chainTest&&!l.entityTest&&!l.unitTest&&!l.groupBy)return e.all;if(l.atomTest&&!l.residueTest&&!l.chainTest&&!l.entityTest&&!l.unitTest&&!l.groupBy)return p(l.atomTest);const S={unitTest:l.unitTest||g,entityTest:l.entityTest||g,chainTest:l.chainTest||g,residueTest:l.residueTest||g,atomTest:l.atomTest||g,groupBy:l.groupBy||a};return l.groupBy?m(S):u(S)}function p(l){return function(T){const{inputStructure:A}=T,{units:x}
15=A,M=T.pushCurrentElement(),D=A.subsetBuilder(!0);M.structure=A;for(const V of x){M.unit=V;const R=V.elements;D.beginUnit(V.id);for(let E=0,I=R.length;E<I;E++)M.element=R[E],l(T)&&D.addElement(M.element);D.commitUnit(),T.throwIfTimedOut()}return T.popCurrentElement(),c.StructureSelection.Singletons(A,D.getStructure())}}function u({unitTest:l,entityTest:S,chainTest:T,residueTest:A,atomTest:x}){return function(D){const{inputStructure:V}=D,{units:R}=V,E=D.pushCurrentElement(),I=V.subsetBuilder(!0),B=A===g&&x===g,w=x===g;E.structure=V;for(const O of R){if(E.unit=O,!l(D))continue;const{elements:F,model:L}=O;if(I.beginUnit(O.id),O.kind===n.Unit.Kind.Atomic){const U=r.Segmentation.transientSegments(O.model.atomicHierarchy.chainAtomSegments,F),q=r.Segmentation.transientSegments(O.model.atomicHierarchy.residueAtomSegments,F);for(;U.hasNext;){const N=U.move();if(E.element=F[N.start],!(!S(D)||!T(D))){if(B){I.addElementRange(F,N.start,N.end);continue}for(q.setSegment(N);q.hasNext;){const k=q.move();if(E.element=F[k.start],!!A(D)){if(w){I.addElementRange(F,k.start,k.end);continue}for(let j=k.start,H=k.end;j<H;j++)E.element=F[j],x(D)&&I.addElement(E.element)}}}}}else{const{chainElementSegments:U}=O.kind===n.Unit.Kind.Spheres?L.coarseHierarchy.spheres:L.coarseHierarchy.gaussians,q=r.Segmentation.transientSegments(U,F);for(;q.hasNext;){const N=q.move();if(E.element=F[N.start],!(!S(D)||!T(D))){if(B){I.addElementRange(F,N.start,N.end);continue}for(let k=N.start,j=N.end;k<j;k++)E.element=F[k],A(D)&&I.addElement(E.element)}}}I.commitUnit(),D.throwIfTimedOut()}return D.popCurrentElement(),c.StructureSelection.Singletons(V,I.getStructure())}}function m({unitTest:l,entityTest:S,chainTest:T,residueTest:A,atomTest:x,groupBy:M}){return function(V){const{inputStructure:R}=V,{units:E}=R,I=V.pushCurrentElement(),B=new o.LinearGroupingBuilder(R);I.structure=R;for(const w of E){if(I.unit=w,!l(V))continue;const{elements:O,model:F}=w;if(w.kind===n.Unit.Kind.Atomic){const L=r.Segmentation.transientSegments(F.atomicHierarchy.chainAtomSegments,O),U=r.Segmentation.transientSegments(F.atomicHierarchy.residueAtomSegments,O);for(;L.hasNext;){const q=L.move();if(I.element=O[q.start],!(!S(V)||!T(V)))for(U.setSegment(q);U.hasNext;){const N=U.move();if(I.element=O[N.start],!!A(V))for(let k=N.start,j=N.end;k<j;k++)I.element=O[k],x(V)&&B.add(M(V),w.id,I.element)}}}else{const{chainElementSegments:L}=w.kind===n.Unit.Kind.Spheres?F.coarseHierarchy.spheres:F.coarseHierarchy.gaussians,U=r.Segmentation.transientSegments(L,O);for(;U.hasNext;){const q=U.move();if(I.element=O[q.start],!(!S(V)||!T(V)))for(let N=q.start,k=q.end;N<k;N++)I.element=O[N],A(V)&&B.add(M(V),w.id,I.element)}}V.throwIfTimedOut()}return V.popCurrentElement(),B.getSelection()}}function v(l,S,T){const A=new Int32Array(S.length);for(let x=0,M=S.length;x<M;x++)A[x]=l.elements[S[x]];return i.Structure.create([l.getChild(r.SortedArray.ofSortedArray(A))],{parent:T})}function b(l,S){return function(A){const{units:x}=A.inputStructure,M=c.StructureSelection.LinearBuilder(A.inputStructure);if(!l||l.length===0){for(const D of x)if(n.Unit.isAtomic(D))if(S)for(const V of D.rings.aromaticRings)M.add(v(D,D.rings.all[V],A.inputStructure));else for(const V of D.rings.all)M.add(v(D,V,A.inputStructure))}else{const D=t.UniqueArray.create();for(let V=0;V<l.length;V++)t.UniqueArray.add(D,l[V],l[V]);for(const V of x){if(!n.Unit.isAtomic(V))continue;const R=V.rings;for(const E of D.array)if(R.byFingerprint.has(E))for(const I of R.byFingerprint.get(E))S&&!R.aromaticRings.includes(I)||M.add(v(V,R.all[I],A.inputStructure))}}return M.getSelection()}}function P(l,S,T=!1){return function(x){const M=l(x);if(c.StructureSelection.structureCount(M)===0)return M;const D=T?(0,s.structureSubtract)(x.inputStructure,c.StructureSelection.unionStructure(M)):c.StructureSelection.unionStructure(M);if(D.elementCount===0)return c.StructureSelection.Empty(x.inputStructure);x.throwIfTimedOut(),x.pushInputStructure(D);const V=S(x);return x.popInputStructure(),c.StructureSelection.withInputStructure(V,x.inputStructure)}}function C(l){return function(T){const A=T.inputStructure,x=A.interUnitBonds,M=c.StructureSelection.UniqueBuilder(T.inputStructure);T.pushCurrentBond();const D=T.atomicBond;D.setTestFn(l),D.setStructure(A);for(const V of A.units){if(V.kind!==n.Unit.Kind.Atomic)continue;const{offset:R,b:E,edgeProps:{flags:I,order:B,key:w}}=V.bonds;D.a.unit=V,D.b.unit=V;for(let O=0,F=V.elements.length;O<F;O++){D.aIndex=O,D.a.element=V.elements[O];for(let L=R[O],U=R[O+1];L<U;L++)if(D.bIndex=E[L],D.b.element=V.elements[E[L]],D.type=I[L],D.order=B[L],D.key=w[L],D.test(T,!1)){const q=A.subsetBu
15ilder(!1);q.beginUnit(V.id),q.addElement(D.a.element),q.addElement(D.b.element),q.commitUnit(),M.add(q.getStructure())}}}for(const V of x.edges)if(D.a.unit=A.unitMap.get(V.unitA),D.a.element=D.a.unit.elements[V.indexA],D.aIndex=V.indexA,D.b.unit=A.unitMap.get(V.unitB),D.b.element=D.b.unit.elements[V.indexB],D.bIndex=V.indexB,D.order=V.props.order,D.type=V.props.flag,D.key=V.props.key,D.test(T,!1)){const R=A.subsetBuilder(!1);R.addToUnit(D.a.unit.id,D.a.element),R.addToUnit(D.b.unit.id,D.b.element),M.add(R.getStructure())}return T.popCurrentBond(),M.getSelection()}}})(lx)),lx}var ki={},Vp={},gR;function EJ(){if(gR)return Vp;gR=1,Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.StructureUniqueSubsetBuilder=void 0;const e=at(),t=_t(),r=OT(),n=Wa(),i=ha();class c{addToUnit(s,h){const f=this.unitMap.get(s);if(f)i.UniqueArray.add(f,h,h)&&this.elementCount++;else{const y=i.UniqueArray.create();i.UniqueArray.add(y,h,h),this.unitMap.set(s,y),this.ids[this.ids.length]=s,this.elementCount++}}has(s,h){const f=this.unitMap.get(s);return f?i.UniqueArray.has(f,h):!1}beginUnit(s){this.parentId=s,this.unitMap.has(s)?this.currentUnit=this.unitMap.get(s):this.currentUnit=this.currentUnit.array.length>0?i.UniqueArray.create():this.currentUnit}addElement(s){i.UniqueArray.add(this.currentUnit,s,s)&&this.elementCount++}commitUnit(){this.currentUnit.array.length===0||this.unitMap.has(this.parentId)||(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}getStructure(){if(this.isEmpty)return n.Structure.Empty;const s=[];(0,t.sortArray)(this.ids);const h=r.StructureSymmetry.UnitEquivalenceBuilder();for(let f=0,y=this.ids.length;f<y;f++){const _=this.ids[f],g=this.parent.unitMap.get(_),a=this.unitMap.get(_).array,d=a.length;if(a.length===g.elements.length){s[s.length]=g,h.add(g.id,g);continue}d>1&&(0,t.sortArray)(a);let p=g.getChild(e.SortedArray.ofSortedArray(a));const u=h.add(p.id,p);p!==u&&(p=u.applyOperator(p.id,p.conformation.operator,!0)),s[s.length]=p}return n.Structure.create(s,{parent:this.parent})}get isEmpty(){return this.elementCount===0}constructor(s){this.parent=s,this.ids=[],this.unitMap=e.IntMap.Mutable(),this.parentId=-1,this.currentUnit=i.UniqueArray.create(),this.elementCount=0}}return Vp.StructureUniqueSubsetBuilder=c,Vp}var Ep={},Bp={},dx={},fx={},_C={},yR;function aI(){if(yR)return _C;yR=1,Object.defineProperty(_C,"__esModule",{value:!0}),_C.SecondaryStructure=e;function e(t,r,n,i){return{type:t,key:r,elements:n,getIndex:i}}return _C}var Rp={},Mc={},ia={},mx={},vR;function oI(){return vR||(vR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.File_=e.RUNNING_IN_NODEJS=void 0,e.RUNNING_IN_NODEJS=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,e.File_=t();function t(){if(typeof File>"u"||e.RUNNING_IN_NODEJS){class r{arrayBuffer(){return this.blob.arrayBuffer()}slice(i,c,o){return this.blob.slice(i,c,o)}stream(){return this.blob.stream()}text(){return this.blob.text()}bytes(){return this.blob.bytes()}constructor(i,c,o){var s;this.blob=new Blob(i,o),this.size=this.blob.size,this.type=this.blob.type,this.name=c,this.lastModified=(s=o?.lastModified)!==null&&s!==void 0?s:0,this.webkitRelativePath=""}}return r}else return File}})(mx)),mx}var aa={},Fi={},bR;function BJ(){if(bR)return Fi;bR=1,Object.defineProperty(Fi,"__esModule",{value:!0}),Fi.toUint32=e,Fi.toInt32=t,Fi.readUshort=r,Fi.writeUshort=n,Fi.readUint=i,Fi.writeUint=c,Fi.readUTF8=h,Fi.writeUTF8=f,Fi.sizeUTF8=y;function e(_){return _>>>0}function t(_){return _>>0}function r(_,g){return _[g]|_[g+1]<<8}function n(_,g,a){_[g]=a&255,_[g+1]=a>>8&255}function i(_,g){return _[g+3]*(256*256*256)+(_[g+2]<<16|_[g+1]<<8|_[g])}function c(_,g,a){_[g]=a&255,_[g+1]=a>>8&255,_[g+2]=a>>16&255,_[g+3]=a>>24&255}function o(_,g,a){let d="";for(let p=0;p<a;p++)d+=String.fromCharCode(_[g+p]);return d}function s(_){return _.length<2?"0"+_:_}function h(_,g,a){let d="",p;for(let u=0;u<a;u++)d+="%"+s(_[g+u].toString(16));try{p=decodeURIComponent(d)}catch{return o(_,g,a)}return p}function f(_,g,a){const d=a.length;let p=0;for(let u=0;u<d;
15u++){const m=a.charCodeAt(u);if((m&4294967168)===0)_[g+p]=m,p++;else if((m&4294965248)===0)_[g+p]=192|m>>6,_[g+p+1]=128|m>>0&63,p+=2;else if((m&4294901760)===0)_[g+p]=224|m>>12,_[g+p+1]=128|m>>6&63,_[g+p+2]=128|m>>0&63,p+=3;else if((m&4294967295-(1<<21)+1)===0)_[g+p]=240|m>>18,_[g+p+1]=128|m>>12&63,_[g+p+2]=128|m>>6&63,_[g+p+3]=128|m>>0&63,p+=4;else throw new Error("e")}return p}function y(_){const g=_.length;let a=0;for(let d=0;d<g;d++){const p=_.charCodeAt(d);if((p&4294967168)===0)a++;else if((p&4294965248)===0)a+=2;else if((p&4294901760)===0)a+=3;else if((p&4294967295-(1<<21)+1)===0)a+=4;else throw new Error("e")}return a}return Fi}var Op={},_R;function RJ(){if(_R)return Op;_R=1,Object.defineProperty(Op,"__esModule",{value:!0}),Op.crc=r,Op.adler=n;const e=(function(){const i=new Uint32Array(256);for(let c=0;c<256;c++){let o=c;for(let s=0;s<8;s++)o&1?o=3988292384^o>>>1:o=o>>>1;i[c]=o}return i})();function t(i,c,o,s){for(let h=0;h<s;h++)i=e[(i^c[o+h])&255]^i>>>8;return i}function r(i,c,o){return t(4294967295,i,c,o)^4294967295}function n(i,c,o){let s=1,h=0,f=c;const y=c+o;for(;f<y;){const _=Math.min(f+5552,y);for(;f<_;)s+=i[f++],h+=s;s=s%65521,h=h%65521}return h<<16|s}return Op}var SC={},px={},SR;function aX(){return SR||(SR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.U=void 0,e.checkCompressionStreamSupport=r,e.codes2map=n,e.makeCodes=i,e.revCodes=c;const t={deflate:void 0,"deflate-raw":void 0,gzip:void 0};function r(o){if(t[o]===void 0)try{new CompressionStream(o),t[o]=!0}catch{t[o]=!1}return!!t[o]}e.U=(function(){const o=Uint16Array,s=Uint32Array;return{next_code:new o(16),bl_count:new o(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[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,999,999,999],exb:[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,0,0,0],ldef:new o(32),df0:[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,65535,65535],dxb:[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,0,0],ddef:new s(32),flmap:new o(512),fltree:[],fdmap:new o(32),fdtree:[],lmap:new o(32768),ltree:[],ttree:[],dmap:new o(32768),dtree:[],imap:new o(512),itree:[],rev15:new o(32768),lhst:new s(286),dhst:new s(30),ihst:new s(19),lits:new s(15e3),strt:new o(65536),prev:new o(32768)}})(),(function(){for(let h=0;h<32768;h++){let f=h;f=(f&2863311530)>>>1|(f&1431655765)<<1,f=(f&3435973836)>>>2|(f&858993459)<<2,f=(f&4042322160)>>>4|(f&252645135)<<4,f=(f&4278255360)>>>8|(f&16711935)<<8,e.U.rev15[h]=(f>>>16|f<<16)>>>17}function s(h,f,y){for(;f--!==0;)h.push(0,y)}for(let h=0;h<32;h++)e.U.ldef[h]=e.U.of0[h]<<3|e.U.exb[h],e.U.ddef[h]=e.U.df0[h]<<4|e.U.dxb[h];s(e.U.fltree,144,8),s(e.U.fltree,112,9),s(e.U.fltree,24,7),s(e.U.fltree,8,8),i(e.U.fltree,9),n(e.U.fltree,9,e.U.flmap),c(e.U.fltree,9),s(e.U.fdtree,32,5),i(e.U.fdtree,5),n(e.U.fdtree,5,e.U.fdmap),c(e.U.fdtree,5),s(e.U.itree,19,0),s(e.U.ltree,286,0),s(e.U.dtree,30,0),s(e.U.ttree,320,0)})();function n(o,s,h){const f=o.length,y=e.U.rev15;for(let _=0;_<f;_+=2)if(o[_+1]!==0){const g=_>>1,a=o[_+1],d=g<<4|a,p=s-a;let u=o[_]<<p;const m=u+(1<<p);for(;u!==m;){const v=y[u]>>>15-s;h[v]=d,u++}}}function i(o,s){const h=o.length,f=e.U.bl_count;for(let g=0;g<=s;g++)f[g]=0;for(let g=1;g<h;g+=2)f[o[g]]++;const y=e.U.next_code;let _=0;f[0]=0;for(let g=1;g<=s;g++)_=_+f[g-1]<<1,y[g]=_;for(let g=0;g<h;g+=2){const a=o[g+1];a!==0&&(o[g]=y[a],y[a]++)}}function c(o,s){const h=e.U.rev15,f=15-s;for(let y=0;y<o.length;y+=2){const _=o[y]<<s-o[y+1];o[y]=h[_]>>>f}}})(px)),px}var CR;function OJ(){if(CR)return SC;CR=1,Object.defineProperty(SC,"__esModule",{value:!0}),SC._inflate=n;const e=aX();function t(y,_){const g=_===void 0;return _===void 0&&(_=new Uint8Array(y.length>>>2<<3)),{data:y,buf:_,noBuf:g,BFINAL:0,off:0,pos:0}}function r(y,_){const{data:g,noBuf:a}=y;let{buf:d,BFINAL:p,off:u,pos:m}=y,v=0;for(;p===0&&v<_;){let b,P,C=0,l=0;p=h(g,m,1),v+=1;const S=h(g,m+1,2);if(m+=3,S===0){(m&7)!==0&&(m+=8-(m&7));const T=(m>>>3)+4,A=g[T-4]|g[T-3]<<8;a&&(d=i(d,u+A)),d.set(new Uint8Array(g.buffer,g.byteOffset+T,A),u),m=T+A<<3,u+=A;continue}if(a&&(d=i(d,u+(1<<17))),S===1)b=e.U.flmap,P=e.U.fdmap,C=511,l=31;else if(S===2){const T=s(g,m,5)+257,A=s(g,m+5,5)+1,x=s(g,m+10,4)+4;m+=14;for(let R=0;R<38;R+=2)e.U.itree[R]=0,e.U.itree[R+1]=0;let M=1;for(let R=0;R<x;R++){const E=s(g,m+R*3,3);
15e.U.itree[(e.U.ordr[R]<<1)+1]=E,E>M&&(M=E)}m+=3*x,(0,e.makeCodes)(e.U.itree,M),(0,e.codes2map)(e.U.itree,M,e.U.imap),b=e.U.lmap,P=e.U.dmap,m=c(e.U.imap,(1<<M)-1,T+A,g,m,e.U.ttree);const D=o(e.U.ttree,0,T,e.U.ltree);C=(1<<D)-1;const V=o(e.U.ttree,T,A,e.U.dtree);l=(1<<V)-1,(0,e.makeCodes)(e.U.ltree,D),(0,e.codes2map)(e.U.ltree,D,b),(0,e.makeCodes)(e.U.dtree,V),(0,e.codes2map)(e.U.dtree,V,P)}else throw new Error(`unknown BTYPE ${S}`);for(;;){const T=b[f(g,m)&C];m+=T&15;const A=T>>>4;if(!(A>>>8))d[u++]=A;else{if(A===256)break;{let x=u+A-254;if(A>264){const E=e.U.ldef[A-257];x=u+(E>>>3)+s(g,m,E&7),m+=E&7}const M=P[f(g,m)&l];m+=M&15;const D=M>>>4,V=e.U.ddef[D],R=(V>>>4)+h(g,m,V&15);for(m+=V&15,a&&(d=i(d,u+(1<<17)));u<x;)d[u]=d[u++-R],d[u]=d[u++-R],d[u]=d[u++-R],d[u]=d[u++-R];u=x}}}}y.buf=d,y.BFINAL=p,y.off=u,y.pos=m}async function n(y,_,g){if(_[0]===3&&_[1]===0)return g||new Uint8Array(0);if((0,e.checkCompressionStreamSupport)("deflate-raw")){const d=new DecompressionStream("deflate-raw"),u=new Blob([_]).stream().pipeThrough(d);let m=0;const v=[],b=u.getReader(),P=async()=>{const{done:C,value:l}=await b.read();if(!C)return y.shouldUpdate&&await y.update({message:"Inflating blocks...",current:m,max:g?.length}),g?g.set(l,m):v.push(l),m+=l.length,P()};if(await P(),!g){g=new Uint8Array(m);for(let C=0,l=0;C<v.length;C++)g.set(v[C],l),l+=v[C].length}return g}const a=t(_,g);for(;a.BFINAL===0;)y.shouldUpdate&&await y.update({message:"Inflating blocks...",current:a.pos,max:_.length}),r(a,100);return a.buf.length===a.off?a.buf:a.buf.slice(0,a.off)}function i(y,_){const g=y.length;if(_<=g)return y;const a=new Uint8Array(Math.max(g<<1,_));return a.set(y,0),a}function c(y,_,g,a,d,p){let u=0;for(;u<g;){const m=y[f(a,d)&_];d+=m&15;const v=m>>>4;if(v<=15)p[u]=v,u++;else{let b=0,P=0;v===16?(P=3+s(a,d,2),d+=2,b=p[u-1]):v===17?(P=3+s(a,d,3),d+=3):v===18&&(P=11+s(a,d,7),d+=7);const C=u+P;for(;u<C;)p[u]=b,u++}}return d}function o(y,_,g,a){let d=0,p=0;const u=a.length>>>1;for(;p<g;){const m=y[p+_];a[p<<1]=0,a[(p<<1)+1]=m,m>d&&(d=m),p++}for(;p<u;)a[p<<1]=0,a[(p<<1)+1]=0,p++;return d}function s(y,_,g){return(y[_>>>3]|y[(_>>>3)+1]<<8)>>>(_&7)&(1<<g)-1}function h(y,_,g){return(y[_>>>3]|y[(_>>>3)+1]<<8|y[(_>>>3)+2]<<16)>>>(_&7)&(1<<g)-1}function f(y,_){return(y[_>>>3]|y[(_>>>3)+1]<<8|y[(_>>>3)+2]<<16)>>>(_&7)}return SC}var CC={},PC={},PR;function kJ(){if(PR)return PC;PR=1,Object.defineProperty(PC,"__esModule",{value:!0}),PC._hufTree=e;function e(n,i,c){const o=[],s=n.length,h=i.length;for(let m=0;m<h;m+=2)i[m]=0,i[m+1]=0;for(let m=0;m<s;m++)n[m]!==0&&o.push({lit:m,f:n[m],d:void 0});const f=o.length,y=o.slice(0);if(f===0)return 0;if(f===1){const m=o[0].lit,v=m===0?1:0;
15return i[(m<<1)+1]=1,i[(v<<1)+1]=1,1}o.sort(function(m,v){return m.f-v.f});let _=o[0],g=o[1],a=0,d=1,p=2;for(o[0]={lit:-1,f:_.f+g.f,l:_,r:g,d:0};d!==f-1;)a!==d&&(p===f||o[a].f<o[p].f)?_=o[a++]:_=o[p++],a!==d&&(p===f||o[a].f<o[p].f)?g=o[a++]:g=o[p++],o[d++]={lit:-1,f:_.f+g.f,l:_,r:g,d:void 0};let u=t(o[d-1],0);u>c&&(r(y,c,u),u=c);for(let m=0;m<f;m++)i[(y[m].lit<<1)+1]=y[m].d;return u}function t(n,i){return n.lit!==-1?(n.d=i,i):Math.max(t(n.l,i+1),t(n.r,i+1))}function r(n,i,c){let o=0,s=0;const h=1<<c-i;for(n.sort(function(f,y){return y.d===f.d?f.f-y.f:y.d-f.d}),o=0;o<n.length&&n[o].d>i;o++){const f=n[o].d;n[o].d=i,s+=h-(1<<c-f)}for(s=s>>>c-i;s>0;){const f=n[o].d;f<i?(n[o].d++,s-=1<<i-f-1):o++}for(;o>=0;o--)n[o].d===i&&s<0&&(n[o].d--,s++);s!==0&&console.log("debt left")}return PC}var TR;function FJ(){if(TR)return CC;TR=1,Object.defineProperty(CC,"__esModule",{value:!0}),CC._deflateRaw=o;const e=Gt(),t=kJ(),r=aX();function n(P,C,l,S){const{lits:T,strt:A,prev:x}=r.U;return{data:P,out:C,opt:c[S],i:0,pos:l<<3,cvrd:0,dlen:P.length,li:0,lc:0,bs:0,ebits:0,c:0,nc:0,lits:T,strt:A,prev:x}}function i(P,C){const{data:l,dlen:S,out:T,opt:A}=P;let{i:x,pos:M,cvrd:D,li:V,lc:R,bs:E,ebits:I,c:B,nc:w}=P;const{lits:O,strt:F,prev:L}=r.U,U=Math.min(x+C,S);for(;x<U;x++){if(B=w,x+1<S-2){w=f(l,x+1);const q=x+1&32767;L[q]=F[w],F[w]=q}if(D<=x){(V>14e3||R>26697)&&S-x>100&&(D<x&&(O[V]=x-D,V+=2,D=x),M=y(x===S-1||D===S?1:0,O,V,I,l,E,x-E,T,M),V=R=I=0,E=x);let q=0;if(x<S-2&&(q=s(l,x,L,B,Math.min(A[2],S-x),A[3])),q!==0){const N=q>>>16,k=q&65535,j=u(N,r.U.of0);r.U.lhst[257+j]++;const H=u(k,r.U.df0);r.U.dhst[H]++,I+=r.U.exb[j]+r.U.dxb[H],O[V]=N<<23|x-D,O[V+1]=k<<16|j<<8|H,V+=2,D=x+N}else r.U.lhst[l[x]]++;R++}}P.i=x,P.pos=M,P.cvrd=D,P.li=V,P.lc=R,P.bs=E,P.ebits=I,P.c=B,P.nc=w}const c=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]];async function o(P,C,l,S,T){if((0,r.checkCompressionStreamSupport)("deflate-raw")){const w=new CompressionStream("deflate-raw"),L=new Blob([C]).stream().pipeThrough(w).getReader();let U=S;const q=async()=>{const{done:N,value:k}=await L.read();if(!N)return P.shouldUpdate&&await P.update({message:"Deflating...",current:U,max:l.length}),l.set(k,U),U+=k.length,q()};return await q(),U}const A=n(C,l,S,T),{dlen:x}=A;if(T===0){let{i:w,pos:O}=A;for(;w<x;){const F=Math.min(65535,x-w);v(l,O,w+F===x?1:0),O=_(C,w,F,l,O+8),w+=F}return O>>>3}for(x>2&&(A.nc=f(C,0),A.strt[A.nc]=0);A.i<x;)P.shouldUpdate&&await P.update({message:"Deflating...",current:A.i,max:x}),i(A,1024*1024);let{li:M,cvrd:D,pos:V}=A;const{i:R,lits:E,bs:I,ebits:B}=A;for((I!==R||C.length===0)&&(D<R&&(E[M]=R-D,M+=2,D=R),V=y(1,E,M,B,C,I,R-I,l,V));(V&7)!==0;)V++;return V>>>3}function s(P,C,l,S,T,A){let x=C&32767,M=l[x],D=x-M+32768&32767;if(M===x||S!==f(P,C-D))return 0;let V=0,R=0;const E=Math.min(32767,C);for(;D<=E&&--A!==0&&M!==x;){if(V===0||P[C+V]===P[C+V-D]){let I=h(P,C,D);if(I>V){if(V=I,R=D,V>=T)break;D+2<I&&(I=D+2);let B=0;for(let w=0;w<I-2;w++){const O=C-D+w+32768&32767,F=l[O],L=O-F+32768&32767;L>B&&(B=L,M=O)}}}x=M,M=l[x],D+=x-M+32768&32767}return V<<16|R}function h(P,C,l){if(P[C]!==P[C-l]||P[C+1]!==P[C+1-l]||P[C+2]!==P[C+2-l])return 0;const S=C,T=Math.min(P.length,C+258);for(C+=3;C<T&&P[C]===P[C-l];)C++;return C-S}function f(P,C){return(P[C]<<8|P[C+1])+(P[C+2]<<4)&65535}function y(P,C,l,S,T,A,x,M,D){r.U.lhst[256]++;const[V,R,E,I,B,w,O,F]=g(),L=((D+3&7)===0?0:8-(D+3&7))+32+(x<<3),U=S+a(r.U.fltree,r.U.lhst)+a(r.U.fdtree,r.U.dhst);let q=S+a(r.U.ltree,r.U.lhst)+a(r.U.dtree,r.U.dhst);q+=14+3*w+a(r.U.itree,r.U.ihst)+(r.U.ihst[16]*2+r.U.ihst[17]*3+r.U.ihst[18]*7);for(let k=0;k<286;k++)r.U.lhst[k]=0;for(let k=0;k<30;k++)r.U.dhst[k]=0;for(let k=0;k<19;k++)r.U.ihst[k]=0;const N=L<U&&L<q?0:U<q?1:2;if(b(M,D,P),b(M,D+1,N),D+=3,N===0){for(;(D&7)!==0;)D++;D=_(T,A,x,M,D)}else{let k,j;if(N===1)k=r.U.fltree,j=r.U.fdtree;else if(N===2){(0,r.makeCodes)(r.U.ltree,V),(0,r.revCodes)(r.U.ltree,V),(0,r.makeCodes)(r.U.dtree,R),(0,r.revCodes)(r.U.dtree,R),(0,r.makeCodes)(r.U.itree,E),(0,r.revCodes)(r.U.itree,E),k=r.U.ltree,j=r.U.dtree,v(M,D,I-257),D+=5,v(M,D,B-1),D+=5,v(M,D,w-4),D+=4;for(let G=0;G<w;G++)v(M,D+G*3,r.U.itree[(r.U.ordr[G]<<1)+1]);D+=3*w,D=d(O,r.U.itree,M,D),D=d(F,r.U.itree,M,D)}else(0,e.assertUnreachable)(N);let H=A;for(let G=0;G<l;G+=2){const z=C[G],W=z>>>23,X=H+(z&(1<<23)-1);for(;H<X;)D=m(T[H++],k,M,D);if(W!==0){const Y=C[G+1],K=Y>>16,Q=Y>>8&255,J=Y&255;
15D=m(257+Q,k,M,D),v(M,D,W-r.U.of0[Q]),D+=r.U.exb[Q],D=m(J,j,M,D),b(M,D,K-r.U.df0[J]),D+=r.U.dxb[J],H+=W}}D=m(256,k,M,D)}return D}function _(P,C,l,S,T){let A=T>>>3;return S[A]=l,S[A+1]=l>>>8,S[A+2]=255-S[A],S[A+3]=255-S[A+1],A+=4,S.set(new Uint8Array(P.buffer,C,l),A),T+(l+4<<3)}function g(){const P=(0,t._hufTree)(r.U.lhst,r.U.ltree,15),C=(0,t._hufTree)(r.U.dhst,r.U.dtree,15),l=[],S=p(r.U.ltree,l),T=[],A=p(r.U.dtree,T);for(let D=0;D<l.length;D+=2)r.U.ihst[l[D]]++;for(let D=0;D<T.length;D+=2)r.U.ihst[T[D]]++;const x=(0,t._hufTree)(r.U.ihst,r.U.itree,7);let M=19;for(;M>4&&r.U.itree[(r.U.ordr[M-1]<<1)+1]===0;)M--;return[P,C,x,S,A,M,l,T]}function a(P,C){let l=0;for(let S=0;S<C.length;S++)l+=C[S]*P[(S<<1)+1];return l}function d(P,C,l,S){for(let T=0;T<P.length;T+=2){const A=P[T],x=P[T+1];S=m(A,C,l,S);const M=A===16?2:A===17?3:7;A>15&&(v(l,S,x),S+=M)}return S}function p(P,C){let l=P.length;for(;l!==2&&P[l-1]===0;)l-=2;for(let S=0;S<l;S+=2){const T=P[S+1],A=S+3<l?P[S+3]:-1,x=S+5<l?P[S+5]:-1,M=S===0?-1:P[S-1];if(T===0&&A===T&&x===T){let D=S+5;for(;D+2<l&&P[D+2]===T;)D+=2;const V=Math.min(D+1-S>>>1,138);V<11?C.push(17,V-3):C.push(18,V-11),S+=V*2-2}else if(T===M&&A===T&&x===T){let D=S+5;for(;D+2<l&&P[D+2]===T;)D+=2;const V=Math.min(D+1-S>>>1,6);C.push(16,V-3),S+=V*2-2}else C.push(T,0)}return l>>>1}function u(P,C){let l=0;return C[l|16]<=P&&(l|=16),C[l|8]<=P&&(l|=8),C[l|4]<=P&&(l|=4),C[l|2]<=P&&(l|=2),C[l|1]<=P&&(l|=1),l}function m(P,C,l,S){return b(l,S,C[P<<1]),S+C[(P<<1)+1]}function v(P,C,l){l=l<<(C&7);const S=C>>>3;P[S]|=l,P[S+1]|=l>>>8}function b(P,C,l){l=l<<(C&7);const S=C>>>3;P[S]|=l,P[S+1]|=l>>>8,P[S+2]|=l>>>16}return CC}var xR;function iS(){if(xR)return aa;xR=1,Object.defineProperty(aa,"__esModule",{value:!0}),aa.Unzip=c,aa.unzip=o,aa.inflateRaw=h,aa.inflate=f,aa.ungzip=y,aa.deflate=_,aa.Zip=a,aa.zip=d;const e=BJ(),t=RJ(),r=OJ(),n=FJ(),i=nt();function c(m,v=!1){return i.Task.create("Unzip",b=>o(b,m,v))}async function o(m,v,b=!1){const P=Object.create(null),C=new Uint8Array(v);if((0,e.readUshort)(C,0)!==19280)throw new Error('Invalid ZIP file. A valid ZIP file must start with two magic bytes \\x50\\x4b ("PK" in ASCII).');let l=C.length-4;for(;(0,e.readUint)(C,l)!==101010256;)l--;let S=l;S+=4,S+=4;const T=(0,e.readUshort)(C,S);S+=2,S+=2,S+=4;const A=(0,e.readUint)(C,S);S+=4,S=A;for(let x=0;x<T;x++){S+=4,S+=4,S+=4,S+=4,S+=4,S+=4,S+=4;const M=(0,e.readUshort)(C,S),D=(0,e.readUshort)(C,S+2),V=(0,e.readUshort)(C,S+4);S+=6,S+=8;const R=(0,e.readUint)(C,S);S+=4,S+=M+D+V,await s(m,C,R,P,b)}return P}async function s(m,v,b,P,C){b+=4,b+=2,b+=2;const l=(0,e.readUshort)(v,b);b+=2,b+=4,b+=4;const S=(0,e.readUint)(v,b);b+=4;const T=(0,e.readUint)(v,b);b+=4;const A=(0,e.readUshort)(v,b);b+=2;const x=(0,e.readUshort)(v,b);b+=2;const M=(0,e.readUTF8)(v,b,A);if(b+=A,b+=x,C){P[M]={size:T,csize:S};return}const D=new Uint8Array(v.buffer,b,S);if(l===0)P[M]=D;else if(l===8){const V=new Uint8Array(T);await h(m,D,V),P[M]=V}else throw new Error(`unknown compression method: ${l}`)}async function h(m,v,b){return(0,r._inflate)(m,v,b)}function f(m,v,b){return h(m,new Uint8Array(v.buffer,v.byteOffset+2,v.length-6),b)}async function y(m,v,b){const P=v[3];let C=10;if(P&4){const M=(0,e.readUshort)(v,C);C+=M}if(P&8){let M=C;for(;v[M]!==0;)++M;C=M+1}if(P&16){let M=C;for(;v[M]!==0;)++M;C=M+1}P&1&&(C+=2);const l=(0,e.toInt32)((0,e.readUint)(v,v.length-8)),S=(0,e.readUint)(v,v.length-4);b===void 0&&(b=new Uint8Array(S));const T=new Uint8Array(v.buffer,v.byteOffset+C,v.length-C-8),A=await h(m,T,b),x=(0,t.crc)(A,0,A.length);return l!==x&&console.error("ungzip: checksums don't match"),A}async function _(m,v,b){b===void 0&&(b={level:6});let P=0;const C=new Uint8Array(50+Math.floor(v.length*1.1));C[P]=120,C[P+1]=156,P+=2,P=await(0,n._deflateRaw)(m,v,C,P,b.level);const l=(0,t.adler)(v,0,v.length);return C[P+0]=l>>>24&255,C[P+1]=l>>>16&255,C[P+2]=l>>>8&255,C[P+3]=l>>>0&255,new Uint8Array(C.buffer,0,P+4)}async function g(m,v,b){b===void 0&&(b={level:6});const P=new Uint8Array(50+Math.floor(v.length*1.1)),C=await(0,n._deflateRaw)(m,v,P,0,b.level);return new Uint8Array(P.buffer,0,C)}function a(m,v=!1){return i.Task.create("Zip",b=>d(b,m,v))}async function d(m,v,b=!1){let P=0;const C={};for(const D in v){const V=!p(D)&&!b,R=v[D],E=(0,t.crc)(R,0,R.length);C[D]={cpr:V,usize:R.length,crc:E,file:V?await g(m,R):R}}for(const D in C)P+=C[D].file.length+30+46+2*(0,e.sizeUTF8)(D);P+=22;const l=new Uint8Array(P);let S=0;const T=[];for(const D in C){const V=C[D];T.push(S),S=u(l,S,D,V,0)}let A=0;const x=S;for(const D in C){const V=C[D];T.push(S),S=u(l,S,D,V,1,T[A++])}const M=S-x;return(0,e.writeUint)(l,S,101010256),S+=4,S+=4,(0,e.writeUshort)(l,S,A),S+=2,(0,e.writeUshort)(l,S,A),S+=2,(0,e.writeUint)(l,S,M),S+=4,(0,e.writeUint)(l,S,x),S+=4,S+=2,l.buffer}function p(m){const v=m.split(".").pop().toLowerCase();return"png,jpg,jpeg,zip".indexOf(v)!==-1}function u(m,v,b,P,C,l=0){const S=P.file;(0,e.writeUint)(m,v,C===0?67324752:33639248),v+=4,C===1&&(v+=2),(0,e.writeUshort)(m,v,20),v+=2,(0,e.writeUshort)(m,v,0),v+=2,(0,e.writeUshort)(m,v,P.cpr?8:0),v+=2,(0,e.writeUint)(m,v,0),v+=4,(0,e.writeUint)(m,v,P.crc),v+=4,(0,e.writeUint)(m,v,S.length),v+=4,(0,e.writeUint)(m,v,P.usize),v+=4,(0,e.writeUshort)(m,v,(0,e.sizeUTF8)(b)),v+=2,(0,e.writeUshort)(m,v,0),v+=2,C===1&&(v+=2,v+=2,v+=6,(0,e.writeUint)(m,v,l),v+=4);const T=(0,e.writeUTF8)(m,v,b);return v+=T,C===0&&(m.set(S,v),v+=S.length),v}return aa}var AR;
15function ET(){if(AR)return ia;AR=1,Object.defineProperty(ia,"__esModule",{value:!0}),ia.DataCompressionMethod=void 0,ia.readStringFromFile=o,ia.readUint8ArrayFromFile=s,ia.readFromFile=h,ia.ajaxGet=f,ia.setFSModule=A,ia.ajaxGetMany=V;const e=$s(),t=nt(),r=Ha(),n=oI(),i=iS();var c;(function(I){I[I.None=0]="None",I[I.Gzip=1]="Gzip",I[I.Zip=2]="Zip"})(c||(ia.DataCompressionMethod=c={}));function o(I){return m(I,"string")}function s(I){return m(I,"binary")}function h(I,B){return m(I,B)}function f(I){return typeof I=="string"?l(I,I,"string"):l(I.title,I.url,I.type||"string",I.body,I.headers)}function y(I){if(n.RUNNING_IN_NODEJS)throw new Error("`isDone` should not be used when running in Node.js");if(I instanceof FileReader)return I.readyState===FileReader.DONE;if(I instanceof XMLHttpRequest)return I.readyState===XMLHttpRequest.DONE;throw new Error("unknown data type")}function _(I){return I?"Failed to download data. Possible reasons: Resource is not available, or CORS is not allowed on the server.":"Failed to open file."}function g(I,B,w){if(n.RUNNING_IN_NODEJS)throw new Error("`readData` should not be used when running in Node.js");return new Promise((O,F)=>{if(y(w)){const{error:U}=w;U!=null?F(U??_(w instanceof XMLHttpRequest)):O(w);return}let L=!1;w.onerror=U=>{if(L)return;const{error:q}=U.target;F(q??_(w instanceof XMLHttpRequest))},w.onprogress=U=>{if(!(!I.shouldUpdate||L))try{U.lengthComputable?I.update({message:B,isIndeterminate:!1,current:U.loaded,max:U.total}):I.update({message:`${B} ${(U.loaded/1024/1024).toFixed(2)} MB`,isIndeterminate:!0})}catch(q){L=!0,F(q)}},w.onload=U=>{O(w)}})}function a(I){return/\.gz$/i.test(I)?c.Gzip:/\.zip$/i.test(I)?c.Zip:c.None}const d=/^(__MACOSX|.DS_Store)/;async function p(I,B,w){switch(w){case c.None:return B;case c.Gzip:return(0,i.ungzip)(I,B);case c.Zip:const O=await(0,i.unzip)(I,B.buffer),F=Object.keys(O).filter(L=>!d.test(L));if(F.length!==1)throw new Error("can only decompress zip files with a single entry");return O[F[0]]}}async function u(I,B,w,O){if(B===null)throw new Error("no data given");let F=new Uint8Array(B);if(O!==c.None&&w!=="zip"&&(F=await p(I,F,O)),w==="binary")return F;if(w==="zip")return await(0,i.unzip)(I,F.buffer);if(w==="string")return(0,e.utf8ReadLong)(F);if(w==="xml")return new DOMParser().parseFromString((0,e.utf8Read)(F),"application/xml");if(w==="json")return JSON.parse((0,e.utf8Read)(F));throw new Error(`could not get requested response data '${w}'`)}function m(I,B){if(n.RUNNING_IN_NODEJS)return v(I,B);let w;return t.Task.create("Read File",async O=>{try{await O.update({message:"Opening file...",canAbort:!0}),w=new FileReader,w.readAsArrayBuffer(I);const L=(await g(O,"Reading...",w)).result;return await O.update({message:"Processing file...",canAbort:!1}),await u(O,L,B,a(I.name))}finally{w=void 0}},()=>{w&&w.abort()})}function v(I,B){return t.Task.create("Read File",async w=>{await w.update({message:"Opening file...",canAbort:!1});const O=await I.arrayBuffer();return await w.update({message:"Processing file...",canAbort:!1}),await u(w,O,B,a(I.name))})}class b{static get(){if(n.RUNNING_IN_NODEJS)throw new Error("`RequestPool.get` should not be used when running in Node.js");return this.pool.length?this.pool.pop():new XMLHttpRequest}static emptyFunc(){}static deposit(B){this.pool.length<this.poolSize&&(B.onabort=b.emptyFunc,B.onerror=b.emptyFunc,B.onload=b.emptyFunc,B.onprogress=b.emptyFunc,this.pool.push(B))}}b.pool=[],b.poolSize=15;function P(I,B){if(I.status>=200&&I.status<400){const{response:w}=I;if(b.deposit(I),(B==="binary"||B==="zip")&&w instanceof ArrayBuffer)return new Uint8Array(w);
15if(B==="string"&&typeof w=="string")return w;if(B==="xml"&&w instanceof XMLDocument)return w;if(B==="json"&&typeof w=="object")return w;throw new Error(`could not get requested response data '${B}'`)}else throw b.deposit(I),new Error(`Download failed with status code ${I.status}`)}function C(I){switch(I){case"json":return"json";case"xml":return"document";case"string":return"text";case"binary":return"arraybuffer";case"zip":return"arraybuffer"}}function l(I,B,w,O,F){if(n.RUNNING_IN_NODEJS)return B.startsWith("file://")?M(I,B,w):D(I,B,w,O,F);let L;return t.Task.create(I||"Download",async U=>{if(L=b.get(),L.open(O?"post":"get",B,!0),F)for(const[k,j]of Object.entries(F))L.setRequestHeader(k,j);L.responseType=C(w),L.send(O),await U.update({message:"Waiting for server...",canAbort:!0});const q=await g(U,"Downloading...",L);return L=void 0,await U.update({message:"Parsing response...",canAbort:!1}),P(q,w)},()=>{L&&(L.abort(),L=void 0)})}let S;function T(){if(!S)throw new Error("When running in Node.js and reading from files, call mol-util/data-source's setFSModule function first.");return S}function A(I){S=I}function x(I){return new Promise((B,w)=>{T().readFile(I,(O,F)=>{O?w(O):B(F)})})}function M(I,B,w,O,F){if(!n.RUNNING_IN_NODEJS)throw new Error("This function should only be used when running in Node.js");if(!B.startsWith("file://"))throw new Error("This function is only for URLs with protocol file://");return t.Task.create(I??"Download",async L=>{const U=B.substring(7);await L.update({message:"Loading file...",canAbort:!1});const q=await x(U);return await L.update({message:"Parsing response...",canAbort:!1}),await u(L,q.buffer,w,c.None)})}function D(I,B,w,O,F){if(!n.RUNNING_IN_NODEJS)throw new Error("This function should only be used when running in Node.js");const L=new AbortController;return t.Task.create(I??"Download",async U=>{await U.update({message:"Downloading...",canAbort:!0});const q=await fetch(B,{signal:L.signal,method:O?"POST":"GET",body:O,headers:F});if(!(q.status>=200&&q.status<400))throw new Error(`Download failed with status code ${q.status}`);const N=await q.bytes();return await U.update({message:"Parsing response...",canAbort:!1}),await u(U,N.buffer,w,c.None)},()=>{L.abort()})}async function V(I,B,w,O){const F=w.length,L=new Array(w.length);await I.update({message:"Downloading...",current:0,max:F});let U=[],q=[],N=0;for(let j=Math.min(F,O);N<j;N++){const H=w[N];U.push(E(N,H.id,B.resolve(r.Asset.getUrlAsset(B,H.url),H.isBinary?"binary":"string").runAsChild(I))),q.push(N)}let k=0;for(;U.length>0;){const j=await Promise.race(U),H=w[j.index],G=q.indexOf(j.index);if(k++,j.kind==="error"&&!H.canFail)throw new Error(`${H.url}: ${j.error}`);if(I.shouldUpdate&&await I.update({message:"Downloading...",current:k,max:F}),L[j.index]=j,U=U.filter(R,G),q=q.filter(R,G),N<F){const z=w[N],W=B.resolve(r.Asset.getUrlAsset(B,z.url),z.isBinary?"binary":"string").runAsChild(I);U.push(E(N,z.id,W)),q.push(N),N++}}return L}function R(I,B){return this!==B}async function E(I,B,w){try{return{kind:"ok",result:await w,index:I,id:B}}catch(O){return{kind:"error",error:O,index:I,id:B}}}return ia}var MR;function Ha(){if(MR)return Mc;MR=1,Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.Asset=Mc.AssetManager=void 0;const e=Q_(),t=ET(),r=nt(),n=oI(),i=vT();var c;(function(h){function f(u,m){return{kind:"url",id:e.UUID.create22(),url:u,...m}}h.Url=f;function y(u){return{kind:"file",id:e.UUID.create22(),name:u.name,file:u}}h.File=y;function _(u){return u?.kind==="url"}h.isUrl=_;function g(u){return u?.kind==="file"}h.isFile=g;function a(u,m,v){return{data:u,dispose:()=>{v.release(m)}}}h.Wrapper=a;function d(u){return typeof u=="string"?u:u.url}h.getUrl=d;function p(u,m,v,b){return typeof m=="string"?u.tryFindUrl(m,v,b)||f(m,{body:v,headers:b}):m}h.getUrlAsset=p})(c||(Mc.Asset=c={}));function o(h,f){const y=h?Object.keys(h):[],_=f?Object.keys(f):[];if(y.length!==_.length)return!1;for(const g of y)if(h[g]!==f[g])return!1;return!0}class s{constructor(){this._assets=new Map}get assets(){return(0,i.iterableToArray)(this._assets.values())}tryFindUrl(f,y,_){const g=this.assets.values();for(;;){const a=g.next();if(a.done)return;const d=a.value.asset;if(c.isUrl(d)&&d.url===f&&(d.body||"")===(y||"")&&o(d.headers,_))return d}}tryFindFilename(f){const y=this._assets.values();for(;;){const{done:_,value:g}=y.next();if(_)break;if(g.file.name===f)return g.asset}}set(f,y,_){this._assets.set(f.id,{asset:f,file:y,refCount:0,tag:_?.tag,isStatic:_?.isStatic})}get(f){return this._assets.get(f.id)}delete(f){return this._assets.delete(f.id)}has(f){return this._assets.has(f.id)}resolve(f,y,_=!0){return c.isUrl(f)?r.Task.create(`Download ${f.title||f.url}`,async g=>{if(this._assets.has(f.id)){const p=this._assets.get(f.id);return p.refCount++,c.Wrapper(await(0,t.readFromFile)(p.file,y).runInContext(g),f,this)}if(!_)return c.Wrapper(await(0,t.ajaxGet)({...f,type:y}).runInContext(g),f,this);const a=await(0,t.ajaxGet)({...f,type:"binary"}).runInContext(g),d=new n.File_([a],"raw-data");return this._assets.set(f.id,{asset:f,file:d,refCount:1}),c.Wrapper(await(0,t.readFromFile)(d,y).runInContext(g),f,this)}):r.Task.create(`Read ${f.name}`,async g=>{if(this._assets.has(f.id)){const a=this._assets.get(f.id);return a.refCount++,c.Wrapper(await(0,t.readFromFile)(a.file,y).runInContext(g),f,this)}if(!(f.file instanceof n.File_))throw new Error(`Cannot resolve file asset '${f.name}' (${f.id})`);return _&&this._assets.set(f.id,{asset:f,file:f.file,refCount:1}),c.Wrapper(await(0,t.readFromFile)(f.file,y).runInContext(g),f,this)})}release(f){const y=this._assets.get(f.id);y&&(y.refCount--,y.refCount<=0&&!y.isStatic&&this._assets.delete(f.id))}clearTag(f){const y=Array.from(this._assets.keys());for(const _ of y){const g=this._assets.get(_);g&&g.tag===f&&this._assets.delete(_)}}clear(){this._assets.clear()}dispose(){this.clear()}}return Mc.AssetManager=s,Mc}var DR;function Ne(){if(DR)return Rp;DR=1,Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.ParamDefinition=void 0;const e=et(),t=ns(),r=wt(),n=Xr(),i=vr(),c=ui(),o=pa(),s=Ha(),h=rn(),f=Vt();var y;return(function(_){_.Essential={isEssential:!0};function g(le,me){return me&&(me.label&&(le.label=me.label),me.description&&(le.description=me.description),me.legend&&(le.legend=me.legend),me.fieldLabels&&(le.fieldLabels=me.fieldLabels),me.isHidden&&(le.isHidden=me.isHidden),me.shortLabel&&(le.shortLabel=me.shortLabel),me.twoColumns&&(le.twoColumns=me.twoColumns),me.isEssential&&(le.isEssential=me.isEssential),me.category&&(le.category=me.category),me.hideIf&&(le.hideIf=me.hideIf),me.help&&(le.help=me.help)),le}function a(le){const me={...le};return me.isOptional=!0,me}_.Optional=a;function d(le,me){return g({type:"value",defaultValue:le},me)}_.Value=d;function p(le,me,ee){return g({type:"select",defaultValue:Ce(le,me),options:me,cycle:ee?.cycle},ee)}_.Select=p;function u(le,me,ee){const se=g({type:"multi-select",defaultValue:le,options:me},ee);return ee?.emptyValue&&(se.emptyValue=ee.emptyValue),se}_.MultiSelect=u;function m(le,me){return g({type:"boolean",defaultValue:le},me)}_.Boolean=m;function v(le="",me){return g({type:"text",defaultValue:le,multiline:me?.multiline,placeholder:me?.placeholder,disableInteractiveUpdates:me?.disableInteractiveUpdates},me)}_.Text=v;function b(le,me){const ee=g({type:"color",defaultValue:le},me);return me?.isExpanded&&(ee.isExpanded=me.isExpanded),ee}_.Color=b;function P(le,me){let ee;if(typeof le=="string"){const se=(0,o.getColorListFromName)(le);ee={kind:se.type!=="qualitative"?"interpolate":"set",colors:se.list}}else ee=le;return g({type:"color-list",presetKind:me?.presetKind||"all",defaultValue:ee,offsets:!!me?.offsets},me)}_.ColorList=P;function C(le,me,ee){return g(x({type:"vec3",defaultValue:le},me),ee)}_.Vec3=C;function l(le,me){return g({type:"mat4",defaultValue:le},me)}_.Mat4=l;function S(le,me){const ee=typeof le=="string"?s.Asset.Url(le):s.Asset.Url(le.url,{body:le.body});return g({type:"url",defaultValue:ee},me)}
15_.Url=S;function T(le){const me=g({type:"file",defaultValue:null},le);return le?.accept&&(me.accept=le.accept),me}_.File=T;function A(le){const me=g({type:"file-list",defaultValue:null},le);return le?.accept&&(me.accept=le.accept),me}_.FileList=A;function x(le,me){return me&&(typeof me.min<"u"&&(le.min=me.min),typeof me.max<"u"&&(le.max=me.max),typeof me.step<"u"&&(le.step=me.step)),le}function M(le,me,ee){const se=g(x({type:"number",defaultValue:le},me),ee);return ee?.immediateUpdate&&(se.immediateUpdate=!0),se}_.Numeric=M;function D(le,me,ee){return g(x({type:"interval",defaultValue:le},me),ee)}_.Interval=D;function V(le,me){const ee=g({type:"line-graph",defaultValue:le},me);return me?.getVolume&&(ee.getVolume=me.getVolume),me?.yAxis&&(ee.yAxis=me.yAxis),me?.getPresets&&(ee.getPresets=me.getPresets),ee}_.LineGraph=V;function R(le,me){const ee=g({type:"group",defaultValue:me?.customDefault||z(le),params:le},me);return me?.presets&&(ee.presets=me.presets),me?.isExpanded&&(ee.isExpanded=me.isExpanded),me?.isFlat&&(ee.isFlat=me.isFlat),me?.pivot&&(ee.pivot=me.pivot),ee}_.Group=R;function E(le){return R({},le)}_.EmptyGroup=E;function I(le,me,ee,se){const ye=Ce(le,me);return g({type:"mapped",defaultValue:{name:ye,params:ee(ye).defaultValue},select:p(ye,me,se),map:ee},se)}_.Mapped=I;function B(le,me,ee){const se=ee?.options?ee.options:Object.keys(me).map(Se=>[Se,me[Se].label||(0,c.stringToWords)(Se)]),ye=Ce(le,se);return g({type:"mapped",defaultValue:{name:ye,params:me[ye].defaultValue},select:p(ye,se,ee),map:Se=>me[Se]},ee)}_.MappedStatic=B;function w(le,me,ee){const se=g({type:"object-list",element:le,getLabel:me,ctor:O,defaultValue:ee?.defaultValue||[]},ee);return ee?.presets&&(se.presets=ee.presets),se}_.ObjectList=w;function O(){return z(this.element)}function F(){throw new Error("getValue not set. Fix runtime.")}function L(le=""){return{ref:le,getValue:F}}_.Ref=L;function U(le,me,ee){return g({type:"value-ref",defaultValue:L(ee?.defaultRef),getOptions:le,resolveRef:me},ee)}_.ValueRef=U;function q(le){return g({type:"data-ref",defaultValue:L(le?.defaultRef)},le)}_.DataRef=q;function N(le){return{ref:le,getValue:F}}_.asDataRef=N;function k(le,me,ee){return g({type:"converted",defaultValue:me(ee.defaultValue),converted:ee,fromValue:le,toValue:me},ee)}_.Converted=k;function j(le,me,ee,se,ye){const Se=Object.keys(me).map(Ae=>[Ae,Ae]);return g({type:"conditioned",select:p(ee(le),Se,ye),defaultValue:le,conditionParams:me,conditionForValue:ee,conditionedValue:se},ye)}_.Conditioned=j;function H(le,me){return g({type:"script",defaultValue:le},me)}_.Script=H;function G(le){return 0}_.For=G;function z(le){const me={};for(const ee of Object.keys(le))le[ee].isOptional||(me[ee]=le[ee].defaultValue);return me}_.getDefaultValues=z;function W(le,me,ee){return()=>le(me,ee)}function X(le,me,ee){if(me){if(le.type==="value-ref"){const se=me;se.ref?se.getValue=W(le.resolveRef,se.ref,ee):se.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(le.type==="data-ref"){const se=me;se.ref?se.getValue=W(ee,se.ref,ee):se.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(le.type==="group")Q(le.params,me,ee);else if(le.type==="mapped"){const se=me,ye=le.map(se.name);X(ye,se.params,ee)}else if(le.type==="object-list"){if(!K(le.element))return;for(const se of me)Q(le.element,se,ee)}}}function Y(le){if(le.type==="value-ref"||le.type==="data-ref")return!0;if(le.type==="group"){if(K(le.params))return!0}else if(le.type==="mapped"){for(const[me]of le.select.options)if(Y(le.map(me)))return!0}else if(le.type==="object-list")return K(le.element);return!1}function K(le){for(const me of Object.keys(le))if(Y(le[me]))return!0;return!1}function Q(le,me,ee){for(const se of Object.keys(le))X(le[se],me?.[se],ee)}_.resolveRefs=Q;function J(le,me,ee){if(me==null)return ee;if(le.type==="value-ref"||le.type==="data-ref"){const se=me;se&&typeof se.ref=="string"&&se.ref&&(0,f.arraySetAdd)(ee,se.ref)}else if(le.type==="group")ae(le.params,me,ee);else if(le.type==="mapped"){const se=me;if(!se)return ee;const ye=le.map(se.name);J(ye,se.params,ee)}else if(le.type==="object-list"){if(!K(le.element))return ee;for(const se of me)ae(le.element,se,ee)}return ee}function ae(le,me,ee){for(const se of Object.keys(le))J(le[se],me?.[se],ee);return ee}function te(le,me,ee){return!le||!me?ee:ae(le,me,ee)}_.collectRefs=te;function ne(le,me){for(const ee of Object.keys(le))le[ee].isOptional||(le[ee].defaultValue=me[ee])}_.setDefaultValues=ne;function $(le){return(0,i.deepClone)(le)}_.clone=$;function ie(le,me){}_.validate=ie;function Z(le,me,ee){if(me===ee)return!0;
15if(typeof me!="object"||typeof ee!="object")return!1;for(const se of Object.keys(le))if(!re(le[se],me[se],ee[se]))return!1;return!0}_.areEqual=Z;function re(le,me,ee){if(me===ee)return!0;if(le.type==="group")return Z(le.params,me,ee);if(le.type==="mapped"){const se=me,ye=ee;if(se.name!==ye.name)return!1;const Se=le.map(se.name);return re(Se,se.params,ye.params)}else if(le.type==="multi-select"){const se=me,ye=ee;if(se.length!==ye.length)return!1;if(se.length<10){for(let Se=0,Ae=se.length;Se<Ae;Se++)if(se[Se]!==ye[Se]&&ye.indexOf(se[Se])<0)return!1}else{const Se=new Set(ye);for(let Ae=0,_e=se.length;Ae<_e;Ae++)if(se[Ae]!==ye[Ae]&&!Se.has(se[Ae]))return!1}return!0}else{if(le.type==="interval")return me[0]===ee[0]&&me[1]===ee[1];if(le.type==="line-graph"){const se=me,ye=ee;if(se.length!==ye.length)return!1;for(let Se=0,Ae=se.length;Se<Ae;Se++)if(!t.Vec2.areEqual(se[Se],ye[Se]))return!1;return!0}else{if(le.type==="vec3")return r.Vec3.equals(me,ee);if(le.type==="mat4")return n.Mat4.areEqual(me,ee,h.EPSILON);if(le.type==="script"){const se=me,ye=ee;return se.language===ye.language&&se.expression===ye.expression}else if(le.type==="object-list"){const se=me,ye=ee,Se=se.length;if(Se!==ye.length)return!1;for(let Ae=0;Ae<Se;Ae++)if(!Z(le.element,se[Ae],ye[Ae]))return!1;return!0}else if(typeof me=="object"&&typeof ee=="object")return(0,e.shallowEqualObjects)(me,ee)}}return!1}_.isParamEqual=re;function oe(le,me,ee){if(me===void 0)return{...ee};if(ee===void 0)return{...me};const se={};for(const ye of Object.keys(le))se[ye]=ce(le[ye],me[ye],ee[ye]);return se}_.merge=oe;function ce(le,me,ee){if(me===void 0)return typeof ee=="object"&&!Array.isArray(ee)?{...ee}:ee;if(ee===void 0)return typeof me=="object"&&!Array.isArray(me)?{...me}:me;if(le.type==="group")return oe(le.params,me,ee);if(le.type==="mapped"){const se=me,ye=ee;if(se.name!==ye.name)return{...ye};const Se=le.map(ye.name);return{name:ye.name,params:ce(Se,se.params,ye.params)}}else return le.type==="value"?ee:typeof me=="object"&&typeof ee=="object"?Array.isArray(ee)?ee:{...me,...ee}:ee}_.mergeParam=ce;function ue(le,me){for(const ee of le.options)if(ee[0]===me)return!0;return!1}function pe(le,me,ee){if(me==null)return ee?le.defaultValue:void 0;if(le.type==="value")return me;if(le.type==="group"){const se={};for(const ye of Object.keys(le.params)){const Se=le.params[ye];me[ye]===void 0?ee&&(se[ye]=Se.defaultValue):se[ye]=pe(Se,me[ye],ee)}return se}else if(le.type==="mapped"){const se=me;if(typeof se.name!="string")return le.defaultValue;if(typeof se.params>"u")return ee?le.defaultValue:void 0;if(!ue(le.select,se.name))return le.defaultValue;const ye=le.map(se.name);return{name:se.name,params:pe(ye,se.params,ee)}}else{if(le.type==="select")return ue(le,me)?me:le.defaultValue;if(le.type==="multi-select"){if(!Array.isArray(me))return le.defaultValue;const se=me.filter(function(ye){return ue(this,ye)},le);return me.length>0&&se.length===0?le.defaultValue:se}else if(le.type==="object-list")return Array.isArray(me)?me.map(se=>he(le.element,se,ee?"all":"skip")):le.defaultValue}return me}function he(le,me,ee){if(typeof me!="object"||me===null)return ee?z(le):me;const se={};for(const ye of Object.keys(le)){const Se=le[ye];me[ye]===void 0?ee==="all"&&(se[ye]=Se.defaultValue):se[ye]=pe(Se,me[ye],ee!=="skip")}return se}_.normalizeParams=he;function fe(le,me){const ee=[];for(const se of Object.keys(le))if(!me)typeof le[se]=="string"?ee.push([se,le[se]]):ee.push([se,me===null?se:(0,c.stringToWords)(se)]);else{const ye=me(se,le[se]);ee.push(typeof ye=="string"?[se,ye]:[se,ye[0],ye[1]])}return ee}_.objectToOptions=fe;function de(le,me){const ee=[];for(const se of le)me?ee.push([se,me(se)]):ee.push([se,me===null?se:(0,c.stringToWords)(se)]);return ee}_.arrayToOptions=de;function ge(le,me){for(const ee of le.options)if(ee[0]===me)return ee[1];return""}_.optionLabel=ge;function Ce(le,me){for(const ee of me)if(ee[0]===le)return le;return me.length>0?me[0][0]:void 0}function ve(le,me){const ee={};for(const se of Object.keys(me)){const ye=me[se];!le[se]||ye===null||ye===void 0||le[se].defaultValue===ye||(ee[se]={...le[se],defaultValue:ye})}return{...le,...ee}}_.withDefaults=ve})(y||(Rp.ParamDefinition=y={})),Rp}var TC={},po={},IR;
15function Cl(){if(IR)return po;IR=1,Object.defineProperty(po,"__esModule",{value:!0}),po.Bridge=po.BridgeType=po.DSSPType=void 0;const e=et();var t;(function(i){i.is=e.BitFlags.has,i.create=e.BitFlags.create,(function(c){c[c._=0]="_",c[c.H=1]="H",c[c.B=2]="B",c[c.E=4]="E",c[c.G=8]="G",c[c.I=16]="I",c[c.S=32]="S",c[c.T=64]="T",c[c.T3=128]="T3",c[c.T4=256]="T4",c[c.T5=512]="T5",c[c.T3S=1024]="T3S",c[c.T4S=2048]="T4S",c[c.T5S=4096]="T5S"})(i.Flag||(i.Flag={}))})(t||(po.DSSPType=t={}));var r;(function(i){i[i.PARALLEL=0]="PARALLEL",i[i.ANTI_PARALLEL=1]="ANTI_PARALLEL"})(r||(po.BridgeType=r={}));class n{constructor(c,o,s){this.partner1=Math.min(c,o),this.partner2=Math.max(c,o),this.type=s}}return po.Bridge=n,po}var wR;function LJ(){if(wR)return TC;wR=1,Object.defineProperty(TC,"__esModule",{value:!0}),TC.assignBends=n;const e=Ge(),t=er(),r=Cl();function n(i){const{unit:c,flags:o,proteinInfo:s}=i,h=c.conformation,{traceElementIndex:f}=c.model.atomicHierarchy.derived.residue,{residueIndices:y,nIndices:_}=s,g=y.length,a=(C,l)=>C===-1?e.Vec3.setNaN(l):h.position(C,l),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)();e:for(let C=2;C<g-2;C++){for(let V=0;V<4;V++){const R=C+V-2;if(a(f[R],m),a(_[R+1],v),e.Vec3.squaredDistance(m,v)>6.25)continue e}const l=y[C-2],S=y[C],T=y[C+2],A=f[l],x=f[S],M=f[T];a(A,d),a(x,p),a(M,u),e.Vec3.sub(b,d,p),e.Vec3.sub(P,p,u);const D=(0,t.radToDeg)(e.Vec3.angle(b,P));D&&D>70&&(o[C]|=r.DSSPType.Flag.S)}}return TC}var xC={},VR;function NJ(){if(VR)return xC;VR=1,Object.defineProperty(xC,"__esModule",{value:!0}),xC.calcUnitBackboneHbonds=s;const e=is(),t=Ge(),r=9,n=-27.888,i=-.5,c=-9.9;function o(f,y,_,g){const a=t.Vec3.distance(f,g),d=t.Vec3.distance(y,g),p=t.Vec3.distance(y,_),u=t.Vec3.distance(f,_),m=n/a-n/d,v=n/p-n/u,b=m+v;return b<c?c:b}function s(f,y,_){const{residueIndices:g,cIndices:a,hIndices:d,nIndices:p,oIndices:u}=y,{index:m}=f.model.atomicHierarchy,v=f.conformation,{traceElementIndex:b}=f.model.atomicHierarchy.derived.residue,P=g.length,C=[],l=[],S=[],T=(0,t.Vec3)(),A=(0,t.Vec3)(),x=(0,t.Vec3)(),M=(0,t.Vec3)(),D=(0,t.Vec3)(),V=(0,t.Vec3)(),R=(0,t.Vec3)();for(let E=0,I=g.length;E<I;++E){const B=E,w=g[E],O=u[B],F=a[B],L=b[w];if(O===-1||F===-1||m.findAtomOnResidue(w,"OXT")!==-1)continue;v.invariantPosition(O,T),v.invariantPosition(F,A),v.invariantPosition(L,x);const{indices:U,count:q}=_.find(x[0],x[1],x[2],r);for(let N=0;N<q;++N){const k=U[N];if(k===B||k-1===B||k+1===B)continue;const j=p[k];if(j===-1)continue;v.invariantPosition(j,M);const H=d[k];if(H===-1){if(k===0)continue;const z=k-1,W=u[z],X=a[z];if(W===-1||X===-1)continue;v.invariantPosition(W,R),v.invariantPosition(X,V),t.Vec3.sub(D,V,R);const Y=t.Vec3.distance(R,V);t.Vec3.scaleAndAdd(D,M,D,1/Y)}else v.invariantPosition(H,D);const G=o(T,A,M,D);G>i||(C[C.length]=B,l[l.length]=k,S[S.length]=G)}}return h(P,C,l,S)}function h(f,y,_,g){const a=new e.IntAdjacencyGraph.DirectedEdgeBuilder(f,y,_),d=new Float32Array(a.slotCount);for(let p=0,u=a.edgeCount;p<u;p++)a.addNextEdge(),a.assignProperty(d,g[p]);return a.createGraph({energies:g})}return xC}var AC={},ER;function qJ(){if(ER)return AC;ER=1,Object.defineProperty(AC,"__esModule",{value:!0}),AC.assignTurns=t;const e=Cl();function t(r){const{proteinInfo:n,hbonds:i,flags:c}=r,o=[e.DSSPType.Flag.T3S,e.DSSPType.Flag.T4S,e.DSSPType.Flag.T5S,e.DSSPType.Flag.T3,e.DSSPType.Flag.T4,e.DSSPType.Flag.T5];for(let s=0;s<3;s++)for(let h=0,f=n.residueIndices.length-1;h<f;++h)if(i.getDirectedEdgeIndex(h,h+s+3)!==-1)if(c[h]|=o[s+3]|o[s],r.params.oldDefinition)for(let y=1;y<s+3;++y)c[h+y]|=o[s+3]|e.DSSPType.Flag.T;else for(let y=0;y<=s+3;++y)c[h+y]|=o[s+3]|e.DSSPType.Flag.T}return AC}var MC={},BR;function UJ(){if(BR)return MC;BR=1,Object.defineProperty(MC,"__esModule",{value:!0}),MC.assignHelices=t;const e=Cl();function t(r){const{proteinInfo:n,flags:i}=r,c=n.residueIndices.length,o=[e.DSSPType.Flag.T3S,e.DSSPType.Flag.T4S,e.DSSPType.Flag.T5S,e.DSSPType.Flag.T3,e.DSSPType.Flag.T4,e.DSSPType.Flag.T5],s=[0,0,0,e.DSSPType.Flag.G,e.DSSPType.Flag.H,e.DSSPType.Flag.I],h=r.params.oldOrdering?[4,3,5]:[3,4,5];for(let f=0;f<h.length;f++){const y=h[f];for(let _=1,g=c-y;_<g;_++){const a=e.DSSPType.create(i[_]),d=e.DSSPType.create(i[_-1]),p=e.DSSPType.create(i[_+1]);if(r.params.oldOrdering){if(y===3&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.H))||y===5&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.G)))continue}else if(y===4&&(e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.G))||y===5&&(e.DSSPType.is(a,e.DSSPType.Flag.H)||e.DSSPType.is(a,e.DSSPType.Flag.G)||e.DSSPType.is(p,e.DSSPType.Flag.H)||e.DSSPType.is(p,e.DSSPType.Flag.G)))continue;if(e.DSSPType.is(a,o[y])&&e.DSSPType.is(a,o[y-3])&&e.DSSPType.is(d,o[y])&&e.DSSPType.is(d,o[y-3]))if(r.params.oldDef
15inition)for(let u=0;u<y;u++)i[_+u]|=s[y];else for(let u=-1;u<=y;u++)i[_+u]|=s[y]}}}return MC}var DC={},RR;function jJ(){if(RR)return DC;RR=1,Object.defineProperty(DC,"__esModule",{value:!0}),DC.assignLadders=i;const e=Cl();function t(c,o){if(o.type!==c.type||o.partner1!==c.firstEnd+1)return!1;if(o.type===e.BridgeType.PARALLEL){if(o.partner2===c.secondEnd+1)return!0}else if(o.partner2===c.secondStart-1)return!0;return!1}function r(c,o){return c.type===o.type&&o.firstStart-c.firstEnd<6&&c.firstStart<o.firstStart&&o.nextLadder===0?c.type===e.BridgeType.PARALLEL?n(c,o):n(o,c):!1}function n(c,o){return o.secondStart-c.secondEnd>0&&(o.secondStart-c.secondEnd<6&&o.firstStart-c.firstEnd<3||o.secondStart-c.secondEnd<3)}function i(c){const{bridges:o,ladders:s}=c;for(let h=0;h<o.length;h++){const f=o[h];let y=!1;for(let _=0;_<s.length;_++){const g=s[_];t(g,f)&&(y=!0,g.firstEnd++,f.type===e.BridgeType.PARALLEL?g.secondEnd++:g.secondStart--)}y||(s[s.length]={previousLadder:0,nextLadder:0,firstStart:f.partner1,firstEnd:f.partner1,secondStart:f.partner2,secondEnd:f.partner2,type:f.type})}for(let h=0;h<s.length;h++){const f=s[h];for(let y=h;y<s.length;y++){const _=s[y];r(f,_)&&(f.nextLadder=y,_.previousLadder=h)}}}return DC}var IC={},OR;function GJ(){if(OR)return IC;OR=1,Object.defineProperty(IC,"__esModule",{value:!0}),IC.assignBridges=t;const e=Cl();function t(r){const{proteinInfo:n,hbonds:i,flags:c,bridges:o}=r,{offset:s,b:h}=i;let f,y;for(let _=0,g=n.residueIndices.length;_<g;++_)for(let a=s[_],d=s[_+1];a<d;a++){const p=h[a];_>p||(f=_+1,y=p,f!==y&&i.getDirectedEdgeIndex(y,f+1)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(f,y,e.BridgeType.PARALLEL)),f=_,y=p-1,f!==y&&i.getDirectedEdgeIndex(y-1,f)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.PARALLEL)),f=_,y=p,f!==y&&i.getDirectedEdgeIndex(y,f)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.ANTI_PARALLEL)),f=_+1,y=p-1,f!==y&&i.getDirectedEdgeIndex(y-1,f+1)!==-1&&(c[f]|=e.DSSPType.Flag.B,c[y]|=e.DSSPType.Flag.B,o[o.length]=new e.Bridge(y,f,e.BridgeType.ANTI_PARALLEL)))}o.sort((_,g)=>_.partner1>g.partner1?1:_.partner1<g.partner1?-1:0)}return IC}var wC={},kR;function zJ(){if(kR)return wC;kR=1,Object.defineProperty(wC,"__esModule",{value:!0}),wC.assignSheets=r;const e=Cl();function t(n){return e.DSSPType.is(n,e.DSSPType.Flag.G)||e.DSSPType.is(n,e.DSSPType.Flag.H)||e.DSSPType.is(n,e.DSSPType.Flag.I)}function r(n){const{ladders:i,flags:c}=n;for(let o=0;o<i.length;o++){const s=i[o];for(let f=s.firstStart;f<=s.firstEnd;f++){const y=s.firstStart-f,_=s.secondStart-y;s.firstStart!==s.firstEnd?(c[f]|=e.DSSPType.Flag.E,c[_]|=e.DSSPType.Flag.E):(!t(c[f])&&e.DSSPType.is(c[f],e.DSSPType.Flag.E)&&(c[f]|=e.DSSPType.Flag.B),!t(c[_])&&e.DSSPType.is(c[_],e.DSSPType.Flag.E)&&(c[_]|=e.DSSPType.Flag.B))}if(s.nextLadder===0)continue;const h=i[s.nextLadder];for(let f=s.firstStart;f<=h.firstEnd;f++)c[f]|=e.DSSPType.Flag.E;if(s.type===e.BridgeType.PARALLEL)for(let f=s.secondStart;f<=h.secondEnd;f++)c[f]|=e.DSSPType.Flag.E;else for(let f=h.secondEnd;f<=s.secondStart;f++)c[f]|=e.DSSPType.Flag.E}}return wC}var VC={},FR;function HJ(){if(FR)return VC;FR=1,Object.defineProperty(VC,"__esModule",{value:!0}),VC.calculateUnitDihedralAngles=r;const e=Ge(),t=er();function r(n,i){const{cIndices:c,nIndices:o,residueIndices:s}=i,h=n.conformation,{index:f}=n.model.atomicHierarchy,{traceElementIndex:y}=n.model.atomicHierarchy.derived.residue,_=s.length,g=(T,A)=>T===-1?e.Vec3.setNaN(A):h.position(T,A);let a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)();const b=(0,e.Vec3)(),P=(0,e.Vec3)(),C=(0,e.Vec3)();if(_===0)return{phi:new Float32Array(0),psi:new Float32Array(0)};const l=new Float32Array(_-1),S=new Float32Array(_-1);g(-1,a),g(-1,d),g(-1,p),g(c[0],u),g(y[s[0]],m),g(o[0],v),g(c[1],b),g(y[s[1]],P),g(o[1],C);for(let T=0;T<_-1;++T)f.findAtomOnResidue(s[T],"OXT")===-1&&(l[T]=(0,t.radToDeg)(e.Vec3.dihedralAngle(a,v,m,u)),S[T]=(0,t.radToDeg)(e.Vec3.dihedralAngle(v,m,u,C)),a=u,d=m,p=v,u=b,m=P,v=C,g(c[T+1],b),g(y[s[T+1]],P),g(o[T+1],C));return{phi:l,psi:S}}return VC}var EC={},LR;function WJ(){if(LR)return EC;LR=1,Object.defineProperty(EC,"__esModule",{value:!0}),EC.calcUnitProteinTraceLookup3D=n;const e=rt(),t=at(),r=wT();function n(i,c){const{x:o,y:s,z:h}=i.model.atomicConformation,{traceElementIndex:f}=i.model.atomicHierarchy.derived.residue,y=new Uint32Array(c.length);for(let g=0,a=c.length;g<a;++g)y[g]=f[c[g]];const _={x:o,y:s,z:h,indices:t.SortedArray.ofSortedArray(y)};return(0,e.GridLookup3D)(_,(0,r.getBoundary)(_))}return EC}var BC={},NR;function $J(){if(NR)return BC;NR=1,Object.defineProperty(BC,"__esModule",{value:!0}),BC.getUnitProteinInfo=t;const e=at();function t(r){const{index:n}=r.model.atomicHierarchy,{proteinElements:i,residueIndex:c}=r,o=i.length,s=new Uint32Array(o),h=new Int32Array(o),f=new Int32Array(o),y=new Int32Array(o),_=new Int32Array(o);for(let g=0;g<o;++g){const a=c[i[g]];s[g]=a,h[g]=n.findAtomOnResidue(a,"C"),f[g]=n.findAtomOnResidue(a,"H"),y[g]=n.findAtomOnResidue(a,"O"),_[g]=n.findAtomOnResidue(a,"N")}return{residueIndices:e.SortedArray.ofSortedArray(s),cIndices:h,hIndices:f,oIndices:y,nIndices:_}}return BC}var qR;function XJ(){return qR||(qR=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.DefaultDSSPComputationProps=e.DSSPComputationParams=void 0,e.computeUnitDSSP=u;const t=aI(),r=dt(),n=Ne(),i=LJ(),c=NJ(),o=Cl(),s=qJ(),h=UJ(),f=jJ(),y=GJ(),_=zJ(),g=HJ(),a=WJ(),d=$J(),p=at();e.DSSPComputationParams={oldDefinition:n.ParamDefinition.Boolean(!0,{description:"Whether to use the old DSSP convention for the annotation of turns and helices, causes them to be two residues shorter"}),oldOrdering:n.ParamDefinition.Boolean(!0,{description:"Alpha-helices are preferred over 3-10 helices"})},e.DefaultDSSPComputationProps=n.ParamDefinition.getDefaultValues(e.DSSPComputationParams);async function u(T,A){const x=(0,d.getUnitProteinInfo)(T),{residueIndices:M}=x,D=(0,a.calcUnitProteinTraceLookup3D)(T,M),V=(0,c.calcUnitBackboneHbonds)(T,x,D),R=M.length,E=new Uint32Array(R),I=(0,g.calculateUnitDihedralAngles)(T,x),B=[],w=[],O=A.oldDefinition?b:C,F=A.oldOrdering?P:l,L={params:A,getResidueFlag:O,getFlagName:F,unit:T,proteinInfo:x,flags:E,hbonds:V,torsionAngles:I,ladders:B,bridges:w};(0,s.assignTurns)(L),(0,h.assignHelices)(L),(0,i.assignBends)(L),(0,y.assignBridges)(L),(0,f.assignLadders)(L),(0,_.assignSheets)(L);const U=S(E,O),q=new Uint32Array(R),N=[],k=[],j=H=>p.SortedArray.indexOf(M,H);for(let H=0,G=M.length;H<G;++H){const z=U[H];q[H]=z;const W=O(E[H]);(k.length===0||W!==k[k.length-1].flags)&&(k[k.length]=m(v(z),E[H],O)),N[H]=k.length-1}return(0,t.SecondaryStructure)(q,N,k,j)}function m(T,A,x){return T==="helix"?{kind:"helix",flags:x(A)}:T==="sheet"?{kind:"sheet",flags:x(A)}:T==="turn"||T==="bend"?{kind:"turn",flags:x(A)}:{kind:"none"}}function v(T){return T===r.SecondaryStructureType.SecondaryStructureDssp.H||T===r.SecondaryStructureType.SecondaryStructureDssp.G||T===r.SecondaryStructureType.SecondaryStructureDssp.I?"helix":T===r.SecondaryStructureType.SecondaryStructureDssp.B||T===r.SecondaryStructureType.SecondaryStructureDssp.E?"sheet":T===r.SecondaryStructureType.SecondaryStructureDssp.T?"turn":T===r.SecondaryStructureType.SecondaryStructureDssp.S?"bend":"none"}function b(T){return o.DSSPType.is(T,o.DSSPType.Flag.H)?r.SecondaryStructureType.SecondaryStructureDssp.H:o.DSSPType.is(T,o.DSSPType.Flag.E)?r.SecondaryStructureType.SecondaryStructureDssp.E:o.DSSPType.is(T,o.DSSPType.Flag.B)?r.SecondaryStructureType.SecondaryStructureDssp.B:o.DSSPType.is(T,o.DSSPType.Flag.G)?r.SecondaryStructureType.SecondaryStructureDssp.G:o.DSSPType.is(T,o.DSSPType.Flag.I)?r.SecondaryStructureType.SecondaryStructureDssp.I:o.DSSPType.is(T,o.DSSPType.Flag.T)?r.SecondaryStructureType.SecondaryStructureDssp.T:o.DSSPType.is(T,o.DSSPType.Flag.S)?r.SecondaryStructureType.SecondaryStructureDssp.S:r.SecondaryStructureType.Flag.None}function P(T){return o.DSSPType.is(T,o.DSSPType.Flag.H)?"H":o.DSSPType.is(T,o.DSSPType.Flag.E)?"E":o.DSSPType.is(T,o.DSSPType.Flag.B)?"B":o.DSSPType.is(T,o.DSSPType.Flag.G)?"G":o.DSSPType.is(T,o.DSSPType.Flag.I)?"I":o.DSSPType.is(T,o.DSSPType.Flag.T)?"T":o.DSSPType.is(T,o.DSSPType.Flag.S)?"S":"-"}function C(T){return o.DSSPType.is(T,o.DSSPType.Flag.I)?r.SecondaryStructureType.SecondaryStructureDssp.I:o.DSSPType.is(T,o.DSSPType.Flag.H)?r.SecondaryStructureType.SecondaryStructureDssp.H:o.DSSPType.is(T,o.DSSPType.Flag.E)?r.SecondaryStructureType.SecondaryStructureDssp.E:o.DSSPType.is(T,o.DSSPType.Flag.B)?r.SecondaryStructureType.SecondaryStructureDssp.B:o.DSSPType.is(T,o.DSSPType.Flag.G)?r.SecondaryStructureType.SecondaryStructureDssp.G:o.DSSPType.is(T,o.DSSPType.Flag.T)?r.SecondaryStructureType.SecondaryStructureDssp.T:o.DSSPType.is(T,o.DSSPType.Flag.S)?r.SecondaryStructureType.SecondaryStructureDssp.S:r.SecondaryStructureType.Flag.None}function l(T){return o.DSSPType.is(T,o.DSSPType.Flag.I)?"I":o.DSSPType.is(T,o.DSSPType.Flag.H)?"H":o.DSSPType.is(T,o.DSSPType.Flag.E)?"E":o.DSSPType.is(T,o.DSSPType.Flag.B)?"B":o.DSSPType.is(T,o.DSSPType.Flag.G)?"G":o.DSSPType.is(T,o.DSSPType.Flag.T)?"T":o.DSSPType.is(T,o.DSSPType.Flag.S)?"S":"-"}function S(T,A){const x=new Uint32Array(T.length);for(let M=0,D=T.length;M<D;++M){const V=o.DSSPType.create(T[M]);x[M]=A(V)}return x}})(fx)),fx}var kp={},UR;function wf(){if(UR)return kp;UR=1,Object.defineProperty(kp,"__esModule",{value:!0}),kp.CustomStructureProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=h.type==="root"?"inheritedPropertyData":"currentPropertyData",_=a=>(f in a[y]||(a[y][f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(a))},data:t.ValueBox.create(void 0)}),a[y][f]),g=(a,d,p)=>{const u=_(a);a[y][f]={props:d,data:t.ValueBox.withValue(u.data,p)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:a=>{const d=e.ParamDefinition.clone(h.getParams(a));return e.ParamDefinition.setDefaultValues(d,_(a).props),d},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(a,d,p={},u)=>{u&&d.customPropertyDescriptors.reference(h.descriptor,!0),h.type==="root"&&(d=d.root);const m=_(d.root).props,v=_(d),b=e.ParamDefinition.merge(h.defaultParams,m,p);if(v.data.value&&e.ParamDefinition.areEqual(h.defaultParams,v.props,b))return;const{value:P,assets:C}=await h.obtain(a,d,b);d.customPropertyDescriptors.add(h.descriptor),d.customPropertyDescriptors.assets(h.descriptor,C),g(d,b,P)},ref:(a,d)=>a.customPropertyDescriptors.reference(h.descriptor,d),get:a=>_(a).data,set:(a,d={},p)=>{h.type==="root"&&(a=a.root);const u=_(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);e.ParamDefinition.areEqual(h.defaultParams,u.props,m)||(g(a,m,p),a.customPropertyDescriptors.assets(h.descriptor))},props:a=>_(a).props}}c.createProvider=o;function s(h,f,y){const _={value:e.ParamDefinition.Value(y,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,type:f,defaultParams:_,getParams:()=>({value:e.ParamDefinition.Value(y,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(g,a,d)=>({...e.ParamDefinition.getDefaultValues(_),...d})})}c.createSimple=s})(i||(kp.CustomStructureProperty=i={})),kp}var Fp={},jR;function BT(){if(jR)return Fp;jR=1,Object.defineProperty(Fp,"__esModule",{value:!0}),Fp.ModelSecondaryStructure=void 0;const e=dt(),t=ma(),r=aI(),n=lt(),i=as();var c;(function(_){_.Descriptor={name:"model_secondary_structure"},_.Provider=i.FormatPropertyProvider.create(_.Descriptor);function g(a,d,p){const u=new Map,m=[{kind:"none"}],v=o(a,d);s(a,v,u,m),h(d,v,u,a._rowCount,m);const b=p.residues._rowCount,P=l=>l,C={type:new Int32Array(b),key:new Int32Array(b),elements:m};return u.size>0&&y(p,v,u,C),(0,r.SecondaryStructure)(C.type,C.key,C.elements,P)}_.fromStruct=g})(c||(Fp.ModelSecondaryStructure=c={}));function o(_,g){if(_._rowCount>0){if(_.beg_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present||_.end_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present)return"auth"}else if(g&&(g.beg_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present||g.end_label_seq_id.valueKind(0)!==n.Column.ValueKinds.Present))return"auth";return"label"}function s(_,g,a,d){if(!_._rowCount)return;const{beg_label_asym_id:p,beg_label_seq_id:u,beg_auth_seq_id:m,pdbx_beg_PDB_ins_code:v}=_,{end_label_seq_id:b,end_auth_seq_id:P,pdbx_end_PDB_ins_code:C}=_,{pdbx_PDB_helix_class:l,conf_type_id:S,details:T}=_,A=g==="label"?u:m,x=g==="label"?b:P;for(let M=0,D=_._rowCount;M<D;M++){const V=e.SecondaryStructureType.create(l.valueKind(M)===n.Column.ValueKinds.Present?e.SecondaryStructureType.SecondaryStructurePdb[l.value(M)]:S.valueKind(M)===n.Column.ValueKinds.Present?e.SecondaryStructureType.SecondaryStructureMmcif[S.value(M)]:e.SecondaryStructureType.Flag.NA),R={kind:"helix",flags:V,type_id:S.valueKind(M)===n.Column.ValueKinds.Present?S.value(M):"helx_p",helix_class:l.value(M),details:T.valueKind(M)===n.Column.ValueKinds.Present?T.value(M):void 0},E={startSeqId:A.value(M),startInsCode:v.value(M),endSeqId:x.value(M),endInsCode:C.value(M),type:V,key:d.length};d[d.length]=R;const I=p.value(M);if(a.has(I)){const B=a.get(I);B.has(E.startSeqId)?B.get(E.startSeqId).push(E):B.set(E.startSeqId,[E])}else a.set(I,new Map([[E.startSeqId,[E]]]))}}function h(_,g,a,d,p){if(!_._rowCount)return;const{beg_label_asym_id:u,beg_label_seq_id:m,beg_auth_seq_id:v,pdbx_beg_PDB_ins_code:b}=_,{end_label_seq_id:P,end_auth_seq_id:C,pdbx_end_PDB_ins_code:l}=_,{sheet_id:S}=_,T=g==="label"?m:v,A=g==="label"?P:C,x=new Map;let M=d+1;for(let D=0,V=_._rowCount;D<V;D++){const R=S.value(D);let E;x.has(R)?E=x.get(R):(E=M++,x.set(R,E));const I=e.SecondaryStructureType.create(e.SecondaryStructureType.Flag.Beta|e.SecondaryStructureType.Flag.BetaSheet),B={kind:"sheet",flags:I,sheet_id:R,symmetry:void 0},w={startSeqId:T.value(D),startInsCode:b.value(D),endSeqId:A.value(D),endInsCode:l.value(D),type:I,key:p.length};p[p.length]=B;const O=u.value(D);if(a.has(O)){const F=a.get(O);F.has(w.startSeqId)?F.get(w.startSeqId).push(w):F.set(w.startSeqId,[w])}else a.set(O,new Map([[w.startSeqId,[w]]]))}}function f(_,g,a,d,p,u){const{auth_seq_id:m,label_seq_id:v,pdbx_PDB_ins_code:b}=_.residues,{endSeqId:P,endInsCode:C,key:l,type:S}=a,T=g==="label"?v:m;let A=d;for(;A<p;){const x=T.value(A);if(u.type[A]=S,u.key[A]=l,x>P||x===P&&b.value(A)===C)break;A++}}function y(_,g,a,d){const{count:p}=_.chainAtomSegments,{label_asym_id:u}=_.chains,{auth_seq_id:m,label_seq_id:v,pdbx_PDB_ins_code:b}=_.residues,P=g==="label"?v:m;for(let C=0;C<p;C++){const l=t.AtomicHierarchy.chainStartResidueIndex(_,C),S=t.AtomicHierarchy.chainEndResidueIndexExcl(_,C),T=u.value(C);if(a.has(T)){const A=a.get(T);for(let x=l;x<S;x++){const M=P.value(x);if(A.has(M)){const D=A.get(M);for(const V of D){const R=b.value(x);V.startInsCode===R&&f(_,g,V,x,S,d)}}}}}}return Fp}var RC={},GR;
15function KJ(){if(GR)return RC;GR=1,Object.defineProperty(RC,"__esModule",{value:!0}),RC.computeUnitZhangSkolnik=_;const e=aI(),t=dt(),r=at(),n=wt(),i=[5.45,5.18,6.37],c=2.1,o=[6.1,10.4,13],s=1.42,h=(0,n.Vec3)(),f=(0,n.Vec3)();function y(p,u,m,v,b){const P=p.conformation,{traceElementIndex:C}=p.model.atomicHierarchy.derived.residue;for(let l=Math.max(0,m-2);l<=m;++l)for(let S=2;S<5;++S){if(l+S>=u.length)return!1;const T=u[l],A=u[l+S],x=C[T],M=C[A];if(x===-1||M===-1)return!1;P.invariantPosition(x,h),P.invariantPosition(M,f);const D=n.Vec3.distance(h,f);if(Math.abs(D-v[S-2])>=b)return!1}return!0}async function _(p){const u=p.proteinElements.length,m=new Uint32Array(u),v=[],b=[],{proteinElements:P,residueIndex:C}=p,l=P.length,S=new Uint32Array(l);for(let x=0;x<l;++x){const M=C[P[x]];S[x]=M}const T=r.SortedArray.ofSortedArray(S),A=x=>r.SortedArray.indexOf(T,x);for(let x=0,M=T.length;x<M;++x){let D=t.SecondaryStructureType.Flag.None;y(p,T,x,i,c)?D=t.SecondaryStructureType.Flag.Helix:y(p,T,x,o,s)&&(D=t.SecondaryStructureType.Flag.Beta),m[x]=D,(b.length===0||D!==d(b[b.length-1]))&&(b[b.length]=g(a(D),D)),v[x]=b.length-1}return(0,e.SecondaryStructure)(m,v,b,A)}function g(p,u){return p==="helix"?{kind:"helix",flags:u}:p==="sheet"?{kind:"sheet",flags:u}:{kind:"none"}}function a(p){return p===t.SecondaryStructureType.Flag.Helix?"helix":p===t.SecondaryStructureType.Flag.Beta?"sheet":"none"}function d(p){return p.kind==="helix"||p.kind==="sheet"?p.flags:t.SecondaryStructureType.Flag.None}return RC}var zR;function Pl(){return zR||(zR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SecondaryStructureProvider=e.SecondaryStructureParams=void 0;const t=XJ(),r=Ne(),n=jr(),i=wf(),c=BT(),o=Pr(),s=Al(),h=KJ();function f(d){return{type:r.ParamDefinition.MappedStatic("auto",{auto:r.ParamDefinition.EmptyGroup({label:"Automatic"}),model:r.ParamDefinition.EmptyGroup({label:"Model"}),dssp:r.ParamDefinition.Group(t.DSSPComputationParams,{label:"DSSP",isFlat:!0}),"zhang-skolnick":r.ParamDefinition.EmptyGroup({label:"Zhang-Skolnick"})},{options:[["auto","Automatic"],["model","Model"],["dssp","DSSP"],["zhang-skolnick","Zhang-Skolnick"]]})}}e.SecondaryStructureParams=f(),e.SecondaryStructureProvider=i.CustomStructureProperty.createProvider({label:"Secondary Structure",descriptor:(0,o.CustomPropertyDescriptor)({name:"molstar_computed_secondary_structure"}),type:"root",defaultParams:e.SecondaryStructureParams,getParams:f,isApplicable:d=>!0,obtain:async(d,p,u)=>{const m={...r.ParamDefinition.getDefaultValues(e.SecondaryStructureParams),...u};switch(m.type.name){case"auto":return{value:await y(p)};case"dssp":return{value:await _(p,m.type.params)};case"model":return{value:await a(p)};case"zhang-skolnick":return{value:await g(p)}}}});async function y(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0],b=v.model;if(s.Model.isFromPdbArchive(b)&&s.Model.isExperimental(b)&&!s.Model.isCoarseGrained(b)||s.Model.hasSecondaryStructure(b)){const P=c.ModelSecondaryStructure.Provider.get(b);P&&p.set(v.invariantId,P)}else if(n.Unit.isAtomic(v)&&!s.Model.isCoarseGrained(b)){const P=await(0,t.computeUnitDSSP)(v,t.DefaultDSSPComputationProps);p.set(v.invariantId,P)}else if(n.Unit.isAtomic(v)){const P=await(0,h.computeUnitZhangSkolnik)(v);p.set(v.invariantId,P)}}return p}async function _(d,p){const u=new Map;for(let m=0,v=d.unitSymmetryGroups.length;m<v;++m){const b=d.unitSymmetryGroups[m].units[0];if(n.Unit.isAtomic(b)&&!s.Model.isCoarseGrained(b.model)){const P=await(0,t.computeUnitDSSP)(b,p);u.set(b.invariantId,P)}}return u}async function g(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0];if(n.Unit.isAtomic(v)){const b=await(0,h.computeUnitZhangSkolnik)(v);p.set(v.invariantId,b)}}return p}async function a(d){const p=new Map;for(let u=0,m=d.unitSymmetryGroups.length;u<m;++u){const v=d.unitSymmetryGroups[u].units[0];if(n.Unit.isAtomic(v)){const b=c.ModelSecondaryStructure.Provider.get(v.model);b&&p.set(v.invariantId,b)}}return p}})(dx)),dx}var HR;function Tl(){if(HR)return Bp;HR=1,Object.defineProperty(Bp,"__esModule",{value:!0}),Bp.StructureProperties=void 0;const e=Zn(),t=ma(),r=dt(),n=Pl(),i=rt();function c(l){return l}const o={true:l=>!0,false:l=>!1,zero:l=>0};function s(){throw new Error("Property only available for atomic models.")}function h(l){throw l?new Error(`Property only available for coarse models (${l}).`):new Error("Property only available for coarse models.")}const f={key:l=>
15l.element,x:l=>l.unit.conformation.x(l.element),y:l=>l.unit.conformation.y(l.element),z:l=>l.unit.conformation.z(l.element),id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.atomId.value(l.element):s(),occupancy:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.occupancy.value(l.element):s(),B_iso_or_equiv:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicConformation.B_iso_or_equiv.value(l.element):s(),sourceIndex:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atomSourceIndex.value(l.element):l.element,type_symbol:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element):s(),label_atom_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.label_atom_id.value(l.element):s(),auth_atom_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_atom_id.value(l.element):s(),label_alt_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.label_alt_id.value(l.element):s(),label_comp_id:y,auth_comp_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_comp_id.value(l.element):s(),pdbx_formal_charge:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.value(l.element):s(),vdw_radius:l=>e.Unit.isAtomic(l.unit)?(0,t.VdwRadius)(l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element)):s()};function y(l){return e.Unit.isAtomic(l.unit)||s(),l.unit.model.atomicHierarchy.atoms.label_comp_id.value(l.element)}function _(l){return e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.label_seq_id.value(l.unit.residueIndex[l.element]):s()}function g(l){e.Unit.isAtomic(l.unit)||s();const S=l.unit.model.sequence.byEntityKey[m(l)];return S&&S.sequence.microHet.has(_(l))}function a(l){e.Unit.isAtomic(l.unit)||s();const S=l.unit.model.sequence.byEntityKey[m(l)];return S?S.sequence.microHet.get(_(l))||[y(l)]:[y(l)]}const d={key:l=>e.Unit.isAtomic(l.unit)?l.unit.residueIndex[l.element]:s(),group_PDB:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.group_PDB.value(l.unit.residueIndex[l.element]):s(),label_comp_id:y,auth_comp_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.atoms.auth_comp_id.value(l.element):s(),label_seq_id:_,auth_seq_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.auth_seq_id.value(l.unit.residueIndex[l.element]):s(),pdbx_PDB_ins_code:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residues.pdbx_PDB_ins_code.value(l.unit.residueIndex[l.element]):s(),isNonStandard:l=>e.Unit.isAtomic(l.unit)?a(l).some(S=>l.unit.model.properties.chemicalComponentMap.get(S).mon_nstd_flag[0]==="n"):s(),hasMicroheterogeneity:g,microheterogeneityCompIds:a,secondary_structure_type:l=>{var S;e.Unit.isAtomic(l.unit)||s();const T=(S=n.SecondaryStructureProvider.get(l.structure).value)===null||S===void 0?void 0:S.get(l.unit.invariantId);return T?T.type[T.getIndex(l.unit.residueIndex[l.element])]:r.SecondaryStructureType.Flag.NA},secondary_structure_key:l=>{var S;e.Unit.isAtomic(l.unit)||s();const T=(S=n.SecondaryStructureProvider.get(l.structure).value)===null||S===void 0?void 0:S.get(l.unit.invariantId);return T?T.key[T.getIndex(l.unit.residueIndex[l.element])]:-1},chem_comp_type:l=>e.Unit.isAtomic(l.unit)?l.unit.model.properties.chemicalComponentMap.get(y(l)).type:s(),residueSourceIndex:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.residueSourceIndex.value(l.unit.residueIndex[l.element]):s()},p={key:l=>e.Unit.isAtomic(l.unit)?l.unit.chainIndex[l.element]:s(),label_asym_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.label_asym_id.value(l.unit.chainIndex[l.element]):l.unit.coarseElements.asym_id.value(l.element),auth_asym_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.auth_asym_id.value(l.unit.chainIndex[l.element]):s(),label_entity_id:l=>e.Unit.isAtomic(l.unit)?l.unit.model.atomicHierarchy.chains.label_entity_id.value(l.unit.chainIndex[l.element]):l.unit.coarseElements.entity_id.value(l.element)},u={key:f.key,entityKey:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.entityKey[l.element]:h(),x:f.x,y:f.y,z:f.z,asym_id:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.asym_id.value(l.element):h(),entity_id:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.entity_id.value(l.element):h(),seq_id_begin:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.seq_id_begin.value(l.element):h(),seq_id_end:l=>e.Unit.isCoarse(l.unit)?l.unit.coarseElements.seq_id_end.value(l.element):h(),sphere_radius:l=>e.Unit.isSpheres(l.unit)?l.unit.coarseConformation.radius[l.element]:h("spheres"),sphere_rmsf:l=>e.Unit.isSpheres(l.unit)?l.unit.coarseConformation.rmsf[l.element]:h("spheres"),gaussian_weight:l=>e.Unit.isGaussians(l.unit)?l.unit.coarseConformation.weight[l.element]:h("gaussians"),gaussian_covariance_matrix:l=>e.Unit.isGaussians(l.unit)?l.unit.coarseConformation.covariance_matrix[l.element]:h("gaussians")};function m(l){switch(l.unit.kind){case e.Unit.Kind.Atomic:return l.unit.model.atomicHierarchy.index.getEntityFromChain(l.unit.chainIndex[l.element]);case e.Unit.Kind.Spheres:return l.unit.model.coarseHierarchy.spheres.entityKey[l.element];case e.Unit.Kind.Gaussians:return l.unit.model.coarseHierarchy.gaussians.entityKey[l.element]}}const v={key:m,id:l=>l.unit.model.entities.data.id.value(m(l)),type:l=>l.unit.model.entities.data.type.value(m(l)),src_method:l=>l.unit.model.entities.data.src_method.value(m(l)),pdbx_description:l=>l.unit.model.entities.data.pdbx_description.value(m(l)),formula_weight:l=>l.unit.model.entities.data.formula_weight.value(m(l)),pdbx_number_of_molecules:l=>l.unit.model.entities.data.pdbx_number_of_molecules.value(m(l)),details:l=>l.unit.model.entities.data.details.value(m(l)),pdbx_mutation:l=>l.unit.model.entities.data.pdbx_mutation.value(m(l)),pdbx_fragment:l=>l.unit.model.entities.data.pdbx_fragment.value(m(l)),pdbx_ec:l=>l.unit.model.entities.data.pdbx_ec.value(m(l)),pdbx_parent_entity_id:l=>l.unit.model.entities.data.pdbx_parent_entity_id.value(m(l)),subtype:l=>l.unit.model.entities.subtype.value(m(l)),prd_id:l=>{var S,T;return(T=(S=l.unit.model.entities.prd_id)===null||S===void 0?void 0:S.value(m(l)))!==null&&T!==void 0?T:""}},b=[],P={id:l=>l.unit.id,chainGroupId:l=>l.unit.chainGroupId,multiChain:l=>e.Unit.Traits.is(l.unit.traits,e.Unit.Trait.MultiChain),object_primitive:l=>l.unit.objectPrimitive,operator_name:l=>l.unit.conformation.operator.name,instance_id:l=>l.unit.conformation.operator.instanceId,operator_key:l=>l.unit.conformation.operator.key,model_index:l=>l.unit.model.modelNum,model_label:l=>l.unit.model.label,model_entry_id:l=>l.unit.model.entryId,hkl:l=>l.unit.conformation.operator.hkl,spgrOp:l=>l.unit.conformation.operator.spgrOp,model_num:l=>l.unit.model.modelNum,pdbx_struct_assembly_id:l=>{var S;return((S=l.unit.conformation.operator.assembly)===null||S===void 0?void 0:S.id)||i.SymmetryOperator.DefaultName},pdbx_struct_oper_list_ids:l=>{var S;return((S=l.unit.conformation.operator.assembly)===null||S===void 0?void 0:S.operList)||b},struct_ncs_oper_id:l=>l.unit.conformation.operator.ncsId},C={constant:o,atom:f,residue:d,chain:p,entity:v,unit:P,coarse:u};return Bp.StructureProperties=C,Bp}var WR;function YJ(){if(WR)return Ep;WR=1,Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.ResidueSet=void 0;const e=Tl();class t{add(n){let i=this.index.get(n.label_asym_id);i||(i=new Map,this.index.set(n.label_asym_id,i));let c=i.get(n.label_seq_id);return c||(c=[],i.set(n.label_seq_id,c)),this._find(n,c)?!1:(c.push(n),!0)}hasLabelAsymId(n){return this.index.has(n)}has(n){var i,c;const o=this._asym_id(n);if(!this.index.has(o))return;const s=this.index.get(o),h=this._seq_id(n);if(!s.has(h))return;const f=s.get(h),y=this._comp_id(n),_=this._alt_id(n),g=this._ins_code(n),a=(i=this._op_name(n))!==null&&i!==void 0?i:"1_555";for(const d of f)if(!(d.label_comp_id!==y||d.label_alt_id!==_||d.ins_code!==g)&&!(this.checkOperator&&((c=d.operator_name)!==null&&c!==void 0?c:"1_555")!==a))return d}static getLabel(n,i=!1){var c;return`${n.label_asym_id} ${n.label_comp_id} ${n.label_seq_id}:${n.ins_code}:${n.label_alt_id}${i?" "+((c=n.operator_name)!==null&&c!==void 0?c:"1_555"):""}`}static getEntryFromLocation(n){var i;return{label_asym_id:e.StructureProperties.chain.label_asym_id(n),label_comp_id:e.StructureProperties.atom.label_comp_id(n),label_seq_id:e.StructureProperties.residue.label_seq_id(n),label_alt_id:e.StructureProperties.atom.label_alt_id(n),ins_code:e.StructureProperties.residue.pdbx_PDB_ins_code(n),operator_name:(i=e.StructureProperties.unit.operator_name(n))!==null&&i!==void 0?i:"1_555"}}_find(n,i){var c,o;for(const s of i)if(!(s.label_comp_id!==n.label_comp_id||s.label_alt_id!==n.label_alt_id||s.ins_code!==n.ins_code)&&!(this.checkOperator&&((c=s.operator_name)!==null&&c!==void 0?c:"1_555")!==((o=n.operator_name)!==null&&o!==void 0?o:"1_555")))return!0;return!1}constructor(n){var i;this.index=new Map,this.checkOperator=!1,this._asym_id=e.StructureProperties.chain.label_asym_id,this._seq_id=e.StructureProperties.residue.label_seq_id,this._comp_id=e.StructureProperties.atom.label_comp_id,this._alt_id=e.StructureProperties.atom.label_alt_id,this._ins_code=e.StructureProperties.residue.pdbx_PDB_ins_code,this._op_name=e.StructureProperties.unit.operator_name,this.checkOperator=(i=n?.checkOperator)!==null&&i!==void 0?i:!1}}return Ep.ResidueSet=t,Ep}var $R;function QJ(){if($R)return ki;$R=1,Object.defineProperty(ki,"__esModule",{value:!0}),ki.wholeResidues=g,ki.includeSurroundings=m,ki.querySelection=v,ki.intersectBy=b,ki.exceptBy=P,ki.union=C,ki.expandProperty=l,ki.includeConnected=S,ki.surroundingLigands=x;const e=at(),t=jr(),r=za(),n=nX(),i=EJ(),c=If(),o=ha(),s=xl(),h=YJ(),f=Tl(),y=Vt();
15function _(R,E,I){const B=E.subsetBuilder(!0);for(const w of I.units){if(w.kind!==t.Unit.Kind.Atomic){B.setUnit(w.id,w.elements);continue}const{residueAtomSegments:O}=w.model.atomicHierarchy,F=E.unitMap.get(w.id).elements,L=w.elements;B.beginUnit(w.id);const U=e.Segmentation.transientSegments(O,L);for(;U.hasNext;){const q=U.move().index;for(let N=O.offsets[q],k=O.offsets[q+1];N<k;N++)e.SortedArray.has(F,N)&&B.addElement(N)}B.commitUnit(),R.throwIfTimedOut()}return B.getStructure()}function g(R){return function(I){const B=R(I);if(r.StructureSelection.isSingleton(B))return r.StructureSelection.Singletons(I.inputStructure,_(I,I.inputStructure,B.structure));{const w=new n.UniqueStructuresBuilder(I.inputStructure);for(const O of B.structures)w.add(_(I,I.inputStructure,O));return w.getSelection()}}}function a(R,E,I,B){const w=new i.StructureUniqueSubsetBuilder(E),O=E.lookup3d,F=B.radius;for(const L of I.units){const U=L.conformation,q=L.elements;for(let N=0,k=q.length;N<k;N++){const j=q[N];O.findIntoBuilder(U.x(j),U.y(j),U.z(j),F,w)}R.throwIfTimedOut()}return B.wholeResidues?_(R,E,w.getStructure()):w.getStructure()}function d(R,E,I,B){const w=new i.StructureUniqueSubsetBuilder(E),O=E.lookup3d,{elementRadius:F,elementRadiusClosure:L,sourceMaxRadius:U,radius:q}=B;R.pushCurrentElement(),R.element.structure=I;for(const N of I.units){R.element.unit=N;const k=N.conformation,j=N.elements;for(let H=0,G=j.length;H<G;H++){const z=j[H];R.element.element=z;const W=F(R);O.findIntoBuilderWithRadius(k.x(z),k.y(z),k.z(z),W,U,q,L,w)}R.throwIfTimedOut()}return R.popCurrentElement(),B.wholeResidues?_(R,E,w.getStructure()):w.getStructure()}function p(R,E){return I=>(R.element.structure=I.structure,R.element.unit=I.unit,R.element.element=I.element,E(R))}function u(R,E){let I=0;R.element.structure=R.inputStructure;for(const B of R.inputStructure.units){R.element.unit=B;const w=B.elements;for(let O=0,F=w.length;O<F;O++){const L=w[O];R.element.element=L;const U=E(R);U>I&&(I=U)}}return R.throwIfTimedOut(),I}function m(R,E){return function(B){const w=R(B);if(E.elementRadius){const O={...E,elementRadius:E.elementRadius,elementRadiusClosure:p(B,E.elementRadius),sourceMaxRadius:u(B,E.elementRadius)};if(r.StructureSelection.isSingleton(w)){const F=d(B,B.inputStructure,w.structure,O);return r.StructureSelection.Singletons(B.inputStructure,F)}else{const F=new n.UniqueStructuresBuilder(B.inputStructure);for(const L of w.structures)F.add(d(B,B.inputStructure,L,O));return F.getSelection()}}if(r.StructureSelection.isSingleton(w)){const O=a(B,B.inputStructure,w.structure,E);return r.StructureSelection.Singletons(B.inputStructure,O)}else{const O=new n.UniqueStructuresBuilder(B.inputStructure);for(const F of w.structures)O.add(a(B,B.inputStructure,F,E));return O.getSelection()}}}function v(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=r.StructureSelection.UniqueBuilder(B.inputStructure),F=L=>O.add(L);return r.StructureSelection.forEach(w,(L,U)=>{B.pushInputStructure(L),r.StructureSelection.forEach(E(B),F),B.popInputStructure(),U%10===0&&B.throwIfTimedOut()}),O.getSelection()}}function b(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=E(B);if(r.StructureSelection.structureCount(O)===0)return r.StructureSelection.Empty(B.inputStructure);const F=r.StructureSelection.unionStructure(O),L=r.StructureSelection.UniqueBuilder(B.inputStructure);return r.StructureSelection.forEach(w,(U,q)=>{const N=(0,c.structureIntersect)(F,U);N.elementCount!==0&&L.add(N),q%50===0&&B.throwIfTimedOut()}),L.getSelection()}}function P(R,E){return function(B){const w=R(B);if(r.StructureSelection.structureCount(w)===0)return w;const O=E(B);if(r.StructureSelection.structureCount(O)===0)return w;const F=r.StructureSelection.unionStructure(O),L=r.StructureSelection.UniqueBuilder(B.inputStructure);return r.StructureSelection.forEach(w,(U,q)=>{const N=(0,c.structureSubtract)(U,F);N.elementCount!==0&&L.add(N),q%50===0&&B.throwIfTimedOut()}),L.getSelection()}}function C(R){return function(I){const B=r.StructureSelection.LinearBuilder(I.inputStructure);
15return B.add(r.StructureSelection.unionStructure(R(I))),B.getSelection()}}function l(R,E){return function(B){const w=R(B),O=new Map,F=[];B.pushCurrentElement(),r.StructureSelection.forEach(w,(U,q)=>{B.element.structure=U;for(const N of U.units){B.element.unit=N;const k=N.elements;for(let j=0,H=k.length;j<H;j++){B.element.element=k[j];const G=E(B);let z;O.has(G)?z=O.get(G):(z=o.UniqueArray.create(),O.set(G,z)),o.UniqueArray.add(z,q,q)}}F[q]=B.inputStructure.subsetBuilder(!0),q%10===0&&B.throwIfTimedOut()}),B.element.structure=B.inputStructure;for(const U of B.inputStructure.units){B.element.unit=U;const q=U.elements;for(let N=0,k=q.length;N<k;N++){B.element.element=q[N];const j=E(B);if(!O.has(j))continue;const H=O.get(j).array;for(let G=0,z=H.length;G<z;G++)F[H[G]].addToUnit(U.id,q[N])}}B.popCurrentElement();const L=r.StructureSelection.UniqueBuilder(B.inputStructure);for(const U of F)L.add(U.getStructure());return L.getSelection()}}function S({query:R,layerCount:E,wholeResidues:I,bondTest:B,fixedPoint:w}){const O=Math.max(E,0);return function(L){const U=r.StructureSelection.UniqueBuilder(L.inputStructure),q=R(L);return L.pushCurrentBond(),L.atomicBond.setTestFn(B),r.StructureSelection.forEach(q,(N,k)=>{let j=N;if(w)for(;;){const H=j.elementCount;if(j=T(L,I,j),j.elementCount===H)break}else for(let H=0;H<O;H++)j=T(L,I,j);U.add(j),k%10===0&&L.throwIfTimedOut()}),L.popCurrentBond(),U.getSelection()}}function T(R,E,I){const B=A(R,I);return E?_(R,R.inputStructure,B):B}function A(R,E){const I=R.inputStructure,B=I.interUnitBonds,w=new i.StructureUniqueSubsetBuilder(I),O=R.atomicBond;for(const F of E.units){if(F.kind!==t.Unit.Kind.Atomic){w.beginUnit(F.id);for(let H=0,G=F.elements.length;H<G;H++)w.addElement(F.elements[H]);w.commitUnit();continue}const L=I.unitMap.get(F.id),{offset:U,b:q,edgeProps:{flags:N,order:k,key:j}}=L.bonds;O.setStructure(I),O.a.unit=L,O.b.unit=L;for(let H=0,G=F.elements.length;H<G;H++){w.addToUnit(F.id,F.elements[H]);const z=e.SortedArray.indexOf(L.elements,F.elements[H]);for(let W=U[z],X=U[z+1];W<X;W++){const Y=q[W],K=L.elements[Y];e.SortedArray.has(F.elements,K)||w.has(F.id,K)||(O.aIndex=z,O.a.element=F.elements[H],O.bIndex=Y,O.b.element=K,O.type=N[W],O.order=k[W],O.key=j[W],O.test(R,!0)&&w.addToUnit(F.id,K))}}for(const H of B.getConnectedUnits(L.id)){const G=E.unitMap.get(H.unitB),z=I.unitMap.get(H.unitB);for(const W of H.connectedIndices)if(e.SortedArray.has(F.elements,L.elements[W]))for(const X of H.getEdges(W)){const Y=z.elements[X.indexB];G&&e.SortedArray.has(G.elements,Y)||w.has(H.unitB,Y)||(O.a.unit=L,O.aIndex=W,O.a.element=L.elements[W],O.b.unit=z,O.bIndex=X.indexB,O.b.element=Y,O.type=X.props.flag,O.order=X.props.order,O.key=X.props.key,O.test(R,!0)&&w.addToUnit(H.unitB,Y))}}}return w.getStructure()}function x({query:R,radius:E,includeWater:I}){const B=f.StructureProperties.entity.type;function w(O){return B(O)==="water"}return function(F){const L=r.StructureSelection.unionStructure(R(F)),U=_(F,F.inputStructure,a(F,F.inputStructure,L,{radius:E})),q=M(F.inputStructure),N=D(F.inputStructure),k=s.StructureElement.Location.create(U),j=new Map,H=new h.ResidueSet({checkOperator:!0});for(const W of U.units){if(W.kind!==t.Unit.Kind.Atomic)continue;k.unit=W;const{elements:X}=W,Y=e.Segmentation.transientSegments(W.model.atomicHierarchy.chainAtomSegments,X),K=e.Segmentation.transientSegments(W.model.atomicHierarchy.residueAtomSegments,X);for(;Y.hasNext;){const Q=Y.move();k.element=X[Q.start];const J=f.StructureProperties.chain.label_asym_id(k),ae=f.StructureProperties.unit.operator_name(k);if(q.has(J)){j.has(J)?(0,y.arraySetAdd)(j.get(J),ae):j.set(J,[ae]);continue}const te=f.StructureProperties.entity.type(k);if(!(te==="water"||te==="polymer"))for(K.setSegment(Q);K.hasNext;){const ne=K.move();k.element=X[ne.start],N.addComponent(h.ResidueSet.getEntryFromLocation(k),H)}}F.throwIfTimedOut()}const G=F.inputStructure.subsetBuilder(!0);for(const W of F.inputStructure.units){if(W.kind!==t.Unit.Kind.Atomic)continue;k.unit=W;const{elements:X}=W,Y=e.Segmentation.transientSegments(W.model.atomicHierarchy.chainAtomSegments,X),K=e.Segmentation.transientSegments(W.model.atomicHierarchy.residueAtomSegments,X);for(G.beginUnit(W.id);Y.hasNext;){const Q=Y.move();k.element=X[Q.start];const J=f.StructureProperties.chain.label_asym_id(k),ae=f.StructureProperties.unit.operator_name(k);if(j.has(J)&&j.get(J).indexOf(ae)>=0){G.addElementRange(X,Q.start,Q.end);continue}if(H.hasLabelAsymId(J)&&f.StructureProperties.entity.type(k)!=="water")for(K.setSegment(Q);
15K.hasNext;){const te=K.move();k.element=X[te.start],H.has(k)&&G.addElementRange(X,te.start,te.end)}}G.commitUnit(),F.throwIfTimedOut()}const z=(0,c.structureUnion)(F.inputStructure,[G.getStructure(),L]);if(I){const W=new i.StructureUniqueSubsetBuilder(F.inputStructure),X=F.inputStructure.lookup3d;for(const Y of z.units){const K=Y.conformation,Q=Y.elements;for(let J=0,ae=Q.length;J<ae;J++){const te=Q[J];X.findIntoBuilderIf(K.x(te),K.y(te),K.z(te),E,W,w),W.addToUnit(Y.id,te)}F.throwIfTimedOut()}return r.StructureSelection.Sequence(F.inputStructure,[W.getStructure()])}else return r.StructureSelection.Sequence(F.inputStructure,[z])}}function M(R){var E;const I=R.models[0],B=new Set;if(((E=I.sourceData)===null||E===void 0?void 0:E.kind)!=="mmCIF")return B;const{_rowCount:w,asym_id:O}=I.sourceData.data.db.pdbx_molecule;for(let F=0;F<w;F++)B.add(O.value(F));return B}function D(R){var E,I,B;const w=R.models[0],O=new V;if(((E=w.sourceData)===null||E===void 0?void 0:E.kind)!=="mmCIF")return O;const F=w.sourceData.data.db.struct_conn,{conn_type_id:L}=F,{ptnr1_label_asym_id:U,ptnr1_label_comp_id:q,ptnr1_label_seq_id:N,ptnr1_symmetry:k,pdbx_ptnr1_label_alt_id:j,pdbx_ptnr1_PDB_ins_code:H}=F,{ptnr2_label_asym_id:G,ptnr2_label_comp_id:z,ptnr2_label_seq_id:W,ptnr2_symmetry:X,pdbx_ptnr2_label_alt_id:Y,pdbx_ptnr2_PDB_ins_code:K}=F;for(let Q=0;Q<F._rowCount;Q++){const J=L.value(Q);if(J!=="covale"&&J!=="metalc")continue;const ae={label_asym_id:U.value(Q),label_comp_id:q.value(Q),label_seq_id:N.value(Q),label_alt_id:j.value(Q),ins_code:H.value(Q),operator_name:(I=k.value(Q))!==null&&I!==void 0?I:"1_555"},te={label_asym_id:G.value(Q),label_comp_id:z.value(Q),label_seq_id:W.value(Q),label_alt_id:Y.value(Q),ins_code:K.value(Q),operator_name:(B=X.value(Q))!==null&&B!==void 0?B:"1_555"};O.addEdge(ae,te)}return O}class V{constructor(){this.vertices=new Map,this.edges=new Map}addVertex(E,I){this.vertices.has(I)||(this.vertices.set(I,E),this.edges.set(I,[]))}addEdge(E,I){const B=h.ResidueSet.getLabel(E),w=h.ResidueSet.getLabel(I);this.addVertex(E,B),this.addVertex(I,w),(0,y.arraySetAdd)(this.edges.get(B),w),(0,y.arraySetAdd)(this.edges.get(w),B)}addComponent(E,I){const B=h.ResidueSet.getLabel(E);if(!this.vertices.has(B)){I.add(E);return}const w=new Set,O=new Set,F=[B];for(O.add(B),I.add(E);F.length>0;){const L=F.pop();w.add(L);const U=this.vertices.get(L);for(const q of this.edges.get(L)){if(w.has(q)||(F.push(q),O.has(q)))continue;O.add(q);const N=this.vertices.get(q);U.operator_name===N.operator_name?I.add({...N,operator_name:E.operator_name}):I.add(N)}}}}return ki}var Aa={},Lp={},XR;function ZJ(){if(XR)return Lp;XR=1,Object.defineProperty(Lp,"__esModule",{value:!0}),Lp.checkStructureMinMaxDistance=t,Lp.checkStructureMaxRadiusDistance=r;const e=Ge();function t(c,o,s,h,f,y){return o.elementCount===0||s.elementCount===0?!0:o.elementCount<=s.elementCount?n.check(c,o,s,h,f,y):n.check(c,s,o,h,f,y)}function r(c,o,s,h,f){return o.elementCount===0||s.elementCount===0?!0:o.elementCount<=s.elementCount?i.check(c,o,s,h,f):i.check(c,s,o,h,f)}var n;(function(c){let o;(function(g){g[g.BelowMin=0]="BelowMin",g[g.WithinMax=1]="WithinMax",g[g.Miss=2]="Miss"})(o||(o={}));const s=(0,e.Vec3)();function h(g,a,d,p,u,m,v){const{elements:b,conformation:P}=a,C=s;g.element.unit=a;let l=!1;for(let S=0,T=b.length;S<T;S++){const A=b[S];g.element.element=A;const x=Math.max(0,e.Vec3.distance(d,P.position(A,C))-p-v(g));if(x<u)return o.BelowMin;x<m&&(l=!0)}return l?o.WithinMax:o.Miss}function f(g,a,d,p,u,m,v){const{units:b}=a;let P=!1;for(let C=0,l=b.length;C<l;C++){const S=h(g,b[C],d,p,u,m,v);if(S===o.BelowMin)return o.BelowMin;S===o.WithinMax&&(P=!0)}return P?o.WithinMax:o.Miss}const y=(0,e.Vec3)();function _(g,a,d,p,u,m){if(a.elementCount===0||d.elementCount===0)return 0;const{units:v}=a;let b=!1;g.element.structure=a;for(let P=0,C=v.length;P<C;P++){const l=v[P],{elements:S,conformation:T}=l;g.element.unit=l;for(let A=0,x=S.length;A<x;A++){const M=S[A];g.element.element=M;const D=f(g,d,T.position(M,y),m(g),p,u,m);if(D===o.BelowMin)return!1;D===o.WithinMax&&(b=!0)}}return b}c.check=_})(n||(n={}));var i;return(function(c){const o=(0,e.Vec3)();function s(_,g,a,d,p,u){const{elements:m,conformation:v}=g,b=o;_.element.unit=g;for(let P=0,C=m.length;P<C;P++){const l=m[P];if(_.element.element=l,Math.max(0,e.Vec3.distance(a,v.position(l,b))-d-u(_))<=p)return!0}return!1}function h(_,g,a,d,p,u){const{units:m}=g;
15for(let v=0,b=m.length;v<b;v++)if(s(_,m[v],a,d,p,u))return!0;return!1}const f=(0,e.Vec3)();function y(_,g,a,d,p){if(g.elementCount===0||a.elementCount===0)return 0;const{units:u}=g;_.element.structure=g;for(let m=0,v=u.length;m<v;m++){const b=u[m];_.element.unit=b;const{elements:P,conformation:C}=b;for(let l=0,S=P.length;l<S;l++){const T=P[l];if(_.element.element=T,h(_,a,C.position(T,f),p(_),d,p))return!0}}return!1}c.check=y})(i||(i={})),Lp}var KR;function oX(){if(KR)return Aa;KR=1,Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.pick=h,Aa.first=f,Aa.getCurrentStructureProperties=y,Aa.withSameAtomProperties=g,Aa.areIntersectedBy=a,Aa.within=d,Aa.isConnectedTo=b;const e=Hi(),t=jr(),r=za(),n=If(),i=Ge(),c=ZJ(),o=Wa(),s=at();function h(P,C){return l=>{const S=P(l),T=r.StructureSelection.LinearBuilder(l.inputStructure);return l.pushCurrentElement(),r.StructureSelection.forEach(S,(A,x)=>{l.currentStructure=A,C(l)&&T.add(A),x%100&&l.throwIfTimedOut()}),l.popCurrentStructure(),T.getSelection()}}function f(P){return C=>{const l=P(C),S=r.StructureSelection.LinearBuilder(C.inputStructure);if(l.kind==="singletons"){if(l.structure.elementCount>0){const T=l.structure.units[0],A=o.Structure.create([T.getChild(s.SortedArray.ofSingleton(T.elements[0]))],{parent:C.inputStructure});S.add(A)}}else l.structures.length>0&&S.add(l.structures[0]);return S.getSelection()}}function y(P,C,l){const{units:S}=P.currentStructure,T=P.pushCurrentElement();T.structure=P.currentStructure;for(const A of S){T.unit=A;const x=A.elements,M=C;if(M){for(let D=0,V=x.length;D<V;D++)T.element=x[D],l.add(M(P));P.throwIfTimedOut()}}return P.popCurrentElement(),l}function _(P,C,l){const S=new Set,T=C(P);return P.pushCurrentElement(),r.StructureSelection.forEach(T,(A,x)=>{P.currentStructure=A,y(P,l,S),x%10&&P.throwIfTimedOut()}),P.popCurrentElement(),S}function g(P,C,l){return S=>{const T=P(S),A=_(S,C,l),x=r.StructureSelection.LinearBuilder(S.inputStructure);return S.pushCurrentStructure(),r.StructureSelection.forEach(T,(M,D)=>{S.currentStructure=M;const V=y(S,l,new Set);e.SetUtils.isSuperset(A,V)&&x.add(M),D%10&&S.throwIfTimedOut()}),S.popCurrentStructure(),x.getSelection()}}function a(P,C){return l=>{const S=r.StructureSelection.unionStructure(C(l)),T=r.StructureSelection.LinearBuilder(l.inputStructure);return r.StructureSelection.forEach(P(l),(A,x)=>{(0,n.structureAreIntersecting)(S,A)&&T.add(A),x%10&&l.throwIfTimedOut()}),T.getSelection()}}function d(P){return C=>{const l={queryCtx:C,selection:P.query(C),target:P.target(C),maxRadius:P.maxRadius,minRadius:P.minRadius?Math.max(0,P.minRadius):0,elementRadius:P.elementRadius,invert:!!P.invert};return l.minRadius===0&&typeof P.minRadius>"u"?p(l):l.minRadius===0?u(l):m(l)}}function p({queryCtx:P,selection:C,target:l,maxRadius:S,invert:T}){const A=r.StructureSelection.unionStructure(l).lookup3d,x=r.StructureSelection.LinearBuilder(P.inputStructure),M=i.Vec3.zero();return r.StructureSelection.forEach(C,(D,V)=>{const{units:R}=D;let E=!1;for(let I=0,B=R.length;I<B;I++){const w=R[I],{elements:O,conformation:F}=w;for(let L=0,U=O.length;L<U;L++){const q=O[L];if(F.position(q,M),A.check(M[0],M[1],M[2],S+F.r(q))){E=!0;break}}if(E)break}T&&(E=!E),E&&x.add(D),V%10===0&&P.throwIfTimedOut()}),x.getSelection()}function u({queryCtx:P,selection:C,target:l,maxRadius:S,invert:T,elementRadius:A}){const x=r.StructureSelection.unionStructure(l),M=r.StructureSelection.LinearBuilder(P.inputStructure);return P.pushCurrentElement(),r.StructureSelection.forEach(C,(D,V)=>{let R=(0,c.checkStructureMaxRadiusDistance)(P,x,D,S,A);T&&(R=!R),R&&M.add(D),V%10===0&&P.throwIfTimedOut()}),P.popCurrentElement(),M.getSelection()}function m({queryCtx:P,selection:C,target:l,minRadius:S,maxRadius:T,invert:A,elementRadius:x}){const M=r.StructureSelection.unionStructure(l),D=r.StructureSelection.LinearBuilder(P.inputStructure);return P.pushCurrentElement(),r.StructureSelection.forEach(C,(V,R)=>{let E=(0,c.checkStructureMinMaxDistance)(P,M,V,S,T,x);A&&(E=!E),E&&D.add(V),R%10===0&&P.throwIfTimedOut()}),P.popCurrentElement(),D.getSelection()}function v(P,C){const{queryCtx:l,input:S,target:T,disjunct:A}=P,x=l.atomicBond,M=S.interUnitBonds;x.setStructure(S);for(const D of C.units){if(!t.Unit.isAtomic(D))continue;const V=S.unitMap.get(D.id),{offset:R,b:E,edgeProps:{flags:I,order:B,key:w}}=V.bonds,O=M.getConnectedUnits(D.id),F=O.length,L=D.elements,U=V.elements;for(let q=0,N=L.length;q<N;q++){const k=s.SortedArray.indexOf(U,L[q]);x.a.unit=V,x.b.unit=V;for(let j=R[k],H=R[k+1];j<H;j++)if(x.b.element=V.elements[E[j]],!(A&&s.SortedArray.has(D.elements,x.b.element))&&T.hasElement(x.b)&&(x.aIndex=k,x.a.element=L[q],x.bIndex=E[j],x.type=I[j],x.order=B[j],x.key=w[j],x.test(l,!0)))return!0;for(let j=0;j<F;j++){const H=O[j],G=S.unitMap.get(H.unitB),z=G.elements,W=H.getEdges(k);for(let X=0,Y=W.length;X<Y;X++){const K=W[X];if(x.b.unit=G,x.b.element=z[K.indexB],!!T.hasElement(x.b)&&!(A&&C.hasElement(x.b))&&(x.a.unit=V,x.aIndex=k,x.a.element=L[q],x.bIndex=K.indexB,x.type=K.props.flag,x.order=K.props.order,x.key=K.props.key,x.test(l,!0)))return!0}}}}return!1}function b({query:P,target:C,disjunct:l,invert:S,bondTest:T}){return A=>{const x=C(A);if(r.StructureSelection.isEmpty(x))return x;const M=P(A);if(r.StructureSelection.isEmpty(M))return M;const D={queryCtx:A,input:A.inputStructure,disjunct:l,target:r.StructureSelection.unionStru
15cture(x)},V=r.StructureSelection.LinearBuilder(A.inputStructure);return A.pushCurrentBond(),A.atomicBond.setTestFn(T),r.StructureSelection.forEach(M,(R,E)=>{(v(D,R)||S)&&V.add(R),E%5===0&&A.throwIfTimedOut()}),A.popCurrentBond(),V.getSelection()}}return Aa}var Np={},YR;function JJ(){if(YR)return Np;YR=1,Object.defineProperty(Np,"__esModule",{value:!0}),Np.merge=i,Np.intersect=c;const e=za(),t=iX(),r=ha(),n=jr();function i(o){return o.length===0?t.none:o.length===1?o[0]:s=>{const h=e.StructureSelection.UniqueBuilder(s.inputStructure);for(let f=0;f<o.length;f++)e.StructureSelection.forEach(o[f](s),(y,_)=>{h.add(y),f%100&&s.throwIfTimedOut()});return h.getSelection()}}function c(o){return o.length===0?t.none:o.length===1?o[0]:s=>{const h=[];for(let a=0;a<o.length;a++)h.push(o[a](s));let f=0,y=e.StructureSelection.structureCount(h[0]);for(let a=1;a<h.length;a++){const d=e.StructureSelection.structureCount(h[a]);d<y&&(f=a,y=d)}s.throwIfTimedOut();const _=(0,r.HashSet)(a=>a.hashCode,n.Structure.areUnitIdsAndIndicesEqual);e.StructureSelection.forEach(h[f],a=>_.add(a));const g=e.StructureSelection.UniqueBuilder(s.inputStructure);for(let a=0;a<h.length;a++)a!==f&&(e.StructureSelection.forEach(h[a],d=>{_.has(d)&&g.add(d)}),s.throwIfTimedOut());return g.getSelection()}}return Np}var od={},QR;function eee(){if(QR)return od;QR=1,Object.defineProperty(od,"__esModule",{value:!0}),od.atomCount=r,od.countQuery=n,od.propertySet=i;const e=za(),t=oX();function r(c){return c.currentStructure.elementCount}function n(c){return o=>{const s=c(o);return e.StructureSelection.structureCount(s)}}function i(c){return o=>{const s=new Set;return(0,t.getCurrentStructureProperties)(o,c,s)}}return od}var qp={},ZR;function tee(){if(ZR)return qp;ZR=1,Object.defineProperty(qp,"__esModule",{value:!0}),qp.Predicates=void 0;var e;return(function(t){function r(a){return!!a&&!!a.has}function n(a,d){return p=>a(p)===d}t.eq=n;function i(a,d){return p=>a(p)<d}t.lt=i;function c(a,d){return p=>a(p)<=d}t.lte=c;function o(a,d){return p=>a(p)>d}t.gt=o;function s(a,d){return p=>a(p)>=d}t.gte=s;function h(a){return!0}function f(a){return!1}function y(a,d){if(r(d))return p=>d.has(a(p));{if(d.length===0)return f;const p=new Set;for(let u=0;u<d.length;u++)p.add(d[u]);return u=>p.has(a(u))}}t.inSet=y;function _(...a){switch(a.length){case 0:return h;case 1:return a[0];case 2:{const d=a[0],p=a[1];return u=>d(u)&&p(u)}case 3:{const d=a[0],p=a[1],u=a[2];return m=>d(m)&&p(m)&&u(m)}case 4:{const d=a[0],p=a[1],u=a[2],m=a[3];return v=>d(v)&&p(v)&&u(v)&&m(v)}case 5:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4];return b=>d(b)&&p(b)&&u(b)&&m(b)&&v(b)}case 6:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5];return P=>d(P)&&p(P)&&u(P)&&m(P)&&v(P)&&b(P)}default:{const d=a.length;return p=>{for(let u=0;u<d;u++)if(!a[u])return!1;return!0}}}}t.and=_;function g(...a){switch(a.length){case 0:return f;case 1:return a[0];case 2:{const d=a[0],p=a[1];return u=>d(u)||p(u)}case 3:{const d=a[0],p=a[1],u=a[2];return m=>d(m)||p(m)||u(m)}case 4:{const d=a[0],p=a[1],u=a[2],m=a[3];return v=>d(v)||p(v)||u(v)||m(v)}case 5:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4];return b=>d(b)||p(b)||u(b)||m(b)||v(b)}case 6:{const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5];return P=>d(P)||p(P)||u(P)||m(P)||v(P)||b(P)}default:{const d=a.length;return p=>{for(let u=0;u<d;u++)if(a[u])return!0;return!1}}}}t.or=g})(e||(qp.Predicates=e={})),qp}var JR;function RT(){return JR||(JR=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureQuery=e.StructureSelection=e.Queries=void 0;const t=At,r=za();Object.defineProperty(e,"StructureSelection",{enumerable:!0,get:function(){return r.StructureSelection}});const n=VJ();Object.defineProperty(e,"StructureQuery",{enumerable:!0,get:function(){return n.StructureQuery}}),t.__exportStar(rX(),e);const i=t.__importStar(iX()),c=t.__importStar(QJ()),o=t.__importStar(oX()),s=t.__importStar(JJ()),h=t.__importStar(iI()),f=t.__importStar(eee()),y=tee();e.Queries={generators:i,filters:o,modifiers:c,combinators:s,pred:y.Predicates,internal:h,atomset:f}})(ux)),ux}var eO;function OT(){if(eO)return xp;eO=1,Object.defineProperty(xp,"__esModule",{value:!0}),xp.StructureSymmetry=void 0;const e=at(),t=_t(),r=Dn(),n=rt(),i=Ge(),c=nt(),o=Al(),s=RT(),h=Wa(),f=Zn(),y=Qn(),_=Tl();var g;(function(C){function l(I,B){return c.Task.create("Build Assembly",async w=>{const O=I.models;if(O.length!==1)throw new Error("Can only build assemblies from structures based on 1 model.");const F=o.Symmetry.findAssembly(O[0],B);if(!F)throw new Error(`Assembly '${B}' is not defined.`);const L=n.SymmetryOperator.create(F.id,i.Mat4.identity(),{assembly:{id:F.id,operId:0,operList:[]}}),U=h.Structure.Builder({coordinateSystem:L,label:I.label,dynamicBonds:I.dynamicBonds}),q=new s.QueryContext(I);for(const N of F.operatorGroups){const k=N.selector(q);if(s.StructureSelection.structureCount(k)===0)continue;const{units:j}
15=s.StructureSelection.unionStructure(k);for(const H of N.operators)for(const G of j)U.addWithOperator(G,H)}return U.getStructure()})}C.buildAssembly=l;function S(I,B,w){return c.Task.create("Build Symmetry Assembly",async O=>{const F=I.models;if(F.length!==1)throw new Error("Can only build symmetry assemblies from structures based on 1 model.");const L=(0,i.Vec3)(),U=h.Structure.Builder({label:I.label,representativeModel:F[0],dynamicBonds:I.dynamicBonds}),q=new s.QueryContext(I);for(const N of B){const j=a(N.asymIds)(q);if(s.StructureSelection.structureCount(j)===0)continue;const{units:H}=s.StructureSelection.unionStructure(j);for(const{index:G,shift:[z,W,X]}of N.operators){const Y=d(w,G,z,W,X,L);for(const K of H)for(const Q of Y)U.addWithOperator(K,Q)}}return U.getStructure()})}C.buildSymmetryAssembly=S;function T(I,B){return c.Task.create("Find Symmetry Mates",w=>P(w,I,B))}C.builderSymmetryMates=T;function A(I,B,w){return c.Task.create("Build Symmetry",O=>b(O,I,B,w))}C.buildSymmetryRange=A;function x(I){return c.Task.create("Build NCS",B=>v(B,I))}C.buildNcs=x;function M(I,B){return I.invariantId===B.invariantId&&I.model.id===B.model.id&&e.SortedArray.areEqual(I.elements,B.elements)}C.areUnitsEquivalent=M;function D(){return(0,t.EquivalenceClasses)(f.Unit.hashUnit,M)}C.UnitEquivalenceBuilder=D;function V(I){const B=D();for(const O of I.units)B.add(O.id,O);const w=[];for(const O of B.groups)w.push(f.Unit.SymmetryGroup(O.map(F=>I.unitMap.get(F))));return w}C.computeTransformGroups=V;function R(I){if(!I.child)return V(I);const B=I.child.unitSymmetryGroups,w=new Map;for(let L=0;L<B.length;L++)for(const U of B[L].units)w.set(U.id,L);const O=(0,t.EquivalenceClasses)(L=>{var U;return(0,r.hash2)(f.Unit.hashUnit(L),(U=w.get(L.id))!==null&&U!==void 0?U:-1)},(L,U)=>M(L,U)&&w.get(L.id)===w.get(U.id));for(const L of I.units)O.add(L.id,L);const F=[];for(const L of O.groups)F.push(f.Unit.SymmetryGroup(L.map(U=>I.unitMap.get(U))));return F}C.computeChildAwareTransformGroups=R;function E(I,B){if(I.length!==B.length)return!1;for(let w=0,O=I.length;w<O;++w){const F=I[w].units,L=B[w].units;if(F.length!==L.length||I[w].hashCode!==B[w].hashCode)return!1;for(let U=0,q=F.length;U<q;U++)if(F[U].conformation!==L[U].conformation)return!1;if(!e.SortedArray.areEqual(I[w].elements,B[w].elements))return!1}return!0}C.areTransformGroupsEquivalent=E})(g||(xp.StructureSymmetry=g={}));function a(C){return s.Queries.generators.atoms({chainTest:s.Queries.pred.and(s.Queries.pred.eq(l=>_.StructureProperties.unit.operator_name(l.element),n.SymmetryOperator.DefaultName),s.Queries.pred.inSet(l=>_.StructureProperties.chain.label_asym_id(l.element),C))})}function d(C,l,S,T,A,x){const{spacegroup:M,ncsOperators:D}=C,V=[],{toFractional:R}=M.cell,E=i.Vec3.transformMat4((0,i.Vec3)(),x,R),I=n.Spacegroup.getSymmetryOperatorRef(M,l,S,T,A,E);if(D&&D.length)for(let B=0,w=D.length;B<w;++B){const O=D[B],F=i.Mat4.mul((0,i.Mat4)(),I.matrix,O.matrix),L=n.SymmetryOperator.create(`${I.name} ${O.name}`,F,{assembly:I.assembly,ncsId:O.ncsId,hkl:I.hkl,spgrOp:I.spgrOp});V.push(L)}else V.push(I);return V}function p(C,l,S,T){const{spacegroup:A,ncsOperators:x}=C,M=x&&x.length||0,D=[];!M&&l[0]<=0&&S[0]>=0&&l[1]<=0&&S[1]>=0&&l[2]<=0&&S[2]>=0&&(D[0]=n.Spacegroup.getSymmetryOperator(A,0,0,0,0));for(let V=0;V<A.operators.length;V++)for(let R=l[0];R<=S[0];R++)for(let E=l[1];E<=S[1];E++)for(let I=l[2];I<=S[2];I++)!M&&V===0&&R===0&&E===0&&I===0||D.push(...d(C,V,R,E,I,T));return D}function u(C,l){return C._operators_333&&i.Vec3.equals(l,C._operators_333.ref)||(C._operators_333={ref:i.Vec3.clone(l),operators:p(C,i.Vec3.create(-3,-3,-3),i.Vec3.create(3,3,3),l)}),C._operators_333.operators}function m(C,l){const S=h.Structure.Builder({label:C.label,dynamicBonds:C.dynamicBonds}),{units:T}=C;for(const A of l)for(const x of T)S.addWithOperator(x,A);return S.getStructure()}async function v(C,l){const S=l.models;if(S.length!==1)throw new Error("Can only build NCS from structures based on 1 model.");const T=y.ModelSymmetry.Provider.get(S[0]);if(!T)return l;const A=T.ncsOperators;return!A||!A.length?l:m(l,A)}async function b(C,l,S,T){const A=l.models;if(A.length!==1)throw new Error("Can only build symmetries from structures based on 1 model.");const x=y.ModelSymmetry.Provider.get(A[0]);if(!x)return l;const{spacegroup:M}=x;if(n.SpacegroupCell.isZero(M.cell))return l;const D=o.Model.getCenter(A[0]),V=p(x,S,T,D);return m(l,V)}async function P(C,l,S){const T=l.models;if(T.length!==1)throw new Error("Can only build symmetries from structures based on 1 model.");const A=y.ModelSymmetry.Provider.get(T[0]);if(!A)return l;const{spacegroup:x}=A;if(n.SpacegroupCell.isZero(x.cell))return l;C.shouldUpdate&&await C.update("Initialing...");const M=o.Model.getCenter(T[0]),D=u(A,M),V=l.lookup3d,R=new Set;function E(O,F){return`${O.invariantId}|${F.name}`}const I=h.Structure.Builder({label:l.label,dynamicBonds:l.dynamicBonds}),{units:B}=l,w=i.Vec3.zero();for(const O of D){for(const F of B){const L=F.lookup3d.boundary.sphere;i.Vec3.transformMat4(w,L.center,O.matrix);const U=V.findUnitIndices(w[0],w[1],w[2],L.radius+S);for(let q=0,N=U.count;q<N;q++){if(!B[U.indices[q]].lookup3d.check(w[0],w[1],w[2],L.radius+S))continue;const j=E(F,O);R.has(j)||(I.addWithOperator(F,O),R.add(j))}}C.shouldUpdate&&await C.update("Building symmetry...")}
15return I.getStructure()}return xp}var tO;function ree(){if(tO)return Tp;tO=1,Object.defineProperty(Tp,"__esModule",{value:!0}),Tp.StructureSubsetBuilder=void 0;const e=at(),t=_t(),r=OT(),n=Wa();class i{addToUnit(o,s){const h=this.unitMap.get(o);h?h[h.length]=s:(this.unitMap.set(o,[s]),this.ids[this.ids.length]=o),this.elementCount++}beginUnit(o){this.parentId=o,this.currentUnit=this.currentUnit.length>0?[]:this.currentUnit}addElement(o){this.currentUnit[this.currentUnit.length]=o,this.elementCount++}addElementRange(o,s,h){for(let f=s;f<h;f++)this.currentUnit[this.currentUnit.length]=o[f],this.elementCount++}commitUnit(){this.currentUnit.length!==0&&(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}setUnit(o,s){this.ids[this.ids.length]=o,this.unitMap.set(o,s),this.elementCount+=s.length}_getStructure(o){if(this.isEmpty)return n.Structure.Empty;const s=[];(0,t.sortArray)(this.ids);const h=r.StructureSymmetry.UnitEquivalenceBuilder();for(let f=0,y=this.ids.length;f<y;f++){const _=this.ids[f],g=this.parent.unitMap.get(_);let a=this.unitMap.get(_),d=!1;o&&(this.isSorted||(0,t.sortArray)(a),a=e.SortedArray.deduplicate(e.SortedArray.ofSortedArray(this.currentUnit)),d=!0);const p=a.length;if(a.length===g.elements.length){s[s.length]=g,h.add(g.id,g);continue}!this.isSorted&&!d&&p>1&&(0,t.sortArray)(a);let u=g.getChild(e.SortedArray.ofSortedArray(a));const m=h.add(u.id,u);u!==m&&(u=m.applyOperator(u.id,u.conformation.operator,!0)),s[s.length]=u}return n.Structure.create(s,{parent:this.parent})}getStructure(){return this._getStructure(!1)}getStructureDeduplicate(){return this._getStructure(!0)}setSingletonLocation(o){const s=this.ids[0];o.unit=this.parent.unitMap.get(s),o.element=this.unitMap.get(s)[0]}get isEmpty(){return this.elementCount===0}constructor(o,s){this.parent=o,this.isSorted=s,this.ids=[],this.unitMap=e.IntMap.Mutable(),this.parentId=-1,this.currentUnit=[],this.elementCount=0}}return Tp.StructureSubsetBuilder=i,Tp}var OC={},sd={},rO;function nee(){if(rO)return sd;rO=1,Object.defineProperty(sd,"__esModule",{value:!0}),sd.CombinationIterator=void 0,sd.combinations=i;function e(c,o){let s=1;for(;o--;)s*=c--;return s}function t(c,o){return o>c?0:e(c,o)/e(o,o)}function r(c){const o=c&-c,s=c+o,f=((s&-s)/o>>1)-1;return s|f}class n{move(){if(this.hasNext){let o=0,s=0,h=this.index;for(;h;h>>>=1,o++)h&1&&(this.value[s++]=this.array[o]);this.index=r(this.index),this.hasNext=this.index<this.maxIndex}return this.value}constructor(o,s){this.array=o,this.hasNext=!1,this.index=(1<<s)-1,this.size=t(o.length,s),this.maxIndex=1<<o.length,this.value=new Array(s),this.hasNext=s>0&&s<=o.length}}sd.CombinationIterator=n;function i(c,o){const s=[],h=new n(c,o);for(;h.hasNext;)s.push(h.move().slice());return s}return sd}var Up={},nO;function iee(){if(nO)return Up;nO=1,Object.defineProperty(Up,"__esModule",{value:!0}),Up.EmptyCarbohydrates=void 0;const e=[];return Up.EmptyCarbohydrates={links:e,terminalLinks:e,elements:e,partialElements:e,getElementIndices:()=>e,getLinkIndices:()=>e,getTerminalLinkIndices:()=>e},Up}var iO;function aee(){if(iO)return OC;iO=1,Object.defineProperty(OC,"__esModule",{value:!0}),OC.computeCarbohydrates=C;const e=at(),t=nee(),r=is(),n=Ge(),i=_l(),c=Vt(),o=dt(),s=Sl(),h=Zn(),f=iee(),y=eI(),_=_t(),g=(0,o.ElementSymbol)("C"),a=(0,o.ElementSymbol)("O"),d=[y.UnitRing.elementFingerprint([g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,g,a]),y.UnitRing.elementFingerprint([g,g,g,g,g,g,a])];function p(S,T){let A=-1,x=-1,M=-1,D=-1;const{elements:V}=S,{type_symbol:R,label_atom_id:E}=S.model.atomicHierarchy.atoms,{b:I,offset:B}=S.bonds;for(let w=0,O=T.length;w<O;++w){const F=V[T[w]];if(R.value(F)!==g)continue;let L=0,U=0;for(let q=B[T[w]],N=B[T[w]+1];q<N;++q){const k=V[I[q]],j=R.value(k);j===a?++L:j===g&&++U}if(L===2){A=F;break}else L===1&&U===1?x=F:E.value(F).startsWith("C1")?M=F:D=F}return A!==-1?A:x!==-1?x:M!==-1?M:D!==-1?D:V[T[0]]}function u(S,T){const{elements:A}=S,{label_alt_id:x}=S.model.atomicHierarchy.atoms;return x.value(A[T])}function m(S,T,A,x){const M=T.conformation;return n.Vec3.normalize(S,n.Vec3.sub(S,x,M.position(A,S))),S}function v(S,T){const{elements:A}=S,{label_atom_id:x}=S.model.atomicHierarchy.atoms;return x.value(A[T])}function b(S,T){if(!T||!T.length)return;const{unit:A,all:x}=S,M=new Set,D=(0,t.combinations)((0,c.fillSerial)(new Array(T.length)),2);for(let V=0,R=D.length;V<R;++V){const E=D[V],I=x[T[E[0]]],B=x[T[E[1]]];e.SortedArray.areIntersecting(I,B)&&y.UnitRing.getAltId(A,I)===y.UnitRing.getAltId(A,B)&&(M.add(T[E[0]]),M.add(T[E[1]]))}if(M.size){const V=[];for(let R=0,E=T.length;R<E;++R)M.has(T[R])||V.push(T[R]);return V}else return T}function P(S,T){return T.properties.saccharideComponentMap.get(S)}function C(S){if(S.models.reduce((O,F)=>O+F.properties.saccharideComponentMap.size,0)===0)return f.EmptyCarbohydrates;const T=[],A=[],x=[],M=[],D=new Map;function V(O,F,L){return`${O}|${F}|${L}`}function R(O,F){D.has(O)?D.get(O).push(F):D.set(O,[F])}function E(O,F){n.Vec3.sub(x[O].geometry.direction,x[F].geometry.center,x[O].geometry.center),n.Vec3.normalize(x[O].geometry.direction,x[O].geometry.direction)}const I=(0,n.Vec3)();function B(O,F,L){const U=L.conformation,q=x[O].geometry;n.Vec3.sub(q.direction,U.position(L.elements[F],I),q.center),n.Vec3.normalize(q.direction,q.direction)}for(let O=0,F=S.units.length;O<F;++O){const L=S.units[O];if(!h.Unit.isAtomic(L))continue;const{model:U,rings:q}=L,{chainAtomSegments:N,residueAtomSegments:k,atoms:j}=U.atomicHierarchy,{label_comp_id:H}=j,G=e.Segmentation.transientSegments(N,L.elements),z=e.Segmentation.transientSegments(k,L.elements);let W;for(;G.hasNext;)for(z.setSegment(G.move());z.hasNext;){const{index:X}=z.move(),Y=P(H.value(k.offsets[X]),U);if(!Y)continue;W||(W=y.UnitRings.byFingerprintAndResidue(q,d));const K=b(q,W.get(X));if(!K||!K.length){M.push({unit:L,residueIndex:X,component:Y});continue}const Q=[];for(let ae=0,te=K.length;ae<te;++ae){const ne=q.all[K[ae]],$=p(L,ne),ie=i.PrincipalAxes.calculateMomentsAxes((0,s.getPositions)(L,ne)),Z=i.PrincipalAxes.calculateNormalizedAxes(ie),re=n.Vec3.copy((0,n.Vec3)(),Z.origin),oe=n.Vec3.copy((0,n.Vec3)(),Z.dirC),ce=m((0,n.Vec3)(),L,$,re);n.Vec3.orthogonalize(ce,oe,ce);const ue=y.UnitRing.getAltId(L,ne),pe=x.length;Q.push(pe),R(V(X,L.id,ue),pe),ue&&R(V(X,L.id,""),pe),x.push({geometry:{center:re,normal:oe,direction:ce},component:Y,ringIndex:K[ae],altId:ue,unit:L,residueIndex:X})}const J=(0,t.combinations)((0,c.fillSerial)(new Array(K.length)),2);for(let ae=0,te=J.length;ae<te;++ae){const ne=J[ae],$=q.all[K[ne[0]]],ie=q.all[K[ne[1]]];if(r.IntAdjacencyGraph.areVertexSetsConnected(L.bonds,$,ie,3)){const Z=Q[ne[0]],re=Q[ne[1]];x[Z].altId===x[re].altId&&(E(Z,re),E(re,Z),T.push({carbohydrateIndexA:Z,carbohydrateIndexB:re}),T.push({carbohydrateIndexA:re,carbohydrateIndexB:Z}))}}}}function w(O,F){return D.get(V(O.getResidueIndex(F),O.id,u(O,F)))||[]}for(let O=0,F=x.length;O<F;++O){const L=x[O],{unit:U}=L;for(let q=O+1;q<F;++q){const N=x[q];if(U!==N.unit||L.residueIndex===N.residueIndex)continue;
15const k=U.rings.all[L.ringIndex],j=U.rings.all[N.ringIndex];r.IntAdjacencyGraph.areVertexSetsConnected(U.bonds,k,j,3)&&(E(O,q),E(q,O),T.push({carbohydrateIndexA:O,carbohydrateIndexB:q}),T.push({carbohydrateIndexA:q,carbohydrateIndexB:O}))}}for(let O=0,F=S.units.length;O<F;++O){const L=S.units[O];h.Unit.isAtomic(L)&&S.interUnitBonds.getConnectedUnits(L.id).forEach(U=>{U.connectedIndices.forEach(q=>{U.getEdges(q).forEach(({props:N,indexB:k})=>{if(!o.BondType.isCovalent(N.flag))return;const j=S.unitMap.get(U.unitA),H=S.unitMap.get(U.unitB),G=w(j,q),z=w(H,k);if(G.length>0&&z.length>0){const W=G.length,X=z.length;for(let Y=0,K=Math.max(W,X);Y<K;++Y){const Q=G[Math.min(Y,W-1)],J=z[Math.min(Y,X-1)],ae=v(j,q);(ae.startsWith("O1")||ae.startsWith("C1"))&&E(Q,J),T.push({carbohydrateIndexA:Q,carbohydrateIndexB:J})}}else if(z.length===0)for(const W of G){const X=v(j,q);(X.startsWith("O1")||X.startsWith("C1"))&&B(W,k,H),A.push({carbohydrateIndex:W,elementIndex:k,elementUnit:H,fromCarbohydrate:!0})}else if(G.length===0)for(const W of z)A.push({carbohydrateIndex:W,elementIndex:q,elementUnit:j,fromCarbohydrate:!1})})})})}return{links:T,terminalLinks:A,elements:x,partialElements:M,...l(x,T,A)}}function l(S,T,A){function x(w,O){return(0,_.cantorPairing)(w.id,O)}function M(w,O,F){const L=[],U=w.get(x(O,F));if(U!==void 0)for(const q of U)(0,c.arraySetAdd)(L,q);return L}const D=new Map;for(let w=0,O=S.length;w<O;++w){const{unit:F,ringIndex:L}=S[w],U=F.rings.all[L];for(let q=0,N=U.length;q<N;++q){const k=x(F,F.elements[U[q]]),j=D.get(k);j===void 0?D.set(k,[w]):j.push(w)}}function V(w,O){return M(D,w,O)}const R=new Map;for(let w=0,O=T.length;w<O;++w){const F=T[w],{unit:L,ringIndex:U}=S[F.carbohydrateIndexA],q=L.rings.all[U];for(let N=0,k=q.length;N<k;++N){const j=x(L,L.elements[q[N]]),H=R.get(j);H===void 0?R.set(j,[w]):H.push(w)}}function E(w,O){return M(R,w,O)}const I=new Map;for(let w=0,O=A.length;w<O;++w){const{fromCarbohydrate:F,carbohydrateIndex:L,elementUnit:U,elementIndex:q}=A[w];if(F){const{unit:N,ringIndex:k}=S[L],j=N.rings.all[k];for(let H=0,G=j.length;H<G;++H){const z=x(N,N.elements[j[H]]),W=I.get(z);W===void 0?I.set(z,[w]):W.push(w)}}else{const N=x(U,U.elements[q]),k=I.get(N);k===void 0?I.set(N,[w]):k.push(w)}}function B(w,O){return M(I,w,O)}return{getElementIndices:V,getLinkIndices:E,getTerminalLinkIndices:B}}return OC}var kC={},jp={},aO;function oee(){return aO||(aO=1,Object.defineProperty(jp,"__esModule",{value:!0}),jp.EmptyCoordination=void 0,jp.EmptyCoordination={sites:{unitIds:[],indices:[],numbers:[],count:0},getSiteIndex:()=>-1,eachLigand:()=>{}}),jp}var oO;function see(){if(oO)return kC;oO=1,Object.defineProperty(kC,"__esModule",{value:!0}),kC.computeCoordination=d;const e=Zn(),t=xl(),r=oee(),n=_t(),i=dt(),c=BD(),o=4;function s(u,m,v){let b=0;const P=u.interUnitBonds.getEdgeIndices(v,m.id);for(let C=0,l=P.length;C<l;++C){const S=u.interUnitBonds.edges[P[C]];(i.BondType.isCovalent(S.props.flag)||i.BondType.is(S.props.flag,i.BondType.Flag.MetallicCoordination))&&(b+=1)}return b}function h(u,m){let v=0;const{offset:b,edgeProps:{flags:P}}=u.bonds;for(let C=b[m],l=b[m+1];C<l;++C)(i.BondType.isCovalent(P[C])||i.BondType.is(P[C],i.BondType.Flag.MetallicCoordination))&&(v+=1);return v}function f(u,m,v){return s(u,m,v)+h(m,v)}const y=c.AtomicNumbers.H;function _(u,m,v,b){const P=u.interUnitBonds.getEdgeIndices(v,m.id);for(let C=0,l=P.length;C<l;++C){const S=u.interUnitBonds.edges[P[C]],T=u.unitMap.get(S.unitB);(i.BondType.isCovalent(S.props.flag)||i.BondType.is(S.props.flag,i.BondType.Flag.MetallicCoordination))&&T.model.atomicHierarchy.derived.atom.atomicNumber[T.elements[S.indexB]]!==y&&b(T,S.indexB)}}function g(u,m,v){const{elements:b}=u,{atomicNumber:P}=u.model.atomicHierarchy.derived.atom,{offset:C,b:l,edgeProps:{flags:S}}=u.bonds;for(let T=C[m],A=C[m+1];T<A;++T)(i.BondType.isCovalent(S[T])||i.BondType.is(S[T],i.BondType.Flag.MetallicCoordination))&&P[b[l[T]]]!==y&&v(u,l[T])}function a(u,m,v,b){_(u,m,v,b),g(m,v,b)}function d(u){const m=[],v=[],b=[],P=new Map;for(let l=0,S=u.units.length;l<S;++l){const T=u.units[l];if(!e.Unit.isAtomic(T))continue;const{elements:A}=T;for(let x=0,M=A.length;x<M;++x){const D=A[x],V=x,R=f(u,T,V);R>=o&&(P.set(p(T.id,D),P.size),m.push(T.id),v.push(V),b.push(R))}}if(P.size===0)return r.EmptyCoordination;const C=t.StructureElement.Location.create(u);return{sites:{unitIds:m,indices:v,numbers:b,count:P.size},getSiteIndex:(l,S)=>{var T;return(T=P.get(p(l.id,S)))!==null&&T!==void 0?T:-1},eachLigand:(l,S)=>{const T=m[l],A=v[l],x=u.unitMap.get(T);a(u,x,A,(M,D)=>{C.unit=M,C.element=M.elements[D],S(C)})}}}function p(u,m){return(0,n.cantorPairing)(u,m)}return kC}var FC={},sO;function cee(){if(sO)return FC;sO=1,Object.defineProperty(FC,"__esModule",{value:!0}),FC.computeStructureBoundary=o;const e=rt(),t=Ki(),r=(0,e.Sphere3D)(),n=new t.BoundaryHelper("14"),i=new t.BoundaryHelper("98");function c(s){return s>500?n:i}function o(s){const{units:h}=s,f=c(h.length);f.reset();for(let y=0,_=h.length;y<_;y++){const g=h[y],a=g.boundary,d=g.conformation.operator;d.isIdentity?f.includeSphere(a.sphere):(e.Sphere3D.transform(r,a.sphere,d.matrix
15),f.includeSphere(r))}f.finishedIncludeStep();for(let y=0,_=h.length;y<_;y++){const g=h[y],a=g.boundary,d=g.conformation.operator;d.isIdentity?f.radiusSphere(a.sphere):(e.Sphere3D.transform(r,a.sphere,d.matrix),f.radiusSphere(r))}return{box:f.getBox(),sphere:f.getSphere()}}return FC}var Gp={},cO;function uee(){if(cO)return Gp;cO=1,Object.defineProperty(Gp,"__esModule",{value:!0}),Gp.getSerialMapping=r,Gp.getIntraUnitBondMapping=n;const e=nn(),t=Zn();function r(i){const{units:c,elementCount:o,unitIndexMap:s}=i,h=new Uint32Array(c.length),f=new Uint32Array(o),y=new Uint32Array(o);for(let _=0,g=0,a=c.length;_<a;++_){h[_]=g;const{elements:d}=c[_];for(let p=0,u=d.length;p<u;++p){const m=g+p;f[m]=_,y[m]=d[p]}g+=d.length}return{cumulativeUnitElementCount:h,unitIndices:f,elementIndices:y,getSerialIndex:(_,g)=>h[s.get(_.id)]+e.OrderedSet.indexOf(_.elements,g)}}function n(i){let c=0;const o=[];for(const g of i.unitSymmetryGroups){o.push(c);const a=g.units[0];t.Unit.isAtomic(a)&&(c+=a.bonds.edgeCount*2*g.units.length)}const s=new Uint32Array(c),h=new Uint32Array(c),f=new Uint32Array(c);let y=0,_=0;for(const g of i.unitSymmetryGroups){const a=g.units[0];if(t.Unit.isAtomic(a)){const d=a.bonds.edgeCount*2;for(let p=0,u=g.units.length;p<u;++p)for(let m=0,v=d;m<v;++m)s[y]=_,h[y]=m,f[y]=p,y+=1}_+=1}return{bondCount:c,unitIndex:s,unitEdgeIndex:h,unitGroupIndex:f,unitGroupOffset:o}}return Gp}var uO;function Wa(){if(uO)return ed;uO=1,Object.defineProperty(ed,"__esModule",{value:!0}),ed.Structure=void 0;const e=at(),t=ha(),r=eS(),n=Al(),i=_t(),c=xl(),o=Zn(),s=VT(),h=ree(),f=IT(),y=OT(),_=Tl(),g=aee(),a=see(),d=Ge(),p=Yn(),u=Pr(),m=za(),v=wf(),b=nt(),P=cee(),C=uee();class l{subsetBuilder(O){return new h.StructureSubsetBuilder(this,O)}get elementCount(){return this.state.elementCount}get bondCount(){return this.state.bondCount===-1&&(this.state.bondCount=this.interUnitBonds.edgeCount/2+f.Bond.getIntraUnitBondCount(this)),this.state.bondCount}get hasCustomProperties(){return!!this.state.customProps&&this.state.customProps.all.length>0}get customPropertyDescriptors(){return this.state.customProps||(this.state.customProps=new u.CustomProperties),this.state.customProps}get currentPropertyData(){return this.state.propertyData||(this.state.propertyData=Object.create(null)),this.state.propertyData}get inheritedPropertyData(){return this.parent?this.parent.currentPropertyData:this.currentPropertyData}get polymerResidueCount(){return this.state.polymerResidueCount===-1&&(this.state.polymerResidueCount=R(this)),this.state.polymerResidueCount}get polymerGapCount(){return this.state.polymerGapCount===-1&&(this.state.polymerGapCount=E(this)),this.state.polymerGapCount}get polymerUnitCount(){return this.state.polymerUnitCount===-1&&(this.state.polymerUnitCount=I(this)),this.state.polymerUnitCount}get uniqueElementCount(){return this.state.uniqueElementCount===-1&&(this.state.uniqueElementCount=V(this)),this.state.uniqueElementCount}get atomicResidueCount(){return this.state.atomicResidueCount===-1&&(this.state.atomicResidueCount=B(this)),this.state.atomicResidueCount}get isCoarseGrained(){return this.models.some(O=>n.Model.isCoarseGrained(O))}get isEmpty(){return this.units.length===0}get hashCode(){return this.state.hashCode!==-1?this.state.hashCode:this.computeHash()}get transformHash(){return this.state.transformHash!==-1?this.state.transformHash:(this.state.transformHash=(0,i.hashFnv32a)(this.units.map(O=>O.id)),this.state.transformHash)}computeHash(){let O=23;for(let F=0,L=this.units.length;F<L;F++){const U=this.units[F];O=31*O+U.id|0,O=31*O+e.SortedArray.hashCode(U.elements)|0}return O=31*O+this.elementCount|0,O=(0,i.hash1)(O),O===-1&&(O=0),this.state.hashCode=O,O}elementLocations(){return new l.ElementLocationIterator(this)}get root(){var O;return(O=this.state.parent)!==null&&O!==void 0?O:this}get parent(){return this.state.parent}
15get coordinateSystem(){return this.state.coordinateSystem}get label(){return this.state.label}get boundary(){return this.state.boundary?this.state.boundary:(this.state.boundary=(0,P.computeStructureBoundary)(this),this.state.boundary)}get lookup3d(){return this.state.lookup3d?this.state.lookup3d:(this.state.lookup3d=new s.StructureLookup3D(this),this.state.lookup3d)}get interUnitBonds(){return this.state.interUnitBonds?this.state.interUnitBonds:(this.parent&&this.state.dynamicBonds===this.parent.state.dynamicBonds&&this.parent.state.interUnitBonds&&this.parent.state.interUnitBonds.edgeCount===0?this.state.interUnitBonds=new f.InterUnitBonds(new Map):this.state.interUnitBonds=(0,f.computeInterUnitBonds)(this,{ignoreWater:!this.dynamicBonds,ignoreIon:!this.dynamicBonds,validUnit:this.state.interBondsValidUnit,validUnitPair:this.state.interBondsValidUnitPair}),this.state.interUnitBonds)}get dynamicBonds(){return this.state.dynamicBonds}get interBondsValidUnit(){return this.state.interBondsValidUnit}get interBondsValidUnitPair(){return this.state.interBondsValidUnitPair}get unitSymmetryGroups(){return this.state.unitSymmetryGroups?this.state.unitSymmetryGroups:(this.state.unitSymmetryGroups=y.StructureSymmetry.computeTransformGroups(this),this.state.unitSymmetryGroups)}get unitSymmetryGroupsIndexMap(){return this.state.unitSymmetryGroupsIndexMap?this.state.unitSymmetryGroupsIndexMap:(this.state.unitSymmetryGroupsIndexMap=o.Unit.SymmetryGroup.getUnitSymmetryGroupsIndexMap(this.unitSymmetryGroups),this.state.unitSymmetryGroupsIndexMap)}get carbohydrates(){return this.state.carbohydrates?this.state.carbohydrates:(this.state.carbohydrates=(0,g.computeCarbohydrates)(this),this.state.carbohydrates)}get coordination(){return this.state.coordination?this.state.coordination:(this.state.coordination=(0,a.computeCoordination)(this),this.state.coordination)}get models(){return this.state.models?this.state.models:(this.state.models=T(this),this.state.models)}get uniqueResidueNames(){return this.state.uniqueResidueNames||(this.state.uniqueResidueNames=A(this))}get uniqueElementSymbols(){return this.state.uniqueElementSymbols||(this.state.uniqueElementSymbols=x(this))}get entityIndices(){return this.state.entityIndices||(this.state.entityIndices=M(this))}get uniqueAtomicResidueIndices(){return this.state.uniqueAtomicResidueIndices||(this.state.uniqueAtomicResidueIndices=D(this))}get isAtomic(){for(const O of this.units)if(!o.Unit.isAtomic(O))return!1;return!0}get hasAtomic(){for(const O of this.units)if(o.Unit.isAtomic(O))return!0;return!1}get isCoarse(){for(const O of this.units)if(!o.Unit.isCoarse(O))return!1;return!0}get hasCoarse(){for(const O of this.units)if(o.Unit.isCoarse(O))return!0;return!1}get serialMapping(){return this.state.serialMapping||(this.state.serialMapping=(0,C.getSerialMapping)(this))}get intraUnitBondMapping(){return this.state.intraUnitBondMapping||(this.state.intraUnitBondMapping=(0,C.getIntraUnitBondMapping)(this))}get model(){if(this.state.model)return this.state.model;if(this.state.representativeModel)return this.state.representativeModel;if(this.state.masterModel)return this.state.masterModel;const O=this.models;if(O.length>1)throw new Error("The structure is based on multiple models and has neither a master- nor a representative-model.");return this.state.model=O[0],this.state.model}get masterModel(){return this.state.masterModel}get representativeModel(){return this.state.representativeModel}hasElement(O){return this.unitMap.has(O.unit.id)?e.SortedArray.has(this.unitMap.get(O.unit.id).elements,O.element):!1}getModelIndex(O){return this.models.indexOf(O)}remapModel(O){const{dynamicBonds:F,interUnitBonds:L,parent:U}=this.state,q=[];for(const N of this.unitSymmetryGroups){const k=N.units[0].remapModel(O,F);q.push(k);for(let j=1,H=N.units.length;j<H;++j){const G=N.units[j];q.push(G.remapModel(O,F,k.props))}}return l.create(q,{parent:U?.remapModel(O),label:this.label,interUnitBonds:F?void 0:L,dynamicBonds:F,interBondsValidUnit:this.state.interBondsValidUnit,interBondsValidUnitPair:this.state.interBondsValidUnitPair,coordinateSystem:this.state.coordinateSystem,masterModel:this.state.masterModel,representativeModel:this.state.representativeModel})}asParent(){if(this._proxy)return this._proxy;if(this.parent){const O=this.parent.coordinateSystem.isIdentity?this.parent:l.transform(this.parent,this.parent.coordinateSystem.inverse),F=this.coordinateSystem.isIdentity?O:l.transform(O,this.coordinateSystem.matrix);this._proxy=new l(F.units,F.unitMap,F.unitIndexMap,{...F.state,dynamicBonds:this.dynamicBonds},{child:this,target:this.parent})}else this._proxy=this;return this._proxy}get child(){return this._child}get target(){var O;return(O=this._target)!==null&&O!==void 0?O:this}constructor(O,F,L,U,q){this.units=O,this.unitMap=F,this.unitIndexMap=L,this.state=U,this._child=q?.child,this._target=q?.target,this._proxy=void 0}}ed.Structure=l;function S(w,O,F){return w[O].id-w[F].id}function T(w){const{units:O}=w,F=t.UniqueArray.create();for(const L of O)t.UniqueArray.add(F,L.model.id,L.model);return F.array}function A(w){const{microheterogeneityCompIds:O}=_.StructureProperties.residue,F=new Set,L=c.StructureElement.Location.create(w);for(const U of w.unitSymmetryGroups){const q=U.units[0];if(!o.Unit.isAtomic(q))continue;const N=e.Segmentation.transientSegments(q.model.atomicHierarchy.residueAtomSegments,q.elements);for(L.unit=q;N.hasNext;){const k=N.move();L.element=q.elements[k.start];const j=O(L);for(const H of j)F.add(H)}}return F}function x(w){const O=_.StructureProperties.atom.type_symbol,F=new Set,L=c.StructureElement.Location.create(w);for(const U of w.unitSymmetryGroups){const q=U.units[0];if(o.Unit.isAtomic(q)){L.unit=q;for(let N=0,k=q.elements.length;N<k;++N)L.element=q.elements[N],F.add(O(L))}}return F}function M(w){const{units:O}=w,F=c.StructureElement.Location.create(w),L=t.UniqueArray.create();for(const U of O){const q=U.kind===o.Unit.Kind.Atomic?_.StructureProperties.entity.key:_.StructureProperties.coarse.entityKey;F.unit=U;const N=U.elements,k=e.Segmentation.transientSegments(U.model.atomicHierarchy.chainAtomSegments,N);for(;k.hasNext;){const j=k.move();F.element=N[j.start];const H=q(F);t.UniqueArray.add(L,H,H)}}return(0,i.sortArray)(L.array),L.array}function D(w){const O=new Map,F=[],L=w.unitSymmetryGroups;for(const q of L){const N=q.units[0];if(!o.Unit.isAtomic(N))continue;let k;O.has(N.model.id)?k=O.get(N.model.id):(k=t.UniqueArray.create(),F.push(N.model.id),O.set(N.model.id,k));const j=e.Segmentation.transientSegments(N.model.atomicHierarchy.residueAtomSegments,N.elements);for(;j.hasNext;){const H=j.move();t.UniqueArray.add(k,H.index,H.index)}}const U=new Map;for(const q of F){const N=O.get(q).array;(0,i.sortArray)(N),U.set(q,N)}return U}function V(w){const{unitSymmetryGroups:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].elements.length;return F}function R(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].polymerElements.length;return F}function E(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)F+=O[L].gapElements.length/2;return F}function I(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++)O[L].polymerElements.length>0&&(F+=1);return F}function B(w){const{units:O}=w;let F=0;for(let L=0,U=O.length;L<U;L++){const q=O[L];if(!o.Unit.isAtomic(q))continue;const{elements:N,residueIndex:k}=q;let j=-1,H=-1;for(let G=0,z=N.length;G<z;++G)j=k[N[G]],j!==H&&(F+=1,H=j)}return F}
15return(function(w){w.Empty=j([]);function O(_e){return{kind:"structure-loci",structure:_e}}w.Loci=O;function F(_e){const be=[];for(const xe of _e.units)be.push({unit:xe,indices:e.Interval.ofBounds(0,xe.elements.length)});return c.StructureElement.Loci(_e,be)}w.toStructureElementLoci=F;function L(_e,be){return m.StructureSelection.toLociWithSourceUnits(m.StructureSelection.Singletons(_e,be))}w.toSubStructureElementLoci=L;function U(_e){return!!_e&&_e.kind==="structure-loci"}w.isLoci=U;function q(_e,be){return _e.structure===be.structure}w.areLociEqual=q;function N(_e){return _e.structure.isEmpty}w.isLociEmpty=N;function k(_e,be){return be===_e.structure?_e:O(be)}w.remapLoci=k;function j(_e,be={}){const xe=e.IntMap.Mutable(),we=e.IntMap.Mutable();let Be=0,Me=!0,Re=_e.length>0?_e[0].id:0;for(let Ve=0,qe=_e.length;Ve<qe;Ve++){const ke=_e[Ve];xe.set(ke.id,ke),Be+=ke.elements.length,ke.id<Re&&(Me=!1),Re=ke.id}Me||(0,i.sort)(_e,0,_e.length,S,i.arraySwap);for(let Ve=0,qe=_e.length;Ve<qe;Ve++)we.set(_e[Ve].id,Ve);const Te={hashCode:-1,transformHash:-1,elementCount:Be,bondCount:-1,uniqueElementCount:-1,atomicResidueCount:-1,polymerResidueCount:-1,polymerGapCount:-1,polymerUnitCount:-1,dynamicBonds:!1,coordinateSystem:r.SymmetryOperator.Default,label:""};return be.parent&&(Te.parent=be.parent.parent||be.parent),be.interUnitBonds&&(Te.interUnitBonds=be.interUnitBonds),be.interBondsValidUnit?Te.interBondsValidUnit=be.interBondsValidUnit:be.parent&&(Te.interBondsValidUnit=be.parent.interBondsValidUnit),be.interBondsValidUnitPair?Te.interBondsValidUnitPair=be.interBondsValidUnitPair:be.parent&&(Te.interBondsValidUnitPair=be.parent.interBondsValidUnitPair),be.dynamicBonds?Te.dynamicBonds=be.dynamicBonds:be.parent&&(Te.dynamicBonds=be.parent.dynamicBonds),be.coordinateSystem?Te.coordinateSystem=be.coordinateSystem:be.parent&&(Te.coordinateSystem=be.parent.coordinateSystem),be.label?Te.label=be.label:be.parent&&(Te.label=be.parent.label),be.masterModel?Te.masterModel=be.masterModel:be.parent&&(Te.masterModel=be.parent.masterModel),be.representativeModel?Te.representativeModel=be.representativeModel:be.parent&&(Te.representativeModel=be.parent.representativeModel),new w(_e,xe,we,Te)}w.create=j;async function H(_e,be){if(_e.frameCount===0)return w.Empty;const xe=[];let we,Be=0;for(let Me=0,Re=_e.frameCount;Me<Re;++Me){const Te=await b.Task.resolveInContext(_e.getFrameAtIndex(Me),be);we||(we=Te);const Ve=G(Te);for(let qe=0,ke=Ve.units.length;qe<ke;++qe){const ze=Ve.units[qe],We=ze.invariantId+Be,Je=ze.chainGroupId+Be,De=o.Unit.create(xe.length,We,Je,ze.traits,ze.kind,ze.model,ze.conformation.operator,ze.elements);xe.push(De)}Be=xe.length}return j(xe,{representativeModel:we,label:we.label})}w.ofTrajectory=H;function G(_e,be={}){const xe=_e.atomicHierarchy.chainAtomSegments,{index:we}=_e.atomicHierarchy,{auth_asym_id:Be}=_e.atomicHierarchy.chains,{atomicChainOperatorMappinng:Me}=_e,Re=new K({label:_e.label,...be});for(let Ve=0;Ve<xe.count;Ve++){const qe=Me.get(Ve)||r.SymmetryOperator.Default,ke=xe.offsets[Ve];let ze=!1,We=!1;if(z(_e,Ve))for(We=!0;Ve+1<xe.count&&z(_e,Ve+1);){const Oe=Me.get(Ve),Fe=Me.get(Ve+1);if(Oe!==Fe)break;ze=!0,Ve++}else for(;Ve+1<xe.count&&xe.offsets[Ve+1]-xe.offsets[Ve]===1&&xe.offsets[Ve+2]-xe.offsets[Ve+1]===1;){const Oe=we.getEntityFromChain(Ve),Fe=we.getEntityFromChain(Ve+1);if(Oe!==Fe)break;const Le=Be.value(Ve),He=Be.value(Ve+1);if(Le!==He)break;const Pe=Me.get(Ve),Ie=Me.get(Ve+1);if(Pe!==Ie)break;ze=!0,Ve++}const Je=e.SortedArray.ofBounds(ke,xe.offsets[Ve+1]);let De=o.Unit.Trait.None;ze&&(De|=o.Unit.Trait.MultiChain),We&&(De|=o.Unit.Trait.Water),n.Model.isCoarseGrained(_e)&&(De|=o.Unit.Trait.CoarseGrained),Re.addUnit(o.Unit.Kind.Atomic,_e,qe,Je,De)}const Te=_e.coarseHierarchy;return Te.isDefined&&(Te.spheres.count>0&&W(Re,_e,_e.coarseHierarchy.spheres,o.Unit.Kind.Spheres),Te.gaussians.count>0&&W(Re,_e,_e.coarseHierarchy.gaussians,o.Unit.Kind.Gaussians)),Re.getStructure()}w.ofModel=G;function z(_e,be){const xe=_e.atomicHierarchy.index.getEntityFromChain(be);return _e.entities.data.type.value(xe)==="water"}function W(_e,be,xe,we){const{chainElementSegments:Be}=xe;for(let Me=0;Me<Be.count;Me++){const Re=e.SortedArray.ofBounds(Be.offsets[Me],Be.offsets[Me+1]);_e.addUnit(we,be,r.SymmetryOperator.Default,Re,o.Unit.Trait.None)}}function X(_e,be){if(d.Mat4.isIdentity(be))return _e;if(!d.Mat4.isRotationAndTranslation(be,r.SymmetryOperator.RotationTranslationEpsilon))throw new Error("Only rotation/translation combination can be applied.");const xe=[];for(const Me of _e.units){const Re=Me.conformation.operator,Te=r.SymmetryOperator.create(Re.name,be,Re);xe.push(Me.applyOperator(Me.id,Te))}const we=_e.coordinateSystem,Be=r.SymmetryOperator.compose(r.SymmetryOperator.create(we.name,be,we),we);return j(xe,{parent:_e,coordinateSystem:Be})}w.transform=X;function Y(_e,be){for(const Be of be)if(!d.Mat4.isRotationAndTranslation(Be,r.SymmetryOperator.RotationTranslationEpsilon))throw new Error("Only rotation/translation combination can be applied.");const xe=[];let we=0;for(const Be of _e.units){const Me=Be.conformation.operator;for(const Re of be){if(d.Mat4.isIdentity(Re)){xe.push(Be);continue}const Te=r.SymmetryOperator.create(Me.name,Re,Me);xe.push(Be.applyOperator(we++,Te))}}return j(xe,{parent:_e})}w.instances=Y;class K{beginChainGroup(){this.chainGroupId++,this.inChainGroup=!0}endChainGroup(){this.inChainGroup=!1}addUnit(be,xe,we,Be,Me,Re){Re===void 0&&(Re=this.invariantId());const Te=this.inChainGroup?this.chainGroupId:++this.chainGroupId,Ve=o.Unit.create(this.units.length,Re,Te,Me,be,xe,we,Be);return this.add(Ve)}copyUnit(be,xe){let we=xe?.invariantId;we===void 0&&(we=this.invariantId());const Be=this.inChainGroup?this.chainGroupId:++this.chainGroupId,Me=be.getCopy(this.units.length,we,Be,xe);return this.add(Me)}add(be){if(be.elements.length===1){be.conformation.position(be.elements[0],this.p);const xe=[be.invariantId,this.p[0],this.p[1],this.p[2]].join("|");if(this.singleElementUnits.has(xe))return this.singleElementUnits.get(xe);this.singleElementUnits.set(xe,be)}return this.units.push(be),be}addWithOperator(be,xe,we=!1){return this.add(be.applyOperator(this.units.length,xe,we))}getStructure(){return j(this.units,this.props)}get isEmpty(){return this.units.length===0}constructor(be={}){this.props=be,this.units=[],this.invariantId=(0,p.idFactory)(),this.chainGroupId=-1,this.inChainGroup=!1,this.p=(0,d.Vec3)(),this.singleElementUnits=new Map}}w.StructureBuilder=K;function Q(_e={}){return new K(_e)}w.Builder=Q;function J(_e){return _e.hashCode}w.hashCode=J;function ae(_e){return(0,i.hashString)(_e.units.map(be=>o.Unit.conformationId(be)).join("|"))}w.conformationHash=ae;function te(_e,be){if(_e===be)return!0;
15if(_e.elementCount!==be.elementCount)return!1;const xe=_e.units.length;if(xe!==be.units.length)return!1;for(let we=0;we<xe;we++)if(_e.units[we].id!==be.units[we].id)return!1;return!0}w.areUnitIdsEqual=te;function ne(_e,be){if(_e===be)return!0;if(!te(_e,be))return!1;for(let xe=0,we=_e.units.length;xe<we;xe++)if(!e.SortedArray.areEqual(_e.units[xe].elements,be.units[xe].elements))return!1;return!0}w.areUnitIdsAndIndicesEqual=ne;function $(_e,be){if(_e.hashCode!==be.hashCode)return!1;const xe=_e.models.length;if(xe!==be.models.length)return!1;for(let we=0;we<xe;we++)if(!n.Model.areHierarchiesEqual(_e.models[we],be.models[we]))return!1;return!0}w.areHierarchiesEqual=$;function ie(_e,be){return _e===be||_e.hashCode===be.hashCode&&y.StructureSymmetry.areTransformGroupsEquivalent(_e.unitSymmetryGroups,be.unitSymmetryGroups)}w.areEquivalent=ie;function Z(_e,be){return ie(_e.root,be.root)}w.areRootsEquivalent=Z;function re(_e,be){return _e.root===be.root}w.areRootsEqual=re;class oe{move(){return this.advance(),this.current.element=this.elements[this.idx],this.current}advance(){if(this.idx<this.maxIdx){this.idx++,this.idx===this.maxIdx&&(this.hasNext=this.unitIndex+1<this.structure.units.length);return}if(this.idx=0,this.unitIndex++,this.unitIndex>=this.structure.units.length){this.hasNext=!1;return}this.current.unit=this.structure.units[this.unitIndex],this.elements=this.current.unit.elements,this.maxIdx=this.elements.length-1,this.maxIdx===0&&(this.hasNext=this.unitIndex+1<this.structure.units.length)}constructor(be){this.structure=be,this.unitIndex=0,this.maxIdx=0,this.idx=-1,this.current=c.StructureElement.Location.create(be),this.hasNext=be.elementCount>0,this.hasNext&&(this.elements=be.units[0].elements,this.maxIdx=this.elements.length-1,this.current.unit=be.units[0])}}w.ElementLocationIterator=oe;const ce=(0,d.Vec3)();function ue(_e,be,xe){const{elements:we,conformation:Be}=_e,Me=ce;let Re=Number.MAX_VALUE;for(let Te=0,Ve=we.length;Te<Ve;Te++){const qe=we[Te],ke=d.Vec3.distance(be,Be.position(qe,Me))-xe-Be.r(qe);ke<Re&&(Re=ke)}return Re}function pe(_e,be,xe){const{units:we}=_e;let Be=Number.MAX_VALUE;for(let Me=0,Re=we.length;Me<Re;Me++){const Te=we[Me],Ve=ue(Te,be,xe);Ve<Be&&(Be=Ve)}return Be}w.minDistanceToPoint=pe;const he=(0,d.Vec3)();function fe(_e,be){if(_e.elementCount===0||be.elementCount===0)return 0;const{units:xe}=_e;let we=Number.MAX_VALUE;for(let Be=0,Me=xe.length;Be<Me;Be++){const Re=xe[Be],{elements:Te,conformation:Ve}=Re;for(let qe=0,ke=Te.length;qe<ke;qe++){const ze=Te[qe],We=pe(be,Ve.position(ze,he),Ve.r(ze));We<we&&(we=We)}}return we}w.distance=fe;function de(_e){return _e.elementCount===1?"1 element":`${_e.elementCount} elements`}w.elementDescription=de;function ge(_e,be,xe){return _e.masterModel?be.model===xe.model||be.model===_e.masterModel||xe.model===_e.masterModel:be.model===xe.model}w.validUnitPair=ge;function Ce(_e,be,xe){const{maxRadius:we,validUnit:Be,validUnitPair:Me}=xe;if(!_e.units.some(Ve=>Be(Ve)))return;const Re=_e.lookup3d,Te=(0,d.Vec3)();for(const Ve of _e.units){if(!Be(Ve))continue;const qe=Ve.boundary.sphere;d.Vec3.transformMat4(Te,qe.center,Ve.conformation.operator.matrix);const ke=Re.findUnitIndices(Te[0],Te[1],Te[2],qe.radius+we);for(let ze=0;ze<ke.count;ze++){const We=_e.units[ke.indices[ze]];Ve.id>=We.id||!Be(We)||!Me(Ve,We)||(We.elements.length>=Ve.elements.length?be(Ve,We):be(We,Ve))}}}w.eachUnitPair=Ce;function ve(_e,{chain:be,residue:xe,atom:we}){const Be=c.StructureElement.Location.create(_e);for(const Me of _e.units){if(Me.kind!==o.Unit.Kind.Atomic)continue;Be.unit=Me;const{elements:Re}=Me,Te=e.Segmentation.transientSegments(Me.model.atomicHierarchy.chainAtomSegments,Re),Ve=e.Segmentation.transientSegments(Me.model.atomicHierarchy.residueAtomSegments,Re);for(;Te.hasNext;){const qe=Te.move();if(be&&(Be.element=Re[qe.start],be(Be)),!(!xe&&!we))for(Ve.setSegment(qe);Ve.hasNext;){const ke=Ve.move();if(xe&&(Be.element=Re[ke.start],xe(Be)),!!we)for(let ze=ke.start,We=ke.end;ze<We;ze++)Be.element=Re[ze],we(Be)}}}}w.eachAtomicHierarchyElement=ve,w.DefaultSizeThresholds={smallResidueCount:10,mediumResidueCount:5e3,largeResidueCount:3e4,highSymmetryUnitCount:10,fiberResidueCount:15};function le(_e){return _e.unitSymmetryGroups.filter(be=>be.units[0].polymerElements.length>0)}function me(_e,be){const xe=le(_e);return xe.length===1&&xe[0].units.length>2&&xe[0].units[0].polymerElements.length<be.fiberResidueCount}function ee(_e,be){const xe=le(_e);return xe.length>=1&&xe[0].units.length>be.highSymmetryUnitCount}let se;(function(_e){_e[_e.Small=0]="Small",_e[_e.Medium=1]="Medium",_e[_e.Large=2]="Large",_e[_e.Huge=3]="Huge",_e[_e.Gigantic=4]="Gigantic"})(se=w.Size||(w.Size={}));function ye(_e,be={},xe=1){const we={...w.DefaultSizeThresholds,...be};return _e.polymerResidueCount>=we.largeResidueCount*xe?ee(_e,we)?se.Huge:se.Gigantic:me(_e,we)||_e.polymerResidueCount<we.smallResidueCount*xe?se.Small:_e.polymerResidueCount<we.mediumResidueCount*xe?se.Medium:se.Large}
15w.getSize=ye,w.Index=v.CustomStructureProperty.createSimple("index","root"),w.MaxIndex=v.CustomStructureProperty.createSimple("max_index","root");const Se="__PrincipalAxes__";function Ae(_e){if(_e.currentPropertyData[Se])return _e.currentPropertyData[Se];const be=c.StructureElement.Loci.getPrincipalAxes(w.toStructureElementLoci(_e));return _e.currentPropertyData[Se]=be,be}w.getPrincipalAxes=Ae})(l||(ed.Structure=l={})),ed}var hx={},lO;function sI(){return lO||(lO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.QuerySymbolRuntime=e.QueryRuntimeArguments=e.CompiledQueryFn=e.QueryCompiledSymbol=e.QueryCompilerCtx=e.DefaultQueryRuntimeTable=e.QueryRuntimeTable=void 0,e.compile=g;const t=PT(),r=Ke();class n{constructor(){this.addedProps=new Set,this.map=new Map}removeSymbol(d){this.map.delete(d.symbol.id)}addSymbol(d){this.map.has(d.symbol.id)&&console.warn(`Symbol '${d.symbol.id}' already added. Call removeSymbol/removeCustomProps re-adding the symbol.`),this.map.set(d.symbol.id,d)}addCustomProp(d){if(!this.addedProps.has(d.name)&&(this.addedProps.add(d.name),!!d.symbols))for(const p of Object.keys(d.symbols))this.addSymbol(d.symbols[p])}
15removeCustomProp(d){if(this.addedProps.delete(d.name),!!d.symbols)for(const p of Object.keys(d.symbols))this.removeSymbol(d.symbols[p])}getRuntime(d){return this.map.get(d)}}e.QueryRuntimeTable=n,e.DefaultQueryRuntimeTable=new n;class i{constructor(d){this.table=d,this.constQueryContext=new r.QueryContext(r.Structure.Empty)}}e.QueryCompilerCtx=i;var c;(function(a){function d(u){return{kind:"const",value:u}}a.Const=d;function p(u){return{kind:"dynamic",runtime:u}}a.Dynamic=p})(c||(e.QueryCompiledSymbol=c={}));var o;(function(a){function d(u){return{isConst:!0,fn:function(v){return u}}}a.Const=d;function p(u){return{isConst:!1,fn:u}}a.Dynamic=p})(o||(e.CompiledQueryFn=o={}));var s;(function(a){function d(p,u,m,v){if(typeof p.length=="number")for(let b=0,P=p.length;b<P;b++)m(p[b](u),b,v);else{let b=0;for(const P of Object.keys(p))m(p[P](u),b++,v)}return v}a.forEachEval=d})(s||(e.QueryRuntimeArguments=s={}));var h;(function(a){function d(u,m){return new f(u,m,!0)}a.Const=d;function p(u,m){return new f(u,m,!1)}a.Dynamic=p})(h||(e.QuerySymbolRuntime=h={}));class f{compile(d,p){let u,m=!1;if(!p)u=void 0,m=!0;else if(t.Expression.isArgumentsArray(p)){u=[],m=!0;for(const v of p){const b=_(d,v);m=m&&b.isConst,u.push(b.fn)}}else{u=Object.create(null),m=!0;for(const v of Object.keys(p)){const b=_(d,p[v]);m=m&&b.isConst,u[v]=b.fn}}return this.isConst?this.isConst&&m?o.Const(this.fn(d.constQueryContext,u)):o.Dynamic(y(this.fn,u)):o.Dynamic(y(this.fn,u))}constructor(d,p,u){this.symbol=d,this.fn=p,this.isConst=u}}function y(a,d){return function(u){return a(u,d)}}function _(a,d){if(t.Expression.isLiteral(d))return o.Const(d);if(t.Expression.isSymbol(d)){const u=a.table.getRuntime(d.name);return u?u.compile(a):o.Const(d.name)}if(!t.Expression.isSymbol(d.head))throw new Error("Can only apply symbols.");const p=a.table.getRuntime(d.head.name);if(!p)throw new Error(`Symbol '${d.head.name}' is not implemented.`);return p.compile(a,d.args)}function g(a){const d=new i(e.DefaultQueryRuntimeTable);return _(d,a).fn}})(hx)),hx}var dO;function kT(){if(dO)return ip;dO=1,Object.defineProperty(ip,"__esModule",{value:!0}),ip.Loci=m;const e=ha(),t=at(),r=Ge(),n=dr(),i=Wa(),c=Zn(),o=_t(),s=GD(),h=_l(),f=Tl(),y=Ki(),_=OD(),g=rt(),a=sI(),d=RT(),p=rI(),u=_.IntTuple.diff;function m(v,b){return{kind:"element-loci",structure:v,elements:b}}return(function(v){function b(le){return!!le&&le.kind==="element-loci"}v.is=b;function P(le,me){if(le.structure!==me.structure||le.elements.length!==me.elements.length)return!1;for(let ee=0,se=le.elements.length;ee<se;++ee){const ye=le.elements[ee],Se=me.elements[ee];if(ye.unit.id!==Se.unit.id||!t.OrderedSet.areEqual(ye.indices,Se.indices))return!1}return!0}v.areEqual=P;function C(le){for(const me of le.elements)if(t.OrderedSet.size(me.indices)>0)return!1;return!0}v.isEmpty=C;function l(le){return S(le)===le.structure.elementCount}v.isWholeStructure=l;function S(le){let me=0;for(const{indices:ee}of le.elements)typeof ee=="number"?me+=u(ee):me+=ee.length;return me}v.size=S;function T(le){return v(le,le.units.map(me=>({unit:me,indices:t.OrderedSet.ofBounds(0,me.elements.length)})))}v.all=T;function A(le){return v(le,[])}v.none=A;function x(le,me,ee){let se;typeof me=="function"?se=me(n.MolScriptBuilder):se=me;const ye=(0,a.compile)(se)(ee??new d.QueryContext(le));return d.StructureSelection.toLociWithSourceUnits(ye)}v.fromExpression=x;function M(le,me,ee){const se=me(ee??new d.QueryContext(le));return d.StructureSelection.toLociWithSourceUnits(se)}v.fromQuery=M;function D(le,me,ee){return p.Schema.toLoci(le,me,ee)}v.fromSchema=D;function V(le,me){if(C(le))return;const ee=le.elements[0].unit,se=ee.elements[t.OrderedSet.getAt(le.elements[0].indices,0)];return me?(me.structure=le.structure,me.unit=le.elements[0].unit,me.element=se,me):s.Location.create(le.structure,ee,se)}v.getFirstLocation=V;function R(le){return C(le)?le:v(le.structure,[{unit:le.elements[0].unit,indices:t.OrderedSet.ofSingleton(t.OrderedSet.start(le.elements[0].indices))}])}v.firstElement=R;function E(le){return C(le)?le:j(R(le))}v.firstResidue=E;function I(le){return C(le)?le:X(R(le))}v.firstChain=I;function B(le){const me=[];for(const ee of le.elements){const{unit:se,indices:ye}=ee,Se=new Int32Array(t.OrderedSet.size(ye));t.OrderedSet.forEach(ye,(Ae,_e)=>Se[_e]=se.elements[Ae]),me.push(se.getChild(t.SortedArray.ofSortedArray(Se)))}return i.Structure.create(me,{parent:le.structure.parent})}v.toStructure=B;function w(le,me,ee){if(v.isEmpty(le))return;const se=ee||s.Location.create(le.structure);se.structure=le.structure;for(const ye of le.elements){const{unit:Se,indices:Ae}=ye;se.unit=Se;const{elements:_e}=ye.unit;for(let be=0,xe=t.OrderedSet.size(Ae);be<xe;be++)se.element=_e[t.OrderedSet.getAt(Ae,be)],me(se)}}v.forEachLocation=w;function O(le,me){if(me===le.structure)return le;const ee=[];
15return le.elements.forEach(se=>{if(!me.unitMap.has(se.unit.id))return;const ye=me.unitMap.get(se.unit.id),Se=t.OrderedSet.indexedIntersect(se.indices,se.unit.elements,ye.elements);t.OrderedSet.size(Se)>0&&ee.push({unit:ye,indices:Se})}),v(me,ee)}v.remap=O;function F(le,me){if(le.elements.length>me.elements.length)return F(me,le);if(v.isEmpty(le))return me;const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of me.elements)ee.has(ye.unit.id)?(se[se.length]={unit:ye.unit,indices:t.OrderedSet.union(ee.get(ye.unit.id),ye.indices)},ee.delete(ye.unit.id)):se[se.length]=ye;return ee.forEach((ye,Se)=>{se[se.length]={unit:le.structure.unitMap.get(Se),indices:ye}}),v(le.structure,se)}v.union=F;function L(le,me){const ee=new Map;for(const ye of me.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of le.elements)if(ee.has(ye.unit.id)){const Se=t.OrderedSet.subtract(ye.indices,ee.get(ye.unit.id));if(t.OrderedSet.size(Se)===0)continue;se[se.length]={unit:ye.unit,indices:Se}}else se[se.length]=ye;return v(le.structure,se)}v.subtract=L;function U(le,me){const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);const se=[];for(const ye of me.elements){if(!ee.has(ye.unit.id))continue;const Se=t.OrderedSet.intersect(ee.get(ye.unit.id),ye.indices);t.OrderedSet.size(Se)!==0&&(se[se.length]={unit:ye.unit,indices:Se})}return v(le.structure,se)}v.intersect=U;function q(le,me){if(le.elements.length>me.elements.length)return q(me,le);if(v.isEmpty(le))return v.isEmpty(me);const ee=new Map;for(const se of le.elements)ee.set(se.unit.id,se.indices);for(const se of me.elements)if(ee.has(se.unit.id)&&t.OrderedSet.areIntersecting(ee.get(se.unit.id),se.indices))return!0;return!1}v.areIntersecting=q;function N(le,me){if(v.isEmpty(le))return v.isEmpty(me);const ee=new Map;for(const ye of le.elements)ee.set(ye.unit.id,ye.indices);let se=!1;for(const ye of me.elements){if(!ee.has(ye.unit.id))return!1;if(t.OrderedSet.isSubset(ee.get(ye.unit.id),ye.indices))se=!0;else return!1}return se}v.isSubset=N;function k(le){return le.length>3&&t.SortedArray.isRange(le)?t.Interval.ofRange(le[0],le[le.length-1]):t.SortedArray.ofSortedArray(le)}function j(le,me){const ee=[],se=new Set;for(const ye of le.elements){if(G(ye)){ee[ee.length]=ye;continue}if(ye.unit.kind===c.Unit.Kind.Atomic){const Se=ye.unit.elements,Ae=ye.unit.model.atomicHierarchy,{label_alt_id:_e}=ye.unit.model.atomicHierarchy.atoms,{index:be,offsets:xe}=Ae.residueAtomSegments,we=[],Be=ye.indices,Me=t.OrderedSet.size(Be);let Re=0;for(;Re<Me;){se.clear();const Te=Se[t.OrderedSet.getAt(Be,Re)],Ve=be[Te];for(se.add(_e.value(Te)),Re++;Re<Me;){const ke=Se[t.OrderedSet.getAt(Be,Re)];if(be[ke]!==Ve)break;se.add(_e.value(ke)),Re++}const qe=se.has("");for(let ke=xe[Ve],ze=xe[Ve+1];ke<ze;ke++){const We=t.OrderedSet.indexOf(Se,ke);if(We>=0){const Je=_e.value(ke);(!me||qe||!Je||se.has(Je))&&(we[we.length]=We)}}}ee[ee.length]={unit:ye.unit,indices:k(we)}}else ee[ee.length]=ye}return v(le.structure,ee)}v.extendToWholeResidues=j;function H(le){switch(le.kind){case c.Unit.Kind.Atomic:return le.model.atomicHierarchy.chainAtomSegments;case c.Unit.Kind.Spheres:return le.model.coarseHierarchy.spheres.chainElementSegments;case c.Unit.Kind.Gaussians:return le.model.coarseHierarchy.gaussians.chainElementSegments}}function G(le){return le.unit.elements.length===t.OrderedSet.size(le.indices)}function z(le,me,ee){const{index:se}=H(le),ye=le.elements;let Se=0;for(let _e=0,be=ye.length;_e<be;_e++){const xe=ye[_e],we=se[xe];me.has(we)&&Se++}if(Se===le.elements.length){ee[ee.length]={unit:le,indices:t.Interval.ofBounds(0,Se)};return}const Ae=new Int32Array(Se);Se=0;for(let _e=0,be=ye.length;_e<be;_e++){const xe=ye[_e],we=se[xe];me.has(we)&&(Ae[Se++]=_e)}Ae.length>0&&(ee[ee.length]={unit:le,indices:k(Ae)})}function W(le,me,ee,se,ye){const{index:Se}=H(le.elements[0].unit),Ae=new Set;for(let _e=me;_e<ee;_e++){const be=le.elements[_e],xe=be.indices,we=be.unit.elements;for(let Be=0,Me=t.OrderedSet.size(xe);Be<Me;Be++)Ae.add(Se[we[t.OrderedSet.getAt(xe,Be)]])}if(se){const _e=le.elements[0].unit;for(const be of le.structure.units)c.Unit.areSameChainOperatorGroup(be,_e)&&z(be,Ae,ye)}else for(let _e=me;_e<ee;_e++)z(le.elements[_e].unit,Ae,ye)}function X(le){const me=[];for(let ee=0,se=le.elements.length;ee<se;ee++){const ye=le.elements[ee];if(c.Unit.Traits.is(ye.unit.traits,c.Unit.Trait.Partitioned)){const Se=ee;for(;ee<se&&c.Unit.areSameChainOperatorGroup(le.elements[ee].unit,ye.unit);)ee++;const Ae=ee;ee--,W(le,Se,Ae,!0,me)}else G(ye)?me[me.length]=ye:W(le,ee,ee+1,!1,me)}return v(le.structure,me)}v.extendToWholeChains=X;function Y(le){return`${le.unit.model.id}|${f.StructureProperties.entity.id(le)}`}function K(le){const me=[],ee=s.Location.create(le.structure),se=new Set,{units:ye}=le.structure;for(let Se=0,Ae=le.elements.length;Se<Ae;Se++){const _e=le.elements[Se];ee.unit=_e.unit,ee.element=_e.unit.elements[0],se.add(Y(ee))}for(let Se=0,Ae=ye.length;Se<Ae;++Se){const _e=ye[Se];if(ee.unit=_e,ee.element=_e.elements[0],se.has(Y(ee))){const be=t.OrderedSet.ofBounds(0,_e.elements.length);me[me.length]={unit:_e,indices:be}}}return v(le.structure,me)}v.extendToWholeEntities=K;function Q(le){const me=[],ee=new Set,{units:se}=le.structure;for(let ye=0,Se=le.elements.length;ye<Se;ye++){const Ae=le.elements[ye];ee.add(Ae.unit.model.id)}for(let ye=0,Se=se.length;ye<Se;++ye){const Ae=se[ye];if(ee.has(Ae.model.id)){const _e=t.OrderedSet.ofBounds(0,Ae.elements.length);me[me.length]={unit:Ae,indices:_e}}}return v(le.structure,me)}v.extendToWholeModels=Q;function J(le,me){const ee=[];for(let se=0,ye=t.OrderedSet.size(me);se<ye;++se)ee.push(le[t.OrderedSet.getAt(me,se)]);return t.SortedArray.ofSortedArray(ee)}function ae(le,me){return t.SortedArray.isRange(le)&&t.SortedArray.areEqual(le,me)?t.Interval.ofLength(le.length):k(t.S
15ortedArray.indicesOf(le,me))}function te(le){const me=[],ee=new Map;for(let se=0,ye=le.elements.length;se<ye;se++){const Se=le.elements[se],{model:Ae}=Se.unit,_e=J(Se.unit.elements,Se.indices);ee.has(Ae)?ee.set(Ae,t.SortedArray.union(_e,ee.get(Ae))):ee.set(Ae,_e)}for(let se=0,ye=le.structure.units.length;se<ye;++se){const Se=le.structure.units[se],Ae=ee.get(Se.model);if(!Ae)continue;const _e=ae(Se.elements,Ae);t.OrderedSet.size(_e)&&(me[me.length]={unit:Se,indices:_e})}return v(le.structure,me)}v.extendToAllInstances=te;function ne(le){const me=[],ee=new Set,{units:se}=le.structure;for(let ye=0,Se=le.elements.length;ye<Se;ye++){const Ae=le.elements[ye];ee.add(Ae.unit.conformation.operator.name)}for(let ye=0,Se=se.length;ye<Se;++ye){const Ae=se[ye];if(ee.has(Ae.conformation.operator.name)){const _e=t.OrderedSet.ofBounds(0,Ae.elements.length);me[me.length]={unit:Ae,indices:_e}}}return v(le.structure,me)}v.extendToWholeOperators=ne;function $(le,me){const ee=new Map,se=le.structure.lookup3d,ye=(0,r.Vec3)();w(le,Ae=>{Ae.unit.conformation.position(Ae.element,ye);const _e=se.find(ye[0],ye[1],ye[2],me);for(let be=0,xe=_e.count;be<xe;++be){const we=_e.units[be],Be=_e.indices[be];let Me=ee.get(we.id);Me||(Me=new Set,ee.set(we.id,Me)),Me.add(Be)}});const Se=[];for(const[Ae,_e]of ee.entries()){const be=le.structure.unitMap.get(Ae),xe=Array.from(_e);(0,o.sortArray)(xe),Se.push({unit:be,indices:k(xe)})}return{kind:"element-loci",structure:le.structure,elements:Se}}v.extendToRadius=$;const ie=new y.BoundaryHelper("98"),Z=(0,r.Vec3)(),re=(0,g.Sphere3D)();function oe(le){const{isIdentity:me,matrix:ee}=le.conformation.operator,{sphere:se}=le.boundary;return me?se:g.Sphere3D.transform(re,se,ee)}function ce(le,me){if(l(le))return g.Sphere3D.copy(me||(0,g.Sphere3D)(),le.structure.boundary.sphere);ie.reset();for(const ee of le.elements){if(G(ee)){ie.includeSphere(oe(ee.unit));continue}const{indices:se}=ee,{elements:ye,conformation:Se}=ee.unit;for(let Ae=0,_e=t.OrderedSet.size(se);Ae<_e;Ae++){const be=ye[t.OrderedSet.getAt(se,Ae)];Se.position(be,Z),ie.includePositionRadius(Z,Se.r(be))}}ie.finishedIncludeStep();for(const ee of le.elements){if(G(ee)){ie.radiusSphere(oe(ee.unit));continue}const{indices:se}=ee,{elements:ye,conformation:Se}=ee.unit;for(let Ae=0,_e=t.OrderedSet.size(se);Ae<_e;Ae++){const be=ye[t.OrderedSet.getAt(se,Ae)];Se.position(be,Z),ie.radiusPositionRadius(Z,Se.r(be))}}return ie.getSphere(me)}v.getBoundingSphere=ce;function ue(le,me){const ee=ce(le,me?.sphere),se=g.Box3D.fromSphere3D(me?.box||(0,g.Box3D)(),ee);return{sphere:ee,box:se}}v.getBoundary=ue;const pe=(0,r.Vec3)();function he(le,me,ee=0){let se=ee;for(const ye of le.elements){const{indices:Se}=ye,{elements:Ae,conformation:_e}=ye.unit,be=t.OrderedSet.size(Se);for(let xe=0;xe<be;xe++){const we=Ae[t.OrderedSet.getAt(Se,xe)];_e.position(we,pe),r.Vec3.toArray(pe,me,se+xe*3)}se+=be*3}return me}v.toPositionsArray=he;function fe(le){const me=S(le),ee=he(le,new Float32Array(3*me));return h.PrincipalAxes.ofPositions(ee)}v.getPrincipalAxes=fe;function de(le){let me=0;le.forEach(ye=>{me+=S(ye)});const ee=new Float32Array(3*me);let se=0;return le.forEach(ye=>{he(ye,ee,se),se+=S(ye)*3}),h.PrincipalAxes.ofPositions(ee)}v.getPrincipalAxesMany=de;function ge(le,me){return c.Unit.isAtomic(le)?le.model.atomicHierarchy.atomSourceIndex.value(me):me}function Ce(le){if(v.isEmpty(le))return n.MolScriptBuilder.struct.generator.empty();const me=le.structure.models,ee=new Map;for(const _e of le.elements){const{indices:be}=_e,{elements:xe}=_e.unit,we=_e.unit.conformation.operator.name;let Be;ee.has(we)?Be=ee.get(we).xs:(Be=e.UniqueArray.create(),ee.set(we,{modelLabel:_e.unit.model.label,modelIndex:_e.unit.model.modelNum,xs:Be}));for(let Me=0,Re=t.OrderedSet.size(be);Me<Re;Me++){const Te=ge(_e.unit,xe[t.OrderedSet.getAt(be,Me)]);e.UniqueArray.add(Be,Te,Te)}}const se=[],ye=ee.keys();for(;;){const _e=ye.next();if(_e.done)break;const be=ee.get(_e.value);se.push(ve(_e.value,be.xs.array,me.length>1,be.modelLabel,be.modelIndex))}const Se=new Map;for(let _e=0,be=se.length;_e<be;++_e){const xe=se[_e],Be=`${(0,o.hash2)((0,o.hashFnv32a)(xe.atom.ranges),(0,o.hashFnv32a)(xe.atom.set))}|${xe.entity?xe.entity.modelLabel+xe.entity.modelIndex:""}`;Se.has(Be)?Se.get(Be).chain.opName.push(...xe.chain.opName):Se.set(Be,xe)}const Ae=[];return Se.forEach(_e=>{const{ranges:be,set:xe}=_e.atom,{opName:we}=_e.chain,Be=n.MolScriptBuilder.struct.atomProperty.core.operatorName(),Me=n.MolScriptBuilder.struct.atomProperty.core.sourceIndex(),Re=[];xe.length>0&&(Re[Re.length]=n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(xe),Me]));for(let Te=0,Ve=be.length/2;Te<Ve;Te++)Re[Re.length]=n.MolScriptBuilder.core.rel.inRange([Me,be[2*Te],be[2*Te+1]]);if(_e.entity){const{modelLabel:Te,modelIndex:Ve}=_e.entity;Ae.push(n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":Re.length>1?n.MolScriptBuilder.core.logic.or(Re):Re[0],"chain-test":we.length>1?n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(we),Be]):n.MolScriptBuilder.core.rel.eq([Be,we[0]]),"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.struct.atomProperty.core.modelLabel(),Te]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.struct.atomProperty.core.modelIndex(),Ve])])}))}else Ae.push(n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":Re.length>1?n.MolScriptBuilder.core.logic.or(Re):Re[0],"chain-test":we.length>1?n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.core.type.set(we),Be]):n.MolScriptBuilder.core.rel.eq([Be,we[0]])}))}),n.MolScriptBuilder.struct.modifier.union([Ae.length===1?Ae[0]:n.MolScriptBuilder.struct.combinator.merge(Ae.map(_e=>n.MolScriptBuilder.struct.modifier.union([_e])))])}v.toExpression=Ce;function ve(le,me,ee,se,ye){(0,o.sortArray)(me);const Se=[],Ae=[];let _e=0;const be=me.length;for(;_e<be;){const xe=_e;for(_e++;_e<be&&me[_e-1]+1===me[_e];)_e++;const we=_e;if(we-xe>12)Se[Se.length]=me[xe],Se[Se.length]=me[we-1];else for(let Be=xe;Be<we;Be++)Ae[Ae.length]=me[Be]}return ee?{atom:{set:Ae,ranges:Se},chain:{opName:[le]},entity:{modelLabel:se,modelIndex:ye}}:{atom:{set:Ae,ranges:Se},chain:{opName:[le]}}}})(m||(ip.Loci=m={})),ip}var zp={},fO;function lee(){if(fO)return zp;fO=1,Object.defineProperty(zp,"__esModule",{value:!0}),zp.Stats=void 0;const e=at(),t=Zn(),r=kT(),n=GD();var i;return(function(c){function o(){return{elementCount:0,conformationCount:0,residueCount:0,chainCount:0,unitCount:0,structureCount:0,firstElementLoc:n.Location.create(void 0),firstConformationLoc:n.Location.create(void 0),firstResidueLoc:n.Location.create(void 0),firstChainLoc:n.Location.create(void 0),firstUnitLoc:n.Location.create(void 0),firstStructureLoc:n.Location.create(void 0)}}c.create=o;function s(a,d,p){const u=a.get(d)||0;a.set(d,u+p)}function h(a,d,p){const{indices:u,unit:m}=p,{elements:v}=m,b=e.OrderedSet.size(u),P=new Map,C=new Map;if(b>0&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)]),b===v.length)a.unitCount+=1,a.unitCount===1&&n.Location.set(a.firstUnitLoc,d,m,v[e.OrderedSet.start(u)]);else if(b===1){if(t.Unit.Traits.is(m.traits,t.Unit.Trait.MultiChain))return;a.elementCount+=1,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)])}else if(t.Unit.isAtomic(m)){const{index:l,offsets:S}=m.model.atomicHierarchy.residueAtomSegments,{label_alt_id:T}=m.model.atomicHierarchy.atoms;let A=0;for(;A<b;){P.clear();let x=0;const M=v[e.OrderedSet.getAt(u,A)],D=l[M];for(s(P,T.value(M),1),++A,++x;A<b;){const V=v[e.OrderedSet.getAt(u,A)];if(l[V]!==D)break;s(P,T.value(V),1),++A,++x}if(S[D+1]-S[D]===x)a.residueCount+=1,a.residueCount===1&&n.Location.set(a.firstResidueLoc,d,m,S[D]);else{C.clear();for(let V=S[D],R=S[D+1];V<R;++V)s(C,T.value(V),1);C.get("")===P.get("")&&P.forEach((V,R)=>
15{if(C.get(R)===V){if(R!==""&&(a.conformationCount+=1,a.conformationCount===1)){for(let E=S[D],I=S[D+1];E<I;++E)if(R===T.value(E)){n.Location.set(a.firstConformationLoc,d,m,E);break}}x-=V}}),a.elementCount+=x}}}else a.elementCount+=b,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,v[e.OrderedSet.start(u)])}function f(a,d,p){const{indices:u,unit:m}=p,v=e.OrderedSet.size(u);if(v===0)return;const{elements:b}=m;if(!t.Unit.Traits.is(m.traits,t.Unit.Trait.MultiChain)){v===b.length&&(a.chainCount+=1,a.chainCount===1&&n.Location.set(a.firstChainLoc,d,m,b[e.OrderedSet.start(u)]));return}const P=t.Unit.isAtomic(m)?m.model.atomicHierarchy.chainAtomSegments:t.Unit.isSpheres(m)?m.model.coarseHierarchy.spheres.chainElementSegments:t.Unit.isGaussians(m)?m.model.coarseHierarchy.gaussians.chainElementSegments:void 0;if(!P){console.warn("StructureElement loci stats: unknown unit type");return}const{index:C,offsets:l}=P;let S=0;for(;S<v;){let T=0;const A=b[e.OrderedSet.getAt(u,S)],x=C[A];for(++S,++T;S<v;){const M=b[e.OrderedSet.getAt(u,S)];if(C[M]!==x)break;++S,++T}l[x+1]-l[x]===T?(a.chainCount+=1,a.chainCount===1&&n.Location.set(a.firstChainLoc,d,m,l[x])):v===1&&(a.elementCount+=1,a.elementCount===1&&n.Location.set(a.firstElementLoc,d,m,A))}}function y(a,d,p,u,m){let v=p[u];const b=t.Unit.isAtomic(v.unit)?v.unit.model.atomicHierarchy.chainAtomSegments:t.Unit.isSpheres(v.unit)?v.unit.model.coarseHierarchy.spheres.chainElementSegments:t.Unit.isGaussians(v.unit)?v.unit.model.coarseHierarchy.gaussians.chainElementSegments:void 0;if(!b){console.warn("StructureElement loci stats: unknown unit type");return}const{index:P,offsets:C}=b,l=new Map;for(let T=u;T<m;T++){v=p[T];const{indices:A,unit:x}=v,M=e.OrderedSet.size(A);if(M===0)continue;const{elements:D}=x;if(!t.Unit.Traits.is(x.traits,t.Unit.Trait.MultiChain)){const R=D[e.OrderedSet.start(A)];s(l,P[R],D.length);continue}let V=0;for(;V<M;){let R=0;const E=D[e.OrderedSet.getAt(A,V)],I=P[E];for(++V,++R;V<M;){const B=D[e.OrderedSet.getAt(A,V)];if(P[B]!==I)break;++V,++R}s(l,I,R)}}let S=-1;if(l.forEach((T,A)=>{C[A+1]-C[A]===T&&(a.chainCount+=1,a.chainCount===1&&(S=A))}),!(S<0))for(let T=u;T<m;T++){v=p[T];const{indices:A,unit:x}=v,M=e.OrderedSet.size(A);if(M===0)continue;const{elements:D}=x,V=0;for(;V<M;){const R=D[e.OrderedSet.getAt(A,V)];if(P[R]===S){n.Location.set(a.firstChainLoc,d,x,R);return}}}}function _(a){const d=o();if(r.Loci.isEmpty(a))return d;let p=!1;if(r.Loci.isWholeStructure(a)){if(d.structureCount+=1,d.structureCount===1){const{unit:u,indices:m}=a.elements[0];n.Location.set(d.firstStructureLoc,a.structure,u,u.elements[e.OrderedSet.min(m)])}}else for(const u of a.elements)h(d,a.structure,u),t.Unit.Traits.is(u.unit.traits,t.Unit.Trait.Partitioned)?p=!0:f(d,a.structure,u);if(p)for(let u=0,m=a.elements.length;u<m;u++){const v=a.elements[u];if(!t.Unit.Traits.is(v.unit.traits,t.Unit.Trait.Partitioned))continue;const b=u;for(;u<m&&t.Unit.areSameChainOperatorGroup(a.elements[u].unit,v.unit);)u++;const P=u;u--,P-b===1?f(d,a.structure,v):y(d,a.structure,a.elements,b,P)}return d}c.ofLoci=_;function g(a,d,p){return d.elementCount===1&&p.elementCount===0?n.Location.copy(a.firstElementLoc,d.firstElementLoc):d.elementCount===0&&p.elementCount===1&&n.Location.copy(a.firstElementLoc,p.firstElementLoc),d.conformationCount===1&&p.conformationCount===0?n.Location.copy(a.firstConformationLoc,d.firstConformationLoc):d.conformationCount===0&&p.conformationCount===1&&n.Location.copy(a.firstConformationLoc,p.firstConformationLoc),d.residueCount===1&&p.residueCount===0?n.Location.copy(a.firstResidueLoc,d.firstResidueLoc):d.residueCount===0&&p.residueCount===1&&n.Location.copy(a.firstResidueLoc,p.firstResidueLoc),d.chainCount===1&&p.chainCount===0?n.Location.copy(a.firstChainLoc,d.firstChainLoc):d.chainCount===0&&p.chainCount===1&&n.Location.copy(a.firstChainLoc,p.firstChainLoc),d.unitCount===1&&p.unitCount===0?n.Location.copy(a.firstUnitLoc,d.firstUnitLoc):d.unitCount===0&&p.unitCount===1&&n.Location.copy(a.firstUnitLoc,p.firstUnitLoc),d.structureCount===1&&p.structureCount===0?n.Location.copy(a.firstStructureLoc,d.firstStructureLoc):d.structureCount===0&&p.structureCount===1&&n.Location.copy(a.firstStructureLoc,p.firstStructureLoc),a.elementCount=d.elementCount+p.elementCount,a.conformationCount=d.conformationCount+p.conformationCount,a.residueCount=d.residueCount+p.residueCount,a.chainCount=d.chainCount+p.chainCount,a.unitCount=d.unitCount+p.unitCount,a.structureCount=d.structureCount+p.structureCount,a}c.add=g})(i||(zp.Stats=i={})),zp}var ho={},mO;function dee(){if(mO)return ho;mO=1,Object.defineProperty(ho,"__esModule",{value:!0}),ho.property=r,ho.atomicProperty=i,ho.coarseProperty=c,ho.residueIndex=o,ho.chainIndex=s,ho.entityIndex=h;const e=Zn(),t=Tl();function r(f){return f}function n(f){throw new Error(`Property only available for ${f} models.`)}function i(f){return y=>e.Unit.isAtomic(y.unit)?f(y):n("atomic")}function c(f){return y=>e.Unit.isCoarse(y.unit)?f(y):n("coarse")}function o(f){return e.Unit.isAtomic(f.unit)?f.unit.residueIndex[f.element]:-1}function s(f){return e.Unit.isAtomic(f.unit)?f.unit.chainIndex[f.element]:-1}function h(f){return t.StructureProperties.entity.key(f)}return ho}var pO;function fee(){return pO||(pO=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0});const t=At;t.__exportStar(GD(),e),t.__exportStar(kT(),e),t.__exportStar(nI(),e),t.__exportStar(rI(),e),t.__exportStar(lee(),e),t.__exportStar(dee(),e)})(J2)),J2}var hO;function xl(){if(hO)return rp;hO=1,Object.defineProperty(rp,"__esModule",{value:!0}),rp.StructureElement=void 0;const t=At.__importStar(fee());return rp.StructureElement=t,rp}var go={},yo={},vo={},gx={},LC={},Ds={},gO;function Or(){if(gO)return Ds;gO=1,Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.TokenBuilder=void 0,Ds.Tokenizer=t,Ds.trimStr=r;const e=K$();function t(i){return{data:i,position:0,length:i.length,lineNumber:1,tokenStart:0,tokenEnd:0}}(function(i){function c(S){return S.data.substring(S.tokenStart,S.tokenEnd)}i.getTokenString=c;function o(S){S.position=0,S.lineNumber=1,S.tokenStart=0,S.tokenEnd=0}i.reset=o;function s(S){const{data:T}=S;for(;S.position<S.length;)switch(T.charCodeAt(S.position)){case 10:return S.tokenEnd=S.position,++S.position,++S.lineNumber,!0;case 13:return S.tokenEnd=S.position,++S.position,++S.lineNumber,T.charCodeAt(S.position)===10&&++S.position,!0;default:++S.position;break}return S.tokenEnd=S.position,S.tokenStart!==S.tokenEnd}i.eatLine=s;function h(S){S.tokenStart=S.position}i.markStart=h;function f(S){return S.tokenStart=S.position,s(S)}i.markLine=f;function y(S){return f(S),c(S)}i.readLine=y;function _(S){f(S);const T=S.position;return l(S,S.tokenStart,S.tokenEnd),S.position=T,c(S)}i.readLineTrim=_;function g(S,T,A){let x=0;for(let M=0;M<T;M++){if(!f(S))return x;n.addUnchecked(A,S.tokenStart,S.tokenEnd),x++}return x}function a(S,T){const A=n.create(S.data,T*2);return g(S,T,A),A}i.markLines=a;function d(S,T){const A=[];for(let x=0;x<T;x++)A.push(i.readLine(S));return A}i.readLines=d;async function p(S,T,A,x=1e5){const M=n.create(S.data,T*2);let D=0;return await(0,e.chunkedSubtask)(A,x,S,(V,R)=>{const E=Math.min(T-D,V);return g(R,E,M),D+=E,E},(V,R)=>V.update({message:"Parsing...",current:R.position,max:R.length})),M}i.readLinesAsync=p;function u(S){const T=i(S),A=n.create(T.data,Math.max(S.length/80,2));for(;f(T);)n.add(A,T.tokenStart,T.tokenEnd);return A}i.readAllLines=u;function m(S,T,A){let x=0;for(let M=0;M<T;M++){if(!f(S))return x;n.add(A,S.tokenStart,S.tokenEnd),x++}return x}async function v(S,T,A=1e5){const x=i(S),M=n.create(x.data,Math.max(S.length/80,2));return await(0,e.chunkedSubtask)(T,A,x,(D,V)=>(m(V,D,M),V.position<V.length?D:0),(D,V)=>D.update({message:"Parsing...",current:V.position,max:V.length})),M}i.readAllLinesAsync=v;function b(S){for(;S.position<S.length;)switch(S.data.charCodeAt(S.position)){case 9:case 10:case 13:case 32:S.tokenEnd=S.position;return;default:++S.position;break}S.tokenEnd=S.position}i.eatValue=b;function P(S){let T=-1;for(;S.position<S.length;){const A=S.data.charCodeAt(S.position);switch(A){case 9:case 32:T=A,++S.position;break;case 10:T!==13&&++S.lineNumber,T=A,++S.position;break;case 13:T=A,++S.position,++S.lineNumber;break;default:return T}}return T}i.skipWhitespace=P;function C(S){let T=-1;for(;S.position<S.length;){const A=S.data.charCodeAt(S.position);switch(A){case 9:case 32:T=A,++S.position;break;default:return T}}return T}i.skipStrictWhitespace=C;function l(S,T,A){const{data:x}=S;let M=T,D=A-1,V=x.charCodeAt(M);for(;(V===9||V===32)&&M<=D;)V=x.charCodeAt(++M);for(V=x.charCodeAt(D);(V===9||V===32)&&D>=M;)V=x.charCodeAt(--D);return S.tokenStart=M,S.tokenEnd=D+1,S.position=A,S}i.trim=l})(t||(Ds.Tokenizer=t={}));function r(i,c,o){let s=c,h=o-1,f=i.charCodeAt(s);for(;(f===9||f===32)&&s<=h;)f=i.charCodeAt(++s);for(f=i.charCodeAt(h);(f===9||f===32)&&h>=s;)f=i.charCodeAt(--h);return i.substring(s,h+1)}var n;return(function(i){function c(y){const _=new Uint32Array(1.61*y.indices.length|0);_.set(y.indices),y.indices=_,y.indicesLenMinus2=_.length-2|0}function o(y,_,g){const a=y;a.offset>a.indicesLenMinus2&&c(a),a.indices[a.offset++]=_,a.indices[a.offset++]=g,y.count++}i.add=o;function s(y,_){o(y,_.tokenStart,_.tokenEnd)}i.addToken=s;function h(y,_,g){y.indices[y.offset++]=_,y.indices[y.offset++]=g,y.count++}i.addUnchecked=h;function f(y,_){return _=Math.max(10,_),{data:y,indicesLenMinus2:_-2|0,count:0,offset:0,indices:new Uint32Array(_)}}i.create=f})(n||(Ds.TokenBuilder=n={})),Ds}var Hp={},yO;function Tr(){if(yO)return Hp;yO=1,Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.ReaderResult=void 0;var e;return(function(t){function r(o,s=-1){return new i(o,s)}t.error=r;function n(o,s=[]){return new c(o,s)}t.success=n;class i{toString(){return this.line>=0?`[Line ${this.line}] ${this.message}`:this.message}constructor(s,h){this.message=s,this.line=h,this.isError=!0}}t.Error=i;class c{constructor(s,h){this.result=s,this.warnings=h,this.isError=!1}}t.Success=c})(e||(Hp.ReaderResult=e={})),Hp}var vO;function mee(){if(vO)return LC;vO=1,Object.defineProperty(LC,"__esModule",{value:!0}),LC.parseCifText=U;const t=At.__importStar(bT()),r=Or(),n=Tr(),i=nt();var c;(function(q){q[q.Data=0]="Data",q[q.Save=1]="Save",q[q.Loop=2]="Loop",q[q.Value=3]="Value",q[q.ColumnName=4]="ColumnName",q[q.Comment=5]="Comment",q[q.End=6]="End"})(c||(c={}));function o(q){for(;q.position<q.length;)switch(q.data.charCodeAt(q.position)){case 9:case 10:case 13:case 32:q.tokenEnd=q.position;return;default:++q.position;break}q.tokenEnd=q.position}function s(q,N){let k,j;for(++q.position;q.position<q.length;)if(j=q.data.charCodeAt(q.position),j===N)switch(k=q.data.charCodeAt(q.position+1),k){case 9:case 10:case 13:case 32:q.tokenStart++,q.tokenEnd=q.position,q.isEscaped=!0,++q.position;return;default:if(!Number.isFinite(k)){q.tokenStart++,q.tokenEnd=q.position,q.isEscaped=!0,++q.position;return}++q.position;break}else{if(j===10||j===13){q.tokenEnd=q.position;return}++q.position}q.tokenEnd=q.position}function h(q){for(q.position+=3;q.position<q.length;){if(q.data.charCodeAt(q.position)===39&&a(q)){q.tokenStart+=3,q.tokenEnd=q.position,q.isEscaped=!0,q.position+=3;return}++q.position}q.tokenEnd=q.position}function f(q){let N=59,k=q.position+1,j;for(;k<q.length;)if(j=q.data.charCodeAt(k),j===59&&(N===10||N===13)){for(q.position=k+1,q.tokenStart++,k--,j=q.data.charCodeAt(k);j===10||j===13;)k--,j=q.data.charCodeAt(k);q.tokenEnd=k+1,q.isEscaped=!0;return}else(j===13||j===10&&N!==13)&&q.lineNumber++,N=j,++k;return q.position=k,N}function y(q){for(;q.position<q.length;)if(q.data.charCodeAt(q.position)===93){++q.position,q.tokenEnd=q.position,q.isImportGet=!1;return}else++q.position}function _(q){for(;q.position<q.length;){const N=q.data.charCodeAt(q.position);if(N===10||N===13)return;++q.position}}function g(q){let N=10;for(;q.position<q.length;){const k=q.data.charCodeAt(q.position);switch(k){case 9:case 32:N=k,++q.position;break;case 10:N!==13&&++q.lineNumber,N=k,++q.position;break;case 13:N=k,++q.position,++q.lineNumber;break;default:return N}}return N}function a(q){return!(q.length-q.position<2||q.data.charCodeAt(q.position+1)!==39||q.data.charCodeAt(q.position+2)!==39)}function d(q){let N=q.data.charCodeAt(q.tokenStart);return!(N!==68&&N!==100||(N=q.data.charCodeAt(q.tokenStart+1),N!==65&&N!==97)||(N=q.data.charCodeAt(q.tokenStart+2),N!==84&&N!==116)||(N=q.data.charCodeAt(q.tokenStart+3),N!==65&&N!==97))}function p(q){let N=q.data.charCodeAt(q.tokenStart);return!(N!==83&&N!==115||(N=q.data.charCodeAt(q.tokenStart+1),N!==65&&N!==97)||(N=q.data.charCodeAt(q.tokenStart+2),N!==86&&N!==118)||(N=q.data.charCodeAt(q.tokenStart+3),N!==69&&N!==101))}function u(q){if(q.tokenEnd-q.tokenStart!==5)return!1;let N=q.data.charCodeAt(q.tokenStart);return!(N!==76&&N!==108||(N=q.data.charCodeAt(q.tokenStart+1),N!==79&&N!==111)||(N=q.data.charCodeAt(q.tokenStart+2),N!==79&&N!==111)||(N=q.data.charCodeAt(q.tokenStart+3),N!==80&&N!==112))}function m(q){return!(q.tokenEnd-q.tokenStart!==11||q.data.charCodeAt(q.tokenStart+1)!==105||q.data.charCodeAt(q.tokenStart+2)!==109||q.data.charCodeAt(q.tokenStart+3)!==112||q.data.charCodeAt(q.tokenStart+4)!==111||q.data.charCodeAt(q.tokenStart+5)!==114||q.data.charCodeAt(q.tokenStart+6)!==116||q.data.charCodeAt(q.tokenStart+7)!==46||q.data.charCodeAt(q.tokenStart+8)!==103||q.data.charCodeAt(q.tokenStart+9)!==101||q.data.charCodeAt(q.tokenStart+10)!==116)}function v(q,N,k){let j;const H=k-N,G=q.tokenStart-N,z=q.tokenEnd-q.tokenStart;if(z<H)return!1;for(j=N;j<k;++j)if(q.data.charCodeAt(j)!==q.data.charCodeAt(j+G))return!1;return H===z||q.data.charCodeAt(j+G)===46}function b(q){let N;for(N=q.tokenStart;N<q.tokenEnd;++N)if(q.data.charCodeAt(N)===46)return N;return N}function P(q,N){return q.data.substring(q.tokenStart,N)}function C(q){let N;for(N=q.tokenStart;N<q.tokenEnd;++N)if(q.data.charCodeAt(N)===46)return!1;return!0}function l(q){return q.data.substring(q.tokenStart,q.tokenEnd)}function S(q){const N=g(q);if(q.position>=q.length){q.tokenType=c.End;return}q.tokenStart=q.position,q.tokenEnd=q.position,q.isEscaped=!1;const k=q.data.charCodeAt(q.position);switch(k){case 35:_(q),q.tokenType=c.Comment;break;case 39:if(a(q)){h(q),q.tokenType=c.Value;break}case 34:s(q,k),q.tokenType=c.Value;break;case 59:N===10||N===13?f(q):o(q),q.tokenType=c.Value;break;default:q.isImportGet?y(q):o(q),q.isEscaped?q.tokenType=c.Value:q.data.charCodeAt(q.tokenStart)===95?(q.inSaveFrame&&m(q)&&(q.isImportGet=!0),q.tokenType=c.ColumnName):q.tokenEnd-q.tokenStart>=5&&q.data.charCodeAt(q.tokenStart+4)===95?d(q)?q.tokenType=c.Data:p(q)?q.tokenType=c.Save:u(q)?q.tokenType=c.Loop:q.tokenType=c.Value:q.tokenType=c.Value;break}}function T(q){for(S(q);q.tokenType===c.Comment;)S(q)}function A(q,N){return{data:q,length:q.length,position:0,tokenStart:0,tokenEnd:0,tokenType:c.End,lineNumber:1,isEscaped:!1,isImportGet:!1,inSaveFrame:!1,runtimeCtx:N}}function x(){return{categoryNames:[],categoryData:Object.create(null)}}function M(q,N){const k=Object.create(null);for(const j of q){const H=N[j];k[j]=t.CifCategory(H.name,H.rowCount,H.fieldNames,H.fields)}return k}function D(q,N,k){return t.CifBlock(q.categoryNames,M(q.categoryNames,q.categoryData),N,k)}function V(q,N){return t.CifBlock(q.categoryNames,M(q.categoryNames,q.categoryData),N)}function R(q,N,k,j,H){if(N in q.categoryData){const G=q.categoryData[N];G.fieldNames.push(...j),Object.assign(G.fields,H)}else q.categoryData[N]={name:N,rowCount:k,fieldNames:j,fields:H},q.categoryNames.push(N)}function E(q,N){const k=q.tokenStart,j=b(q),H=P(q,j),G=Object.create(null),z=[];let W=!0;for(;W;
15){if(q.tokenType!==c.ColumnName||!v(q,k,j)){W=!1;break}const X=l(q).substring(H.length+1);if(T(q),q.tokenType!==c.Value)return{hasError:!0,errorLine:q.lineNumber,errorMessage:"Expected value."};G[X]=t.CifField.ofTokens({data:q.data,indices:[q.tokenStart,q.tokenEnd],count:1}),z[z.length]=X,T(q)}return R(N,H.substr(1),1,z,G),{hasError:!1,errorLine:0,errorMessage:""}}function I(q,N){const{tokenizer:k,tokens:j,fieldCount:H}=N;let G=N.tokenCount,z=0;for(;k.tokenType===c.Value&&z<q;)r.TokenBuilder.add(j[G++%H],k.tokenStart,k.tokenEnd),T(k),z++;return N.tokenCount=G,z}function B(q,N){return q.update({message:"Parsing...",current:N.tokenizer.position,max:N.tokenizer.data.length})}async function w(q,N){const k=q.lineNumber;T(q);const j=P(q,b(q)),H=C(q),G=[];for(;q.tokenType===c.ColumnName;)G[G.length]=H?l(q):l(q).substring(j.length+1),T(q);const z=j==="_atom_site"?q.data.length/100|0:32,W=[],X=G.length;for(let Q=0;Q<X;Q++)W[Q]=r.TokenBuilder.create(q.data,z);const Y={fieldCount:X,tokenCount:0,tokenizer:q,tokens:W};if(await(0,i.chunkedSubtask)(q.runtimeCtx,1e6,Y,I,B),Y.tokenCount%X!==0)return{hasError:!0,errorLine:q.lineNumber,errorMessage:`The number of values for loop starting at line ${k} is not a multiple of the number of columns.`};const K=Y.tokenCount/X|0;if(H)for(let Q=0;Q<X;Q++){const J={"":t.CifField.ofTokens(W[Q])};R(N,G[Q].substr(1),K,[""],J)}else{const Q=Object.create(null);for(let J=0;J<X;J++)Q[G[J]]=t.CifField.ofTokens(W[J]);R(N,j.substr(1),K,G,Q)}return{hasError:!1,errorLine:0,errorMessage:""}}function O(q,N){return n.ReaderResult.error(N,q)}function F(q){return n.ReaderResult.success(q)}async function L(q,N){const k=[],j=A(q,N);let H="",G=x(),z=[],W=x();const X=t.CifSaveFrame(W.categoryNames,M(W.categoryNames,W.categoryData),"");let Y="";for(N.update({message:"Parsing...",current:0,max:q.length}),T(j);j.tokenType!==c.End;){const K=j.tokenType;if(K===c.Data){if(j.inSaveFrame)return O(j.lineNumber,"Unexpected data block inside a save frame.");G.categoryNames.length>0&&k.push(D(G,H,z)),H=q.substring(j.tokenStart+5,j.tokenEnd),G=x(),z=[],T(j)}else if(K===c.Save){if(j.tokenEnd-j.tokenStart===5)W.categoryNames.length>0&&(z[z.length]=V(W,Y)),j.inSaveFrame=!1;else{if(j.inSaveFrame)return O(j.lineNumber,"Save frames cannot be nested.");j.inSaveFrame=!0,Y=q.substring(j.tokenStart+5,j.tokenEnd),W=x()}T(j)}else if(K===c.Loop){const Q=await w(j,j.inSaveFrame?W:G);if(Q.hasError)return O(Q.errorLine,Q.errorMessage)}else if(K===c.ColumnName){const Q=E(j,j.inSaveFrame?W:G);if(Q.hasError)return O(Q.errorLine,Q.errorMessage)}else return console.log(j.tokenType,r.Tokenizer.getTokenString(j)),O(j.lineNumber,"Unexpected token. Expected data_, loop_, or data name.")}return j.inSaveFrame?O(j.lineNumber,`Unfinished save frame (${X.header}).`):((G.categoryNames.length>0||z.length>0)&&k.push(D(G,H,z)),F(t.CifFile(k)))}function U(q){return i.Task.create("Parse CIF",async N=>await L(q,N))}return LC}var NC={},qC={},bO;function pee(){if(bO)return qC;bO=1,Object.defineProperty(qC,"__esModule",{value:!0}),qC.Field=n;const e=lt(),t=MT(),r=La();function n(i){const c=i.mask?(0,t.decode)(i.mask):void 0,o=(0,t.decode)(i.data),s=e.ColumnHelpers.isTypedArray(o),h=s?c?a=>c[a]===e.Column.ValueKinds.Present?""+o[a]:"":a=>""+o[a]:c?a=>c[a]===e.Column.ValueKinds.Present?o[a]:"":a=>o[a],f=s?a=>o[a]:a=>{const d=o[a];return(0,r.parseInt)(d,0,d.length)},y=s?a=>o[a]:a=>{const d=o[a];return(0,r.parseFloat)(d,0,d.length)},_=c?a=>c[a]:a=>e.Column.ValueKinds.Present,g=o.length;return{__array:o,binaryEncoding:i.data.encoding,isDefined:!0,rowCount:g,str:h,int:f,float:y,valueKind:_,areValuesEqual:(a,d)=>o[a]===o[d],toStringArray:a=>e.ColumnHelpers.createAndFillArray(g,h,a),toIntArray:s?a=>e.ColumnHelpers.typedArrayWindow(o,a):a=>e.ColumnHelpers.createAndFillArray(g,f,a),toFloatArray:s?a=>e.ColumnHelpers.typedArrayWindow(o,a):a=>e.ColumnHelpers.createAndFillArray(g,y,a)}}return qC}var UC={},_O;function sX(){if(_O)return UC;_O=1,Object.defineProperty(UC,"__esModule",{value:!0}),UC.decodeMsgPack=t;const e=$s();function t(s){return o({buffer:s,offset:0,dataView:new DataView(s.buffer)})}function r(s,h){const f={};for(let y=0;y<h;y++){const _=o(s);f[_]=o(s)}return f}function n(s,h){const f=new Uint8Array(h),y=s.offset;for(let _=0;_<h;_++)f[_]=s.buffer[_+y];return s.offset+=h,f}function i(s,h){const f=(0,e.utf8Read)(s.buffer,s.offset,h);return s.offset+=h,f}function c(s,h){const f=new Array(h);for(let y=0;y<h;y++)f[y]=o(s);return f}function o(s){const h=s.buffer[s.offset];let f,y;if((h&128)===0)return s.offset++,h;if((h&240)===128)return y=h&15,s.offset++,r(s,y);if((h&240)===144)return y=h&15,s.offset++,c(s,y);if((h&224)===160)return y=h&31,s.offset++,i(s,y);if((h&224)===224)return f=s.dataView.getInt8(s.offset),s.offset++,f;switch(h){case 192:return s.offset++,null;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return y=s.dataView.getUint8(s.offset+1),s.offset+=2,n(s,y);case 197:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,n(s,y);case 198:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,n(s,y);case 202:return f=s.dataView.getFloat32(s.offset+1),s.offset+=5,f;case 203:return f=s.dataView.getFloat64(s.offset+1),s.offset+=9,f;case 204:return f=s.buffer[s.offset+1],s.offset+=2,f;case 205:return f=s.dataView.getUint16(s.offset+1),s.offset+=3,f;case 206:return f=s.dataView.getUint32(s.offset+1),s.offset+=5,f;case 208:return f=s.dataView.getInt8(s.offset+1),s.offset+=2,f;case 209:return f=s.dataView.getInt16(s.offset+1),s.offset+=3,f;case 210:return f=s.dataView.getInt32(s.offset+1),s.offset+=5,f;case 217:return y=s.dataView.getUint8(s.offset+1),s.offset+=2,i(s,y);case 218:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,i(s,y);case 219:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,i(s,y);case 220:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,c(s,y);case 221:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,c(s,y);case 222:return y=s.dataView.getUint16(s.offset+1),s.offset+=3,r(s,y);case 223:return y=s.dataView.getUint32(s.offset+1),s.offset+=5,r(s,y)}throw new Error("Unknown type 0x"+h.toString(16))}return UC}var SO;function hee(){if(SO)return NC;SO=1,Object.defineProperty(NC,"__esModule",{value:!0}),NC.parseCifBinary=h;const t=At.__importStar(bT()),r=pee(),n=Tr(),i=sX(),c=nt();function o(f,y){for(let _=0;_<2;_++)if(f[_]>y[_])return!1;return!0}function s(f){const y=Object.create(null),_=Object.create(null);for(const g of f.columns)y[g.name]=g;return{rowCount:f.rowCount,name:f.name.substring(1),fieldNames:f.columns.map(g=>g.name),getField(g){const a=y[g];if(a)return _[g]||(_[g]=(0,r.Field)(a)),_[g]}}}function h(f){return c.Task.create("Parse BinaryCIF",async y=>{const _=[0,3];try{const g=(0,i.decodeMsgPack)(f);if(!o(_,g.version.match(/(\d)\.(\d)\.\d/).slice(1).map(d=>+d)))return n.ReaderResult.error(`Unsupported format version. Current ${g.version}, required ${_.join(".")}.`);const a=t.CifFile(g.dataBlocks.map(d=>{const p=Object.create(null);for(const u of d.categories)p[u.name.substring(1)]=s(u);return t.CifBlock(d.categories.map(u=>u.name.substring(1)),p,d.header)}));return n.ReaderResult.success(a)}catch(g){return n.ReaderResult.error(""+g)}})}return NC}var Wp={},CO;function gee(){if(CO)return Wp;CO=1,Object.defineProperty(Wp,"__esModule",{value:!0}),Wp.CCD_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i=t.List,c=t.lstr,o=t.Aliased,s=t.int,h=t.coord;return Wp.CCD_Schema={chem_comp:{formula:r,formula_weight:n,id:r,mon_nstd_parent_comp_id:i(",",f=>f),name:r,one_letter_code:r,three_letter_code:r,type:o(c),pdbx_synonyms:i(";",f=>f),pdbx_type:r,pdbx_ambiguous_flag:r,pdbx_replaced_by:r,pdbx_replaces:r,pdbx_formal_charge:s,pdbx_model_coordinates_details:r,pdbx_model_coordinates_db_code:r,pdbx_ideal_coordinates_details:r,pdbx_ideal_coordinates_missing_flag:o(c),pdbx_model_coordinates_missing_flag:o(c),pdbx_initial_date:r,pdbx_modified_date:r,pdbx_release_status:o(r),pdbx_processing_site:o(r)},chem_comp_atom:{alt_atom_id:r,atom_id:r,charge:s,model_Cartn_x:
15h,model_Cartn_y:h,model_Cartn_z:h,comp_id:r,type_symbol:r,pdbx_align:s,pdbx_ordinal:s,pdbx_model_Cartn_x_ideal:h,pdbx_model_Cartn_y_ideal:h,pdbx_model_Cartn_z_ideal:h,pdbx_stereo_config:o(c),pdbx_aromatic_flag:o(c),pdbx_leaving_atom_flag:o(c)},chem_comp_bond:{atom_id_1:r,atom_id_2:r,comp_id:r,value_order:o(c),pdbx_ordinal:s,pdbx_stereo_config:o(c),pdbx_aromatic_flag:o(c)},pdbx_chem_comp_descriptor:{comp_id:r,descriptor:r,type:o(c),program:r,program_version:r},pdbx_chem_comp_identifier:{comp_id:r,identifier:r,type:o(r),program:r,program_version:r}},Wp}var $p={},PO;function yee(){if(PO)return $p;PO=1,Object.defineProperty($p,"__esModule",{value:!0}),$p.BIRD_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i=t.lstr,c=t.Aliased,o=t.int;return $p.BIRD_Schema={pdbx_reference_molecule:{prd_id:r,formula_weight:n,formula:r,type:c(i),type_evidence_code:r,class:c(i),class_evidence_code:r,name:r,represent_as:c(i),chem_comp_id:r,compound_details:r,description:r,representative_PDB_id_code:r,release_status:c(i),replaces:r,replaced_by:r},pdbx_reference_entity_list:{prd_id:r,ref_entity_id:r,type:c(i),details:r,component_id:o},pdbx_reference_entity_nonpoly:{prd_id:r,ref_entity_id:r,name:r,chem_comp_id:r},pdbx_reference_entity_link:{link_id:o,prd_id:r,details:r,ref_entity_id_1:r,ref_entity_id_2:r,entity_seq_num_1:o,entity_seq_num_2:o,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(i),component_1:o,component_2:o,link_class:c(r)},pdbx_reference_entity_poly_link:{link_id:o,prd_id:r,ref_entity_id:r,component_id:o,entity_seq_num_1:o,entity_seq_num_2:o,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(i)},pdbx_reference_entity_poly:{prd_id:r,ref_entity_id:r,type:c(r),db_code:r,db_name:r},pdbx_reference_entity_poly_seq:{prd_id:r,ref_entity_id:r,mon_id:r,parent_mon_id:r,num:o,observed:c(i),hetero:c(i)},pdbx_reference_entity_sequence:{prd_id:r,ref_entity_id:r,type:c(r),NRP_flag:c(r),one_letter_codes:r},pdbx_reference_entity_src_nat:{prd_id:r,ref_entity_id:r,ordinal:o,organism_scientific:r,taxid:r,db_code:r,db_name:r},pdbx_prd_audit:{prd_id:r,date:r,processing_site:c(r),action_type:c(r)}},$p}var Xp={},TO;function vee(){if(TO)return Xp;TO=1,Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.dic_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.float,i={id:r,description:r},c={title:r,datablock_id:r,version:r},o={version:r,update:r,revision:r},s={id:r,description:r},h={id:r,parent_id:r,description:r},f={code:r,primitive_code:r,construct:r,detail:r},y={code:r,detail:r},_={from_code:r,to_code:r,operator:r,factor:n};return Xp.dic_Schema={datablock:i,dictionary:c,dictionary_history:o,sub_category:s,category_group_list:h,item_type_list:f,item_units_list:y,item_units_conversion:_},Xp}var Dc={},xO;function cX(){if(xO)return Dc;xO=1,Object.defineProperty(Dc,"__esModule",{value:!0}),Dc.DensityServer_Data_Schema=Dc.DensityServer_Header_Schema=void 0;var t=lt().Column.Schema;const r=t.str,n=t.int,i=t.float,c=t.Aliased,o=t.Vector;return Dc.DensityServer_Header_Schema={density_server_result:{server_version:r,datetime_utc:r,guid:r,is_empty:c(r),has_error:c(r),error:r,query_source_id:r,query_type:c(r),query_box_type:c(r),query_box_a:o(3),query_box_b:o(3)}},Dc.DensityServer_Data_Schema={volume_data_3d_info:{name:r,axis_order:o(3,n),origin:o(3),dimensions:o(3),sample_rate:n,sample_count:o(3,n),spacegroup_number:n,spacegroup_cell_size:o(3),spacegroup_cell_angles:o(3),mean_source:i,mean_sampled:i,sigma_source:i,sigma_sampled:i,min_source:i,min_sampled:i,max_source:i,max_sampled:i},volume_data_3d:{values:i}},Dc}var Ic={},AO;function bee(){if(AO)return Ic;AO=1,Object.defineProperty(Ic,"__esModule",{value:!0}),Ic.CifCore_Aliases=Ic.CifCore_Schema=void 0;var t=lt().Column.Schema;const r=t.float,n=t.str,i=t.int,c=t.Matrix;return Ic.CifCore_Schema={cell:{angle_alpha:r,angle_beta:r,angle_gamma:r,formula_units_z:r,length_a:r,length_b:r,length_c:r,volume:r},chemical:{melting_point:r,name_common:n,name_systematic:n},chemical_formula:{iupac:n,moiety:n,sum:n,weight:r},space_group:{crystal_system:n,it_number:i,"name_h-m_alt":n,"name_h-m_full":n,name_hall:n},space_group_symop:{operation_xyz:n},geom_bond:{atom_site_label_1:n,atom_site_label_2:n,distance:r,publ_flag:n,site_symmetry_1:n,site_symmetry_2:n,valence:r},audit:{block_doi:n},database_code:{cod:n,csd:n,depnum_ccdc_archive:n,depnum_ccdc_fiz:n,icsd:n,mdf:n,nbs:n},atom_site:{adp_type:n,calc_flag:n,disorder_assembly:n,disorder_group:n,fract_x:r,fract_y:r,fract_z:r,label:n,occupancy:r,refinement_flags:n,site_symmetry_multiplicity:i,type_symbol:n,u_iso_or_equiv:r},atom_site_aniso:{label:n,u_11:r,u:c(3,3),u_12:r,u_13:r,u_22:r,u_23:r,u_33:r},atom_type:{description:n,symbol:n},atom_type_scat:{dispersion_imag:r,dispersion_real:r,source:n}},Ic.CifCore_Aliases={"cell.formula_units_z":["cell_formula_units_Z"],"chemical_formula.iupac":["chemical_formula_IUPAC"],"space_group.it_number":["space_group_IT_number","symmetry_Int_Tables_number"],"space_group.name_h-m_alt":["space_group_name_H-M_alt"],"space_group.name_h-m_full":["symmetry_space_group_name_H-M"],"space_group.name_hall":["space_group_name_Hall","symmetry_space_group_name_Hall"],"space_group_symop.operation_xyz":["symmetry_equiv_pos_as_xyz"],"geom_bond.atom_site_label_1":["geom_bond_atom_site_id_1"],"geom_bond.atom_site_label_2":["geom_bond_atom_site_id_2"],"geom_bond.distance":["geom_bond_dist"],"audit.block_doi":["audit_block_DOI"],"database_code.cod":["database_code_COD"],"database_code.csd":["database_code_CSD"],"database_code.depnum_ccdc_archive":["database_code_depnum_CCDC_archive"],"database_code.depnum_ccdc_fiz":["database_code_depnum_CCDC_fiz"],"database_code.icsd":["database_code_ICSD"],"database_code.mdf":["database_code_MDF"],"database_code.nbs":["database_code_NBS"],"atom_site.adp_type":["atom_site_ADP_type","atom_site_thermal_displace_type"],"atom_site.label":["atom_site_id"],"atom_site.site_symmetry_multiplicity":["atom_site_symmetry_multiplicity"],"atom_site.u_iso_or_equiv":["atom_site_U_iso_or_equiv"],"atom_site_aniso.label":["atom_site_anisotrop_id"],"atom_site_aniso.u_11":["atom_site_aniso_U_11","atom_site_anisotrop_U_11"],"atom_site_aniso.u_12":["atom_site_aniso_U_12","atom_site_anisotrop_U_12"],"atom_site_aniso.u_13":["atom_site_aniso_U_13","atom_site_anisotrop_U_13"],"atom_site_aniso.u_22":["atom_site_aniso_U_22","atom_site_anisotrop_U_22"],"atom_site_aniso.u_23":["atom_site_aniso_U_23","atom_site_anisotrop_U_23"],"atom_site_aniso.u_33":["atom_site_aniso_U_33","atom_site_anisotrop_U_33"]},Ic}var Kp={},MO;function _ee(){if(MO)return Kp;MO=1,Object.defineProperty(Kp,"__esModule",{value:!0}
15),Kp.Segmentation_Data_Schema=void 0;const e=lt(),t=cX();var r=e.Column.Schema;const n=r.int;return Kp.Segmentation_Data_Schema={volume_data_3d_info:t.DensityServer_Data_Schema.volume_data_3d_info,segmentation_data_table:{set_id:n,segment_id:n},segmentation_data_3d:{values:n}},Kp}var Yp={},DO;function See(){if(DO)return Yp;DO=1,Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.SF_Schema=void 0;var t=lt().Column.Schema;const r=t.float,n=t.str,i=t.int,c=t.lstr,o=t.Aliased;return Yp.SF_Schema={cell:{angle_alpha:r,angle_beta:r,angle_gamma:r,entry_id:n,length_a:r,length_b:r,length_c:r,Z_PDB:i,pdbx_unique_axis:n},diffrn:{ambient_temp:r,crystal_id:n,crystal_treatment:n,details:n,id:n},diffrn_radiation_wavelength:{id:n,wavelength:r},diffrn_reflns:{diffrn_id:n,limit_h_max:i,limit_h_min:i,limit_k_max:i,limit_k_min:i,limit_l_max:i,limit_l_min:i,number:i,pdbx_d_res_low:r,pdbx_d_res_high:r,pdbx_number_obs:i},entry:{id:n},exptl_crystal:{id:n},refln:{crystal_id:n,F_meas_au:r,F_meas_sigma_au:r,fom:r,index_h:i,index_k:i,index_l:i,intensity_meas:r,intensity_sigma:r,status:o(c),scale_group_code:n,wavelength_id:n,pdbx_FWT:r,pdbx_PHWT:r,pdbx_DELFWT:r,pdbx_DELPHWT:r,pdbx_r_free_flag:i},reflns_scale:{group_code:n},symmetry:{entry_id:n,cell_setting:o(c),Int_Tables_number:i,space_group_name_Hall:n,"space_group_name_H-M":n}},Yp}var IO;function Ti(){return IO||(IO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CIF=void 0;const t=At,r=mee(),n=hee(),i=_T(),c=bl(),o=gee(),s=yee(),h=vee(),f=cX(),y=bee(),_=_ee(),g=See(),a=nS();e.CIF={parse:d=>a.StringLike.is(d)?(0,r.parseCifText)(d):(0,n.parseCifBinary)(d),parseText:r.parseCifText,parseBinary:n.parseCifBinary,toDatabaseCollection:i.toDatabaseCollection,toDatabase:i.toDatabase,schema:{mmCIF:d=>(0,i.toDatabase)(c.mmCIF_Schema,d),CCD:d=>(0,i.toDatabase)(o.CCD_Schema,d),BIRD:d=>(0,i.toDatabase)(s.BIRD_Schema,d),dic:d=>(0,i.toDatabase)(h.dic_Schema,d),cifCore:d=>(0,i.toDatabase)(y.CifCore_Schema,d,y.CifCore_Aliases),densityServer:d=>(0,i.toDatabase)(f.DensityServer_Data_Schema,d),segmentation:d=>(0,i.toDatabase)(_.Segmentation_Data_Schema,d),SF:d=>(0,i.toDatabase)(g.SF_Schema,d)}},t.__exportStar(bT(),e)})(gx)),gx}var Qp={},wO;function FT(){if(wO)return Qp;wO=1,Object.defineProperty(Qp,"__esModule",{value:!0}),Qp.AtomSiteAnisotrop=void 0;const e=bl(),t=$i(),r=as(),n=Mi(),i={U:e.mmCIF_Schema.atom_site_anisotrop.U,U_esd:e.mmCIF_Schema.atom_site_anisotrop.U_esd};var c;return(function(o){o.Schema=i,o.Descriptor={name:"atom_site_anisotrop",cifExport:{prefix:"",categories:[{name:"atom_site_anisotrop",instance(f){return!o.Provider.get(f.firstModel)||!n.MmcifFormat.is(f.firstModel.sourceData)?t.CifWriter.Category.Empty:t.CifWriter.Category.ofTable(f.firstModel.sourceData.data.db.atom_site_anisotrop)}}]}},o.Provider=r.FormatPropertyProvider.create(o.Descriptor);function s(f,y){const _=new Int32Array(f.rowCount);_.fill(-1);for(let a=0,d=f.rowCount;a<d;a++)_[f.value(a)]=a;const g=new Int32Array(f.rowCount);g.fill(-1);for(let a=0,d=y.rowCount;a<d;++a){const p=_[y.value(a)];p!==-1&&(g[p]=a)}return g}o.getElementToAnsiotrop=s;function h(f,y){const _={};for(let a=0,d=f.rowCount;a<d;a++)_[f.value(a)]=a;const g=new Int32Array(f.rowCount);g.fill(-1);for(let a=0,d=y.rowCount;a<d;++a){const p=_[y.value(a)];p!==void 0&&(g[p]=a)}return g}o.getElementToAnsiotropFromLabel=h})(c||(Qp.AtomSiteAnisotrop=c={})),Qp}var Zp={},VO;function cI(){if(VO)return Zp;VO=1,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.GlobalModelTransformInfo=void 0;const e=as(),t=Pr(),r=lt(),n=$i(),i=Mi(),c=_T();var o;return(function(s){const h="molstar_global_model_transform_info";s.Schema={[h]:{matrix:r.Column.Schema.Matrix(4,4,r.Column.Schema.float)}},s.Descriptor=(0,t.CustomPropertyDescriptor)({name:h,cifExport:{categories:[{name:h,instance(d){const p=y(d.firstModel);if(!p)return n.CifWriter.Category.Empty;const u=r.Table.ofRows(s.Schema.molstar_global_model_transform_info,[{matrix:p}]);return n.CifWriter.Category.ofTable(u)}}],prefix:"molstar"}}),s.Provider=e.FormatPropertyProvider.create(s.Descriptor);function f(d,p){d.customProperties.has(s.Descriptor)||d.customProperties.add(s.Descriptor),s.Provider.set(d,p)}s.attach=f;function y(d){return s.Provider.get(d)}s.get=y;function _(d){if(!i.MmcifFormat.is(d.sourceData))return;const p=d.sourceData.data.frame.categories[h];if(!p)return;const u=(0,c.toTable)(s.Schema[h],p);if(u._rowCount!==0)return u.matrix.value(0)}s.fromMmCif=_;function g(d){if(!i.MmcifFormat.is(d.sourceData))return!1;const p=d.sourceData.data.frame.categories[h];return!!p&&p.rowCount>0}s.hasData=g;function a(d,p){d.writeCategory({name:h,instance(){const u=r.Table.ofRows(s.Schema.molstar_global_model_transform_info,[{matrix:p}]);return n.CifWriter.Category.ofTable(u)}})}s.writeMmCif=a})(o||(Zp.GlobalModelTransformInfo=o={})),Zp}var yx={},bo={},EO;function Cee(){if(EO)return bo;EO=1,Object.defineProperty(bo,"__esModule",{value:!0}
15),bo.mmCIF_chemComp_schema=bo.mmCIF_chemCompBond_schema=bo.mmCIF_residueId_schema=void 0;const e=bl(),t=lt();return bo.mmCIF_residueId_schema={label_comp_id:e.mmCIF_Schema.atom_site.label_comp_id,label_seq_id:e.mmCIF_Schema.atom_site.label_seq_id,pdbx_PDB_ins_code:e.mmCIF_Schema.atom_site.pdbx_PDB_ins_code,label_asym_id:e.mmCIF_Schema.atom_site.label_asym_id,label_entity_id:e.mmCIF_Schema.atom_site.label_entity_id,auth_comp_id:e.mmCIF_Schema.atom_site.auth_atom_id,auth_seq_id:e.mmCIF_Schema.atom_site.auth_seq_id,auth_asym_id:e.mmCIF_Schema.atom_site.auth_asym_id},bo.mmCIF_chemCompBond_schema={...e.mmCIF_Schema.chem_comp_bond,molstar_protonation_variant:t.Column.Schema.Str()},bo.mmCIF_chemComp_schema={...e.mmCIF_Schema.chem_comp,type:t.Column.Schema.Aliased(t.Column.Schema.str)},bo}var Jp={},BO;function uX(){if(BO)return Jp;BO=1,Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.getModelGroupName=t,Jp.getNormalizedAtomSite=i;const e=lt();function t(c,o){const{ihm_model_group:s,ihm_model_group_link:h}=o,f=e.Table.pickRow(h,y=>h.model_id.value(y)===c);if(f){const y=e.Table.pickRow(s,_=>s.id.value(_)===f.group_id);if(y)return y.name}return""}function r(c){for(let o=0,s=c.rowCount;o<s;o++)if(c.valueKind(o)===e.Column.ValueKinds.Present)return!0;return!1}function n(c,o,s){(!c[o].isDefined||!r(c[o]))&&(c[o]=c[s]),(!c[s].isDefined||!r(c[s]))&&(c[s]=c[o])}function i(c){const o=e.Table.ofColumns(c._schema,c);return n(o,"label_atom_id","auth_atom_id"),n(o,"label_comp_id","auth_comp_id"),n(o,"label_seq_id","auth_seq_id"),n(o,"label_asym_id","auth_asym_id"),n(o,"label_entity_id","label_asym_id"),o}return Jp}var RO;function vn(){return RO||(RO=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BasicSchema=void 0,e.createBasic=c;const t=bl(),r=lt(),n=Cee(),i=uX();e.BasicSchema={entry:t.mmCIF_Schema.entry,struct:t.mmCIF_Schema.struct,struct_asym:t.mmCIF_Schema.struct_asym,ihm_model_list:t.mmCIF_Schema.ihm_model_list,ihm_model_group:t.mmCIF_Schema.ihm_model_group,ihm_model_group_link:t.mmCIF_Schema.ihm_model_group_link,entity:t.mmCIF_Schema.entity,entity_poly:t.mmCIF_Schema.entity_poly,entity_poly_seq:t.mmCIF_Schema.entity_poly_seq,pdbx_entity_branch:t.mmCIF_Schema.pdbx_entity_branch,chem_comp:n.mmCIF_chemComp_schema,pdbx_chem_comp_identifier:t.mmCIF_Schema.pdbx_chem_comp_identifier,atom_site:t.mmCIF_Schema.atom_site,ihm_sphere_obj_site:t.mmCIF_Schema.ihm_sphere_obj_site,ihm_gaussian_obj_site:t.mmCIF_Schema.ihm_gaussian_obj_site,pdbx_unobs_or_zero_occ_residues:t.mmCIF_Schema.pdbx_unobs_or_zero_occ_residues,pdbx_molecule:t.mmCIF_Schema.pdbx_molecule};function c(o,s=!1){const h=Object.create(null);for(const f of Object.keys(e.BasicSchema))f in o?h[f]=o[f]:h[f]=r.Table.ofUndefinedColumns(e.BasicSchema[f],0);return s&&(h.atom_site=(0,i.getNormalizedAtomSite)(h.atom_site)),h}})(yx)),yx}var eh={},OO;function xi(){if(OO)return eh;OO=1,Object.defineProperty(eh,"__esModule",{value:!0}),eh.EntityBuilder=void 0;const e=dt(),t=lt(),r=vn();class n{constructor(){this.count=0,this.ids=[],this.types=[],this.descriptions=[],this.compoundsMap=new Map,this.seqresMap=new Map,this.namesMap=new Map,this.heteroMap=new Map,this.chainMap=new Map,this.sequenceMap=new Map,this.polymerCount=0}set(c,o){this.count+=1,this.ids.push(`${this.count}`),this.types.push(c),this.descriptions.push([o])}addPolymer(c,o,s){return c.has(o)||(this.polymerCount+=1,this.set("polymer",s?.customName||`Polymer ${this.polymerCount}`),c.set(o,`${this.count}`)),c.get(o)}addNonPolymer(c,o,s,h){if(!c.has(o)){const f=s===e.MoleculeType.Saccharide?"branched":"non-polymer";this.set(f,h?.customName||this.namesMap.get(o)||o),c.set(o,`${this.count}`)}return c.get(o)}getEntityId(c,o,s,h){if(o===e.MoleculeType.Water)return this.waterId===void 0&&(this.set("water",h?.customName||"Water"),this.waterId=`${this.count}`),this.waterId;if((0,e.isPolymer)(o)){if(this.compoundsMap.has(s))return this.compoundsMap.get(s);if(this.seqresMap.has(s)){const{key:f,residues:y}=this.seqresMap.get(s);if(y.has(c))return this.addPolymer(this.sequenceMap,f,h)}return this.addPolymer(this.chainMap,s,h)}else{if(this.seqresMap.has(s)){const{key:f,residues:y}=this.seqresMap.get(s);if(y.has(c))return this.addNonPolymer(this.sequenceMap,f,o,h)}return this.addNonPolymer(this.heteroMap,c,o,h)}}
15getEntityTable(){return t.Table.ofPartialColumns(r.BasicSchema.entity,{id:t.Column.ofStringArray(this.ids),type:t.Column.ofStringAliasArray(this.types),pdbx_description:t.Column.ofStringListArray(this.descriptions)},this.count)}setCompounds(c){for(let o=0,s=c.length;o<s;++o){const{chains:h,description:f}=c[o];this.set("polymer",f);for(let y=0,_=h.length;y<_;++y)this.compoundsMap.set(h[y],`${this.count}`)}}setNames(c){c.forEach(o=>this.namesMap.set(o[0],o[1]))}setSeqres(c){for(const[o,s]of c)this.seqresMap.set(o,{key:s.join("-"),residues:new Set(s)})}getEntityIdForChain(c){if(this.compoundsMap.size===0&&this.chainMap.size===0&&this.sequenceMap.size===0)throw new Error("EntityBuilder.getEntityIdForChain called before any atoms were processed. Call getEntityId for all atoms first.");if(this.compoundsMap.has(c))return this.compoundsMap.get(c);if(this.seqresMap.has(c)){const{key:o}=this.seqresMap.get(c);if(this.sequenceMap.has(o))return this.sequenceMap.get(o)}if(this.chainMap.has(c))return this.chainMap.get(c)}}return eh.EntityBuilder=n,eh}var th={},kO;function Ai(){if(kO)return th;kO=1,Object.defineProperty(th,"__esModule",{value:!0}),th.ComponentBuilder=void 0;const e=lt(),t=dt(),r=Hi(),n=vn(),i=xf(),c=[new Set(["CA"]),new Set(["C"]),new Set(["N"])],o=[new Set(["P","O3'","O3*"]),new Set(["C4'","C4*"]),new Set(["O2'","O2*","F2'","F2*"])],s=[new Set(["P","O3'","O3*"]),new Set(["C3'","C3*"]),new Set(["O2'","O2*","F2'","F2*"])],h=new Set(["FMN","NCN","FNS","FMA","ATP","ADP","AMP","GTP","GDP","GMP","LIG"]),f=(function(){const g=new Map;return[{id:"HIS",name:"HISTIDINE",type:"l-peptide linking"},{id:"ARG",name:"ARGININE",type:"l-peptide linking"},{id:"LYS",name:"LYSINE",type:"l-peptide linking"},{id:"ILE",name:"ISOLEUCINE",type:"l-peptide linking"},{id:"PHE",name:"PHENYLALANINE",type:"l-peptide linking"},{id:"LEU",name:"LEUCINE",type:"l-peptide linking"},{id:"TRP",name:"TRYPTOPHAN",type:"l-peptide linking"},{id:"ALA",name:"ALANINE",type:"l-peptide linking"},{id:"MET",name:"METHIONINE",type:"l-peptide linking"},{id:"CYS",name:"CYSTEINE",type:"l-peptide linking"},{id:"ASN",name:"ASPARAGINE",type:"l-peptide linking"},{id:"VAL",name:"VALINE",type:"l-peptide linking"},{id:"GLY",name:"GLYCINE",type:"peptide linking"},{id:"SER",name:"SERINE",type:"l-peptide linking"},{id:"GLN",name:"GLUTAMINE",type:"l-peptide linking"},{id:"TYR",name:"TYROSINE",type:"l-peptide linking"},{id:"ASP",name:"ASPARTIC ACID",type:"l-peptide linking"},{id:"GLU",name:"GLUTAMIC ACID",type:"l-peptide linking"},{id:"THR",name:"THREONINE",type:"l-peptide linking"},{id:"PRO",name:"PROLINE",type:"l-peptide linking"},{id:"SEC",name:"SELENOCYSTEINE",type:"l-peptide linking"},{id:"PYL",name:"PYRROLYSINE",type:"l-peptide linking"},{id:"MSE",name:"SELENOMETHIONINE",type:"l-peptide linking"},{id:"SEP",name:"PHOSPHOSERINE",type:"l-peptide linking"},{id:"TPO",name:"PHOSPHOTHREONINE",type:"l-peptide linking"},{id:"PTR",name:"O-PHOSPHOTYROSINE",type:"l-peptide linking"},{id:"PCA",name:"PYROGLUTAMIC ACID",type:"l-peptide linking"},{id:"A",name:"ADENOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"C",name:"CYTIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"T",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"G",name:"GUANOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"I",name:"INOSINIC ACID",type:"rna linking"},{id:"U",name:"URIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"DA",name:"2'-DEOXYADENOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DC",name:"2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DT",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DG",name:"2'-DEOXYGUANOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DI",name:"2'-DEOXYINOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DU",name:"2'-DEOXYURIDINE-5'-MONOPHOSPHATE",type:"dna linking"}].forEach(d=>g.set(d.id,d)),g})(),y=(function(){const g=new Map;return[{id:"ZN2",name:"ZINC ION",type:"ion"},{id:"SOD",name:"SODIUM ION",type:"ion"},{id:"CES",name:"CESIUM ION",type:"ion"},{id:"CLA",name:"CHLORIDE ION",type:"ion"},{id:"CAL",name:"CALCIUM ION",type:"ion"},{id:"POT",name:"POTASSIUM ION",type:"ion"}
15].forEach(d=>g.set(d.id,d)),g})();class _{set(a){this.comps.set(a.id,a),this.ids.push(a.id),this.names.push(a.name),this.types.push(a.type),this.mon_nstd_flags.push(t.PolymerNames.has(a.id)?"y":"n")}getAtomIds(a){const d=new Set,p=this.seqId.value(a);for(;a<this.seqId.rowCount&&this.seqId.value(a)===p;)d.add(this.atomId.value(a)),a+=1;return d}hasAtomIds(a,d){for(let p=0,u=d.length;p<u;++p)if(!r.SetUtils.areIntersecting(a,d[p]))return!1;return!0}getType(a){return this.hasAtomIds(a,c)?"peptide linking":this.hasAtomIds(a,o)?"rna linking":this.hasAtomIds(a,s)?"dna linking":"other"}has(a){return this.comps.has(a)}get(a){return this.comps.get(a)}add(a,d){if(!this.has(a))if(f.has(a))this.set(f.get(a));else if(t.WaterNames.has(a))this.set({id:a,name:"WATER",type:"non-polymer"});else if(h.has(a.toUpperCase()))this.set({id:a,name:this.namesMap.get(a)||a,type:"non-polymer"});else if(i.SaccharideCompIdMap.has(a.toUpperCase()))this.set({id:a,name:this.namesMap.get(a)||a,type:"saccharide"});else{const p=this.getAtomIds(d);if(p.size===1&&y.has(a))this.set(y.get(a));else{const u=this.getType(p);this.set({id:a,name:this.namesMap.get(a)||a,type:u})}}return this.get(a)}getChemCompTable(){return e.Table.ofPartialColumns(n.BasicSchema.chem_comp,{id:e.Column.ofStringArray(this.ids),name:e.Column.ofStringArray(this.names),type:e.Column.ofStringAliasArray(this.types),mon_nstd_flag:e.Column.ofStringAliasArray(this.mon_nstd_flags)},this.ids.length)}setNames(a){a.forEach(d=>this.namesMap.set(d[0],d[1]))}constructor(a,d){this.seqId=a,this.atomId=d,this.namesMap=new Map,this.comps=new Map,this.ids=[],this.names=[],this.types=[],this.mon_nstd_flags=[]}}return th.ComponentBuilder=_,th}var cd={},FO;function lX(){if(FO)return cd;FO=1,Object.defineProperty(cd,"__esModule",{value:!0}),cd.MolstarBondSiteSchema=void 0,cd.molstar_bond_site=c;const e=lt(),t=$i(),r=dt(),n=jr(),i=_t();function c(y){const _=f(y);if(_.length!==0)return[s,_,{ignoreFilter:!0}]}cd.MolstarBondSiteSchema={molstar_bond_site:{atom_id_1:e.Column.Schema.int,atom_id_2:e.Column.Schema.int,value_order:e.Column.Schema.Aliased(e.Column.Schema.lstr),type_id:e.Column.Schema.Aliased(e.Column.Schema.lstr)}};const o=t.CifWriter.fields().int("atom_id_1",(y,_)=>_[y].atom_id_1).int("atom_id_2",(y,_)=>_[y].atom_id_2).str("value_order",(y,_)=>{var g;return(g=_[y].value_order)!==null&&g!==void 0?g:""},{valueKind:(y,_)=>_[y].value_order===void 0?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present}).str("type_id",(y,_)=>{var g;return(g=_[y].type_id)!==null&&g!==void 0?g:""},{valueKind:(y,_)=>_[y].type_id===void 0?e.Column.ValueKinds.NotPresent:e.Column.ValueKinds.Present}).getFields(),s={name:"molstar_bond_site",instance(y){return{fields:o,source:[{data:y,rowCount:y.length}]}}};function h(y,_,g){g[0]=void 0,g[1]=void 0,y===1?g[0]="sing":y===2?g[0]="doub":y===3?g[0]="trip":y===4&&(g[0]="quad"),r.BondType.is(_,r.BondType.Flag.Aromatic)&&(g[0]="arom"),r.BondType.is(_,r.BondType.Flag.Disulfide)?g[1]="disulf":r.BondType.is(_,r.BondType.Flag.Covalent)?g[1]="covale":r.BondType.is(_,r.BondType.Flag.MetallicCoordination)?g[1]="metalc":r.BondType.is(_,r.BondType.Flag.HydrogenBond)&&(g[1]="hydrog")}function f(y){const _=[],g=new Set,a=n.StructureElement.Location.create(),{id:d}=n.StructureProperties.atom,p=[void 0,void 0],u=(m,v)=>{const b=(0,i.sortedCantorPairing)(m,v);g.has(b)||(g.add(b),m>v?_.push({atom_id_1:v,atom_id_2:m,value_order:p[0],type_id:p[1]}):_.push({atom_id_1:m,atom_id_2:v,value_order:p[0],type_id:p[1]}))};for(const m of y.structures){a.structure=m;for(const v of m.units){if(!n.Unit.isAtomic(v))continue;const{elements:b}=v,{a:P,b:C,edgeProps:l}=v.bonds;a.unit=v;for(let S=0;S<P.length;S++){a.element=b[P[S]];const T=d(a);a.element=b[C[S]];const A=d(a);h(l.order[S],l.flags[S],p),u(T,A)}}
15m.interUnitBonds.edges.forEach(v=>{let b=m.unitMap.get(v.unitA);a.unit=b,a.element=b.elements[v.indexA];const P=d(a);b=m.unitMap.get(v.unitB),a.unit=b,a.element=b.elements[v.indexB];const C=d(a);h(v.props.order,v.props.flag,p),u(P,C)})}return _.sort((m,v)=>m.atom_id_1!==v.atom_id_1?m.atom_id_1-v.atom_id_1:m.atom_id_2!==v.atom_id_2?m.atom_id_2-v.atom_id_2:0),_}return cd}var LO;function Mi(){if(LO)return vo;LO=1,Object.defineProperty(vo,"__esModule",{value:!0}),vo.CCDFormat=vo.MmcifFormat=void 0,vo.trajectoryFromMmCIF=D,vo.trajectoryFromCCD=R;const e=NT(),t=nt(),r=Ti(),n=ga(),i=Qn(),c=BT(),o=lt(),s=FT(),h=tX(),f=DT(),y=Ke(),_=cI(),g=vn(),a=xi(),d=dt(),p=Ai(),u=_t(),m=Ua(),v=_T(),b=lX();function P(B){if(M.is(B.sourceData))return i.ModelSymmetry.fromData(B.sourceData.data.db)}i.ModelSymmetry.Provider.formatRegistry.add("mmCIF",P);function C(B){if(!M.is(B.sourceData))return;const{struct_conf:w,struct_sheet_range:O}=B.sourceData.data.db;return c.ModelSecondaryStructure.fromStruct(w,O,B.atomicHierarchy)}c.ModelSecondaryStructure.Provider.formatRegistry.add("mmCIF",C);function l(B){if(!M.is(B.sourceData))return;const{atom_site_anisotrop:w}=B.sourceData.data.db,O=o.Table.ofColumns(s.AtomSiteAnisotrop.Schema,w),F=s.AtomSiteAnisotrop.getElementToAnsiotrop(B.atomicConformation.atomId,w.id);return{data:O,elementToAnsiotrop:F}}function S(B){return M.is(B.sourceData)?B.sourceData.data.db.atom_site_anisotrop.U.isDefined:!1}s.AtomSiteAnisotrop.Provider.formatRegistry.add("mmCIF",l,S);function T(B){if(!M.is(B.sourceData))return;const{chem_comp_bond:w}=B.sourceData.data.db;if(w._rowCount!==0)return{data:w,entries:h.ComponentBond.getEntriesFromChemCompBond(w)}}h.ComponentBond.Provider.formatRegistry.add("mmCIF",T);function A(B){if(!M.is(B.sourceData))return;const{struct_conn:w}=B.sourceData.data.db;if(w._rowCount===0)return;const O=f.StructConn.getEntriesFromStructConn(w,B),F=new Set;for(const L of O)L.partnerA.residueIndex!==L.partnerB.residueIndex&&F.add((0,u.sortedCantorPairing)(L.partnerA.residueIndex,L.partnerB.residueIndex));return{data:w,byAtomIndex:f.StructConn.getAtomIndexFromEntries(O),residueCantorPairs:F,entries:O}}f.StructConn.Provider.formatRegistry.add("mmCIF",A);function x(B){if(!M.is(B.sourceData))return;const{molstar_bond_site:w}=(0,v.toDatabase)(b.MolstarBondSiteSchema,B.sourceData.data.frame);if(w._rowCount===0)return;const O=new Map,{atomId:F}=B.atomicConformation;for(let W=0;W<F.rowCount;W++)O.set(F.value(W),W);const L=[],U=[],q=[],N=[],{atom_id_1:k,atom_id_2:j,value_order:H,type_id:G}=w;for(let W=0;W<w._rowCount;W++){L.push(O.get(k.value(W))),U.push(O.get(j.value(W)));let X=d.BondType.Flag.None,Y=1;switch(H.value(W)){case"sing":Y=1;break;case"doub":Y=2;break;case"trip":Y=3;break;case"quad":Y=4;break;case"arom":Y=1,X=d.BondType.Flag.Aromatic;break}switch(G.value(W)){case"covale":X|=d.BondType.Flag.Covalent;break;case"disulf":X|=d.BondType.Flag.Covalent|d.BondType.Flag.Disulfide;break;case"hydrog":X|=d.BondType.Flag.HydrogenBond;break;case"metalc":X|=d.BondType.Flag.MetallicCoordination;break}q.push(Y),N.push(X)}return m.IndexPairBonds.fromData({pairs:{indexA:o.Column.ofIntArray(L),indexB:o.Column.ofIntArray(U),order:o.Column.ofIntArray(q),flag:o.Column.ofArray({array:N,schema:o.Column.Schema.int})},count:B.atomicHierarchy.atoms._rowCount},{maxDistance:1/0})}m.IndexPairBonds.Provider.formatRegistry.add("mmCIF",x),_.GlobalModelTransformInfo.Provider.formatRegistry.add("mmCIF",_.GlobalModelTransformInfo.fromMmCif,_.GlobalModelTransformInfo.hasData);var M;(function(B){function w(F){return F?.kind==="mmCIF"}B.is=w;function O(F,L,U,q){return L||(L=r.CIF.schema.mmCIF(F)),{kind:"mmCIF",name:L._name,data:{db:L,file:q,frame:F,source:U}}}B.fromFrame=O})(M||(vo.MmcifFormat=M={}));function D(B,w){const O=M.fromFrame(B,void 0,void 0,w),F=(0,g.createBasic)(O.data.db,!0);return t.Task.create("Create mmCIF Model",L=>(0,n.createModels)(F,O,L))}var V;(function(B){const w="__CcdCoordinateType__";B.CoordinateType={get(L){return L._staticPropertyData[w]},set(L,U){return L._staticPropertyData[w]=U}};function O(L){return L?.kind==="CCD"}B.is=O;function F(L,U){return U||(U=r.CIF.schema.CCD(L)),{kind:"CCD",name:U._name,data:{db:U,frame:L}}}B.fromFrame=F})(V||(vo.CCDFormat=V={}));function R(B){const w=V.fromFrame(B);return t.Task.create("Create CCD Models",O=>E(w.data.db,V.fromFrame(B),O))}async function E(B,w,O){const F=await I(B,w,{coordinateType:"ideal",cartn_x:"pdbx_model_Cartn_x_i
15deal",cartn_y:"pdbx_model_Cartn_y_ideal",cartn_z:"pdbx_model_Cartn_z_ideal"},O),L=await I(B,w,{coordinateType:"model",cartn_x:"model_Cartn_x",cartn_y:"model_Cartn_y",cartn_z:"model_Cartn_z"},O),U=[];F&&U.push(F),L&&U.push(L);for(let q=0,N=U.length;q<N;++q)e.Model.TrajectoryInfo.set(U[q],{index:q,size:U.length});return new y.ArrayTrajectory(U)}async function I(B,w,O,F){const{chem_comp:L,chem_comp_atom:U,chem_comp_bond:q}=B,{coordinateType:N,cartn_x:k,cartn_y:j,cartn_z:H}=O,G=L.name.value(0),z=L.id.value(0),{atom_id:W,charge:X,comp_id:Y,pdbx_ordinal:K,type_symbol:Q}=U,J=U._rowCount,ae=[];for(let Se=0;Se<J;Se++)U[k].valueKind(Se)>0||(ae[ae.length]=Se);const te=ae.length,ne=o.Column.ofConst("A",te,o.Column.Schema.str),$=o.Column.ofConst(1,te,o.Column.Schema.int),ie=o.Column.ofConst("1",te,o.Column.Schema.str),Z=o.Column.ofConst(1,te,o.Column.Schema.float),re=o.Column.ofConst(1,te,o.Column.Schema.int),oe=o.Column.view(W,ae),ce=o.Column.view(Y,ae),ue=o.Column.view(U[k],ae),pe=o.Column.view(U[j],ae),he=o.Column.view(U[H],ae),fe=o.Column.view(K,ae),de=o.Column.view(Q,ae),ge=o.Column.view(X,ae),Ce=o.Table.ofPartialColumns(g.BasicSchema.atom_site,{auth_asym_id:ne,auth_atom_id:oe,auth_comp_id:ce,auth_seq_id:$,Cartn_x:ue,Cartn_y:pe,Cartn_z:he,id:fe,label_asym_id:ne,label_atom_id:oe,label_comp_id:ce,label_seq_id:$,label_entity_id:ie,occupancy:Z,type_symbol:de,pdbx_PDB_model_num:re,pdbx_formal_charge:ge},te),ve=new a.EntityBuilder;ve.setNames([[z,`${G} (${N})`]]),ve.getEntityId(z,d.MoleculeType.Unknown,"A");const le=new p.ComponentBuilder($,Q);le.setNames([[z,`${G} (${N})`]]),le.add(z,0);const me=(0,g.createBasic)({entity:ve.getEntityTable(),chem_comp:le.getChemCompTable(),atom_site:Ce}),ee=await(0,n.createModels)(me,w,F);if(!ee.representative)return;const se=ee.representative,ye=h.ComponentBond.getEntriesFromChemCompBond(q);return h.ComponentBond.Provider.set(se,{data:q,entries:ye}),V.CoordinateType.set(se,N),ee.representative}return vo}var rh={},nh={},NO;function uI(){if(NO)return nh;NO=1,Object.defineProperty(nh,"__esModule",{value:!0}),nh.CustomModelProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=h.type==="static"?"_staticPropertyData":"_dynamicPropertyData",_=a=>(f in a[y]||(a[y][f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(a))},data:t.ValueBox.create(void 0)}),a[y][f]),g=(a,d,p)=>{const u=_(a);a[y][f]={props:d,data:t.ValueBox.withValue(u.data,p)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:a=>{const d=e.ParamDefinition.clone(h.getParams(a));return e.ParamDefinition.setDefaultValues(d,_(a).props),d},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(a,d,p={},u)=>{u&&d.customProperties.reference(h.descriptor,!0);const m=_(d),v=e.ParamDefinition.merge(h.defaultParams,m.props,p);if(m.data.value&&e.ParamDefinition.areEqual(h.defaultParams,m.props,v))return;const{value:b,assets:P}=await h.obtain(a,d,v);d.customProperties.add(h.descriptor),d.customProperties.assets(h.descriptor,P),g(d,v,b)},ref:(a,d)=>a.customProperties.reference(h.descriptor,d),get:a=>{var d;return(d=_(a))===null||d===void 0?void 0:d.data},set:(a,d={},p)=>{const u=_(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);e.ParamDefinition.areEqual(h.defaultParams,u.props,m)||(g(a,m,p),a.customProperties.assets(h.descriptor))},props:a=>_(a).props}}c.createProvider=o;function s(h,f,y){const _={value:e.ParamDefinition.Value(y,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,type:f,defaultParams:_,getParams:()=>({value:e.ParamDefinition.Value(y,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(g,a,d)=>({...e.ParamDefinition.getDefaultValues(_),...d})})}c.createSimple=s})(i||(nh.CustomModelProperty=i={})),nh}var qO;function lI(){if(qO)return rh;qO=1,Object.defineProperty(rh,"__esModule",{value:!0}),rh.SIFTSMapping=void 0;const e=lt(),t=Mi(),r=Pr(),n=uI();var i;return(function(c){c.Provider=n.CustomModelProperty.createProvider({label:"SIFTS Mapping",descriptor:(0,r.CustomPropertyDescriptor)({name:"sifts_sequence_mapping"}),type:"static",defaultParams:{},getParams:()=>({}),isApplicable:y=>o(y),obtain:async(y,_)=>({value:f(_)})});
15function o(y){if(!t.MmcifFormat.is(y.sourceData))return!1;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:g,pdbx_sifts_xref_db_num:a,pdbx_sifts_xref_db_res:d}=y.sourceData.data.db.atom_site;return _.isDefined&&g.isDefined&&a.isDefined&&d.isDefined}c.isAvailable=o;function s(y){const _=y.unit.model,g=c.Provider.get(_).value;if(!g)return"";const a=_.atomicHierarchy.residueAtomSegments.index[y.element];return g.accession[a]}c.getKey=s;function h(y){const _=y.unit.model,g=c.Provider.get(_).value;if(!g)return;const a=_.atomicHierarchy.residueAtomSegments.index[y.element],d=g.dbName[a];if(d)return`${d} ${g.accession[a]} ${g.num[a]} ${g.residue[a]}`}c.getLabel=h;function f(y){if(!t.MmcifFormat.is(y.sourceData))return;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:g,pdbx_sifts_xref_db_num:a,pdbx_sifts_xref_db_res:d}=y.sourceData.data.db.atom_site;if(!_.isDefined||!g.isDefined||!a.isDefined||!d.isDefined)return;const{atomSourceIndex:p}=y.atomicHierarchy,{count:u,offsets:m}=y.atomicHierarchy.residueAtomSegments,v=new Array(u),b=new Array(u),P=new Array(u),C=new Array(u);for(let l=0;l<u;l++){const S=p.value(m[l]);if(_.valueKind(S)!==e.Column.ValueKinds.Present){v[l]="",b[l]="",P[l]="",C[l]="";continue}v[l]=_.value(S),b[l]=g.value(S),P[l]=a.value(S),C[l]=d.value(S)}return{dbName:v,accession:b,num:P,residue:C}}})(i||(rh.SIFTSMapping=i={})),rh}var UO;function dX(){if(UO)return yo;UO=1,Object.defineProperty(yo,"__esModule",{value:!0}),yo._atom_site=void 0,yo.residueIdFields=u,yo.chainIdFields=m,yo.entityIdFields=v,yo.atomIdFields=b;const e=$i(),t=Mi(),r=lI(),n=jr();var i=e.CifWriter.Field,c=e.CifWriter.Encodings;function o(P){const C=n.StructureProperties.chain.label_asym_id(P),l=P.unit.conformation.operator.suffix;return l?C+l:C}function s(P){const C=n.StructureProperties.chain.auth_asym_id(P),l=P.unit.conformation.operator.suffix;return l?C+l:C}const h={shouldInclude(P){var C;return!!(!((C=P.atom_site)===null||C===void 0)&&C.pdbx_label_index.isDefined)},value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_label_index.value(l)}},f={shouldInclude(P){return r.SIFTSMapping.isAvailable(P.structure.models[0])},pdbx_sifts_xref_db_name:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_name.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_name.valueKind(l)}},pdbx_sifts_xref_db_acc:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_acc.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_acc.valueKind(l)}},pdbx_sifts_xref_db_num:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_num.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_num.valueKind(l)}},pdbx_sifts_xref_db_res:{value(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_res.value(l)},valueKind(P,C){const l=C.sourceIndex.value(P.element);return C.atom_site.pdbx_sifts_xref_db_res.valueKind(l)}}},y=P=>{const C=e.CifWriter.fields();return C.str("group_PDB",n.StructureProperties.residue.group_PDB),P?C.int("id",n.StructureProperties.atom.id):C.index("id"),C.str("type_symbol",n.StructureProperties.atom.type_symbol).str("label_atom_id",n.StructureProperties.atom.label_atom_id).str("label_comp_id",n.StructureProperties.atom.label_comp_id).int("label_seq_id",n.StructureProperties.residue.label_seq_id,{encoder:c.deltaRLE,valueKind:(l,S)=>{const T=l.unit.model;return T.atomicHierarchy.residues.label_seq_id.valueKind(T.atomicHierarchy.residueAtomSegments.index[l.element])}}).str("label_alt_id",n.StructureProperties.atom.label_alt_id).str("pdbx_PDB_ins_code",n.StructureProperties.residue.pdbx_PDB_ins_code).str("label_asym_id",o).str("label_entity_id",n.StructureProperties.chain.label_entity_id).float("Cartn_x",n.StructureProperties.atom.x,{digitCount:3,encoder:c.fixedPoint3}).float("Cartn_y",n.StructureProperties.atom.y,{digitCount:3,encoder:c.fixedPoint3}).float("Cartn_z",n.StructureProperties.atom.z,{digitCount:3,encoder:c.fixedPoint3}).float("occupancy",n.StructureProperties.atom.occupancy,{digitCount:2,encoder:c.fixedPoint2}).float("B_iso_or_equiv",n.StructureProperties.atom.B_iso_or_equiv,{digitCount:2,encoder:c.fixedPoint2}).int("pdbx_formal_charge",n.StructureProperties.atom.pdbx_formal_charge,{encoder:c.deltaRLE,valueKind:(l,S)=>l.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.valueKind(l.element)}).str("auth_atom_id",n.StructureProperties.atom.auth_atom_id).str("auth_comp_id",n.StructureProperties.atom.auth_comp_id).int("auth_seq_id",n.StructureProperties.residue.auth_seq_id,{encoder:c.deltaRLE}).str("auth_asym_id",s).int("pdbx_PDB_model_num",n.StructureProperties.unit.model_num,{encoder:c.deltaRLE}).int("pdbx_label_index",h.value,{shouldInclude:h.shouldInclude}).str("pdbx_sifts_xref_db_name",f.pdbx_sifts_xref_db_name.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_name.valueKind}).str("pdbx_sifts_xref_db_acc",f.pdbx_sifts_xref_db_acc.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_acc.valueKind}).str("pdbx_sifts_xref_db_num",f.pdbx_sifts_xref_db_num.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_num.valueKind}).str("pdbx_sifts_xref_db_res",f.pdbx_sifts_xref_db_res.value,{shouldInclude:f.shouldInclude,valueKind:f.pdbx_sifts_xref_db_res.valueKind}),C.getFields()},_=P=>({name:"atom_site",instance({structures:C}){return{fields:y(P?.keepId),source:C.map(l=>({data:{structure:l,sourceIndex:l.model.atomicHierarchy.atomSourceIndex,atom_site:t.MmcifFormat.is(l.model.sourceData)?l.model.sourceData.data.db.atom_site:void 0},rowCount:l.elementCount,keys:()=>l.elementLocations()}))}}});yo._atom_site=_;function g(P,C){return P?`${P}_${C}`:C}function a(P){return P?`pdbx_${P}_PDB_ins_code`:"pdbx_PDB_ins_code"}function d(P,C){return(l,S)=>C(P(l,S))}function p(P,C,l){l&&l.includeModelNum&&P.int("pdbx_PDB_model_num",d(C,n.StructureProperties.unit.model_num))}function u(P,C){const l=C&&C.prefix,S=e.CifWriter.fields().str(g(l,"label_comp_id"),d(P,n.StructureProperties.atom.label_comp_id)).int(g(l,"label_seq_id"),d(P,n.StructureProperties.residue.label_seq_id),{encoder:c.deltaRLE,valueKind:(T,A)=>{const x=P(T,A),M=x.unit.model;return M.atomicHierarchy.residues.label_seq_id.valueKind(M.atomicHierarchy.residueAtomSegments.index[x.element])}}).str(a(l),d(P,n.StructureProperties.residue.pdbx_PDB_ins_code)).str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_comp_id"),d(P,n.StructureProperties.atom.auth_comp_id)).int(g(l,"auth_seq_id"),d(P,n.StructureProperties.residue.auth_seq_id),{encoder:c.deltaRLE}).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}function m(P,C){const l=C&&C.prefix,S=i.build().str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}function v(P,C){const l=C&&C.prefix,S=i.build().str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id));return p(S,P,C),S.getFields()}function b(P,C){const l=C&&C.prefix,S=e.CifWriter.fields().str(g(l,"label_atom_id"),d(P,n.StructureProperties.atom.label_atom_id)).str(g(l,"label_comp_id"),d(P,n.StructureProperties.atom.label_comp_id)).int(g(l,"label_seq_id"),d(P,n.StructureProperties.residue.label_seq_id),{encoder:c.deltaRLE,valueKind:(T,A)=>{const x=P(T,A),M=x.unit.model;return M.atomicHierarchy.residues.label_seq_id.valueKind(M.atomicHierarchy.residueAtomSegments.index[x.element])}}).str(g(l,"label_alt_id"),d(P,n.StructureProperties.atom.label_alt_id)).str(a(l),d(P,n.StructureProperties.residue.pdbx_PDB_ins_code)).str(g(l,"label_asym_id"),d(P,n.StructureProperties.chain.label_asym_id)).str(g(l,"label_entity_id"),d(P,n.StructureProperties.chain.label_entity_id)).str(g(l,"auth_atom_id"),d(P,n.StructureProperties.atom.auth_atom_id)).str(g(l,"auth_comp_id"),d(P,n.StructureProperties.atom.auth_comp_id)).int(g(l,"auth_seq_id"),d(P,n.StructureProperties.residue.auth_seq_id),{encoder:c.deltaRLE}).str(g(l,"auth_asym_id"),d(P,n.StructureProperties.chain.auth_asym_id));return p(S,P,C),S.getFields()}return yo}var wc={},jO;function Pee(){if(jO)return wc;
15jO=1,Object.defineProperty(wc,"__esModule",{value:!0}),wc._struct_sheet_range=wc._struct_conf=void 0;const e=at(),t=$i(),r=jr();var n=t.CifWriter.Field;const i=lt(),c=dX(),o=BT();wc._struct_conf={name:"struct_conf",instance(_){const g=y(_,"helix");return{fields:h(),source:[{data:g,rowCount:g.length}]}}},wc._struct_sheet_range={name:"struct_sheet_range",instance(_){const g=y(_,"sheet").sort(s);return{fields:f(),source:[{data:g,rowCount:g.length}]}}};function s(_,g){const a=_.element,d=g.element;return a.sheet_id<d.sheet_id?-1:a.sheet_id===d.sheet_id?_.start.element-g.start.element:1}const h=()=>[n.str("conf_type_id",(_,g)=>g[_].element.type_id),n.str("id",(_,g,a)=>`${g[_].element.type_id}${a+1}`),...(0,c.residueIdFields)((_,g)=>g[_].start,{prefix:"beg"}),...(0,c.residueIdFields)((_,g)=>g[_].end,{prefix:"end"}),n.str("pdbx_PDB_helix_class",(_,g)=>g[_].element.helix_class),n.str("details",(_,g)=>g[_].element.details||"",{valueKind:(_,g)=>g[_].element.details?i.Column.ValueKinds.Present:i.Column.ValueKinds.Unknown}),n.int("pdbx_PDB_helix_length",(_,g)=>g[_].length)],f=()=>[n.str("sheet_id",(_,g)=>g[_].element.sheet_id),n.index("id"),...(0,c.residueIdFields)((_,g)=>g[_].start,{prefix:"beg"}),...(0,c.residueIdFields)((_,g)=>g[_].end,{prefix:"end"}),n.str("symmetry",(_,g)=>"",{valueKind:(_,g)=>i.Column.ValueKinds.Unknown})];function y(_,g){const a=o.ModelSecondaryStructure.Provider.get(_.firstModel);if(!a)return[];const{key:d,elements:p}=a,u=[],m=_.structures[0];for(const{units:v}of m.unitSymmetryGroups){const b=v[0];if(!r.Unit.isAtomic(b))continue;const P=b.model.atomicHierarchy.residueAtomSegments,C=e.Segmentation.transientSegments(P,b.elements);let l,S=!0;for(;C.hasNext;){S&&(l=C.move());const T=l.index,A=d[T],x=p[A];if(x.kind!==g){S=!0;continue}let M=T;for(;C.hasNext;)if(M=l.index,l=C.move(),A!==d[l.index]){S=!1,u[u.length]={start:r.StructureElement.Location.create(m,b,P.offsets[T]),end:r.StructureElement.Location.create(m,b,P.offsets[M]),length:M-T+1,element:x};break}}}return u}return wc}var oa={},_o={},GO;function dI(){if(GO)return _o;GO=1,Object.defineProperty(_o,"__esModule",{value:!0}),_o.getModelMmCifCategory=o,_o.getUniqueResidueNamesFromStructures=s,_o.getUniqueEntityIdsFromStructures=h,_o.getUniqueEntityIndicesFromStructures=f,_o.copy_mmCif_category=y,_o.copy_source_mmCifCategory=_;const e=Hi(),t=ha(),r=_t(),n=$i(),i=Mi(),c=Ti();function o(a,d){if(i.MmcifFormat.is(a.sourceData))return a.sourceData.data.db[d]}function s(a){return e.SetUtils.unionMany(...a.map(d=>d.uniqueResidueNames))}function h(a){if(a.length===0)return new Set;const d=a[0].model.entities.data.id;return new Set(f(a).map(p=>d.value(p)))}function f(a){if(a.length===0)return[];if(a.length===1)return a[0].entityIndices;const d=t.UniqueArray.create();for(const p of a)for(const u of p.entityIndices)t.UniqueArray.add(d,u,u);return(0,r.sortArray)(d.array),d.array}function y(a,d){return{name:a,instance({structures:p}){if(d&&!d(p[0]))return n.CifWriter.Category.Empty;const u=p[0].model;if(!i.MmcifFormat.is(u.sourceData))return n.CifWriter.Category.Empty;const m=u.sourceData.data.db[a];return!m||!m._rowCount?n.CifWriter.Category.Empty:n.CifWriter.Category.ofTable(m)}}}function _(a,d,p){if(!i.MmcifFormat.is(d.firstModel.sourceData))return;const u=n.CifWriter.fields();if(a.isBinary)for(const v of p.fieldNames){const b=g(v,p.getField(v));u.add(b)}else for(const v of p.fieldNames){const b=p.getField(v);u.str(v,P=>b.str(P))}const m=u.getFields();return{name:p.name,instance(){return{fields:m,source:[{data:void 0,rowCount:p.rowCount}]}}}}function g(a,d){const p=(0,c.getCifFieldType)(d);return p["@type"]==="str"?{name:a,type:n.CifWriter.Field.Type.Str,value:d.str,valueKind:d.valueKind}:p["@type"]==="float"?n.CifWriter.Field.float(a,d.float,{valueKind:d.valueKind,typedArray:Float64Array}):n.CifWriter.Field.int(a,d.int,{valueKind:d.valueKind,typedArray:Int32Array})}return _o}var zO;function Tee(){if(zO)return oa;zO=1,Object.defineProperty(oa,"__esModule",{value:!0}),oa._pdbx_nonpoly_scheme=oa._pdbx_chem_comp_identifier=oa._chem_comp_bond=oa._chem_comp=void 0;const e=lt(),t=$i(),r=dI();var n=t.CifWriter.Category;return oa._chem_comp={name:"chem_comp",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(c[0].model,"chem_comp");if(!s)return n.Empty;const{id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._chem_comp_bond={name:"chem_comp_bond",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(c[0].model,"chem_comp_bond");if(!s)return n.Empty;const{comp_id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._pdbx_chem_comp_identifier={name:"pdbx_chem_comp_identifier",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(i,"pdbx_chem_comp_identifier");if(!s)return n.Empty;const{comp_id:h}=s,f=o.uniqueResidueNames||(o.uniqueResidueNames=(0,r.getUniqueResidueNamesFromStructures)(c)),y=e.Column.indicesOf(h,_=>f.has(_));return n.ofTable(s,y)}},oa._pdbx_nonpoly_scheme={name:"pdbx_nonpoly_scheme",instance({firstModel:i,structures:c,cache:o}){const s=(0,r.getModelMmCifCategory)(i,"pdbx_nonpoly_scheme");return s?n.ofTable(s):n.Empty}},oa}var So={},HO;function xee(){if(HO)return So;HO=1,Object.defineProperty(So,"__esModule",{value:!0}),So._entity_poly_seq=So._entity_poly=So._struct_asym=void 0;const e=lt(),t=$i(),r=dI();var n=t.CifWriter.Category;So._struct_asym=i("struct_asym"),So._entity_poly=i("entity_poly"),So._entity_poly_seq=i("entity_poly_seq");function i(o){return{name:o,instance({structures:s,cache:h}){return c(s,o,h)}}}function c(o,s,h){const f=(0,r.getModelMmCifCategory)(o[0].model,s);if(!f)return n.Empty;const{entity_id:y}=f,_=h.uniqueEntityIds||(h.uniqueEntityIds=(0,r.getUniqueEntityIdsFromStructures)(o)),g=e.Column.indicesOf(y,a=>_.has(a));return n.ofTable(f,g)}return So}var WO;function Aee(){if(WO)return go;WO=1,Object.defineProperty(go,"__esModule",{value:!0}),go.mmCIF_Export_Filters=go.CifExportContext=void 0,go.encode_mmCIF_categories=v,go.to_mmCIF=C;const e=$i(),t=dX();var r=e.CifWriter.Category;const n=Pee(),i=Tee(),c=dI(),o=xee(),s=Pr(),h=fX(),f=Mi(),y=lX();var _;(function(l){function S(T){const A=Array.isArray(T)?T:[T];return{structures:A,firstModel:A[0].model,cache:Object.create(null)}}l.create=S})(_||(go.CifExportContext=_={}));const g={name:"entity",instance({structures:l}){const S=(0,c.getUniqueEntityIndicesFromStructures)(l);return r.ofTable(l[0].model.entities.data,S)}};function a(l){return l.units.every(S=>S.conformation.operator.isIdentity)}function d(l){return a(l)&&l.units.every(S=>!S.conformation.operator.assembly&&!S.conformation.operator.suffix)}const p=l=>[(0,c.copy_mmCif_category)("entry"),(0,c.copy_mmCif_category)("exptl"),g,(0,c.copy_mmCif_category)("cell",a),(0,c.copy_mmCif_category)("symmetry",a),(0,c.copy_mmCif_category)("pdbx_struct_assembly",d),(0,c.copy_mmCif_category)("pdbx_struct_assembly_gen",d),(0,c.copy_mmCif_category)("pdbx_struct_oper_list",d),n._struct_conf,n._struct_sheet_range,o._struct_asym,o._entity_poly,o._entity_poly_seq,(0,c.copy_mmCif_category)("pdbx_entity_branch"),(0,c.copy_mmCif_category)("pdbx_entity_branch_link"),(0,c.copy_mmCif_category)("pdbx_branch_scheme"),(0,c.copy_mmCif_category)("struct_conn"),i._chem_comp,i._chem_comp_bond,i._pdbx_chem_comp_identifier,(0,c.copy_mmCif_category)("atom_sites"),i._pdbx_nonpoly_scheme,(0,t._atom_site)({keepId:l?.keepAtomSiteId})];var u;(function(l){l.AtomSitePositionsFieldNames=new Set(["id","Cartn_x","Cartn_y","Cartn_z"])})(u||(u={})),go.mmCIF_Export_Filters={onlyPositions:{includeCategory(l){return l==="atom_site"},includeField(l,S){return u.AtomSitePositionsFieldNames.has(S)}}};function m(l,S,T){var A;if(!l.cifExport||l.cifExport.categories.length===0)return[];const x=l.cifExport.prefix,M=l.cifExport.categories;let D=S;
15if(l.cifExport.context){const R=s.CustomPropertyDescriptor.getUUID(l);S.cache[R+"__ctx"]?D=S.cache[R+"__ctx"]:(D=l.cifExport.context(S)||S,S.cache[R+"__ctx"]=D)}const V=[];for(const R of M)if(!(!((A=T?.skipCategoryNames)===null||A===void 0)&&A.has(R.name))&&!(T?.includedCategoryNames&&!T.includedCategoryNames.has(R.name))){if(R.name.indexOf(x)!==0)throw new Error(`Custom category '${R.name}' name must start with prefix '${x}.'`);V.push([R,D])}return V}function v(l,S,T){const x=(Array.isArray(S)?S[0]:S).models;if(x.length!==1)throw new Error("Can't export stucture composed from multiple models.");const M=T?.exportCtx||_.create(S);T?.copyAllCategories&&f.MmcifFormat.is(x[0].sourceData)?P(l,M,T):b(l,M,T)}function b(l,S,T){var A,x,M;const D=new Set;for(const R of p({keepAtomSiteId:((A=T?.extensions)===null||A===void 0?void 0:A.molstar_bond_site)||T?.doNotReindexAtomSiteId}))D.has(R.name)||(D.add(R.name),!(T?.skipCategoryNames&&T?.skipCategoryNames.has(R.name))&&(T?.includedCategoryNames&&!T.includedCategoryNames.has(R.name)||l.writeCategory(R,S)));if(!(!((x=T?.skipCategoryNames)===null||x===void 0)&&x.has("atom_site"))&&l.isCategoryIncluded("atom_site")){const R=(0,h.atom_site_operator_mapping)(S);R&&l.writeCategory(R[0],R[1],R[2])}if(!((M=T?.extensions)===null||M===void 0)&&M.molstar_bond_site){const R=(0,y.molstar_bond_site)(S);R&&l.writeCategory(R[0],R[1],R[2])}const V=T||{};for(const R of S.firstModel.customProperties.all)for(const[E,I]of m(R,S,V))D.has(E.name)||(D.add(E.name),l.writeCategory(E,I));if(T?.customProperties)for(const R of T?.customProperties)for(const[E,I]of m(R,S,V))D.has(E.name)||(D.add(E.name),l.writeCategory(E,I));for(const R of S.structures)if(R.hasCustomProperties)for(const E of R.customPropertyDescriptors.all)for(const[I,B]of m(E,S,V))D.has(I.name)||(D.add(I.name),l.writeCategory(I,B))}function P(l,S,T){var A,x;const M=new Map;for(const I of p({keepAtomSiteId:((A=T?.extensions)===null||A===void 0?void 0:A.molstar_bond_site)||T?.doNotReindexAtomSiteId}))M.set(I.name,[I,S]);const D=(0,h.atom_site_operator_mapping)(S);D&&M.set(D[0].name,D);const V=T||{};for(const I of S.firstModel.customProperties.all)for(const B of m(I,S,V))M.set(B[0].name,B);if(T?.customProperties)for(const I of T?.customProperties)for(const B of m(I,S,V))M.set(B[0].name,B);for(const I of S.structures)if(I.hasCustomProperties)for(const B of I.customPropertyDescriptors.all)for(const w of m(B,S))M.set(w[0].name,w);const R=new Set,E=S.firstModel.sourceData.data;for(const I of E.frame.categoryNames)if(R.add(I),M.has(I)){const B=M.get(I);l.writeCategory(B[0],B[1],B[2])}else if(E.db[I]){const B=(0,c.copy_mmCif_category)(I);l.writeCategory(B,S)}else{const B=(0,c.copy_source_mmCifCategory)(l,S,E.frame.categories[I]);B&&l.writeCategory(B)}if(M.forEach((I,B)=>{R.has(B)||l.writeCategory(I[0],I[1],I[2])}),!((x=T?.extensions)===null||x===void 0)&&x.molstar_bond_site){const I=(0,y.molstar_bond_site)(S);I&&l.writeCategory(I[0],I[1],I[2])}}function C(l,S,T=!1,A){var x;const M=(x=A?.encoder)!==null&&x!==void 0?x:e.CifWriter.createEncoder({binary:T});return M.startDataBlock(l),v(M,S,A),M.getData()}return go}var $O;function jr(){return $O||($O=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureProperties=e.StructureSymmetry=e.Unit=e.Structure=e.Bond=e.StructureElement=void 0;const t=At,r=xl();Object.defineProperty(e,"StructureElement",{enumerable:!0,get:function(){return r.StructureElement}});const n=Wa();Object.defineProperty(e,"Structure",{enumerable:!0,get:function(){return n.Structure}});const i=Zn();Object.defineProperty(e,"Unit",{enumerable:!0,get:function(){return i.Unit}});const c=OT();Object.defineProperty(e,"StructureSymmetry",{enumerable:!0,get:function(){return c.StructureSymmetry}});const o=IT();Object.defineProperty(e,"Bond",{enumerable:!0,get:function(){return o.Bond}});const s=Tl();Object.defineProperty(e,"StructureProperties",{enumerable:!0,get:function(){return s.StructureProperties}}
15),t.__exportStar(eI(),e),t.__exportStar(Aee(),e)})(Z2)),Z2}var XO;function fX(){if(XO)return Ss;XO=1,Object.defineProperty(Ss,"__esModule",{value:!0}),Ss.AtomSiteOperatorMappingSchema=Ss.AtomSiteOperatorMappingCategoryName=void 0,Ss.atom_site_operator_mapping=c;const e=jr(),t=Zn(),r=at(),n=$i(),i=lt();function c(_){const g=y(_);if(g.length!==0)return[f,g,{ignoreFilter:!0}]}Ss.AtomSiteOperatorMappingCategoryName="molstar_atom_site_operator_mapping",Ss.AtomSiteOperatorMappingSchema={molstar_atom_site_operator_mapping:{label_asym_id:i.Column.Schema.Str(),auth_asym_id:i.Column.Schema.Str(),operator_name:i.Column.Schema.Str(),suffix:i.Column.Schema.Str(),assembly_id:i.Column.Schema.Str(),assembly_operator_id:i.Column.Schema.Int(),symmetry_operator_index:i.Column.Schema.Int(),symmetry_hkl:i.Column.Schema.Vector(3),ncs_id:i.Column.Schema.Int()}};const o=(_,g)=>typeof g[_].operator.assembly>"u"?i.Column.ValueKinds.NotPresent:i.Column.ValueKinds.Present,s=(_,g)=>g[_].operator.spgrOp===-1?i.Column.ValueKinds.NotPresent:i.Column.ValueKinds.Present,h=n.CifWriter.fields().str("label_asym_id",(_,g)=>g[_].label_asym_id).str("auth_asym_id",(_,g)=>g[_].auth_asym_id).str("operator_name",(_,g)=>g[_].operator.name).str("suffix",(_,g)=>g[_].operator.suffix).str("assembly_id",(_,g)=>{var a;return((a=g[_].operator.assembly)===null||a===void 0?void 0:a.id)||""},{valueKind:o}).int("assembly_operator_id",(_,g)=>{var a;return((a=g[_].operator.assembly)===null||a===void 0?void 0:a.operId)||0},{valueKind:o}).int("symmetry_operator_index",(_,g)=>g[_].operator.spgrOp,{valueKind:s}).vec("symmetry_hkl",[(_,g)=>g[_].operator.hkl[0],(_,g)=>g[_].operator.hkl[1],(_,g)=>g[_].operator.hkl[2]],{valueKind:s}).int("ncs_id",(_,g)=>g[_].operator.ncsId,{valueKind:s}).getFields(),f={name:"molstar_atom_site_operator_mapping",instance(_){return{fields:h,source:[{data:_,rowCount:_.length}]}}};function y(_){const g=new Set,a=[];for(const d of _.structures){const p=e.StructureElement.Location.create(d);for(const u of d.units){const m=u.conformation.operator;if(!m.suffix||u.kind!==t.Unit.Kind.Atomic)continue;p.unit=u;const{elements:v}=u,b=r.Segmentation.transientSegments(u.model.atomicHierarchy.chainAtomSegments,v);for(;b.hasNext;){const P=b.move();p.element=v[P.start];const C=e.StructureProperties.chain.label_asym_id(p),l=`${C}${m.suffix}`;if(g.has(l))continue;g.add(l);const S=e.StructureProperties.chain.label_asym_id(p);a.push({label_asym_id:C,auth_asym_id:S,operator:m})}}}return a}return Ss}var jC={},KO;function Mee(){if(KO)return jC;KO=1,Object.defineProperty(jC,"__esModule",{value:!0}),jC.getAtomicDerivedData=i;const e=ma(),t=dt(),r=Sl(),n=Ct();function i(c,o,s,h){const{label_comp_id:f,type_symbol:y,_rowCount:_}=c.atoms,{_rowCount:g}=c.residues,{offsets:a}=o.residueAtomSegments,d=new Uint8Array(_);for(let l=0;l<_;++l)d[l]=(0,e.AtomNumber)(y.value(l));const p=new Int32Array(g),u=new Int32Array(g),m=new Int32Array(g),v=new Uint8Array(g),b=new Uint8Array(g),P=new Map,C=new Map;for(let l=0;l<g;++l){const S=f.value(a[l]),T=h;let A,x;if(P.has(S))A=P.get(S),x=C.get(S);else{let E;T.has(S)?E=T.get(S).type:(n.isProductionMode||console.info("chemComp not found",S),E=(0,t.getComponentType)(S)),A=(0,t.getMoleculeType)(E,S),x=(0,t.getPolymerType)(E,A),P.set(S,A),C.set(S,x)}v[l]=A,b[l]=x;const M=(0,r.getAtomIdForAtomRole)(x,"trace");let D=s.findAtomsOnResidue(l,M);if(D===-1){const E=(0,r.getAtomIdForAtomRole)(x,"coarseBackbone");D=s.findAtomsOnResidue(l,E),D===-1&&(0,t.isPolymer)(A)&&(D=s.findElementOnResidue(l,(0,t.ElementSymbol)("C")))}p[l]=D;const V=(0,r.getAtomIdForAtomRole)(x,"directionFrom");u[l]=s.findAtomsOnResidue(l,V);const R=(0,r.getAtomIdForAtomRole)(x,"directionTo");m[l]=s.findAtomsOnResidue(l,R)}return{atom:{atomicNumber:d},residue:{traceElementIndex:p,directionFromElementIndex:u,directionToElementIndex:m,moleculeType:v,polymerType:b}}}return jC}var GC={},YO;function Dee(){if(YO)return GC;YO=1,Object.defineProperty(GC,"__esModule",{value:!0}),GC.getAtomicIndex=a;const e=at(),t=H$(),r=_t();function n(d,p){return p?p.length===1?(0,r.cantorPairing)(p.charCodeAt(0),d):p.length===2?(0,r.cantorPairing)(p.charCo
15deAt(0),(0,r.cantorPairing)(p.charCodeAt(1),d)):`${d} ${p}`:d}function i(d,p,u,m){if(d.has(p)){const v=d.get(p);v.has(u)||v.set(u,m)}else{const v=new Map;d.set(p,v),v.set(u,m)}}function c(d){throw new Error(`Missing entity entry for entity id '${d}'.`)}function o(d,p,u){return{entities:d,segments:u,label_seq_id:e.SortedArray.ofSortedArray(p.residues.label_seq_id.toArray({array:Int32Array})),label_atom_id:p.atoms.label_atom_id,auth_atom_id:p.atoms.auth_atom_id,label_alt_id:p.atoms.label_alt_id,type_symbol:p.atoms.type_symbol,chain_index_entity_index:new Int32Array(p.chains._rowCount),entity_index_label_asym_id:new Map,chain_index_label_seq_id:new Map,auth_asym_id_auth_seq_id:new Map,chain_index_auth_seq_id:new Map,label_asym_id:new Map}}const s=t.AtomicIndex.EmptyResidueKey();class h{getEntityFromChain(p){return this.map.chain_index_entity_index[p]}findEntity(p){const u=this.map.label_asym_id.get(p);return u!==void 0?u:-1}findChainLabel(p){const u=this.entityIndex(p.label_entity_id);if(u<0||!this.map.entity_index_label_asym_id.has(u))return-1;const m=this.map.entity_index_label_asym_id.get(u);return m&&m.has(p.label_asym_id)?m.get(p.label_asym_id):-1}findChainAuth(p){if(!this.map.auth_asym_id_auth_seq_id.has(p.auth_asym_id))return-1;const u=this.map.auth_asym_id_auth_seq_id.get(p.auth_asym_id);return u.has(p.auth_seq_id)?u.get(p.auth_seq_id):-1}findResidue(p,u,m,v){let b;arguments.length===1?b=p:(s.label_entity_id=p,s.label_asym_id=u,s.auth_seq_id=m,s.pdbx_PDB_ins_code=v,b=s);const P=this.findChainLabel(b);if(P<0)return-1;const C=this.map.chain_index_auth_seq_id.get(P),l=n(b.auth_seq_id,b.pdbx_PDB_ins_code||"");return C.has(l)?C.get(l):-1}findResidueLabel(p){const u=this.findChainLabel(p);if(u<0)return-1;const m=this.map.chain_index_label_seq_id.get(u),v=n(p.label_seq_id,p.pdbx_PDB_ins_code||"");return m.has(v)?m.get(v):-1}findResidueAuth(p){const u=this.findChainAuth(p);if(u<0)return-1;const m=this.map.chain_index_auth_seq_id.get(u),v=n(p.auth_seq_id,p.pdbx_PDB_ins_code||"");return m.has(v)?m.get(v):-1}findResidueInsertion(p){const u=this.findChainLabel(p);if(u<0)return-1;const m=this.map.chain_index_label_seq_id.get(u),v=n(p.label_seq_id,p.pdbx_PDB_ins_code||"");if(m.has(v))return m.get(v);const b=e.SortedArray.findPredecessorIndex(this.map.label_seq_id,p.label_seq_id),P=t.AtomicHierarchy.chainStartResidueIndex(this.map.segments,u);if(b<P)return P;const C=t.AtomicHierarchy.chainEndResidueIndexExcl(this.map.segments,u)-1;return b>=C?C:b}findAtom(p){const u=this.findResidue(p);return u<0?-1:typeof p.label_alt_id>"u"?f(this.residueOffsets[u],this.residueOffsets[u+1],this.map.label_atom_id,p.label_atom_id):_(this.residueOffsets[u],this.residueOffsets[u+1],this.map.label_atom_id,this.map.label_alt_id,p.label_atom_id,p.label_alt_id)}findAtomAuth(p){const u=this.findResidueAuth(p);return u<0?-1:typeof p.label_alt_id>"u"?f(this.residueOffsets[u],this.residueOffsets[u+1],this.map.auth_atom_id,p.auth_atom_id):_(this.residueOffsets[u],this.residueOffsets[u+1],this.map.auth_atom_id,this.map.label_alt_id,p.auth_atom_id,p.label_alt_id)}findAtomOnResidue(p,u,m){return typeof m>"u"?f(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,u):_(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,this.map.label_alt_id,u,m)}findAtomsOnResidue(p,u){return y(this.residueOffsets[p],this.residueOffsets[p+1],this.map.label_atom_id,u)}findElementOnResidue(p,u){return g(this.residueOffsets[p],this.residueOffsets[p+1],this.map.type_symbol,u)}constructor(p){this.map=p,this.entityIndex=p.entities.getEntityIndex,this.residueOffsets=this.map.segments.residueAtomSegments.offsets}}function f(d,p,u,m){for(let v=d;v<p;v++)if(u.value(v)===m)return v;return-1}function y(d,p,u,m){for(let v=d;v<p;v++)if(m.has(u.value(v)))return v;return-1}function _(d,p,u,m,v,b){for(let P=d;P<p;P++)if(u.value(P)===v&&m.value(P)===b)return P;return-1}function g(d,p,u,m){for(let v=d;v<p;v++)if(u.value(v)===m)return v;return-1}function a(d,p,u){const m=o(p,d,u),{label_seq_id:v,auth_seq_id:b,pdbx_PDB_ins_code:P}=d.residues,{label_entity_id:C,label_asym_id:l,auth_asym_id:S}=d.chains,T=e.Interval.ofBounds(0,d.atoms._rowCount),A=e.Segmentation.transientSegments(u.chainAtomSegments,T);for(;A.hasNext;){const x=A.move(),M=x.index,D=p.getEntityIndex(C.value(M));D<0&&c(C.value(M)),m.chain_index_entity_index[M]=D;const V=S.value(M);let R=m.auth_asym_id_auth_seq_id.get(V);R||(R=new Map,m.auth_asym_id_auth_seq_id.set(V,R));const E=l.value(M);m.label_asym_id.has(E)||m.label_asym_id.set(E,D),i(m.entity_index_label_asym_id,D,E,M);const I=new Map,B=new Map;m.chain_index_label_seq_id.set(M,I),m.chain_index_auth_seq_id.set(M,B);const w=e.Segmentation.transientSegments(u.residueAtomSegments,T,x);for(;w.hasNext;){const F=w.move().index,L=b.value(F),U=P.value(F);I.set(n(v.value(F),U),F),B.set(n(L,U),F),R.set(L,M)}}return new h(m)}return GC}var QO;function Iee(){if(QO)return dC;QO=1,Object.defineProperty(dC,"__esModule",{value:!0}),dC.getAtomicHierarchyAndConformation=P;const e=lt(),t=at(),r=_T(),n=rt(),i=Ge(),c=fX(),o=ma(),s=Mee(),h=Dee(),f=dt(),y=Vt(),_=Q_(),g=Mi();function a(C){if(C._rowCount===0)return{residues:[],chains:[]};const l=0,S=C._rowCount,T=[l],A=[l],{label_entity_id:x,label_asym_id:M,label_seq_id:D,auth_seq_id:V,pdbx_PDB_ins_code:R}=C;for(let E=l+1;E<S;E++){const I=!x.areValuesEqual(E-1,E)||!M.areValuesEqual(E-1,E);(I||!D.areValuesEqual(E-1,E)||!V.areValuesEqual(E-1,E)||!R.areValuesEqual(E-1,E))&&(T[T.length]=E),I&&(A[A.length]=E)}return{residues:T,chains:A}}function d(C,l,S){const T=e.Table.ofColumns(o.AtomsSchema,{type_symbol:e.Column.ofArray({array:e.Column.mapToArray(C.type_symbol,f.ElementSymbol),schema:e.Column.Schema.Aliased(e.Column.Schema.str)}),label_atom_id:C.label_atom_id,auth_atom_id:C.auth_atom_id,label_alt_id:C.label_alt_id,label_comp_id:C.label_comp_id,auth_comp_id:C.auth_comp_id,pdbx_formal_charge:C.pdbx_formal_charge}),A=e.Table.view(C,o.ResiduesSchema,S.residues),x=e.Table.view(C,o.ChainsSchema,S.chains);if(!A.label_seq_id.isDefined){const D=new Int32Array(A.label_seq_id.rowCount),{residues:V,chains:R}=S;let E=0,I=0;for(let B=0,w=D.length;B<w;++B)V[B]>=R[E+1]&&(E+=1,I=0),D[B]=++I;A.label_seq_id=e.Column.ofIntArray(D)}e.Table.columnToArray(A,"label_seq_id",Int32Array),e.Table.columnToArray(A,"auth_seq_id",Int32Array);const M=p(l,S.residues.length,S.residues);return{atoms:T,residues:A,chains:x,atomSourceIndex:l,residueSourceIndex:M}}function p(C,l,S){const T=new Uint32Array(l);for(let x=0;x<l;x++){const M=S[x],D=x+1<l?S[x+1]:C.rowCount;let V=C.value(M);for(let R=M+1;R<D;R++){const E=C.value(R);E<V&&(V=E)}T[x]=V}const A=(0,y.range)(l).sort((x,M)=>T[x]-T[M]);for(let x=0;x<l;x++)T[A[x]]=x;return e.Column.ofIntArray(T)}function u(C){return{id:_.UUID.create22(),atomId:C.id,occupancy:C.occupancy.isDefined?C.occupancy:e.Column.ofConst(1,C._rowCount,e.Column.Schema.float),B_iso_or_equiv:C.B_
15iso_or_equiv,xyzDefined:C.Cartn_x.isDefined&&C.Cartn_y.isDefined&&C.Cartn_z.isDefined,x:C.Cartn_x.toArray({array:Float32Array}),y:C.Cartn_y.toArray({array:Float32Array}),z:C.Cartn_z.toArray({array:Float32Array})}}function m(C,l){return e.Table.areEqual(C.chains,l.chains)&&e.Table.areEqual(C.residues,l.residues)&&e.Table.areEqual(C.atoms,l.atoms)}function v(C,l){const S=new Map;if(!g.MmcifFormat.is(l))return S;const{molstar_atom_site_operator_mapping:T}=(0,r.toDatabase)(c.AtomSiteOperatorMappingSchema,l.data.frame);if(T._rowCount===0)return S;const A=new Map,x=new Map;for(let E=0;E<T._rowCount;E++){const I=T.assembly_operator_id.valueKind(E)===e.Column.ValueKinds.Present?{id:T.assembly_id.value(E),operList:[],operId:T.assembly_operator_id.value(E)}:void 0,B=n.SymmetryOperator.create(T.operator_name.value(E),i.Mat4.identity(),{assembly:I,spgrOp:T.symmetry_operator_index.valueKind(E)===e.Column.ValueKinds.Present?T.symmetry_operator_index.value(E):void 0,hkl:i.Vec3.ofArray(T.symmetry_hkl.value(E)),ncsId:T.ncs_id.value(E)}),w=T.suffix.value(E),O=T.label_asym_id.value(E);A.set(`${O}${w}`,{name:O,operator:B});const F=T.auth_asym_id.value(E);x.set(`${F}${w}`,F)}const{label_asym_id:M,auth_asym_id:D}=C.chains,V=new Array(M.rowCount),R=new Array(M.rowCount);for(let E=0;E<M.rowCount;E++){const I=M.value(E),B=D.value(E);if(!A.has(I)){V[E]=I,R[E]=B;continue}const{name:w,operator:O}=A.get(I);S.set(E,O),V[E]=w,R[E]=x.get(B)||B}return C.chains.label_asym_id=e.Column.ofArray({array:V,valueKind:C.chains.label_asym_id.valueKind,schema:C.chains.label_asym_id.schema}),C.chains.auth_asym_id=e.Column.ofArray({array:R,valueKind:C.chains.auth_asym_id.valueKind,schema:C.chains.auth_asym_id.schema}),S}function b(C,l,S,T,A,x){const M=a(C),D=d(C,l,M),V=v(D,A);if(x&&m(x.atomicHierarchy,D))return{sameAsPrevious:!0,hierarchy:x.atomicHierarchy,chainOperatorMapping:V};const R={residueAtomSegments:t.Segmentation.ofOffsets(M.residues,t.Interval.ofBounds(0,C._rowCount)),chainAtomSegments:t.Segmentation.ofOffsets(M.chains,t.Interval.ofBounds(0,C._rowCount))},E=(0,h.getAtomicIndex)(D,S,R),I=(0,s.getAtomicDerivedData)(D,R,E,T);return{sameAsPrevious:!1,hierarchy:{...D,...R,index:E,derived:I},chainOperatorMapping:V}}function P(C,l,S,T,A,x){const{sameAsPrevious:M,hierarchy:D,chainOperatorMapping:V}=b(C,l,S,T,A,x),R=u(C);return{sameAsPrevious:M,hierarchy:D,conformation:R,chainOperatorMapping:V}}return dC}var vx={},bx={},_x={},ZO;function wee(){return ZO||(ZO=1,Object.defineProperty(_x,"__esModule",{value:!0})),_x}var Vc={},ud={},JO;function mX(){if(JO)return ud;JO=1,Object.defineProperty(ud,"__esModule",{value:!0}),ud.EmptyCoarseIndex=void 0,ud.getCoarseIndex=e;function e(i){return new r(i)}class t{findElement(c,o){return o.kind=void 0,o.index=-1,!1}findSphereElement(c){return-1}findGaussianElement(c){return-1}}ud.EmptyCoarseIndex=new t;class r{get sphereMapping(){return this._sphereMapping||(this._sphereMapping=n(this.data.spheres)),this._sphereMapping}get gaussianMapping(){return this._gaussianMapping||(this._gaussianMapping=n(this.data.gaussians)),this._gaussianMapping}findSphereElement(c){var o;let h=this.sphereMapping[c.label_entity_id];return!h||(h=h[c.label_asym_id],!h)?-1:(o=h[c.label_seq_id])!==null&&o!==void 0?o:-1}findGaussianElement(c){var o;let h=this.gaussianMapping[c.label_entity_id];return!h||(h=h[c.label_asym_id],!h)?-1:(o=h[c.label_seq_id])!==null&&o!==void 0?o:-1}findElement(c,o){const s=this.findSphereElement(c);if(s>=0)return o.kind="spheres",o.index=s,!0;const h=this.findGaussianElement(c);return h>=0?(o.kind="gaussians",o.index=h,!0):!1}constructor(c){this.data=c,this._sphereMapping=void 0,this._gaussianMapping=void 0}}function n({count:i,entity_id:c,asym_id:o,seq_id_begin:s,seq_id_end:h}){const f={};for(let y=0;y<i;y++){const _=c.value(y),g=o.value(y);f[_]||(f[_]={}),f[_][g]||(f[_][g]={});const a=f[_][g],d=s.value(y),p=h.value(y);for(let u=d;u<=p;u++)a[u]=y}return f}return ud}var ek;function Vee(){if(ek)return Vc;ek=1,Object.defineProperty(Vc,"__esModule",{value:!0}),Vc.CoarseHierarchy=void 0,Vc.CoarseElementReference=c,Vc.CoarseElementKey=o;const e=lt(),t=at(),r=Ga(),n=mX(),i={chainKey:[],entityKey:[],findSequenceKey:()=>-1,findChainKey:()=>-1,getEntityFromChain:()=>
15-1,count:0,entity_id:e.Column.Undefined(0,e.Column.Schema.str),asym_id:e.Column.Undefined(0,e.Column.Schema.str),seq_id_begin:e.Column.Undefined(0,e.Column.Schema.int),seq_id_end:e.Column.Undefined(0,e.Column.Schema.int),chainElementSegments:t.Segmentation.create([]),polymerRanges:r.SortedRanges.ofSortedRanges([]),gapRanges:r.SortedRanges.ofSortedRanges([])};function c(){return{kind:void 0,index:-1}}function o(){return{label_entity_id:"",label_asym_id:"",label_seq_id:-1}}var s;return(function(h){h.Empty={isDefined:!1,spheres:i,gaussians:i,index:n.EmptyCoarseIndex}})(s||(Vc.CoarseHierarchy=s={})),Vc}var tk;function Eee(){return tk||(tk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(wee(),e),t.__exportStar(Vee(),e)})(bx)),bx}var zC={},rk;function Bee(){if(rk)return zC;rk=1,Object.defineProperty(zC,"__esModule",{value:!0}),zC.getCoarseKeys=o;const e=Ga(),t=at();function r(s,h,f){if(s.has(h))return s.get(h);const y=f.index++;return s.set(h,y),y}function n(s,h){if(s.has(h))return s.get(h);const f=new Map;return s.set(h,f),f}function i(s,h,f){const y=s.getEntityIndex;return{findChainKey:(a,d)=>{const p=y(a);if(p<0)return-1;const u=h.get(p);return u.has(d)?u.get(d):-1},findSequenceKey:(a,d,p)=>{const u=y(a);if(u<0)return-1;const m=h.get(u);if(m===void 0)return-1;const v=m.get(d);if(v===void 0)return-1;const b=f.get(v),{elementIndices:P,seqRanges:C}=b,l=e.SortedRanges.firstIntersectionIndex(C,t.OrderedSet.ofSingleton(p));return l!==-1?P[l]:-1}}}function c(s){throw new Error(`Missing entity entry for entity id '${s}'.`)}function o(s,h){const{entity_id:f,asym_id:y,seq_id_begin:_,seq_id_end:g,count:a,chainElementSegments:d}=s,p=new Map,u=new Map,m={index:0},v=new Int32Array(a),b=new Int32Array(a),P=new Int32Array(d.count);for(let T=0;T<a;T++)b[T]=h.getEntityIndex(f.value(T)),b[T]<0&&c(f.value(T));for(let T=0;T<d.count;T++){const A=d.offsets[T],x=d.offsets[T+1],M=b[A];P[T]=M;const D=n(u,M),V=r(D,y.value(A),m);for(let B=A;B<x;B++)v[B]=V;const R=[],E=[];for(let B=A;B<x;B++){const w=_.value(B),O=g.value(B);R.push(B),E.push(w,O)}const I={elementIndices:R,seqRanges:e.SortedRanges.ofSortedRanges(E)};p.set(V,I)}const{findChainKey:C,findSequenceKey:l}=i(h,u,p);return{chainKey:v,entityKey:b,findSequenceKey:l,findChainKey:C,getEntityFromChain:T=>P[T]}}return zC}var HC={},nk;function Ree(){if(nk)return HC;nk=1,Object.defineProperty(HC,"__esModule",{value:!0}),HC.getCoarseRanges=r;const e=at(),t=Ga();function r(n,i){const c=[],o=[],s=e.Segmentation.transientSegments(n.chainElementSegments,e.Interval.ofBounds(0,n.count)),{seq_id_begin:h,seq_id_end:f}=n;for(;s.hasNext;){const{start:y,end:_}=s.move();let g=-1,a=-1;for(let d=y;d<_;++d){const p=f.value(d);d===y?(g=d,a=f.value(d)):h.value(d)-a>1&&(c.push(g,d-1),o.push(d-1,d),g=d),d===_-1&&c.push(g,d),a=p}}return{polymerRanges:t.SortedRanges.ofSortedRanges(c),gapRanges:t.SortedRanges.ofSortedRanges(o)}}return HC}var ik;function Oee(){return ik||(ik=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EmptyCoarse=void 0,e.getCoarse=f;const t=Eee(),r=Bee(),n=et(),i=at(),c=Ge(),o=Ree(),s=vn(),h=mX();e.EmptyCoarse={hierarchy:t.CoarseHierarchy.Empty,conformation:void 0};function f(d,p){const{ihm_sphere_obj_site:u,ihm_gaussian_obj_site:m}=d;if(u._rowCount===0&&m._rowCount===0)return e.EmptyCoarse;const v=a(u),b=y(u),P=(0,r.getCoarseKeys)(v,d.entities),C=(0,o.getCoarseRanges)(v,p),l=a(m),S=_(m),T=(0,r.getCoarseKeys)(l,d.entities),A=(0,o.getCoarseRanges)(l,p);return{hierarchy:{isDefined:!0,spheres:{...v,...P,...C},gaussians:{...l,...T,...A},index:(0,h.getCoarseIndex)({spheres:v,gaussians:l})},conformation:{id:n.UUID.create22(),spheres:b,gaussians:S}}}function y(d){return{x:d.Cartn_x.toArray({array:Float32Array}),y:d.Cartn_y.toArray({array:Float32Array}),z:d.Cartn_z.toArray({array:Float32Array}),radius:d.object_radius.toArray({array:Float32Array}),rmsf:d.rmsf.toArray({array:Float32Array})}}function _(d){const p=s.BasicSchema.ihm_gaussian_obj_site.covariance_matrix.space,u=[],{covariance_matrix:m}=d;for(let v=0,b=m.rowCount;v<b;v++)u[v]=c.Tensor.toMat3((0,c.Mat3)(),p,m.value(v));return{x:d.mean_Cartn_x.toArray({array:Float32Array}),y:d.mean_Cartn_y.toArray({array:Float32Array}),z:d.mean_Cartn_z.toArray({array:Float32Array}),weight:d.weight.toArray({array:Float32Array}),covariance_matrix:u}}function g(d,p,u){const m=[0];for(let v=1,b=d.rowCount;v<b;v++)!d.areValuesEqual(v-1,v)&&(m[m.length]=v);return{chainElementSegments:i.Segmentation.ofOffsets(m,i.Interval.ofBounds(0,d.rowCount))}}function a(d){const{entity_id:p,seq_id_begin:u,seq_id_end:m,asym_id:v}=d;return{count:p.rowCount,entity_id:p,asym_id:v,seq_id_begin:u,seq_id_end:m,...g(v)}}})(vx)),vx}var WC={},ih={},Sx={},ah={},Ec={},ak;function kee(){if(ak)return Ec;ak=1,Object.defineProperty(Ec,"__esModule",{value:!0}),Ec.getProteinOneLetterCode=n,Ec.getRnaOneLetterCode=i,Ec.getDnaOneLetterCode=c,Ec.getNucleicOneLetterCode=o;const e={HIS:"H",ARG:"R",LYS:"K",ILE:"I",PHE:"F",LEU:"L",TRP:"W",ALA:"A",MET:"M",PRO:"P",CYS:"C",ASN:"N",VAL:"V",GLY:"G",SER:"S",GLN:"Q",TYR:"Y",ASP:"D",GLU:"E",THR:"T",SEC:"U",PYL:"O",HSD:"H",HSE:"H",HSP:"H",LSN:"K",ASPP:"D",GLUP:"E",HID:"H",HIE:"H",HIP:"H",LYN:"K",ASH:"D",GLH:"E"},t={DA:"A",DC:"C",DG:"G",DT:"T",DU:"U"},r={A:"A",C:"C",G:"G",T:"T",U:"U"};function n(s){return e[s]||"X"}function i(s){return r[s]||"X"}function c(s){return t[s]||"X"}function o(s){return r[s]||t[s]||"X"}return Ec}var ok;function Fee(){if(ok)return ah;ok=1,Object.defineProperty(ah,"__esModule",{value:!0}),ah.Sequence=void 0;const e=kee(),t=lt(),r=Gt();var n;return(function(i){let c;(function(a){a.Protein="protein",a.RNA="RNA",a.DNA="DNA",a.Generic="generic"})(c=i.Kind||(i.Kind={}));function o(a){const d=a.code.toArray();return(d instanceof Array?d:Array.from(d)).join("")}i.getSequenceString=o;function s(a){for(let d=0,p=Math.min(a.rowCount,10);d<p;d++){const u=a.value(d)||"";if((0,e.getProteinOneLetterCode)(u)!=="X")return c.Protein;if((0,e.getRnaOneLetterCode)(u)!=="X")return c.RNA;if((0,e.getDnaOneLetterCode)(u)!=="X")return c.DNA}return c.Generic}function h(a,d){let p;switch(a){case c.Protein:p=e.getProteinOneLetterCode;break;case c.DNA:p=e.getDnaOneLetterCode;break;case c.RNA:p=e.getRnaOneLetterCode;break;case c.Generic:p=()=>"X";break;default:(0,r.assertUnreachable)(a)}return p}function f(a,d){if(d.rowCount===0)throw new Error("cannot be empty");const p=s(a);return new y(p,a,d)}i.ofResidueNames=f;class y{index(d){return this.indexMap.get(d)}constructor(d,p,u){this.kind=d,this.microHet=new Map;const m=h(d),v=[],b=[],P=[],C=new Map;let l=0;const S=new Map;for(let A=0,x=u.rowCount;A<x;++A){const M=u.value(A);if(S.has(M))C.has(M)?C.get(M).push(p.value(A)):C.set(M,[b[S.get(M)],p.value(A)]);else{S.set(M,l);const D=p.value(A);b[l]=D,P[l]=M,v[l]=m(D),l+=1}}const T=[];for(let A=0,x=l;A<x;++A){const M=C.get(P[A]);if(M){const D=M.map(V=>{const R=m(V);return R==="X"?V:R});T[A]=`(${D.join("|")})`}else T[A]=v[A]==="X"?b[A]:v[A]}
15this.length=l,this.code=t.Column.ofStringArray(v),this.compId=t.Column.ofStringArray(b),this.seqId=t.Column.ofIntArray(P),this.label=t.Column.ofStringArray(T),this.microHet=C,this.indexMap=S}}function _(a,d){const p=c.Generic;return new g(p,a,d)}i.ofSequenceRanges=_;class g{index(d){return d-this.minSeqId}constructor(d,p,u){this.kind=d,this.seqIdStart=p,this.seqIdEnd=u,this.microHet=new Map;let m=0,v=Number.MAX_SAFE_INTEGER;for(let P=0,C=this.seqIdStart.rowCount;P<C;P++){const l=this.seqIdStart.value(P),S=this.seqIdEnd.value(P);l<v&&(v=l),m<S&&(m=S)}const b=m-v+1;this.code=t.Column.ofConst("X",b,t.Column.Schema.str),this.label=t.Column.ofConst("",b,t.Column.Schema.str),this.seqId=t.Column.ofLambda({value:P=>P+v+1,rowCount:b,schema:t.Column.Schema.int}),this.compId=t.Column.ofConst("",b,t.Column.Schema.str),this.length=b,this.minSeqId=v}}})(n||(ah.Sequence=n={})),ah}var sk;function pX(){return sk||(sk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),At.__exportStar(Fee(),e)})(Sx)),Sx}var ck;function hX(){if(ck)return ih;ck=1,Object.defineProperty(ih,"__esModule",{value:!0}),ih.StructureSequence=void 0;const e=lt(),t=pX();var r;return(function(n){const i={byEntityKey:{},sequences:[]};function c(...y){const _=[],g={};for(let a=0,d=y.length;a<d;++a)_.push(...y[a].sequences),Object.assign(g,y[a].byEntityKey);return{sequences:_,byEntityKey:g}}function o(y,_,g){const a=s(y,_),d=g.isDefined?h(y,g):i;return c(a,d)}n.fromHierarchy=o;function s(y,_){const{label_comp_id:g}=_.atoms,{label_seq_id:a}=_.residues,{chainAtomSegments:d,residueAtomSegments:p}=_,{count:u,offsets:m}=d,v={},b=[];if(u===1&&m[0]===0&&m[1]===0)return{byEntityKey:v,sequences:b};for(let P=0,C=_.chains._rowCount;P<C;P++){const l=_.index.getEntityFromChain(P);if(v[l]!==void 0||y.data.type.value(l)!=="polymer")continue;const S=P;for(P++;P<C&&l===_.index.getEntityFromChain(P)&&y.data.type.value(l)!=="polymer";)P++;P--;const T=p.index[m[S]],A=p.index[m[P+1]-1]+1,x=e.Column.window(a,T,A),M=[];for(let V=T;V<A;++V)M.push(g.value(p.offsets[V]));const D=e.Column.ofStringArray(M);v[l]={entityId:y.data.id.value(l),sequence:t.Sequence.ofResidueNames(D,x)},b.push(v[l])}return{byEntityKey:v,sequences:b}}n.fromAtomicHierarchy=s;function h(y,_){const g=f(y,_.spheres),a=f(y,_.gaussians);return c(g,a)}n.fromCoarseHierarchy=h;function f(y,_){const{chainElementSegments:g,seq_id_begin:a,seq_id_end:d}=_,{count:p,offsets:u}=g,m={},v=[];if(p===1&&u[0]===0&&u[1]===0)return{byEntityKey:m,sequences:v};for(let b=0,P=p;b<P;b++){const C=_.getEntityFromChain(b);if(m[C]!==void 0)continue;const l=b;for(b++;b<P&&C===_.getEntityFromChain(b);)b++;b--;const S=u[l],T=u[b+1]-1,A=e.Column.window(a,S,T),x=e.Column.window(d,S,T);m[C]={entityId:y.data.id.value(C),sequence:t.Sequence.ofSequenceRanges(A,x)},v.push(m[C])}return{byEntityKey:m,sequences:v}}n.fromCoarseElements=f})(r||(ih.StructureSequence=r={})),ih}var uk;function Lee(){if(uk)return WC;uk=1,Object.defineProperty(WC,"__esModule",{value:!0}),WC.getSequence=n;const e=hX(),t=lt(),r=pX();function n(i,c,o,s){if(!i.entity_poly_seq||!i.entity_poly_seq._rowCount)return e.StructureSequence.fromHierarchy(c,o,s);const{entity_id:h,num:f,mon_id:y}=i.entity_poly_seq,_={},g=[],a=h.rowCount;let d=0;for(;d<a;){const p=d;for(;d<a-1&&h.areValuesEqual(d,d+1);)d++;d++;const u=h.value(p),m=t.Column.window(y,p,d),v=t.Column.window(f,p,d),b=c.getEntityIndex(u);_[b]={entityId:u,sequence:r.Sequence.ofResidueNames(m,v)},g.push(_[b])}return{byEntityKey:_,sequences:g}}return WC}var $C={},lk;function Nee(){if(lk)return $C;lk=1,Object.defineProperty($C,"__esModule",{value:!0}),$C.sortAtomSite=n;const e=_t(),t=lt(),r=Vt();async function n(i,c,o,s){const h=(0,e.createRangeArray)(o,s-1),{label_entity_id:f,label_asym_id:y,label_seq_id:_}=c,g=(0,e.makeBuckets)(h,f.value);i.shouldUpdate&&await i.update();for(let a=0,d=g.length-1;a<d;a++){const p=(0,e.makeBuckets)(h,y.value,{start:g[a],end:g[a+1]});for(let u=0,m=p.length-1;u<m;u++){const v=p[u];_.valueKind(v)===t.Column.ValueKinds.Present&&((0,e.makeBuckets)(h,_.value,{sort:!0,start:v,end:p[u+1]}),i.shouldUpdate&&await i.update())}i.shouldUpdate&&await i.update()}return(0,r.arrayIsIdentity)(h)&&h.length===c._rowCount?{atom_site:c,sourceIndex:t.Column.ofIntArray(h)}:{atom_site:t.Table.view(c,c._schema,h),sourceIndex:t.Column.ofIntArray(h)}}return $C}var XC={},dk;function qee(){if(dk)return XC;dk=1,Object.defineProperty(XC,"__esModule",{value:!0}),XC.getAtomicRanges=o;const e=at(),t=Ga(),r=dt(),n=Sl(),i=Ge();function c(s,h,f,y,_){const{polymerType:g,traceElementIndex:a,directionFromElementIndex:d,directionToElementIndex:p}=_.residue,u=g[s],m=g[h];if(u===r.PolymerType.NA||m===r.PolymerType.NA||a[s]===-1||a[h]===-1)return!1;let v=y.findAtomsOnResidue(s,(0,n.getAtomIdForAtomRole)(u,"backboneStart")),b=y.findAtomsOnResidue(h,(0,n.getAtomIdForAtomRole)(m,"backboneEnd"));(v===-1||b===-1)&&(v=y.findAtomsOnResidue(s,(0,n.getAtomIdForAtomRole)(u,"coarseBackbone")),b=y.findAtomsOnResidue(h,(0,n.getAtomIdForAtomRole)(m,"coarseBackbone")));const{x:P,y:C,z:l}=f,S=i.Vec3.create(P[v],C[v],l[v]),T=i.Vec3.create(P[b],C[b],l[b]),A=d[s]===-1||p[s]===-1||d[h]===-1||p[h]===-1;return i.Vec3.distance(S,T)<(A?10:3)}
15function o(s,h,f,y){const _=[],g=[],a=new Map,d=e.Segmentation.transientSegments(s.chainAtomSegments,e.Interval.ofBounds(0,s.atoms._rowCount)),p=e.Segmentation.transientSegments(s.residueAtomSegments,e.Interval.ofBounds(0,s.atoms._rowCount)),{index:u,derived:m}=s,{label_seq_id:v}=s.residues,{label_entity_id:b}=s.chains,{moleculeType:P,traceElementIndex:C}=m.residue;let l,S,T,A;for(;d.hasNext;){const x=d.move();p.setSegment(x),l=-1,S=-1,T=-1,A=-1;const M=h.getEntityIndex(b.value(x.index)),D=y.byEntityKey[M],V=D?D.sequence.seqId.value(D.sequence.seqId.rowCount-1):-1,R=s.residueAtomSegments.index[x.start],E=s.residueAtomSegments.index[x.end-1],I=v.value(R),B=v.value(E);for(I===1&&B===V&&f.xyzDefined&&c(R,E,f,u,m)&&(a.set(R,E),a.set(E,R));p.hasNext;){const w=p.move(),O=w.index,F=v.value(O);if((0,r.isPolymer)(P[O])&&C[O]!==-1)if(A!==-1)if(F!==l+1)_.push(A,T-1),g.push(S,w.end-1),A=w.start;else if(!p.hasNext)_.push(A,w.end-1);else{const L=s.residueAtomSegments.index[w.start],U=s.residueAtomSegments.index[T-1];f.xyzDefined&&!c(L,U,f,s.index,m)&&(_.push(A,T-1),g.push(S,w.end-1),A=w.start)}else A=w.start;else A!==-1&&(_.push(A,T-1),A=-1);S=w.start,T=w.end,l=F}}return{polymerRanges:t.SortedRanges.ofSortedRanges(_),gapRanges:t.SortedRanges.ofSortedRanges(g),cyclicPolymerMap:a}}return XC}var Bc={},fk;function Uee(){if(fk)return Bc;fk=1,Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.getMissingResidues=i,Bc.getChemicalComponentMap=o,Bc.getSaccharideComponentMap=s,Bc.getStructAsymMap=f;const e=lt(),t=dt(),r=xf(),n=Af();function i(y){const _=new Map,g=(d,p,u)=>`${d}|${p}|${u}`,a=y.pdbx_unobs_or_zero_occ_residues;if(a._rowCount>0)for(let d=0,p=a._rowCount;d<p;++d){const u=g(a.PDB_model_num.value(d),a.label_asym_id.value(d),a.label_seq_id.value(d));_.set(u,{polymer_flag:a.polymer_flag.value(d),occupancy_flag:a.occupancy_flag.value(d)})}else y.entity_poly_seq._rowCount>0&&c(y,_,g);return{has:(d,p,u)=>_.has(g(d,p,u)),get:(d,p,u)=>_.get(g(d,p,u)),size:_.size}}function c(y,_,g){const a=new Map,{id:d,entity_id:p}=y.struct_asym;for(let T=0,A=d.rowCount;T<A;++T){const x=p.value(T),M=d.value(T);a.has(x)?a.get(x).push(M):a.set(x,[M])}const u=new Set,m=new Set,{label_asym_id:v,label_seq_id:b,pdbx_PDB_model_num:P}=y.atom_site;for(let T=0,A=v.rowCount;T<A;++T){if(b.valueKind(T)!==e.Column.ValueKinds.Present)continue;const x=P.value(T);m.add(x),u.add(g(x,v.value(T),b.value(T)))}m.size===0&&m.add(1);const C=Array.from(m),{entity_id:l,num:S}=y.entity_poly_seq;for(let T=0,A=l.rowCount;T<A;++T){const x=a.get(l.value(T));if(!x)continue;const M=S.value(T);for(const D of x)for(const V of C){const R=g(V,D,M);u.has(R)||_.set(R,{polymer_flag:"y",occupancy_flag:1})}}}function o(y){const _=new Map;if(y.chem_comp._rowCount>0){const{id:g,type:a}=y.chem_comp;for(let d=0,p=g.rowCount;d<p;++d){const u=g.value(d),m=e.Table.getRow(y.chem_comp,d);a.valueKind(d)!==e.Column.ValueKinds.Present&&(m.type=(0,t.getComponentType)(u)),_.set(u,m)}}else h(y).forEach(a=>{_.set(a,(0,t.getDefaultChemicalComponent)(a))});return _}function s(y){const _=new Map;if(y.pdbx_chem_comp_identifier._rowCount>0){const{comp_id:g,type:a,identifier:d}=y.pdbx_chem_comp_identifier;for(let p=0,u=g.rowCount;p<u;++p)if(a.value(p)==="SNFG CARBOHYDRATE SYMBOL"||a.value(p)==="SNFG CARB SYMBOL"){const m=d.value(p),v=r.SaccharidesSnfgMap.get(m);v?_.set(g.value(p),v):console.warn(`Unknown SNFG name '${m}'`)}}if(y.chem_comp._rowCount>0){const{id:g,type:a}=y.chem_comp;for(let d=0,p=g.rowCount;d<p;++d){const u=g.value(d);if(_.has(u))continue;const m=a.value(d);r.SaccharideCompIdMap.has(u)?_.set(u,r.SaccharideCompIdMap.get(u)):(0,t.getMoleculeType)(m,u)===t.MoleculeType.Saccharide&&_.set(u,r.UnknownSaccharideComponent)}}else{const g=h(y);r.SaccharideCompIdMap.forEach((a,d)=>{!_.has(d)&&g.has(d)&&_.set(d,a)})}return _}const h=(0,n.memoize1)(y=>{const _=new Set,{label_comp_id:g,auth_comp_id:a}=y.atom_site,d=g.isDefined?g:a;for(let p=0,u=d.rowCount;p<u;++p)_.add(d.value(p));return _});function f(y,_){const g=new Map,{auth_asym_id:a,label_asym_id:d,label_entity_id:p}=y.chains;for(let u=0,m=y.chains._rowCount;u<m;u++){const v=d.value(u);g.set(v,{id:v,auth_id:a.value(u),entity_id:p.value(u)})}if(_?.struct_asym._rowCount){const{id:u,entity_id:m}=_.struct_asym;for(let v=0,b=u.rowCount;v<b;++v){const P=u.value(v);g.has(P)||g.set(P,{id:P,auth_id:"",entity_id:m.value(v)})}}return g}return Bc}var oh={},sh={},mk;function jee(){if(mk)return sh;mk=1,Object.defineProperty(sh,"__esModule",{value:!0}),sh.EntitySubtype=void 0;const e=lt();return sh.EntitySubtype=e.Column.Schema.Aliased(e.Column.Schema.Str()),sh}var pk;function Gee(){if(pk)return oh;pk=1,Object.defineProperty(oh,"__esModule",{value:!0}),oh.getEntityData=i,oh.getEntitiesWithPRD=c;const e=lt(),t=jee(),r=dt(),n=vn();function i(o){let s;if(o.entity.id.isDefined)s=o.entity;else{const a=new Set,d=[],p=[],{label_entity_id:u,label_comp_id:m}=o.atom_site;for(let P=0,C=o.atom_site._rowCount;P<C;P++){const l=u.value(P);a.has(l)||(d.push(l),p.push((0,r.getEntityType)(m.value(P))),a.add(l))}const{entity_id:v}=o.ihm_sphere_obj_site;for(let P=0,C=o.ihm_sphere_obj_site._rowCount;P<C;P++){const l=v.value(P);a.has(l)||(d.push(l),p.push("polymer"),a.add(l))}const{entity_id:b}=o.ihm_gaussian_obj_site;for(let P=0,C=o.ihm_gaussian_obj_site._rowCount;P<C;P++){const l=b.value(P);a.has(l)||(d.push(l),p.push("polymer"),a.add(l))}
15s=e.Table.ofPartialColumns(n.BasicSchema.entity,{id:e.Column.ofArray({array:d,schema:n.BasicSchema.entity.id}),type:e.Column.ofArray({array:p,schema:n.BasicSchema.entity.type})},d.length)}const h=e.Column.createIndexer(s.id),f=new Array(s._rowCount);f.fill("other");const y=new Set;let _=!1;if(o.entity_poly&&o.entity_poly.type.isDefined){const{entity_id:a,type:d,_rowCount:p}=o.entity_poly;for(let u=0;u<p;++u){const m=a.value(u);f[h(m)]=d.value(u),y.add(m)}}else _=!0;if(o.pdbx_entity_branch&&o.pdbx_entity_branch.entity_id.isDefined){const{entity_id:a,type:d,_rowCount:p}=o.pdbx_entity_branch;for(let u=0;u<p;++u){const m=a.value(u);f[h(m)]=d.value(u),y.add(m)}}else _=!0;if(y.size<f.length&&(_=!0),_){const a=new Map;if(o.chem_comp){const{id:d,type:p}=o.chem_comp;for(let u=0,m=o.chem_comp._rowCount;u<m;u++)a.set(d.value(u),p.value(u))}if(o.atom_site){const{label_entity_id:d,label_comp_id:p}=o.atom_site;for(let u=0,m=o.atom_site._rowCount;u<m;u++){const v=d.value(u);if(!y.has(v)){const b=p.value(u),P=a.get(b)||"other";f[h(v)]=(0,r.getEntitySubtype)(b,P),y.add(v)}}}}const g=e.Column.ofArray({array:f,schema:t.EntitySubtype});return{data:s,subtype:g,getEntityIndex:h}}function c(o,s,h){var f;if(!o.pdbx_molecule||!o.pdbx_molecule.prd_id.isDefined)return s;const y=new Array(s.data._rowCount);y.fill("");const{asym_id:_,prd_id:g,_rowCount:a}=o.pdbx_molecule;for(let p=0;p<a;++p){const u=_.value(p),m=(f=h.get(u))===null||f===void 0?void 0:f.entity_id;m!==void 0&&(y[s.getEntityIndex(m)]=g.value(p))}const d=e.Column.ofArray({array:y,schema:e.Column.Schema.str});return{...s,prd_id:d}}return oh}var ch={},hk;function LT(){if(hk)return ch;hk=1,Object.defineProperty(ch,"__esModule",{value:!0}),ch.ArrayTrajectory=void 0;class e{getFrameAtIndex(r){return this.frames[r]}constructor(r){this.frames=r,this.frameCount=r.length,this.representative=r[0],this.duration=r.length}}return ch.ArrayTrajectory=e,ch}var gk;function ga(){if(gk)return lC;gk=1,Object.defineProperty(lC,"__esModule",{value:!0}),lC.createModels=a;const e=lt(),t=Q_(),r=NT(),n=Pr(),i=Iee(),c=Oee(),o=Lee(),s=Nee(),h=qee(),f=Uee(),y=Gee(),_=uX(),g=LT();async function a(C,l,S){const T=d(C),A=C.ihm_model_list._rowCount>0?await P(S,C,T,l):await v(S,C,T,l);for(let x=0;x<A.length;x++)r.Model.TrajectoryInfo.set(A[x],{index:x,size:A.length});return new g.ArrayTrajectory(A)}function d(C,l){return{missingResidues:(0,f.getMissingResidues)(C),chemicalComponentMap:(0,f.getChemicalComponentMap)(C),saccharideComponentMap:(0,f.getSaccharideComponentMap)(C)}}function p(C,l,S,T,A,x,M){const D=(0,i.getAtomicHierarchyAndConformation)(l,S,T,A.chemicalComponentMap,x,M),V=l.pdbx_PDB_model_num.value(0);if(M&&D.sameAsPrevious)return{...M,id:t.UUID.create22(),modelNum:V,atomicConformation:D.conformation,_dynamicPropertyData:Object.create(null)};const R=c.EmptyCoarse,E=(0,o.getSequence)(C,T,D.hierarchy,R.hierarchy),I=(0,h.getAtomicRanges)(D.hierarchy,T,D.conformation,E),B=(0,f.getStructAsymMap)(D.hierarchy),w=C.entry.id.valueKind(0)===e.Column.ValueKinds.Present?C.entry.id.value(0):x.name,O=[];return w&&O.push(w),C.struct.title.valueKind(0)===e.Column.ValueKinds.Present&&O.push(C.struct.title.value(0)),{id:t.UUID.create22(),entryId:w,label:O.join(" | "),entry:w,sourceData:x,modelNum:V,parent:void 0,entities:(0,y.getEntitiesWithPRD)(C,T,B),sequence:E,atomicHierarchy:D.hierarchy,atomicConformation:D.conformation,atomicRanges:I,atomicChainOperatorMappinng:D.chainOperatorMapping,coarseHierarchy:R.hierarchy,coarseConformation:R.conformation,properties:{...A,structAsymMap:B},customProperties:new n.CustomProperties,_staticPropertyData:Object.create(null),_dynamicPropertyData:Object.create(null)}}function u(C,l,S,T){const A=(0,i.getAtomicHierarchyAndConformation)(l.atom_site,l.atom_site_sourceIndex,l.entities,S.chemicalComponentMap,T),x=(0,c.getCoarse)(l,S.chemicalComponentMap),M=(0,o.getSequence)(C,l.entities,A.hierarchy,x.hierarchy),D=(0,h.getAtomicRanges)(A.hierarchy,l.entities,A.conformation,M),V=C.entry.id.valueKind(0)===e.Column.ValueKinds.Present?C.entry.id.value(0):T.name,R=[];V&&R.push(V),C.struct.title.valueKind(0)===e.Column.ValueKinds.Present&&R.push(C.struct.title.value(0)),l.model_name&&R.push(l.model_name),l.model_group_name&&R.push(l.model_group_name);const E=(0,f.getStructAsymMap)(A.hierarchy,C);return{id:t.UUID.create22(),entryId:V,label:R.join(" | "),entry:V,sourceData:T,modelNum:l.model_id,parent:void 0,entities:(0,y.getEntitiesWithPRD)(C,l.entities,E),sequence:M,atomicHierarchy:A.hierarchy,atomicConformation:A.conformation,atomicRanges:D,atomicCh
15ainOperatorMappinng:A.chainOperatorMapping,coarseHierarchy:x.hierarchy,coarseConformation:x.conformation,properties:{...S,structAsymMap:E},customProperties:new n.CustomProperties,_staticPropertyData:Object.create(null),_dynamicPropertyData:Object.create(null)}}function m(C,l){const S=C.rowCount;if(!C.isDefined)return S;let T=l+1;for(;T<S&&C.areValuesEqual(l,T);)T++;return T}async function v(C,l,S,T){const A=[];if(l.atom_site){const x=l.atom_site.id.rowCount,M=(0,y.getEntityData)(l);let D=0;for(;D<x;){const V=m(l.atom_site.pdbx_PDB_model_num,D),{atom_site:R,sourceIndex:E}=await(0,s.sortAtomSite)(C,l.atom_site,D,V),I=p(l,R,E,M,S,T,A.length>0?A[A.length-1]:void 0);A.push(I),D=V}}return A}function b(C,l){const S=new Map,T=C._rowCount;let A=0;for(;A<T;){const x=m(l,A),M=l.value(A);S.set(M,{table:e.Table.window(C,C._schema,A,x),start:A,end:x}),A=x}return S}async function P(C,l,S,T){const A=(0,y.getEntityData)(l),x=l.atom_site.ihm_model_id.isDefined?l.atom_site.ihm_model_id:l.atom_site.pdbx_PDB_model_num,M=b(l.atom_site,x),D=b(l.ihm_sphere_obj_site,l.ihm_sphere_obj_site.model_id),V=b(l.ihm_gaussian_obj_site,l.ihm_gaussian_obj_site.model_id),R=[];if(l.ihm_model_list){const{model_id:E,model_name:I}=l.ihm_model_list;for(let B=0;B<l.ihm_model_list._rowCount;B++){const w=E.value(B);let O,F;if(M.has(w)){const q=M.get(w),{atom_site:N,sourceIndex:k}=await(0,s.sortAtomSite)(C,l.atom_site,q.start,q.end);O=N,F=k}else O=e.Table.window(l.atom_site,l.atom_site._schema,0,0),F=e.Column.ofIntArray([]);const L={model_id:w,model_name:I.value(B),model_group_name:(0,_.getModelGroupName)(w,l),entities:A,atom_site:O,atom_site_sourceIndex:F,ihm_sphere_obj_site:D.has(w)?D.get(w).table:e.Table.window(l.ihm_sphere_obj_site,l.ihm_sphere_obj_site._schema,0,0),ihm_gaussian_obj_site:V.has(w)?V.get(w).table:e.Table.window(l.ihm_gaussian_obj_site,l.ihm_gaussian_obj_site._schema,0,0)},U=u(l,L,S,T);R.push(U)}}return R}return lC}var yk;function NT(){if(yk)return hm;yk=1,Object.defineProperty(hm,"__esModule",{value:!0}),hm.Model=void 0;const e=Q_(),t=ma(),r=WZ(),n=Ge(),i=vl(),c=nt(),o=Ua(),s=ga(),h=Mi(),f=Qn(),y=lt(),_=uI(),g=LT(),a=dt(),d=BT();var p;return(function(u){function m($,ie){const Z=[],{frames:re}=ie,oe=v($),ce=O($),ue=$.atomicHierarchy.atoms._rowCount;for(let pe=0,he=re.length;pe<he;++pe){const fe=re[pe];if(fe.elementCount!==ue)throw new Error(`Frame element count mismatch, got ${fe.elementCount} but expected ${ue}.`);const de={...$,id:e.UUID.create22(),modelNum:pe,atomicConformation:C($,fe),_dynamicPropertyData:Object.create(null)};if(fe.cell){const ge=f.ModelSymmetry.fromCell(fe.cell.size,fe.cell.anglesInRadians);f.ModelSymmetry.Provider.set(de,ge)}u.TrajectoryInfo.set(de,{index:pe,size:re.length}),u.CoarseGrained.set(de,ce),Z.push(de)}return{trajectory:Z,srcIndexArray:oe}}function v($){const ie=$.atomicHierarchy.atomSourceIndex;let Z;return"__srcIndexArray__"in $._staticPropertyData?Z=$._staticPropertyData.__srcIndexArray__:(Z=y.Column.isIdentity(ie)?void 0:ie.toArray({array:Int32Array}),$._staticPropertyData.__srcIndexArray__=Z),Z}function b($,ie){return new g.ArrayTrajectory(m($,ie).trajectory)}u.trajectoryFromModelAndCoordinates=b;function P($,ie){return c.Task.create("Create Trajectory",async Z=>{const re=await(0,s.createModels)($.basic,$.sourceData,Z);if(re.frameCount===0)throw new Error("found no model");const oe=re.representative,{trajectory:ce}=m(oe,ie),ue={pairs:$.bonds,count:oe.atomicHierarchy.atoms._rowCount},pe=o.IndexPairBonds.fromData(ue),he=O(oe);let fe=0;for(const de of ce)o.IndexPairBonds.Provider.set(de,pe),u.TrajectoryInfo.set(de,{index:fe++,size:ce.length}),u.CoarseGrained.set(de,he);return new g.ArrayTrajectory(ce)})}u.trajectoryFromTopologyAndCoordinates=P;function C($,ie){return i.Coordinates.getAtomicConformation(ie,{atomId:$.atomicConformation.atomId,occupancy:$.atomicConformation.occupancy,B_iso_or_equiv:$.atomicConformation.B_iso_or_equiv},v($))}u.getAtomicConformationFromFrame=C;const l="__Center__";function S($){if($._dynamicPropertyData[l])return $._dynamicPropertyData[l];const ie=(0,r.calcModelCenter)($.atomicConformation,$.coarseConformation);return $._dynamicPropertyData[l]=ie,ie}u.getCenter=S;const T="__AtomicRadii__";function A($){if($._staticPropertyData[T])return $._staticPropertyData[T];const ie=$.atomicHierarchy.atoms._rowCount,Z=$.atomicHierarchy.atoms.type_symbol.value,re=new Float32Array(ie);for(let oe=0;oe<ie;
15oe++)re[oe]=(0,t.VdwRadius)(Z(oe));return $._staticPropertyData[T]=re,re}u.getAtomicRadii=A;function x($){const ie=new Int32Array($.rowCount);let Z=!1;for(let re=0,oe=$.rowCount;re<oe;re++){const ce=$.value(re);ce!==re&&(Z=!1),ie[ce]=re}return{isIdentity:Z,invertedIndex:ie}}const M="__InvertedAtomSrcIndex__";function D($){if($._staticPropertyData[M])return $._staticPropertyData[M];const ie=x($.atomicHierarchy.atomSourceIndex);return $._staticPropertyData[M]=ie,ie}u.getInvertedAtomSourceIndex=D;const V="__TrajectoryInfo__";u.TrajectoryInfo={get($){return $._dynamicPropertyData[V]||{index:0,size:1}},set($,ie){return $._dynamicPropertyData[V]=ie}};const R="__AsymIdCount__";u.AsymIdCount={get($){if($._dynamicPropertyData[R])return $._dynamicPropertyData[R];const ie=(0,r.getAsymIdCount)($);return $._dynamicPropertyData[R]=ie,ie}},u.AsymIdOffset=_.CustomModelProperty.createSimple("asym_id_offset","static"),u.Index=_.CustomModelProperty.createSimple("index","static"),u.MaxIndex=_.CustomModelProperty.createSimple("max_index","static");function E($){return $.parent||$}u.getRoot=E;function I($,ie){return $.atomicHierarchy===ie.atomicHierarchy&&$.coarseHierarchy===ie.coarseHierarchy}u.areHierarchiesEqual=I;const B="__CoordinatesHistory__";u.CoordinatesHistory={get($){return $._staticPropertyData[B]},set($,ie){return $._staticPropertyData[B]=ie}};const w="__CoarseGrained__";u.CoarseGrained={get($){return $._staticPropertyData[w]},set($,ie){return $._staticPropertyData[w]=ie}};function O($){let ie=u.CoarseGrained.get($);if(ie===void 0){let Z=0,re=0;const{polymerType:oe,directionToElementIndex:ce}=$.atomicHierarchy.derived.residue;for(let ge=0;ge<oe.length;++ge)oe[ge]!==a.PolymerType.NA&&(Z+=1,ce[ge]!==-1&&(re+=1));let ue=!1,pe=!1,he=!1;const{label_atom_id:fe,_rowCount:de}=$.atomicHierarchy.atoms;for(let ge=0;ge<de;++ge){const Ce=fe.value(ge);if(!ue&&Ce==="BB"&&(ue=!0),!pe&&Ce==="SC1"&&(pe=!0),!he&&a.TraceAtoms.has(Ce)&&(he=!0),ue&&pe&&he)break}ie=!1,de>0&&Z>0&&(ue&&pe||de/Z<3||re===0&&he)&&(ie=!0),u.CoarseGrained.set($,ie)}return ie}u.isCoarseGrained=O;function F($){return $.properties.saccharideComponentMap.size>0}u.hasCarbohydrate=F;function L($){const{subtype:ie}=$.entities;for(let Z=0,re=ie.rowCount;Z<re;++Z)if(ie.value(Z).startsWith("polypeptide"))return!0;return!1}u.hasProtein=L;function U($){const{subtype:ie}=$.entities;for(let Z=0,re=ie.rowCount;Z<re;++Z){const oe=ie.value(Z);if(oe.endsWith("ribonucleotide hybrid")||oe.endsWith("ribonucleotide"))return!0}return!1}u.hasNucleic=U;function q($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0,re=ie.database_2.database_id.rowCount;Z<re;++Z)if(ie.database_2.database_id.value(Z)==="pdb")return!0;return!1}u.isFromPdbArchive=q;function N($){return h.MmcifFormat.is($.sourceData)?$.entryId.match(/^[1-9][a-z0-9]{3,3}$/i)!==null||$.entryId.match(/^pdb_[0-9]{4,4}[1-9][a-z0-9]{3,3}$/i)!==null:!1}u.hasPdbId=N;function k($){if(h.MmcifFormat.is($.sourceData)){const{db:ie}=$.sourceData.data;return ie.struct_conf.id.isDefined||ie.struct_sheet_range.id.isDefined}else return d.ModelSecondaryStructure.Provider.isApplicable($)}u.hasSecondaryStructure=k;const j=n.Vec3.create(1.5707963,1.5707963,1.5707963),H=n.Vec3.create(1,1,1);function G($){var ie;const Z=(ie=f.ModelSymmetry.Provider.get($))===null||ie===void 0?void 0:ie.spacegroup;
15return!!Z&&!(Z.num===1&&n.Vec3.equals(Z.cell.anglesInRadians,j)&&n.Vec3.equals(Z.cell.size,H))}u.hasCrystalSymmetry=G;function z($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("DIFFRACTION")>=0)return!0;return!1}u.isFromXray=z;function W($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("MICROSCOPY")>=0)return!0;return!1}u.isFromEm=W;function X($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.exptl.method.rowCount;Z++)if(ie.exptl.method.value(Z).toUpperCase().indexOf("NMR")>=0)return!0;return!1}u.isFromNmr=X;function Y($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="experimental")return!0;return!1}u.isExperimental=Y;function K($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="integrative")return!0;return!1}u.isIntegrative=K;function Q($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data;for(let Z=0;Z<ie.struct.pdbx_structure_determination_methodology.rowCount;Z++)if(ie.struct.pdbx_structure_determination_methodology.value(Z).toLowerCase()==="computational")return!0;return!1}u.isComputational=Q;function J($){if(!h.MmcifFormat.is($.sourceData)||!z($))return!1;const{db:ie}=$.sourceData.data,{status_code_sf:Z}=ie.pdbx_database_status;return Z.isDefined&&Z.value(0)==="REL"}u.hasXrayMap=J;function ae($){if(!h.MmcifFormat.is($.sourceData))return!1;const{db:ie}=$.sourceData.data,{db_name:Z,content_type:re}=ie.pdbx_database_related;for(let oe=0,ce=ie.pdbx_database_related._rowCount;oe<ce;++oe)if(Z.value(oe).toUpperCase()==="EMDB"&&re.value(oe)==="associated EM volume")return!0;return!1}u.hasEmMap=ae;function te($){return h.MmcifFormat.is($.sourceData)?J($)||ae($):!1}u.hasDensityMap=te;function ne($){if(!h.MmcifFormat.is($.sourceData)||u.isIntegrative($))return!1;const{db:ie}=$.sourceData.data;return te($)||N($)&&(!ie.exptl.method.isDefined||z($)&&(!ie.pdbx_database_status.status_code_sf.isDefined||ie.pdbx_database_status.status_code_sf.valueKind(0)===y.Column.ValueKinds.Unknown)||W($)&&!ie.pdbx_database_related.db_name.isDefined)}u.probablyHasDensityMap=ne})(p||(hm.Model=p={})),hm}var uh={},vk;function zee(){if(vk)return uh;vk=1,Object.defineProperty(uh,"__esModule",{value:!0}),uh.IndexedCustomProperty=void 0;const e=jr(),t=at(),r=et();var n;(function(h){function f(b,P,C){if(!P)return{rowCount:0};if(C&&C[P.id])return C[P.id];const l=P.getElements(b),S={data:l,rowCount:l.elements.length};return C&&(C[P.id]=S),S}h.getCifDataSource=f;function y(b){return new o(b)}h.fromAtomMap=y;function _(b){return new o(i(b))}h.fromAtomArray=_;const g=b=>b.atomicHierarchy.residueAtomSegments;function a(b){return new c("residue",b,g,e.Unit.Kind.Atomic)}h.fromResidueMap=a;function d(b){return new c("residue",i(b),g,e.Unit.Kind.Atomic)}h.fromResidueArray=d;const p=b=>b.atomicHierarchy.chainAtomSegments;function u(b){return new c("chain",b,p,e.Unit.Kind.Atomic)}h.fromChainMap=u;function m(b){return new c("chain",i(b),p,e.Unit.Kind.Atomic)}h.fromChainArray=m;function v(b){return new s(b)}h.fromEntityMap=v})(n||(uh.IndexedCustomProperty=n={}));function i(h){const f=new Map;for(let y=0,_=h.length;y<_;y++)f.set(y,h[y]);return f}class c{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){const y=f.models;if(y.length!==1)throw new Error("Only works on structures with a single model.");const _=new Set,g=f.unitSymmetryGroups,a=[],d=this.segmentGetter(y[0]);for(const p of g){const u=p.units[0];if(u.kind!==this.kind)continue;const m=t.Segmentation.transientSegments(d,u.elements);for(;m.hasNext;){const v=m.move();!this.has(v.index)||_.has(v.index)||(_.add(v.index),a[a.length]=e.StructureElement.Location.create(f,u,u.elements[v.start]))}}return a.sort((p,u)=>p.element-u.element),a}getElements(f){const y=this.segmentGetter(f.model).index,_=this.getStructureElements(f);return{elements:_,property:g=>this.get(y[_[g].element])}}constructor(f,y,_,g){this.level=f,this.map=y,this.segmentGetter=_,this.id=r.UUID.create22(),this.kind=g}}class o{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){if(f.models.length!==1)throw new Error("Only works on structures with a single model.");const _=new Set,g=f.unitSymmetryGroups,a=[];for(const d of g){const p=d.units[0];if(p.kind!==this.kind)continue;const u=p.elements;for(let m=0,v=u.length;m<v;m++){const b=u[m];!this.has(b)||_.has(b)||(_.add(u[m]),a[a.length]=e.StructureElement.Location.create(f,p,b))}}return a.sort((d,p)=>d.element-p.element),a}getElements(f){const y=this.getStructureElements(f);return{elements:y,property:_=>this.get(y[_].element)}}constructor(f){this.map=f,this.id=r.UUID.create22(),this.level="atom",this.kind=e.Unit.Kind.Atomic}}class s{has(f){return this.map.has(f)}get(f){return this.map.get(f)}getStructureElements(f){const y=f.models;if(y.length!==1)throw new Error("Only works on structures with a single model.");const _=y[0].atomicHierarchy.index,g=new Set,a=f.unitSymmetryGroups,d=[],p=y[0].atomicHierarchy.chainAtomSegments;for(const u of a){const m=u.units[0];if(m.kind!==this.kind)continue;const v=t.Segmentation.transientSegments(p,m.elements);for(;v.hasNext;){const b=v.move(),P=_.getEntityFromChain(b.index);!this.has(P)||g.has(P)||(g.add(P),d[d.length]=e.StructureElement.Location.create(f,m,m.elements[b.start]))}}return d.sort((u,m)=>u.element-m.element),d}getElements(f){const y=this.getStructureElements(f),_=f.model.atomicHierarchy.chainAtomSegments.index,g=f.model.atomicHierarchy.index;return{elements:y,property:a=>this.get(g.getEntityFromChain(_[y[a].element]))}}constructor(f){this.map=f,this.id=r.UUID.create22(),this.level="entity",this.kind=e.Unit.Kind.Atomic}}return uh}var Cx={},bk;function Hee(){return bk||(bk=1,Object.defineProperty(Cx,"__esModule",{value:!0})),Cx}var _k;function Al(){return _k||(_k=1,(function(e){Object.defineProperty(e,"__esMo
15dule",{value:!0}),e.StructureSequence=e.Symmetry=e.Types=e.Model=void 0;const t=At,r=NT();Object.defineProperty(e,"Model",{enumerable:!0,get:function(){return r.Model}});const n=t.__importStar(dt());e.Types=n;const i=tI();Object.defineProperty(e,"Symmetry",{enumerable:!0,get:function(){return i.Symmetry}});const c=hX();Object.defineProperty(e,"StructureSequence",{enumerable:!0,get:function(){return c.StructureSequence}}),t.__exportStar(zee(),e),t.__exportStar(Hee(),e)})(B2)),B2}var Sk;function Ke(){return Sk||(Sk=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(vl(),e),t.__exportStar(GZ(),e),t.__exportStar(Al(),e),t.__exportStar(jr(),e),t.__exportStar(RT(),e),t.__exportStar(LT(),e)})(D2)),D2}var ld={};var lT="@@__IMMUTABLE_INDEXED__@@";function ai(e){return!!(e&&e[lT])}var dT="@@__IMMUTABLE_KEYED__@@";function gr(e){return!!(e&&e[dT])}function qT(e){return gr(e)||ai(e)}var gX="@@__IMMUTABLE_ITERABLE__@@";function oi(e){return!!(e&&e[gX])}var mn=function(t){return oi(t)?t:An(t)},Yi=(function(e){function t(r){return gr(r)?r:Ks(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn),Ml=(function(e){function t(r){return ai(r)?r:Zi(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn),Vf=(function(e){function t(r){return oi(r)&&!qT(r)?r:Of(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t})(mn);mn.Keyed=Yi;mn.Indexed=Ml;mn.Set=Vf;var Ef=0,Ci=1,Pi=2,SD=typeof Symbol=="function"&&Symbol.iterator,yX="@@iterator",UT=SD||yX,Xt=function(t){this.next=t};Xt.prototype.toString=function(){return"[Iterator]"};Xt.KEYS=Ef;Xt.VALUES=Ci;Xt.ENTRIES=Pi;Xt.prototype.inspect=Xt.prototype.toSource=function(){return this.toString()};Xt.prototype[UT]=function(){return this};function Sr(e,t,r,n){var i=e===Ef?t:e===Ci?r:[t,r];return n?n.value=i:n={value:i,done:!1},n}function xn(){return{value:void 0,done:!0}}function fI(e){return Array.isArray(e)?!0:!!jT(e)}function Ck(e){return!!(e&&typeof e.next=="function")}function CD(e){var t=jT(e);return t&&t.call(e)}function jT(e){var t=e&&(SD&&e[SD]||e[yX]);if(typeof t=="function")return t}function Wee(e){var t=jT(e);return t&&t===e.entries}function $ee(e){var t=jT(e);return t&&t===e.keys}var aS="delete",lr=5,Si=1<<lr,$n=Si-1,Ht={};function PD(){return{value:!1}}function Gi(e){e&&(e.value=!0)}function mI(){}function gf(e){return e.size===void 0&&(e.size=e.__iterate(vX)),e.size}function Gs(e,t){if(typeof t!="number"){var r=t>>>0;if(""+r!==t||r===4294967295)return NaN;t=r}return t<0?gf(e)+t:t}function vX(){return!0}function oS(e,t,r){return(e===0&&!_X(e)||r!==void 0&&e<=-r)&&(t===void 0||r!==void 0&&t>=r)}function Bf(e,t){return bX(e,t,0)}function sS(e,t){return bX(e,t,t)}function bX(e,t,r){return e===void 0?r:_X(e)?t===1/0?t:Math.max(0,t+e)|0:t===void 0||t===e?e:Math.min(t,e)|0}function _X(e){return e<0||e===0&&1/e===-1/0}var SX="@@__IMMUTABLE_RECORD__@@";function Xs(e){return!!(e&&e[SX])}function Qi(e){return oi(e)||Xs(e)}var zs="@@__IMMUTABLE_ORDERED__@@";function fa(e){return!!(e&&e[zs])}var CX="@@__IMMUTABLE_SEQ__@@";function GT(e){return!!(e&&e[CX])}var Rf=Object.prototype.hasOwnProperty;function pI(e){return Array.isArray(e)||typeof e=="string"?!0:e&&typeof e=="object"&&Number.isInteger(e.length)&&e.length>=0&&(e.length===0?Object.keys(e).length===1:e.hasOwnProperty(e.length-1))}var An=(function(e){function t(r){return r==null?gI():Qi(r)?r.toSeq():Kee(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(n,i){var c=this._cache;if(c){for(var o=c.length,s=0;s!==o;){var h=c[i?o-++s:s++];if(n(h[1],h[0],this)===!1)break}return s}return this.__iterateUncached(n,i)},t.prototype.__iterator=function(n,i){var c=this._cache;if(c){var o=c.length,s=0;return new Xt(function(){if(s===o)return xn();var h=c[i?o-++s:s++];return Sr(n,h[0],h[1])})}return this.__iteratorUncached(n,i)},t})(mn),Ks=(function(e){function t(r){return r==null?gI().toKeyedSeq():oi(r)?gr(r)?r.toSeq():r.fromEntrySeq():Xs(r)?r.toSeq():yI(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t})(An),Zi=(function(e){function t(r){return r==null?gI():oi(r)?gr(r)?r.entrySeq():r.toIndexedSeq():Xs(r)?r.toSeq().entrySeq():PX(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t})(An),Of=(function(e){function t(r){return(oi(r)&&!qT(r)?r:Zi(r)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t})(An);An.isSeq=GT;An.Keyed=Ks;An.Set=Of;An.Indexed=Zi;An.prototype[CX]=!0;var yf=(function(e){function t(r){this._array=r,this.size=r.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return this.has(n)?this._array[Gs(this,n)]:i},t.prototype.__iterate=function(n,i){for(var c=this._array,o=c.length,s=0;s!==o;){var h=i?o-++s:s++;if(n(c[h],h,this)===!1)break}return s},t.prototype.__iterator=function(n,i){var c=this._array,o=c.length,s=0;return new Xt(function(){if(s===o)return xn();var h=i?o-++s:s++;return Sr(n,h,c[h])})},t})(Zi),hI=(function(e){function t(r){var n=Object.keys(r).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r):[]);this._object=r,this._keys=n,this.size=n.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return i!==void 0&&!this.has(n)?i:this._object[n]},t.prototype.has=function(n){return Rf.call(this._object,n)},t.prototype.__iterate=function(n,i){for(var c=this._object,o=this._keys,s=o.length,h=0;h!==s;){var f=o[i?s-++h:h++];if(n(c[f],f,this)===!1)break}return h},t.prototype.__iterator=function(n,i){var c=this._object,o=this._keys,s=o.length,h=0;return new Xt(function(){if(h===s)return xn();var f=o[i?s-++h:h++];return Sr(n,f,c[f])})},t})(Ks);hI.prototype[zs]=!0;var Xee=(function(e){function t(r){this._collection=r,this.size=r.length||r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(n,i){if
vendor: 28,814 bytes, line 15
15(i)return this.cacheResult().__iterate(n,i);var c=this._collection,o=CD(c),s=0;if(Ck(o))for(var h;!(h=o.next()).done&&n(h.value,s++,this)!==!1;);return s},t.prototype.__iteratorUncached=function(n,i){if(i)return this.cacheResult().__iterator(n,i);var c=this._collection,o=CD(c);if(!Ck(o))return new Xt(xn);var s=0;return new Xt(function(){var h=o.next();return h.done?h:Sr(n,s++,h.value)})},t})(Zi),Pk;function gI(){return Pk||(Pk=new yf([]))}function yI(e){var t=vI(e);if(t)return t.fromEntrySeq();if(typeof e=="object")return new hI(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function PX(e){var t=vI(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function Kee(e){var t=vI(e);if(t)return Wee(e)?t.fromEntrySeq():$ee(e)?t.toSetSeq():t;if(typeof e=="object")return new hI(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}function vI(e){return pI(e)?new yf(e):fI(e)?new Xee(e):void 0}function cS(){return this.__ensureOwner()}function uS(){return this.__ownerID?this:this.__ensureOwner(new mI)}var lh=typeof Math.imul=="function"&&Math.imul(4294967295,2)===-2?Math.imul:function(t,r){t|=0,r|=0;var n=t&65535,i=r&65535;return n*i+((t>>>16)*i+n*(r>>>16)<<16>>>0)|0};function zT(e){return e>>>1&1073741824|e&3221225471}var Yee=Object.prototype.valueOf;function Wn(e){if(e==null)return Tk(e);if(typeof e.hashCode=="function")return zT(e.hashCode(e));var t=nte(e);if(t==null)return Tk(t);switch(typeof t){case"boolean":return t?1108378657:1108378656;case"number":return Qee(t);case"string":return t.length>ite?Zee(t):TD(t);case"object":case"function":return tte(t);case"symbol":return ete(t);default:if(typeof t.toString=="function")return TD(t.toString());throw new Error("Value type "+typeof t+" cannot be hashed.")}}function Tk(e){return e===null?1108378658:1108378659}function Qee(e){if(e!==e||e===1/0)return 0;var t=e|0;for(t!==e&&(t^=e*4294967295);e>4294967295;)e/=4294967295,t^=e;return zT(t)}function Zee(e){var t=xx[e];return t===void 0&&(t=TD(e),Tx===ate&&(Tx=0,xx={}),Tx++,xx[e]=t),t}function TD(e){for(var t=0,r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)|0;return zT(t)}var Jee=(Math.random()*1048576|1)%1048576||40503;function bI(e){if(typeof e!="string")return Wn(e);for(var t=0,r=0;r<e.length;r++)t=Jee*t+e.charCodeAt(r)|0;return t}function ete(e){var t=Mk[e];return t!==void 0||(t=TX(),Mk[e]=t),t}function tte(e){var t;if(xD&&(t=AD.get(e),t!==void 0)||(t=e[yl],t!==void 0)||!Ak&&(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[yl],t!==void 0||(t=rte(e),t!==void 0)))return t;if(t=TX(),xD)AD.set(e,t);else{if(xk!==void 0&&xk(e)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(Ak)Object.defineProperty(e,yl,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(e.propertyIsEnumerable!==void 0&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[yl]=t;else if(e.nodeType!==void 0)e[yl]=t;else throw new Error("Unable to set a non-enumerable property on object.")}return t}var xk=Object.isExtensible,Ak=(function(){try{return Object.defineProperty({},"@",{}),!0}catch{return!1}})();function rte(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}function nte(e){return e.valueOf!==Yee&&typeof e.valueOf=="function"?e.valueOf(e):e}function TX(){var e=++Px;return Px&1073741824&&(Px=0),e}var xD=typeof WeakMap=="function",AD;xD&&(AD=new WeakMap);var Mk=Object.create(null),Px=0,yl="__immutablehash__";typeof Symbol=="function"&&(yl=Symbol(yl));var ite=16,ate=255,Tx=0,xx={},HT=(function(e){function t(r,n){this._iter=r,this._useKeys=n,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(n,i){return this._iter.get(n,i)},t.prototype.has=function(n){return this._iter.has(n)},t.prototype.valueSeq=function(){return this._iter.valueSeq()},t.prototype.reverse=function(){var n=this,i=_I(this,!0);return this._useKeys||(i.valueSeq=function(){return n._iter.toSeq().reverse()}),i},t.prototype.map=function(n,i){var c=this,o=IX(this,n,i);return this._useKeys||(o.valueSeq=function(){return c._iter.toSeq().map(n,i)}),o},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o,s){return n(o,s,c)},i)},t.prototype.__iterator=function(n,i){return this._iter.__iterator(n,i)},t})(Ks);HT.prototype[zs]=!0;var xX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.includes=function(n){return this._iter.includes(n)},t.prototype.__iterate=function(n,i){var c=this,o=0;return i&&gf(this),this._iter.__iterate(function(s){return n(s,i?c.size-++o:o++,c)},i)},t.prototype.__iterator=function(n,i){var c=this,o=this._iter.__iterator(Ci,i),s=0;return i&&gf(this),new Xt(function(){var h=o.next();return h.done?h:Sr(n,i?c.size-++s:s++,h.value,h)})},t})(Zi),AX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.has=function(n){return this._iter.includes(n)},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o){return n(o,o,c)},i)},t.prototype.__iterator=function(n,i){var c=this._iter.__iterator(Ci,i);return new Xt(function(){var o=c.next();return o.done?o:Sr(n,o.value,o.value,o)})},t})(Of),MX=(function(e){function t(r){this._iter=r,this.size=r.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.entrySeq=function(){return this._iter.toSeq()},t.prototype.__iterate=function(n,i){var c=this;return this._iter.__iterate(function(o){if(o){Ik(o);var s=oi(o);return n(s?o.get(1):o[1],s?o.get(0):o[0],c)}},i)},t.prototype.__iterator=function(n,i){var c=this._iter.__iterator(Ci,i);return new Xt(function(){for(;;){var o=c.next();if(o.done)return o;var s=o.value;if(s){Ik(s);var h=oi(s);return Sr(n,h?s.get(0):s[0],h?s.get(1):s[1],o)}}})},t})(Ks);xX.prototype.cacheResult=HT.prototype.cacheResult=AX.prototype.cacheResult=MX.prototype.cacheResult=PI;function DX(e){var t=$a(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var r=e.reverse.apply(this);return r.flip=function(){return e.reverse()},r},t.has=function(r){return e.includes(r)},t.includes=function(r){return e.has(r)},t.cacheResult=PI,t.__iterateUncached=function(r,n){var i=this;return e.__iterate(function(c,o){return r(o,c,i)!==!1},n)},t.__iteratorUncached=function(r,n){if(r===Pi){var i=e.__iterator(r,n);return new Xt(function(){var c=i.next();if(!c.done){var o=c.value[0];c.value[0]=c.value[1],c.value[1]=o}return c})}return e.__iterator(r===Ci?Ef:Ci,n)},t}function IX(e,t,r){var n=$a(e);return n.size=e.size,n.has=function(i){return e.has(i)},n.get=function(i,c){var o=e.get(i,Ht);return o===Ht?c:t.call(r,o,i,e)},n.__iterateUncached=function(i,c){var o=this;return e.__iterate(function(s,h,f){return i(t.call(r,s,h,f),h,o)!==!1},c)},n.__iteratorUncached=function(i,c){var o=e.__iterator(Pi,c);return new Xt(function(){var s=o.next();if(s.done)return s;var h=s.value,f=h[0];return Sr(i,f,t.call(r,h[1],f,e),s)})},n}function _I(e,t){var r=$a(e);return r._iter=e,r.size=e.size,r.reverse=function(){return e},e.flip&&(r.flip=function(){var n=DX(e);return n.reverse=function(){return e.flip()},n}),r.get=function(n,i){return e.get(t?n:-1-n,i)},r.has=function(n){return e.has(t?n:-1-n)},r.includes=function(n){return e.includes(n)},r.cacheResult=PI,r.__iterate=function(n,i){var c=this,o=0;return i&&gf(e),e.__iterate(function(s,h){return n(s,t?h:i?c.size-++o:o++,c)},!i)},r.__iterator=function(n,i){var c=0;i&&gf(e);var o=e.__iterator(Pi,!i);return new Xt(function(){var s=o.next();if(s.done)return s;var h=s.value;return Sr(n,t?h[0]:i?r.size-++c:c++,h[1],s)})},r}function wX(e,t,r,n){var i=$a(e);return n&&(i.has=function(c){var o=e.get(c,Ht);return o!==Ht&&!!t.call(r,o,c,e)},i.get=function(c,o){var s=e.get(c,Ht);return s!==Ht&&t.call(r,s,c,e)?s:o}),i.__iterateUncached=function(c,o){var s=this,h=0;return e.__iterate(function(f,y,_){if(t.call(r,f,y,_))return h++,c(f,n?y:h-1,s)},o),h},i.__iteratorUncached=function(c,o){var s=e.__iterator(Pi,o),h=0;return new Xt(function(){for(;;){var f=s.next();if(f.done)return f;var y=f.value,_=y[0],g=y[1];if(t.call(r,g,_,e))return Sr(c,n?_:h++,g,f)}})},i}function ote(e,t,r){var n=Dl().asMutable();return e.__iterate(function(i,c){n.update(t.call(r,i,c,e),0,function(o){return o+1})}),n.asImmutable()}function ste(e,t,r){var n=gr(e),i=(fa(e)?Oa():Dl()).asMutable();e.__iterate(function(o,s){i.update(t.call(r,o,s,e),function(h){return h=h||[],h.push(n?[s,o]:o),h})});var c=CI(e);return i.map(function(o){return ur(e,c(o))}).asImmutable()}function cte(e,t,r){var n=gr(e),i=[[],[]];e.__iterate(function(o,s){i[t.call(r,o,s,e)?1:0].push(n?[s,o]:o)});var c=CI(e);return i.map(function(o){return ur(e,c(o))})}function SI(e,t,r,n){var i=e.size;if(oS(t,r,i))return e;if(typeof i>"u"&&(t<0||r<0))return SI(e.toSeq().cacheResult(),t,r,n);var c=Bf(t,i),o=sS(r,i),s=o-c,h;s===s&&(h=s<0?0:s);var f=$a(e);return f.size=h===0?h:e.size&&h||void 0,!n&>(e)&&h>=0&&(f.get=function(y,_){return y=Gs(this,y),y>=0&&y<h?e.get(y+c,_):_}),f.__iterateUncached=function(y,_){var g=this;if(h===0)return 0;if(_)return this.cacheResult().__iterate(y,_);var a=0,d=!0,p=0;return e.__iterate(function(u,m){if(!(d&&(d=a++<c)))return p++,y(u,n?m:p-1,g)!==!1&&p!==h}),p},f.__iteratorUncached=function(y,_){if(h!==0&&_)return this.cacheResult().__iterator(y,_);if(h===0)return new Xt(xn);var g=e.__iterator(y,_),a=0,d=0;return new Xt(function(){for(;a++<c;)g.next();if(++d>h)return xn();var p=g.next();return n||y===Ci||p.done?p:y===Ef?Sr(y,d-1,void 0,p):Sr(y,d-1,p.value[1],p)})},f}function ute(e,t,r){var n=$a(e);return n.__iterateUncached=function(i,c){var o=this;if(c)return this.cacheResult().__iterate(i,c);var s=0;return e.__iterate(function(h,f,y){return t.call(r,h,f,y)&&++s&&i(h,f,o)}),s},n.__iteratorUncached=function(i,c){var o=this;if(c)return this.cacheResult().__iterator(i,c);var s=e.__iterator(Pi,c),h=!0;return new Xt(function(){if(!h)return xn();var f=s.next();if(f.done)return f;var y=f.value,_=y[0],g=y[1];return t.call(r,g,_,o)?i===Pi?f:Sr(i,_,g,f):(h=!1,xn())})},n}function VX(e,t,r,n){var i=$a(e);return i.__iterateUncached=function(c,o){var s=this;if(o)return this.cacheResult().__iterate(c,o);var h=!0,f=0;return e.__iterate(function(y,_,g){if(!(h&&(h=t.call(r,y,_,g))))return f++,c(y,n?_:f-1,s)}),f},i.__iteratorUncached=function(c,o){var s=this;if(o)return this.cacheResult().__iterator(c,o);var h=e.__iterator(Pi,o),f=!0,y=0;return new Xt(function(){var _,g,a;do{if(_=h.next(),_.done)return n||c===Ci?_:c===Ef?Sr(c,y++,void 0,_):Sr(c,y++,_.value[1],_);var d=_.value;g=d[0],a=d[1],f&&(f=t.call(r,a,g,s))}while(f);return c===Pi?_:Sr(c,g,a,_)})},i}var lte=(function(e){function t(r){this._wrappedIterables=r.flatMap(function(n){return n._wrappedIterables?n._wrappedIterables:[n]}),this.size=this._wrappedIterables.reduce(function(n,i){if(n!==void 0){var c=i.size;if(c!==void 0)return n+c}},0),this[dT]=this._wrappedIterables[0][dT],this[lT]=this._wrappedIterables[0][lT],this[zs]=this._wrappedIterables[0][zs]}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(n,i){if(this._wrappedIterables.length!==0){if(i)return this.cacheResult().__iterate(n,i);for(var c=0,o=gr(this),s=o?Pi:Ci,h=this._wrappedIterables[c].__iterator(s,i),f=!0,y=0;f;){for(var _=h.next();_.done;){if(c++,c===this._wrappedIterables.length)return y;h=this._wrappedIterables[c].__iterator(s,i),_=h.next()}var g=o?n(_.value[1],_.value[0],this):n(_.value,y,this);f=g!==!1,y++}return y}},t.prototype.__iteratorUncached=function(n,i){var c=this;if(this._wrappedIterables.length===0)return new Xt(xn);if(i)return this.cacheResult().__iterator(n,i);var o=0,s=this._wrappedIterables[o].__iterator(n,i);return new Xt(function(){for(var h=s.next();h.done;){if(o++,o===c._wrappedIterables.length)return h;s=c._wrappedIterables[o].__iterator(n,i),h=s.next()}return h})},t})(An);function dte(e,t){var r=gr(e),n=[e].concat(t).map(function(c){return oi(c)?r&&(c=Yi(c)):c=r?yI(c):PX(Array.isArray(c)?c:[c]),c}).filter(function(c){return c.size!==0});if(n.length===0)return e;if(n.length===1){var i=n[0];if(i===e||r&&gr(i)||ai(e)&&ai(i))return i}return new lte(n)}function EX(e,t,r){var n=$a(e);return n.__iterateUncached=function(i,c){if(c)return this.cacheResult().__iterate(i,c);var o=0,s=!1;function h(f,y){f.__iterate(function(_,g){return(!t||y<t)&&oi(_)?h(_,y+1):(o++,i(_,r?g:o-1,n)===!1&&(s=!0)),!s},c)}return h(e,0),o},n.__iteratorUncached=function(i,c){if(c)return this.cacheResult().__iterator(i,c);var o=e.__iterator(i,c),s=[],h=0;return new Xt(function(){for(;o;){var f=o.next();if(f.done!==!1){o=s.pop();continue}var y=f.value;if(i===Pi&&(y=y[1]),(!t||s.length<t)&&oi(y))s.push(o),o=y.__iterator(i,c);else return r?f:Sr(i,h++,y,f)}return xn()})},n}function fte(e,t,r){var n=CI(e);return e.toSeq().map(function(i,c){return n(t.call(r,i,c,e))}).flatten(!0)}function mte(e,t){var r=$a(e);return r.size=e.size&&e.size*2-1,r.__iterateUncached=function(n,i){var c=this,o=0;return e.__iterate(function(s){return(!o||n(t,o++,c)!==!1)&&n(s,o++,c)!==!1},i),o},r.__iteratorUncached=function(n,i){var c=e.__iterator(Ci,i),o=0,s;return new Xt(function(){return(!s||o%2)&&(s=c.next(),s.done)?s:o%2?Sr(n,o++,t):Sr(n,o++,s.value,s)})},r}function vf(e,t,r){t||(t=BX);var n=gr(e),i=0,c=e.toSeq().map(function(o,s){return[s,o,i++,r?r(o,s,e):o]}).valueSeq().toArray();return c.sort(function(o,s){return t(o[3],s[3])||o[2]-s[2]}).forEach(n?function(o,s){c[s].length=2}:function(o,s){c[s]=o[1]}),n?Ks(c):ai(e)?Zi(c):Of(c)}function KC(e,t,r){if(t||(t=BX),r){var n=e.toSeq().map(function(i,c){return[i,r(i,c,e)]}).reduce(function(i,c){return Dk(t,i[1],c[1])?c:i});return n&&n[0]}return e.reduce(function(i,c){return Dk(t,i,c)?c:i})}function Dk(e,t,r){var n=e(r,t);return n===0&&r!==t&&(r==null||r!==r)||n>0}function YC(e,t,r,n){var i=$a(e),c=new yf(r).map(function(o){return o.size});return i.size=n?c.max():c.min(),i.__iterate=function(o,s){for(var h=this.__iterator(Ci,s),f,y=0;!(f=h.next()).done&&o(f.value,y++,this)!==!1;);return y},i.__iteratorUncached=function(o,s){var h=r.map(function(_){return _=mn(_),CD(s?_.reverse():_)}),f=0,y=!1;return new Xt(function(){var _;return y||(_=h.map(function(g){return g.next()}),y=n?_.every(function(g){return g.done}):_.some(function(g){return g.done})),y?xn():Sr(o,f++,t.apply(null,_.map(function(g){return g.value})))})},i}function ur(e,t){return e===t?e:GT(e)?t:e.constructor(t)}function Ik(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function CI(e){return gr(e)?Yi:ai(e)?Ml:Vf}function $a(e){return Object.create((gr(e)?Ks:ai(e)?Zi:Of).prototype)}function PI(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):An.prototype.cacheResult.call(this)}function BX(e,t){return e===void 0&&t===void 0?0:e===void 0?1:t===void 0?-1:e>t?1:e<t?-1:0}function MD(e){return!!(e&&typeof e.equals=="function"&&typeof e.hashCode=="function")}function fn(e,t){if(e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1;if(typeof e.valueOf=="function"&&typeof t.valueOf=="function"){if(e=e.valueOf(),t=t.valueOf(),e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1}return!!(MD(e)&&MD(t)&&e.equals(t))}function TI(e,t,r,n){return Il(e,[t],r,n)}function RX(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return kX(this,e)}function OX(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];if(typeof e!="function")throw new TypeError("Invalid merger function: "+e);return kX(this,t,e)}function kX(e,t,r){for(var n=[],i=0;i<t.length;i++){var c=Yi(t[i]);c.size!==0&&n.push(c)}return n.length===0?e:e.toSeq().size===0&&!e.__ownerID&&n.length===1?Xs(e)?e:e.constructor(n[0]):e.withMutations(function(o){for(var s=r?function(f,y){TI(o,y,Ht,function(_){return _===Ht?f:r(_,f,y)})}:function(f,y){o.set(y,f)},h=0;h<n.length;h++)n[h].forEach(s)})}var pte=Object.prototype.toString;function xI(e){if(!e||typeof e!="object"||pte.call(e)!=="[object Object]")return!1;var t=Object.getPrototypeOf(e);if(t===null)return!0;for(var r=t,n=Object.getPrototypeOf(t);n!==null;)r=n,n=Object.getPrototypeOf(r);return r===t}function Hs(e){return typeof e=="object"&&(Qi(e)||Array.isArray(e)||xI(e))}function lS(e){return typeof e=="string"&&(e==="__proto__"||e==="constructor")}function Ba(e,t){t=t||0;for(var r=Math.max(0,e.length-t),n=new Array(r),i=0;i<r;i++)n[i]=e[i+t];return n}function fT(e){if(Array.isArray(e))return Ba(e);var t={};for(var r in e)lS(r)||Rf.call(e,r)&&(t[r]=e[r]);return t}function hte(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return fS(e,t)}function gte(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return fS(t,r,e)}function yte(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return dS(e,t)}function vte(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return dS(t,r,e)}function dS(e,t,r){return fS(e,t,bte(r))}function fS(e,t,r){if(!Hs(e))throw new TypeError("Cannot merge into non-data-structure value: "+e);if(Qi(e))return typeof r=="function"&&e.mergeWith?e.mergeWith.apply(e,[r].concat(t)):e.merge?e.merge.apply(e,t):e.concat.apply(e,t);for(var n=Array.isArray(e),i=e,c=n?Ml:Yi,o=n?function(h){i===e&&(i=fT(i)),i.push(h)}:function(h,f){if(!lS(f)){var y=Rf.call(i,f),_=y&&r?r(i[f],h,f):h;(!y||_!==i[f])&&(i===e&&(i=fT(i)),i[f]=_)}},s=0;s<t.length;s++)c(t[s]).forEach(o);return i}function bte(e){function t(r,n,i){return Hs(r)&&Hs(n)&&_te(r,n)?fS(r,[n],t):e?e(r,n,i):n}return t}function _te(e,t){var r=An(e),n=An(t);return ai(r)===ai(n)&&gr(r)===gr(n)}function FX(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return dS(this,e)}function LX(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return dS(this,t,e)}function AI(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Il(this,e,Ra(),function(n){return dS(n,t)})}function MI(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return Il(this,e,Ra(),function(n){return fS(n,t)})}function NX(e,t,r){return Il(e,t,Ht,function(){return r})}function DI(e,t){return NX(this,e,t)}function II(e,t,r){return arguments.length===1?e(this):TI(this,e,t,r)}function wI(e,t,r){return Il(this,e,t,r)}function VI(){return this.__altered}function mS(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}var qX="@@__IMMUTABLE_MAP__@@";function WT(e){return!!(e&&e[qX])}function U_(e,t){if(!e)throw new Error(t)}function _i(e){U_(e!==1/0,"Cannot perform this action with an infinite size.")}var Dl=(function(e){function t(r){return r==null?Ra():WT(r)&&!fa(r)?r:Ra().withMutations(function(n){var i=e(r);_i(i.size),i.forEach(function(c,o){return n.set(o,c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(n,i){return this._root?this._root.get(0,void 0,n,i):i},t.prototype.set=function(n,i){return Ek(this,n,i)},t.prototype.remove=function(n){return Ek(this,n,Ht)},t.prototype.deleteAll=function(n){var i=mn(n);return i.size===0?this:this.withMutations(function(c){i.forEach(function(o){return c.remove(o)})})},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Ra()},t.prototype.sort=function(n){return Oa(vf(this,n))},t.prototype.sortBy=function(n,i){return Oa(vf(this,i,n))},t.prototype.map=function(n,i){var c=this;return this.withMutations(function(o){o.forEach(function(s,h){o.set(h,n.call(i,s,h,c))})})},t.prototype.__iterator=function(n,i){return new Ste(this,n,i)},t.prototype.__iterate=function(n,i){var c=this,o=0;return this._root&&this._root.iterate(function(s){return o++,n(s[1],s[0],c)},i),o},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?EI(this.size,this._root,n,this.__hash):this.size===0?Ra():(this.__ownerID=n,this.__altered=!1,this)},t})(Yi);Dl.isMap=WT;var Cr=Dl.prototype;Cr[qX]=!0;Cr[aS]=Cr.remove;Cr.removeAll=Cr.deleteAll;Cr.setIn=DI;Cr.removeIn=Cr.deleteIn=kI;Cr.update=II;Cr.updateIn=wI;Cr.merge=Cr.concat=RX;Cr.mergeWith=OX;Cr.mergeDeep=FX;Cr.mergeDeepWith=LX;Cr.mergeIn=MI;Cr.mergeDeepIn=AI;Cr.withMutations=mS;Cr.wasAltered=VI;Cr.asImmutable=cS;Cr["@@transducer/init"]=Cr.asMutable=uS;Cr["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])};Cr["@@transducer/result"]=function(e){return e.asImmutable()};var z_=function(t,r){this.ownerID=t,this.entries=r};z_.prototype.get=function(t,r,n,i){for(var c=this.entries,o=0,s=c.length;o<s;o++)if(fn(n,c[o][0]))return c[o][1];return i};z_.prototype.update=function(t,r,n,i,c,o,s){for(var h=c===Ht,f=this.entries,y=0,_=f.length;y<_&&!fn(i,f[y][0]);y++);var g=y<_;if(g?f[y][1]===c:h)return this;if(Gi(s),(h||!g)&&Gi(o),!(h&&f.length===1)){if(!g&&!h&&f.length>=Mte)return Cte(t,f,i,c);var a=t&&t===this.ownerID,d=a?f:Ba(f);return g?h?y===_-1?d.pop():d[y]=d.pop():d[y]=[i,c]:d.push([i,c]),a?(this.entries=d,this):new z_(t,d)}};var bf=function(t,r,n){this.ownerID=t,this.bitmap=r,this.nodes=n};bf.prototype.get=function(t,r,n,i){r===void 0&&(r=Wn(n));var c=1<<((t===0?r:r>>>t)&$n),o=this.bitmap;return(o&c)===0?i:this.nodes[UX(o&c-1)].get(t+lr,r,n,i)};bf.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=(r===0?n:n>>>r)&$n,f=1<<h,y=this.bitmap,_=(y&f)!==0;if(!_&&c===Ht)return this;var g=UX(y&f-1),a=this.nodes,d=_?a[g]:void 0,p=BI(d,t,r+lr,n,i,c,o,s);if(p===d)return this;if(!_&&p&&a.length>=Dte)return Tte(t,a,y,h,p);if(_&&!p&&a.length===2&&Bk(a[g^1]))return a[g^1];if(_&&p&&a.length===1&&Bk(p))return p;var u=t&&t===this.ownerID,m=_?p?y:y^f:y|f,v=_?p?jX(a,g,p,u):Ate(a,g,u):xte(a,g,p,u);return u?(this.bitmap=m,this.nodes=v,this):new bf(t,m,v)};var H_=function(t,r,n){this.ownerID=t,this.count=r,this.nodes=n};H_.prototype.get=function(t,r,n,i){r===void 0&&(r=Wn(n));var c=(t===0?r:r>>>t)&$n,o=this.nodes[c];return o?o.get(t+lr,r,n,i):i};H_.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=(r===0?n:n>>>r)&$n,f=c===Ht,y=this.nodes,_=y[h];if(f&&!_)return this;var g=BI(_,t,r+lr,n,i,c,o,s);if(g===_)return this;var a=this.count;if(!_)a++;else if(!g&&(a--,a<Ite))return Pte(t,y,a,h);var d=t&&t===this.ownerID,p=jX(y,h,g,d);return d?(this.count=a,this.nodes=p,this):new H_(t,a,p)};var Ws=function(t,r,n){this.ownerID=t,this.keyHash=r,this.entries=n,this._index=void 0};Ws.prototype._positionOf=function(t,r){var n=this.entries,i=this._index;if(i===void 0&&r&&n.length>=wte&&(i=this._buildIndex()),i!==void 0){var c=i[bI(t)];if(c!==void 0)for(var o=0;o<c.length;o++){var s=c[o];if(fn(t,n[s][0]))return s}return-1}for(var h=0,f=n.length;h<f;h++)if(fn(t,n[h][0]))return h;return-1};Ws.prototype._buildIndex=function(){for(var t=Object.create(null),r=this.entries,n=0,i=r.length;n<i;n++){var c=bI(r[n][0]),o=t[c];o!==void 0?o.push(n):t[c]=[n]}return this._index=t,t};Ws.prototype.get=function(t,r,n,i){var c=this._positionOf(n,!0);return c===-1?i:this.entries[c][1]};Ws.prototype.update=function(t,r,n,i,c,o,s){n===void 0&&(n=Wn(i));var h=c===Ht;if(n!==this.keyHash)return h?this:(Gi(s),Gi(o),RI(this,t,r,n,[i,c]));var f=this.entries,y=f.length,_=t&&t===this.ownerID,g=this._positionOf(i,_),a=g===-1?y:g,d=g!==-1;if(d?f[a][1]===c:h)return this;if(Gi(s),(h||!d)&&Gi(o),h&&y===2)return new ts(t,this.keyHash,f[a^1]);var p=_?f:Ba(f);if(d)h?(a===y-1?p.pop():p[a]=p.pop(),_&&(this._index=void 0)):p[a]=[i,c];else if(p.push([i,c]),_&&this._index!==void 0){var u=bI(i),m=this._index[u];m!==void 0?m.push(y):this._index[u]=[y]}return _?(this.entries=p,this):new Ws(t,this.keyHash,p)};var ts=function(t,r,n){this.ownerID=t,this.keyHash=r,this.entry=n};ts.prototype.get=function(t,r,n,i){return fn(n,this.entry[0])?this.entry[1]:i};ts.prototype.update=function(t,r,n,i,c,o,s){var h=c===Ht,f=fn(i,this.entry[0]);if(f?c===this.entry[1]:h)return this;if(Gi(s),h){Gi(o);return}return f?t&&t===this.ownerID?(this.entry[1]=c,this):new ts(t,this.keyHash,[i,c]):(Gi(o),RI(this,t,r,Wn(i),[i,c]))};z_.prototype.iterate=Ws.prototype.iterate=function(e,t){for(var r=this.entries,n=0,i=r.length-1;n<=i;n++)if(e(r[t?i-n:n])===!1)return!1};bf.prototype.iterate=H_.prototype.iterate=function(e,t){for(var r=this.nodes,n=0,i=r.length-1;n<=i;n++){var c=r[t?i-n:n];if(c&&c.iterate(e,t)===!1)return!1}};ts.prototype.iterate=function(e,t){return e(this.entry)};var Ste=(function(e){function t(r,n,i){this._type=n,this._reverse=i,this._stack=r._root&&wk(r._root)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.next=function(){for(var n=this._type,i=this._stack;i;){var c=i.node,o=i.index++,s=void 0;if(c.entry){if(o===0)return Ax(n,c.entry)}else if(c.entries){if(s=c.entries.length-1,o<=s)return Ax(n,c.entries[this._reverse?s-o:o])}else if(s=c.nodes.length-1,o<=s){var h=c.nodes[this._reverse?s-o:o];if(h){if(h.entry)return Ax(n,h.entry);i=this._stack=wk(h,i)}continue}i=this._stack=this._stack.__prev}return xn()},t})(Xt);function Ax(e,t){return Sr(e,t[0],t[1])}function wk(e,t){return{node:e,index:0,__prev:t}}function EI(e,t,r,n){var i=Object.create(Cr);return i.size=e,i._root=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var Vk;function Ra(){return Vk||(Vk=EI(0))}function Ek(e,t,r){var n,i;if(e._root){var c=PD(),o=PD();if(n=BI(e._root,e.__ownerID,0,void 0,t,r,c,o),!o.value)return e;i=e.size+(c.value?r===Ht?-1:1:0)}else{if(r===Ht)return e;i=1,n=new z_(e.__ownerID,[[t,r]])}return e.__ownerID?(e.size=i,e._root=n,e.__hash=void 0,e.__altered=!0,e):n?EI(i,n):Ra()}function BI(e,t,r,n,i,c,o,s){return e?e.update(t,r,n,i,c,o,s):c===Ht?e:(Gi(s),Gi(o),new ts(t,n,[i,c]))}function Bk(e){return e.constructor===ts||e.constructor===Ws}function RI(e,t,r,n,i){if(e.keyHash===n)return new Ws(t,n,[e.entry,i]);var c=(r===0?e.keyHash:e.keyHash>>>r)&$n,o=(r===0?n:n>>>r)&$n,s,h=c===o?[RI(e,t,r+lr,n,i)]:(s=new ts(t,n,i),c<o?[e,s]:[s,e]);return new bf(t,1<<c|1<<o,h)}function Cte(e,t,r,n){e||(e=new mI);for(var i=new ts(e,Wn(r),[r,n]),c=0;c<t.length;c++){var o=t[c];i=i.update(e,0,void 0,o[0],o[1])}return i}function Pte(e,t,r,n){for(var i=0,c=0,o=new Array(r),s=0,h=1,f=t.length;s<f;s++,h<<=1){var y=t[s];y!==void 0&&s!==n&&(i|=h,o[c++]=y)}return new bf(e,i,o)}function Tte(e,t,r,n,i){for(var c=0,o=new Array(Si),s=0;r!==0;s++,r>>>=1)o[s]=r&1?t[c++]:void 0;return o[n]=i,new H_(e,c+1,o)}function UX(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),e=e+(e>>4)&252645135,e+=e>>8,e+=e>>16,e&127}function jX(e,t,r,n){var i=n?e:Ba(e);return i[t]=r,i}function xte(e,t,r,n){var i=e.length+1;if(n&&t+1===i)return e[t]=r,e;for(var c=new Array(i),o=0,s=0;s<i;s++)s===t?(c[s]=r,o=-1):c[s]=e[s+o];return c}function Ate(e,t,r){var n=e.length-1;if(r&&t===n)return e.pop(),e;for(var i=new Array(n),c=0,o=0;o<n;o++)o===t&&(c=1),i[o]=e[o+c];return i}var Mte=Si/4,Dte=Si/2,Ite=Si/4,wte=16;function GX(e){if(pI(e)&&typeof e!="string")return e;if(fa(e))return e.toArray();throw new TypeError("Invalid keyPath: expected Ordered Collection or Array: "+e)}function W_(e){try{return typeof e=="string"?JSON.stringify(e):String(e)}catch{return JSON.stringify(e)}}function zX(e,t){return Qi(e)?e.has(t):Hs(e)&&Rf.call(e,t)}function OI(e,t,r){return Qi(e)?e.get(t,r):zX(e,t)?typeof e.get=="function"?e.get(t):e[t]:r}function HX(e,t){if(!Hs(e))throw new TypeError("Cannot update non-data-structure value: "+e);if(Qi(e)){if(!e.remove)throw new TypeError("Cannot update immutable value without .remove() method: "+e);return e.remove(t)}if(!Rf.call(e,t))return e;var r=fT(e);return Array.isArray(r)?r.splice(t,1):delete r[t],r}function WX(e,t,r){if(lS(t))return e;if(!Hs(e))throw new TypeError("Cannot update non-data-structure value: "+e);if(Qi(e)){if(!e.set)throw new TypeError("Cannot update immutable value without .set() method: "+e);return e.set(t,r)}if(Rf.call(e,t)&&r===e[t])return e;var n=fT(e);return n[t]=r,n}function Il(e,t,r,n){n||(n=r,r=void 0);var i=$X(Qi(e),e,GX(t),0,r,n);return i===Ht?r:i}function $X(e,t,r,n,i,c){var o=t===Ht;if(n===r.length){var s=o?i:t,h=c(s);return h===s?t:h}if(!o&&!Hs(t))throw new TypeError("Cannot update within non-data-structure value in path ["+Array.from(r).slice(0,n).map(W_)+"]: "+t);var f=r[n],y=o?Ht:OI(t,f,Ht),_=$X(y===Ht?e:Qi(y),y,r,n+1,i,c);return _===y?t:_===Ht?HX(t,f):WX(o?e?Ra():{}:t,f,_)}function XX(e,t){return Il(e,t,function(){return Ht})}function kI(e){return XX(this,e)}var KX="@@__IMMUTABLE_
15LIST__@@";function FI(e){return!!(e&&e[KX])}var pS=(function(e){function t(r){var n=uT();if(r==null)return n;if(FI(r))return r;var i=e(r),c=i.size;return c===0?n:(_i(c),c>0&&c<Si?$_(0,c,lr,void 0,new js(i.toArray())):n.withMutations(function(o){o.setSize(c),i.forEach(function(s,h){return o.set(h,s)})}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("List [","]")},t.prototype.get=function(n,i){if(n=Gs(this,n),n>=0&&n<this.size){n+=this._origin;var c=YX(this,n);return c&&c.array[n&$n]}return i},t.prototype.set=function(n,i){return Vte(this,n,i)},t.prototype.remove=function(n){return this.has(n)?n===0?this.shift():n===this.size-1?this.pop():this.splice(n,1):this},t.prototype.insert=function(n,i){return this.splice(n,0,i)},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=lr,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):uT()},t.prototype.push=function(){var n=arguments,i=this.size;return this.withMutations(function(c){Us(c,0,i+n.length);for(var o=0;o<n.length;o++)c.set(i+o,n[o])})},t.prototype.pop=function(){return Us(this,0,-1)},t.prototype.unshift=function(){var n=arguments;return this.withMutations(function(i){Us(i,-n.length);for(var c=0;c<n.length;c++)i.set(c,n[c])})},t.prototype.shift=function(){return Us(this,1)},t.prototype.shuffle=function(n){return n===void 0&&(n=Math.random),this.withMutations(function(i){for(var c=i.size,o,s;c;)o=Math.floor(n()*c--),s=i.get(o),i.set(o,i.get(c)),i.set(c,s)})},t.prototype.concat=function(){for(var n=arguments,i=[],c=0;c<arguments.length;c++){var o=n[c],s=e(typeof o!="string"&&fI(o)?o:[o]);s.size!==0&&i.push(s)}return i.length===0?this:this.size===0&&!this.__ownerID&&i.length===1?this.constructor(i[0]):this.withMutations(function(h){i.forEach(function(f){return f.forEach(function(y){return h.push(y)})})})},t.prototype.setSize=function(n){return Us(this,0,n)},t.prototype.map=function(n,i){var c=this;return this.withMutations(function(o){for(var s=0;s<c.size;s++)o.set(s,n.call(i,o.get(s),s,c))})},t.prototype.slice=function(n,i){var c=this.size;return oS(n,i,c)?this:Us(this,Bf(n,c),sS(i,c))},t.prototype.__iterator=function(n,i){var c=i?this.size:0,o=Rk(this,i);return new Xt(function(){var s=o();return s===j_?xn():Sr(n,i?--c:c++,s)})},t.prototype.__iterate=function(n,i){for(var c=i?this.size:0,o=Rk(this,i),s;(s=o())!==j_&&n(s,i?--c:c++,this)!==!1;);return c},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?$_(this._origin,this._capacity,this._level,this._root,this._tail,n,this.__hash):this.size===0?uT():(this.__ownerID=n,this.__altered=!1,this)},t})(Ml);pS.isList=FI;var $r=pS.prototype;$r[KX]=!0;$r[aS]=$r.remove;$r.merge=$r.concat;$r.setIn=DI;$r.deleteIn=$r.removeIn=kI;$r.update=II;$r.updateIn=wI;$r.mergeIn=MI;$r.mergeDeepIn=AI;$r.withMutations=mS;$r.wasAltered=VI;$r.asImmutable=cS;$r["@@transducer/init"]=$r.asMutable=uS;$r["@@transducer/step"]=function(e,t){return e.push(t)};$r["@@transducer/result"]=function(e){return e.asImmutable()};var js=function(t,r){this.array=t,this.ownerID=r};js.prototype.removeBefore=function(t,r,n){if((n&(1<<r+lr)-1)===0||this.array.length===0)return this;var i=n>>>r&$n;if(i>=this.array.length)return new js([],t);var c=i===0,o;if(r>0){var s=this.array[i];if(o=s&&s.removeBefore(t,r-lr,n),o===s&&c)return this}if(c&&!o)return this;var h=_f(this,t);if(!c)for(var f=0;f<i;f++)h.array[f]=void 0;return o&&(h.array[i]=o),h};js.prototype.removeAfter=function(t,r,n){if(n===(r?1<<r+lr:Si)||this.array.length===0)return this;var i=n-1>>>r&$n;if(i>=this.array.length)return this;var c;if(r>0){var o=this.array[i];if(c=o&&o.removeAfter(t,r-lr,n),c===o&&i===this.array.length-1)return this}var s=_f(this,t);return s.array.splice(i+1),c&&(s.array[i]=c),s};var j_={};function Rk(e,t){var r=e._origin,n=e._capacity,i=X_(n),c=e._tail;return o(e._root,e._level,0);function o(f,y,_){return y===0?s(f,_):h(f,y,_)}function s(f,y){var _=y===i?c&&c.array:f&&f.array,g=y>r?0:r-y,a=n-y;return a>Si&&(a=Si),function(){if(g===a)return j_;var d=t?--a:g++;return _&&_[d]}}function h(f,y,_){var g,a=f&&f.array,d=_>r?0:r-_>>y,p=(n-_>>y)+1;return p>Si&&(p=Si),function(){for(;;){if(g){var u=g();if(u!==j_)return u;g=null}if(d===p)return j_;var m=t?--p:d++;g=o(a&&a[m],y-lr,_+(m<<y))}}}}function $_(e,t,r,n,i,c,o){var s=Object.create($r);return s.size=t-e,s._origin=e,s._capacity=t,s._level=r,s._root=n,s._tail=i,s.__ownerID=c,s.__hash=o,s.__altered=!1,s}function uT(){return $_(0,0,lr)}function Vte(e,t,r){if(t=Gs(e,t),t!==t)return e;if(t>=e.size||t<0)return e.withMutations(function(o){t<0?Us(o,t).set(0,r):Us(o,0,t+1).set(t,r)});t+=e._origin;var n=e._tail,i=e._root,c=PD();return t>=X_(e._capacity)?n=DD(n,e.__ownerID,0,t,r,c):i=DD(i,e.__ownerID,e._level,t,r,c),c.value?e.__ownerID?(e._root=i,e._tail=n,e.__hash=void 0,e.__altered=!0,e):$_(e._origin,e._capacity,e._level,i,n):e}function DD(e,t,r,n,i,c){var o=n>>>r&$n,s=e&&o<e.array.length;if(!s&&i===void 0)return e;var h;if(r>0){var f=e&&e.array[o],y=DD(f,t,r-lr,n,i,c);return y===f?e:(h=_f(e,t),h.array[o]=y,h)}return s&&e.array[o]===i?e:(c&&Gi(c),h=_f(e,t),i===void 0&&o===h.array.length-1?h.array.pop():h.array[o]=i,h)}function _f(e,t){return t&&e&&t===e.ownerID?e:new js(e?e.array.slice():[],t)}function YX(e,t){if(t>=X_(e._capacity))return e._tail;if(t<1<<e._level+lr){for(var r=e._root,n=e._level;r&&n>0;)r=r.array[t>>>n&$n],n-=lr;return r}}function Ete(e,t,r){var n=e._origin+(t===void 0?0:t),i=r===void 0?e._capacity:r<0?e._capacity+r:e._origin+r;if(Number.isFinite(i)&&i>QC||Number.isFinite(n)&&n<-QC||Number.isFinite(i)&&Number.isFinite(n)&&i-n>QC)throw new RangeError("Invalid List size: a List cannot hold more than "+QC+" (2 ** 30) values.")}function Us(e,t,r){Ete(e,t,r),t!==void 0&&(t|=0),r!==void 0&&(r|=0);var n=e.__ownerID||new mI,i=e._origin,c=e._capacity,o=i+t,s=r===void 0?c:r<0?c+r:i+r;if(o===i&&s===c)return e;if(o>=s)return e.clear();for(var h=e._level,f=e._root,y=0;o+y<0;)f=new js(f&&f.array.length?[void 0,f]:[],n),h+=lr,y+=Ok(h);y&&(o+=y,i+=y,s+=y,c+=y);for(var _=X_(c),g=X_(s);g>=Ok(h+lr);)f=new js(f&&f.array.length?[f]:[],n),h+=lr;var a=e._tail,d=g<_?YX(e,s-1):g>_?new js([],n):a;if(a&&g>_&&o<c&&a.array.length){f=_f(f,n);for(var p=f,u=h;u>lr;u-=lr){var m=_>>>u&$n;p=p.array[m]=_f(p.array[m],n)}p.array[_>>>lr&$n]=a}if(s<c&&(d=d&&d.removeAfter(n,0,s)),o>=g)o-=g,s-=g,h=lr,f=void 0,d=d&&d.removeBefore(n,0,o);else if(o>i||g<_){for(y=0;f;){var v=o>>>h&$n;if(v!==g>>>h&$n)break;v&&(y+=(1<<h)*v),h-=lr,f=f.array[v]}f&&o>i&&(f=f.removeBefore(n,h,o-y)),f&&g<_&&(f=f.removeAfter(n,h,g-y)),y&&(o-=y,s-=y)}return e.__ownerID?(e.size=s-o,e._origin=o,e._capacity=s,e._level=h,e._root=f,e._tail=d,e.__hash=void 0,e.__altered=!0,e):$_(o,s,h,f,d)}function X_(e){return e<Si?0:e-1>>>lr<<lr}var QC=Math.pow(2,30);function Ok(e){return e<31?1<<e:Math.pow(2,e)}function LI(e){return WT(e)&&fa(e)}var Oa=(function(e){function t(r){return r==null?L_():LI(r)?r:L_().withMutations(function(n){var i=Yi(r);
vendor: 22,543 bytes, line 15
15_i(i.size),i.forEach(function(c,o){return n.set(o,c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("OrderedMap {","}")},t.prototype.get=function(n,i){var c=this._map.get(n);return c!==void 0?this._list.get(c)[1]:i},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this.__altered=!0,this):L_()},t.prototype.set=function(n,i){return Fk(this,n,i)},t.prototype.remove=function(n){return Fk(this,n,Ht)},t.prototype.__iterate=function(n,i){var c=this;return this._list.__iterate(function(o){return o&&n(o[1],o[0],c)},i)},t.prototype.__iterator=function(n,i){return this._list.fromEntrySeq().__iterator(n,i)},t.prototype.__ensureOwner=function(n){if(n===this.__ownerID)return this;var i=this._map.__ensureOwner(n),c=this._list.__ensureOwner(n);return n?NI(i,c,n,this.__hash):this.size===0?L_():(this.__ownerID=n,this.__altered=!1,this._map=i,this._list=c,this)},t})(Dl);Oa.isOrderedMap=LI;Oa.prototype[zs]=!0;Oa.prototype[aS]=Oa.prototype.remove;function NI(e,t,r,n){var i=Object.create(Oa.prototype);return i.size=e?e.size:0,i._map=e,i._list=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var kk;function L_(){return kk||(kk=NI(Ra(),uT()))}function Fk(e,t,r){var n=e._map,i=e._list,c=n.get(t),o=c!==void 0,s,h;if(r===Ht){if(!o)return e;i.size>=Si&&i.size>=n.size*2?(h=i.filter(function(f,y){return f!==void 0&&c!==y}),s=h.toKeyedSeq().map(function(f){return f[0]}).flip().toMap(),e.__ownerID&&(s.__ownerID=h.__ownerID=e.__ownerID)):(s=n.remove(t),h=c===i.size-1?i.pop():i.set(c,void 0))}else if(o){if(r===i.get(c)[1])return e;s=n,h=i.set(c,[t,r])}else s=n.set(t,i.size),h=i.set(i.size,[t,r]);return e.__ownerID?(e.size=s.size,e._map=s,e._list=h,e.__hash=void 0,e.__altered=!0,e):NI(s,h)}var QX="@@__IMMUTABLE_STACK__@@";function mT(e){return!!(e&&e[QX])}var $T=(function(e){function t(r){return r==null?ZC():mT(r)?r:ZC().pushAll(r)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(n,i){var c=this._head;for(n=Gs(this,n);c&&n--;)c=c.next;return c?c.value:i},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var n=arguments;if(arguments.length===0)return this;for(var i=this.size+arguments.length,c=this._head,o=arguments.length-1;o>=0;o--)c={value:n[o],next:c};return this.__ownerID?(this.size=i,this._head=c,this.__hash=void 0,this.__altered=!0,this):N_(i,c)},t.prototype.pushAll=function(n){if(n=e(n),n.size===0)return this;if(this.size===0&&mT(n))return n;_i(n.size);var i=this.size,c=this._head;return n.__iterate(function(o){i++,c={value:o,next:c}},!0),this.__ownerID?(this.size=i,this._head=c,this.__hash=void 0,this.__altered=!0,this):N_(i,c)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):ZC()},t.prototype.slice=function(n,i){if(oS(n,i,this.size))return this;var c=Bf(n,this.size),o=sS(i,this.size);if(o!==this.size)return e.prototype.slice.call(this,n,i);for(var s=this.size-c,h=this._head;c--;)h=h.next;return this.__ownerID?(this.size=s,this._head=h,this.__hash=void 0,this.__altered=!0,this):N_(s,h)},t.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?N_(this.size,this._head,n,this.__hash):this.size===0?ZC():(this.__ownerID=n,this.__altered=!1,this)},t.prototype.__iterate=function(n,i){var c=this;if(i)return new yf(this.toArray()).__iterate(function(h,f){return n(h,f,c)},i);for(var o=0,s=this._head;s&&n(s.value,o++,this)!==!1;)s=s.next;return o},t.prototype.__iterator=function(n,i){if(i)return new yf(this.toArray()).__iterator(n,i);var c=0,o=this._head;return new Xt(function(){if(o){var s=o.value;return o=o.next,Sr(n,c++,s)}return xn()})},t})(Ml);$T.isStack=mT;var Xn=$T.prototype;Xn[QX]=!0;Xn.shift=Xn.pop;Xn.unshift=Xn.push;Xn.unshiftAll=Xn.pushAll;Xn.withMutations=mS;Xn.wasAltered=VI;Xn.asImmutable=cS;Xn["@@transducer/init"]=Xn.asMutable=uS;Xn["@@transducer/step"]=function(e,t){return e.unshift(t)};Xn["@@transducer/result"]=function(e){return e.asImmutable()};function N_(e,t,r,n){var i=Object.create(Xn);return i.size=e,i._head=t,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}var Lk;function ZC(){return Lk||(Lk=N_(0))}function Nk(e,t,r,n,i,c){return _i(e.size),e.__iterate(function(o,s,h){i?(i=!1,r=o):r=t.call(n,r,o,s,h)},c),r}function Bte(e,t){return t}function Rte(e,t){return[t,e]}function Mx(e){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!e.apply(this,t)}}function qk(e){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return-e.apply(this,t)}}function Uk(e,t){return e<t?1:e>t?-1:0}function qI(e,t){if(e===t)return!0;if(!oi(t)||e.size!==void 0&&t.size!==void 0&&e.size!==t.size||e.__hash!==void 0&&t.__hash!==void 0&&e.__hash!==t.__hash||gr(e)!==gr(t)||ai(e)!==ai(t)||fa(e)!==fa(t))return!1;if(e.size===0&&t.size===0)return!0;var r=!qT(e);if(fa(e)){var n=e.entries();return t.every(function(h,f){var y=n.next().value;return y&&fn(y[1],h)&&(r||fn(y[0],f))})&&n.next().done}var i=!1;if(e.size===void 0)if(t.size===void 0)typeof e.cacheResult=="function"&&e.cacheResult();else{i=!0;var c=e;e=t,t=c}var o=!0,s=t.__iterate(function(h,f){if(r?!e.has(h):i?!fn(h,e.get(f,Ht)):!fn(e.get(f,Ht),h))return o=!1,!1});return o&&e.size===s}var ZX=(function(e){function t(r,n,i){if(i===void 0&&(i=1),!(this instanceof t))return new t(r,n,i);if(U_(i!==0,"Cannot step a Range by 0"),U_(r!==void 0,"You must define a start value when using Range"),U_(n!==void 0,"You must define an end value when using Range"),i=Math.abs(i),n<r&&(i=-i),this._start=r,this._end=n,this._step=i,this.size=Math.max(0,Math.ceil((n-r)/i-1)+1),this.size===0){if(Dx)return Dx;Dx=this}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.size===0?"Range []":"Range [ "+this._start+"..."+this._end+(this._step!==1?" by "+this._step:"")+" ]"},t.prototype.get=function(n,i){return this.has(n)?this._start+Gs(this,n)*this._step:i},t.prototype.includes=function(n){var i=(n-this._start)/this._step;return i>=0&&i<this.size&&i===Math.floor(i)},t.prototype.slice=function(n,i){return oS(n,i,this.size)?this:(n=Bf(n,this.size),i=sS(i,this.size),i<=n?new t(0,0):new t(this.get(n,this._end),this.get(i,this._end),this._step))},t.prototype.indexOf=function(n){var i=n-this._start;if(i%this._step===0){var c=i/this._step;if(c>=0&&c<this.size)return c}return-1},t.prototype.lastIndexOf=function(n){return this.indexOf(n)},t.prototype.__iterate=function(n,i){for(var c=this.size,o=this._step,s=i?this._start+(c-1)*o:this._start,h=0;h!==c&&n(s,i?c-++h:h++,this)!==!1;)s+=i?-o:o;return h},t.prototype.__iterator=function(n,i){var c=this.size,o=this._step,s=i?this._start+(c-1)*o:this._start,h=0;return new Xt(function(){if(h===c)return xn();var f=s;return s+=i?-o:o,Sr(n,i?c-++h:h++,f)})},t.prototype.equals=function(n){return n instanceof t?this._start===n._start&&this._end===n._end&&this._step===n._step:qI(this,n)},t})(Zi),Dx,JX="@@__IMMUTABLE_SET__@@";function XT(e){return!!(e&&e[JX])}var hS=(function(e){function t(r){return r==null?q_():XT(r)&&!fa(r)?r:q_().withMutations(function(n){var i=e(r);_i(i.size),i.forEach(function(c){return n.add(c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(n){return this(Yi(n).keySeq())},t.intersect=function(n){return n=mn(n).toArray(),n.length?yn.intersect.apply(t(n.pop()),n):q_()},t.union=function(n){return n=mn(n).toArray(),n.length?yn.union.apply(t(n.pop()),n):q_()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(n){return this._map.has(n)},t.prototype.add=function(n){return JC(this,this._map.set(n,n))},t.prototype.remove=function(n){return JC(this,this._map.remove(n))},t.prototype.clear=function(){return JC(this,this._map.clear())},t.prototype.map=function(n,i){var c=this,o=!1,s=JC(this,this._map.mapEntries(function(h){var f=h[1],y=n.call(i,f,f,c);return y!==f&&(o=!0),[y,y]},i));return o?s:this},t.prototype.union=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];return n=n.filter(function(c){return c.size!==0}),n.length===0?this:this.size===0&&!this.__ownerID&&n.length===1?this.constructor(n[0]):this.withMutations(function(c){for(var o=0;o<n.length;o++)typeof n[o]=="string"?c.add(n[o]):e(n[o]).forEach(function(s){return c.add(s)})})},t.prototype.intersect=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===0)return this;n=n.map(function(o){return e(o)});var c=[];return this.forEach(function(o){n.every(function(s){return s.includes(o)})||c.push(o)}),this.withMutations(function(o){c.forEach(function(s){o.remove(s)})})},t.prototype.subtract=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(n.length===0)return this;n=n.map(function(o){return e(o)});var c=[];return this.forEach(function(o){n.some(function(s){return s.includes(o)})&&c.push(o)}),this.withMutations(function(o){c.forEach(function(s){o.remove(s)})})},t.prototype.sort=function(n){return Cf(vf(this,n))},t.prototype.sortBy=function(n,i){return Cf(vf(this,i,n))},t.prototype.wasAltered=function(){return this._map.wasAltered()},t.prototype.__iterate=function(n,i){var c=this;return this._map.__iterate(function(o){return n(o,o,c)},i)},t.prototype.__iterator=function(n,i){return this._map.__iterator(n,i)},t.prototype.__ensureOwner=function(n){if(n===this.__ownerID)return this;var i=this._map.__ensureOwner(n);return n?this.__make(i,n):this.size===0?this.__empty():(this.__ownerID=n,this._map=i,this)},t})(Vf);hS.isSet=XT;var yn=hS.prototype;yn[JX]=!0;yn[aS]=yn.remove;yn.merge=yn.concat=yn.union;yn.withMutations=mS;yn.asImmutable=cS;yn["@@transducer/init"]=yn.asMutable=uS;yn["@@transducer/step"]=function(e,t){return e.add(t)};yn["@@transducer/result"]=function(e){return e.asImmutable()};yn.__empty=q_;yn.__make=eK;function JC(e,t){return e.__ownerID?(e.size=t.size,e._map=t,e):t===e._map?e:t.size===0?e.__empty():e.__make(t)}function eK(e,t){var r=Object.create(yn);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}var jk;function q_(){return jk||(jk=eK(Ra()))}function UI(e,t,r){for(var n=GX(t),i=0;i!==n.length;)if(e=OI(e,n[i++],Ht),e===Ht)return r;return e}function tK(e,t){return UI(this,e,t)}function rK(e,t){return UI(e,t,Ht)!==Ht}function Ote(e){return rK(this,e)}function nK(){_i(this.size);var e={};return this.__iterate(function(t,r){lS(r)||(e[r]=t)}),e}function pT(e){if(!e||typeof e!="object")return e;if(!oi(e)){if(!Hs(e))return e;e=An(e)}if(gr(e)){var t={};return e.__iterate(function(n,i){lS(i)||(t[i]=pT(n))}),t}var r=[];return e.__iterate(function(n){r.push(pT(n))}),r}function kte(e){if(e.size===1/0)return 0;var t=fa(e),r=gr(e),n=t?1:0;return e.__iterate(r?t?function(i,c){n=31*n+Gk(Wn(i),Wn(c))|0}:function(i,c){n=n+Gk(Wn(i),Wn(c))|0}:t?function(i){n=31*n+Wn(i)|0}:function(i){n=n+Wn(i)|0}),Fte(e.size,n)}function Fte(e,t){return t=lh(t,3432918353),t=lh(t<<15|t>>>-15,461845907),t=lh(t<<13|t>>>-13,5),t=(t+3864292196|0)^e,t=lh(t^t>>>16,2246822507),t=lh(t^t>>>13,3266489909),t=zT(t^t>>>16),t}function Gk(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}function wl(e,t){var r=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(r),e}mn.Iterator=Xt;wl(mn,{toArray:function(){_i(this.size);var t=new Array(this.size||0),r=gr(this),n=0;return this.__iterate(function(i,c){t[n++]=r?[c,i]:i}),t},toIndexedSeq:function(){return new xX(this)},toJS:function(){return pT(this)},toKeyedSeq:function(){return new HT(this,!0)},toMap:function(){return Dl(this.toKeyedSeq())},toObject:nK,toOrderedMap:function(){return Oa(this.toKeyedSeq())},toOrderedSet:function(){return Cf(gr(this)?this.valueSeq():this)},toSet:function(){return hS(gr(this)?this.valueSeq():this)},toSetSeq:function(){return new AX(this)},toSeq:function(){return ai(this)?this.toIndexedSeq():gr(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return $T(gr(this)?this.valueSeq():this)},toList:function(){return pS(gr(this)?this.valueSeq():this)},toString:function(){return"[Collection]"},__toString:function(t,r){return this.size===0?t+r:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+r},concat:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return ur(this,dte(this,t))},includes:function(t){return this.some(function(r){return fn(r,t)})},entries:function(){return this.__iterator(Pi)},every:function(t,r){_i(this.size);var n=!0;return this.__iterate(function(i,c,o){if(!t.call(r,i,c,o))return n=!1,!1}),n},filter:function(t,r){return ur(this,wX(this,t,r,!0))},partition:function(t,r){return cte(this,t,r)},find:function(t,r,n){var i=this.findEntry(t,r);return i?i[1]:n},forEach:function(t,r){return _i(this.size),this.__iterate(r?t.bind(r):t)},join:function(t){_i(this.size),t=t!==void 0?""+t:",";var r="",n=!0;return this.__iterate(function(i){n?n=!1:r+=t,r+=i!=null?i.toString():""}),r},keys:function(){return this.__iterator(Ef)},map:function(t,r){return ur(this,IX(this,t,r))},reduce:function(t,r,n){return Nk(this,t,r,n,arguments.length<2,!1)},reduceRight:function(t,r,n){return Nk(this,t,r,n,arguments.length<2,!0)},reverse:function(){return ur(this,_I(this,!0))},slice:function(t,r){return ur(this,SI(this,t,r,!0))},some:function(t,r){_i(this.size);var n=!1;return this.__iterate(function(i,c,o){if(t.call(r,i,c,o))return n=!0,!1}),n},sort:function(t){return ur(this,vf(this,t))},values:function(){return this.__iterator(Ci)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return this.size!==void 0?this.size===0:!this.some(function(){return!0})},count:function(t,r){return gf(t?this.toSeq().filter(t,r):this)},countBy:function(t,r){return ote(this,t,r)},equals:function(t){return qI(this,t)},entrySeq:function(){var t=this;if(t._cache)return new yf(t._cache);var r=t.toSeq().map(Rte).toIndexedSeq();return r.fromEntrySeq=function(){return t.toSeq()},r},filterNot:function(t,r){return this.filter(Mx(t),r)},findEntry:function(t,r,n){var i=n;return this.__iterate(function(c,o,s){if(t.call(r,c,o,s))return i=[o,c],!1}),i},findKey:function(t,r){var n=this.findEntry(t,r);return n&&n[0]},findLast:function(t,r,n){return this.toKeyedSeq().reverse().find(t,r,n)},findLastEntry:function(t,r,n){return this.toKeyedSeq().reverse().findEntry(t,r,n)},findLastKey:function(t,r){return this.toKeyedSeq().reverse().findKey(t,r)},first:function(t){return this.find(vX,null,t)},flatMap:function(t,r){return ur(this,fte(this,t,r))},flatten:function(t){return ur(this,EX(this,t,!0))},fromEntrySeq:function(){return new MX(this)},get:function(t,r){return this.find(function(n,i){return fn(i,t)},void 0,r)},getIn:tK,groupBy:function(t,r){return ste(this,t,r)},has:function(t){return this.get(t,Ht)!==Ht},hasIn:Ote,isSubset:function(t){return t=typeof t.includes=="function"?t:mn(t),this.every(function(r){return t.includes(r)})},isSuperset:function(t){return t=typeof t.isSubset=="function"?t:mn(t),t.isSubset(this)},keyOf:function(t){return this.findKey(function(r){return fn(r,t)})},keySeq:function(){return this.toSeq().map(Bte).toIndexedSeq()},last:function(t){return this.toSeq().reverse().first(t)},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return KC(this,t)},maxBy:function(t,r){return KC(this,r,t)},min:function(t){return KC(this,t?qk(t):Uk)},minBy:function(t,r){return KC(this,r?qk(r):Uk,t)},rest:function(){return this.slice(1)},skip:function(t){return t===0?this:this.slice(Math.max(0,t))},skipLast:function(t){return t===0?this:this.slice(0,-Math.max(0,t))},skipWhile:function(t,r){return ur(this,VX(this,t,r,!0))},skipUntil:function(t,r){return this.skipWhile(Mx(t),r)},sortBy:function(t,r){return ur(this,vf(this,r,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return this.slice(-Math.max(0,t))},takeWhile:function(t,r){return ur(this,ute(this,t,r))},takeUntil:function(t,r){return this.takeWhile(Mx(t),r)},update:function(t){return t(this)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=kte(this))}});var Mn=mn.prototype;Mn[gX]=!0;Mn[UT]=Mn.values;Mn.toJSON=Mn.toArray;Mn.__toStringMapper=W_;Mn.inspect=Mn.toSource=function(){return this.toString()};Mn.chain=Mn.flatMap;Mn.contains=Mn.includes;wl(Yi,{flip:function(){return ur(this,DX(this))},mapEntries:function(t,r){var n=this,i=0;return ur(this,this.toSeq().map(function(c,o){return t.call(r,[o,c],i++,n)}).fromEntrySeq())},mapKeys:function(t,r){var n=this;return ur(this,this.toSeq().flip().map(function(i,c){return t.call(r,i,c,n)}).flip())}});var gS=Yi.prototype;gS[dT]=!0;gS[UT]=Mn.entries;gS.toJSON=nK;gS.__toStringMapper=function(e,t){return W_(t)+": "+W_(e)};wl(Ml,{toKeyedSeq:function(){return new HT(this,!1)},filter:function(t,r){return ur(this,wX(this,t,r,!1))},findIndex:function(t,r){var n=this.findEntry(t,r);return n?n[0]:-1},indexOf:function(t){var r=this.keyOf(t);return r===void 0?-1:r},lastIndexOf:function(t){var r=this.lastKeyOf(t);return r===void 0?-1:r},reverse:function(){return ur(this,_I(this,!1))},slice:function(t,r){return ur(this,SI(this,t,r,!1))},splice:function(t,r){var n=arguments.length;if(r=Math.max(r||0,0),n===0||n===2&&!r)return this;t=Bf(t,t<0?this.count():this.size);var i=this.slice(0,t);return ur(this,n===1?i:i.concat(Ba(arguments,2),this.slice(t+r)))},findLastIndex:function(t,r){var n=this.findLastEntry(t,r);return n?n[0]:-1},first:function(t){return this.get(0,t)},flatten:function(t){return ur(this,EX(this,t,!1))},get:function(t,r){return t=Gs(this,t),t<0||this.size===1/0||this.size!==void 0&&t>this.size?r:this.find(function(n,i){return i===t},void 0,r)},has:function(t){return t=Gs(this,t),t>=0&&(this.size!==void 0?this.size===1/0||t<this.size:this.find(function(r,n){return n===t},void 0,Ht)!==Ht)},interpose:function(t){return ur(this,mte(this,t))},interleave:function(){var t=[this].concat(Ba(arguments)),r=YC(this.toSeq(),Zi.of,t),n=r.flatten(!0);return r.size&&(n.size=r.size*t.length),ur(this,n)},keySeq:function(){return ZX(0,this.size)},last:function(t){return this.get(-1,t)},skipWhile:function(t,r){return ur(this,VX(this,t,r,!1))},zip:function(){var t=[this].concat(Ba(arguments));return ur(this,YC(this,zk,t))},zipAll:function(){var t=[this].concat(Ba(arguments));return ur(this,YC(this,zk,t,!0))},zipWith:function(t){var r=Ba(arguments);return r[0]=this,ur(this,YC(this,t,r))}});var kf=Ml.prototype;kf[lT]=!0;kf[zs]=!0;wl(Vf,{get:function(t,r){return this.has(t)?t:r},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}});var Sf=Vf.prototype;Sf.has=Mn.includes;Sf.contains=Sf.includes;Sf.keys=Sf.values;wl(Ks,gS);wl(Zi,kf);wl(Of,Sf);function zk(){return Ba(arguments)}function jI(e){return XT(e)&&fa(e)}var Cf=(function(e){function t(r){return r==null?ID():jI(r)?r:ID().withMutations(function(n){var i=Vf(r);_i(i.size),i.forEach(function(c){return n.add(c)})})}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(n){return this(Yi(n).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t})(hS);Cf.isOrderedSet=jI;var Vl=Cf.prototype;Vl[zs]=!0;Vl.zip=kf.zip;Vl.zipWith=kf.zipWith;Vl.zipAll=kf.zipAll;Vl.__empty=ID;Vl.__make=iK;function iK(e,t){var r=Object.create(Vl);return r.size=e?e.size:0,r._map=e,r.__ownerID=t,r}var Hk;function ID(){return Hk||(Hk=iK(L_()))}var Lte={LeftThenRight:-1,RightThenLeft:1};function Nte(e){if(Xs(e))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(Qi(e))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(e===null||typeof e!="object")throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}var an=function(t,r){var n;Nte(t);var i=function(s){var h=this;if(s instanceof i)return s;if(!(this instanceof i))return new i(s);if(!n){n=!0;var f=Object.keys(t),y=c._indices={};c._name=r,c._keys=f,c._defaultValues=t;for(var _=0;_<f.length;_++){var g=f[_];y[g]=_,c[g]?typeof console=="object"&&console.warn&&console.warn("Cannot define "+zI(this)+' with property "'+g+'" since that property name is part of the Record API.'):qte(c,g)}}return this.__ownerID=void 0,this._values=pS().withMutations(function(a){a.setSize(h._keys.length),Yi(s).forEach(function(d,p){a.set(h._indices[p],d===h._defaultValues[p]?void 0:d)})}),this},c=i.prototype=Object.create(yr);return c.constructor=i,r&&(i.displayName=r),i};an.prototype.toString=function(){for(var t=zI(this)+" { ",r=this._keys,n,i=0,c=r.length;i!==c;i++)n=r[i],t+=(i?", ":"")+n+": "+W_(this.get(n));return t+" }"};an.prototype.equals=function(t){return this===t||Xs(t)&&Pf(this).equals(Pf(t))};an.prototype.hashCode=function(){return Pf(this).hashCode()};an.prototype.has=function(t){return this._indices.hasOwnProperty(t)};an.prototype.get=function(t,r){if(!this.has(t))return r;var n=this._indices[t],i=this._values.get(n);return i===void 0?this._defaultValues[t]:i};an.prototype.set=function(t,r){if(this.has(t)){var n=this._values.set(this._indices[t],r===this._defaultValues[t]?void 0:r);if(n!==this._values&&!this.__ownerID)return GI(this,n)}return this};an.prototype.remove=function(t){return this.set(t)};an.prototype.clear=function(){var t=this._values.clear().setSize(this._keys.length);return this.__ownerID?this:GI(this,t)};an.prototype.wasAltered=function(){return this._values.wasAltered()};an.prototype.toSeq=function(){return Pf(this)};an.prototype.toJS=function(){return pT(this)};an.prototype.entries=function(){return this.__iterator(Pi)};an.prototype.__iterator=function(t,r){return Pf(this).__iterator(t,r)};an.prototype.__iterate=function(t,r){return Pf(this).__iterate(t,r)};an.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var r=this._values.__ensureOwner(t);return t?GI(this,r,t):(this.__ownerID=t,this._values=r,this)};an.isRecord=Xs;an.getDescriptiveName=zI;var yr=an.prototype;yr[SX]=!0;
15yr[aS]=yr.remove;yr.deleteIn=yr.removeIn=kI;yr.getIn=tK;yr.hasIn=Mn.hasIn;yr.merge=RX;yr.mergeWith=OX;yr.mergeIn=MI;yr.mergeDeep=FX;yr.mergeDeepWith=LX;yr.mergeDeepIn=AI;yr.setIn=DI;yr.update=II;yr.updateIn=wI;yr.withMutations=mS;yr.asMutable=uS;yr.asImmutable=cS;yr[UT]=yr.entries;yr.toJSON=yr.toObject=Mn.toObject;yr.inspect=yr.toSource=function(){return this.toString()};function GI(e,t,r){var n=Object.create(Object.getPrototypeOf(e));return n._values=t,n.__ownerID=r,n}function zI(e){return e.constructor.displayName||e.constructor.name||"Record"}function Pf(e){return yI(e._keys.map(function(t){return[t,e.get(t)]}))}function qte(e,t){try{Object.defineProperty(e,t,{get:function(){return this.get(t)},set:function(r){U_(this.__ownerID,"Cannot set on an immutable record."),this.set(t,r)}})}catch{}}var Ute=(function(e){function t(r,n){if(!(this instanceof t))return new t(r,n);if(this._value=r,this.size=n===void 0?1/0:Math.max(0,n),this.size===0){if(Ix)return Ix;Ix=this}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.size===0?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},t.prototype.get=function(n,i){return this.has(n)?this._value:i},t.prototype.includes=function(n){return fn(this._value,n)},t.prototype.slice=function(n,i){var c=this.size;return oS(n,i,c)?this:new t(this._value,sS(i,c)-Bf(n,c))},t.prototype.reverse=function(){return this},t.prototype.indexOf=function(n){return this.size!==0&&fn(this._value,n)?0:-1},t.prototype.lastIndexOf=function(n){return this.size!==0&&fn(this._value,n)?this.size-1:-1},t.prototype.__iterate=function(n,i){for(var c=this.size,o=0;o!==c&&n(this._value,i?c-++o:o++,this)!==!1;);return o},t.prototype.__iterator=function(n,i){var c=this,o=this.size,s=0;return new Xt(function(){return s===o?xn():Sr(n,i?o-++s:s++,c._value)})},t.prototype.equals=function(n){return n instanceof t?fn(this._value,n._value):qI(this,n)},t})(Zi),Ix;function jte(e,t){return aK([],t||Gte,e,"",t&&t.length>2?[]:void 0,{"":e})}function aK(e,t,r,n,i,c){if(typeof r!="string"&&!Qi(r)&&(pI(r)||fI(r)||xI(r))){if(~e.indexOf(r))throw new TypeError("Cannot convert circular structure to Immutable");e.push(r),i&&n!==""&&i.push(n);var o=t.call(c,n,An(r).map(function(s,h){return aK(e,t,s,h,i,r)}),i&&i.slice());return e.pop(),i&&i.pop(),o}return r}function Gte(e,t){return ai(t)?t.toList():gr(t)?t.toMap():t.toSet()}var zte="5.1.9",Hte=mn;const Wte=Object.freeze(Object.defineProperty({__proto__:null,Collection:mn,Iterable:Hte,List:pS,Map:Dl,OrderedMap:Oa,OrderedSet:Cf,PairSorting:Lte,Range:ZX,Record:an,Repeat:Ute,Seq:An,Set:hS,Stack:$T,fromJS:jte,get:OI,getIn:UI,has:zX,hasIn:rK,hash:Wn,is:fn,isAssociative:qT,isCollection:oi,isImmutable:Qi,isIndexed:ai,isKeyed:gr,isList:FI,isMap:WT,isOrdered:fa,isOrderedMap:LI,isOrderedSet:jI,isPlainObject:xI,isRecord:Xs,isSeq:GT,isSet:XT,isStack:mT,isValueObject:MD,merge:hte,mergeDeep:yte,mergeDeepWith:vte,mergeWith:gte,remove:HX,removeIn:XX,set:WX,setIn:NX,update:TI,updateIn:Il,version:zte},Symbol.toStringTag,{value:"Module"})),Ff=VD(Wte);var dd={},eP={},wx={exports:{}},Un={},Wk;function $te(){if(Wk)return Un;Wk=1;const e={Remove:"remove",Replace:"replace",Add:"add"},t=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),r=Symbol("__MUTATIVE_RAW_RETURN_SYMBOL__"),n=Symbol.iterator,i={mutable:"mutable",immutable:"immutable"},c={};function o($,ie){return $ instanceof Map?$.has(ie):Object.prototype.hasOwnProperty.call($,ie)}function s($,ie){if(ie in $){let Z=Reflect.getPrototypeOf($);for(;Z;){const re=Reflect.getOwnPropertyDescriptor(Z,ie);if(re)return re;Z=Reflect.getPrototypeOf(Z)}}}function h($){return Object.getPrototypeOf($)===Set.prototype}function f($){return Object.getPrototypeOf($)===Map.prototype}function y($){var ie;return(ie=$.copy)!==null&&ie!==void 0?ie:$.original}function _($){return!!g($)}function g($){return typeof $!="object"?null:$?.[t]}function a($){var ie;const Z=g($);return Z?(ie=Z.copy)!==null&&ie!==void 0?ie:Z.original:$}function d($,ie){if(!$||typeof $!="object")return!1;let Z;return Object.getPrototypeOf($)===Object.prototype||Array.isArray($)||$ instanceof Map||$ instanceof Set||!!ie?.mark&&((Z=ie.mark($,i))===i.immutable||typeof Z=="function")}function p($,ie=[]){if(Object.hasOwnProperty.call($,"key")){const Z=$.parent.copy,re=g(m(Z,$.key));if(re!==null&&re?.original!==$.original)return null;const oe=$.parent.type===3,ce=oe?Array.from($.parent.setMap.keys()).indexOf($.key):$.key;if(!(oe&&Z.size>ce||o(Z,ce)))return null;ie.push(ce)}if($.parent)return p($.parent,ie);ie.reverse();try{(function(Z,re){for(let oe=0;oe<re.length-1;oe+=1){const ce=re[oe];if(typeof(Z=m(u(Z)===3?Array.from(Z):Z,ce))!="object")throw new Error(`Cannot resolve patch at '${re.join("/")}'.`)}})($.copy,ie)}catch{return null}return ie}function u($){return Array.isArray($)?1:$ instanceof Map?2:$ instanceof Set?3:0}function m($,ie){return u($)===2?$.get(ie):$[ie]}function v($,ie,Z){u($)===2?$.set(ie,Z):$[ie]=Z}function b($,ie){const Z=g($);return(Z?y(Z):$)[ie]}
15function P($,ie){return $===ie?$!==0||1/$==1/ie:$!=$&&ie!=ie}function C($){if($)for(;$.finalities.revoke.length>0;)$.finalities.revoke.pop()()}function l($,ie){return ie?$:[""].concat($).map((Z=>{const re=`${Z}`;return re.indexOf("/")===-1&&re.indexOf("~")===-1?re:re.replace(/~/g,"~0").replace(/\//g,"~1")})).join("/")}const S=Object.prototype.propertyIsEnumerable;function T($,ie){let Z;if(Array.isArray($))return Array.prototype.concat.call($);if($ instanceof Set)return h($)?Set.prototype.difference?Set.prototype.difference.call($,new Set):new Set($.values()):new(Object.getPrototypeOf($)).constructor($.values());if($ instanceof Map)return f($)?new Map($):new(Object.getPrototypeOf($)).constructor($);if(ie?.mark&&(Z=ie.mark($,i),Z!==void 0)&&Z!==i.mutable){if(Z===i.immutable)return(function(re){const oe=Object.create(Object.getPrototypeOf(re));return Reflect.ownKeys(re).forEach((ce=>{let ue=Reflect.getOwnPropertyDescriptor(re,ce);ue.enumerable&&ue.configurable&&ue.writable?oe[ce]=re[ce]:(ue.writable||(ue.writable=!0,ue.configurable=!0),(ue.get||ue.set)&&(ue={configurable:!0,writable:!0,enumerable:ue.enumerable,value:re[ce]}),Reflect.defineProperty(oe,ce,ue))})),oe})($);if(typeof Z=="function")return Z();throw new Error(`Unsupported mark result: ${Z}`)}if(typeof $=="object"&&Object.getPrototypeOf($)===Object.prototype){const re={};return Object.keys($).forEach((oe=>{re[oe]=$[oe]})),Object.getOwnPropertySymbols($).forEach((oe=>{S.call($,oe)&&(re[oe]=$[oe])})),re}throw new Error("Please check mark() to ensure that it is a stable marker draftable function.")}function A($){$.copy||($.copy=T($.original,$.options))}function x($){if(!d($))return a($);if(Array.isArray($))return $.map(x);if($ instanceof Map){const Z=Array.from($.entries()).map((([re,oe])=>[re,x(oe)]));return f($)?new Map(Z):new(Object.getPrototypeOf($)).constructor(Z)}if($ instanceof Set){const Z=Array.from($).map(x);return h($)?new Set(Z):new(Object.getPrototypeOf($)).constructor(Z)}const ie=Object.create(Object.getPrototypeOf($));for(const Z in $)ie[Z]=x($[Z]);return ie}function M($){return _($)?x($):$}function D($){var ie;$.assignedMap=(ie=$.assignedMap)!==null&&ie!==void 0?ie:new Map,$.operated||($.operated=!0,$.parent&&D($.parent))}function V(){throw new Error("Cannot modify frozen object")}function R($){return $&&typeof $=="object"&&!Object.isFrozen($)}function E($,ie,Z,re,oe){if(!(Object.isFrozen($)||_($)))switch(u($)){case 2:for(const[ce,ue]of $)R(ce)&&E(ce),R(ue)&&E(ue);$.set=$.clear=$.delete=V;break;case 3:for(const ce of $)R(ce)&&E(ce);$.add=$.clear=$.delete=V;break;case 1:Object.freeze($);for(const ce of $)R(ce)&&E(ce);break;default:Object.freeze($),Object.keys($).forEach((ce=>{const ue=$[ce];R(ue)&&E(ue)}))}}function I($,ie){const Z=u($);if(Z===0)Reflect.ownKeys($).forEach((re=>{ie(re,$[re],$)}));else if(Z===1){let re=0;for(const oe of $)ie(re,oe,$),re+=1}else $.forEach(((re,oe)=>ie(oe,re,$)))}function B($,ie,Z){if(_($)||!d($,Z)||ie.has($)||Object.isFrozen($))return;const re=$ instanceof Set,oe=re?new Map:void 0;if(ie.add($),I($,((ce,ue)=>{var pe;if(_(ue)){const he=g(ue);A(he);const fe=!((pe=he.assignedMap)===null||pe===void 0)&&pe.size||he.operated?he.copy:he.original;v(re?oe:$,ce,fe)}else B(ue,ie,Z)})),oe){const ce=$,ue=Array.from(ce);ce.clear(),ue.forEach((pe=>{ce.add(oe.has(pe)?oe.get(pe):pe)}))}}function w($,ie){const Z=$.type===3?$.setMap:$.copy;$.finalities.revoke.length>1&&$.assignedMap.get(ie)&&Z&&B(m(Z,ie),$.finalities.handledSet,$.options)}function O($){$.type===3&&$.copy&&($.copy.clear(),$.setMap.forEach((ie=>{$.copy.add(a(ie))})))}function F($,ie,Z,re){if($.operated&&$.assignedMap&&$.assignedMap.size>0&&!$.finalized){if(Z&&re){const oe=p($);oe&&ie($,oe,Z,re)}$.finalized=!0}}function L($,ie,Z,re){const oe=g(Z);oe&&(oe.callbacks||(oe.callbacks=[]),oe.callbacks.push(((ce,ue)=>{const pe=$.type===3?$.setMap:$.copy;if(P(m(pe,ie),Z)){let he=oe.original;oe.copy&&(he=oe.copy),O($),F($,re,ce,ue),v(pe,ie,he)}})),$.options.enableAutoFreeze&&oe.finalities!==$.finalities&&($.options.enableAutoFreeze=!1)),d(Z,$.options)&&$.finalities.draft.push((()=>{P(m($.type===3?$.setMap:$.copy,ie),Z)&&w($,ie)}))}function U($,ie,Z,re){const{pathAsArray:oe=!0}=$.options.enablePatches;switch($.type){case 0:case 2:return(function({original:ce,copy:ue,assignedMap:pe},he,fe,de,ge){pe.forEach(((Ce,ve)=>{const le=m(ce,ve),me=M(m(ue,ve)),ee=Ce?o(ce,ve)?e.Replace:e.Add:e.Remove;if(P(le,me)&&ee===e.Replace)return;const se=l(he.concat(ve),ge);fe.push(ee===e.Remove?{op:ee,path:se}:{op:ee,path:se,value:me}),de.push(ee===e.Add?{op:e.Remove,path:se}:ee===e.Remove?{op:e.Add,path:se,value:le}:{op:e.Replace,path:se,value:le})}))})($,ie,Z,re,oe);case 1:return(function(ce,ue,pe,he,fe){let{original:de,assignedMap:ge,options:Ce}=ce,ve=ce.copy;ve.length<de.length&&([de,ve]=[ve,de],[pe,he]=[he,pe]);for(let le=0;le<de.length;le+=1)if(ge.get(le.toString())&&ve[le]!==de[le]){const me=l(ue.concat([le]),fe);pe.push({op:e.Replace,path:me,value:M(ve[le])}),he.push({op:e.Replace,path:me,value:M(de[le])})}for(let le=de.length;le<ve.length;le+=1){const me=l(ue.concat([le]),fe);pe.push({op:e.Add,path:me,value:M(ve[le])})}if(de.length<ve.length){const{arrayLengthAssignment:le=!0}=Ce.enablePatches;if(le){const me=l(ue.concat(["length"]),fe);he.push({op:e.Replace,path:me,value:de.length})}else for(let me=ve.length;de.length<me;me-=1){const ee=l(ue.concat([me-1]),fe);he.push({op:e.Remove,path:ee})}}})($,ie,Z,re,oe);case 3:return(function({original:ce,copy:ue},pe,he,fe,de){let ge=0;ce.forEach((Ce=>{if(!ue.has(Ce)){const ve=l(pe.concat([ge]),de);he.push({op:e.Remove,path:ve,value:Ce}),fe.unshift({op:e.Add,path:ve,value:Ce})}ge+=1})),ge=0,ue.forEach((Ce=>{if(!ce.has(Ce)){const ve=l(pe.concat([ge]),de);he.push({op:e.Add,path:ve,value:Ce}),fe.unshift({op:e.Remove,path:ve,value:Ce})}ge+=1}))})($,ie,Z,re,oe)}}let q=!1;const N=($,ie,Z=!1)=>
15{if(typeof $=="object"&&$!==null&&(!d($,ie)||Z)&&!q)throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},k={get size(){return y(g(this)).size},has($){return y(g(this)).has($)},set($,ie){const Z=g(this),re=y(Z);return re.has($)&&P(re.get($),ie)||(A(Z),D(Z),Z.assignedMap.set($,!0),Z.copy.set($,ie),L(Z,$,ie,U)),this},delete($){if(!this.has($))return!1;const ie=g(this);return A(ie),D(ie),ie.original.has($)?ie.assignedMap.set($,!1):ie.assignedMap.delete($),ie.copy.delete($),!0},clear(){const $=g(this);if(this.size){A($),D($),$.assignedMap=new Map;for(const[ie]of $.original)$.assignedMap.set(ie,!1);$.copy.clear()}},forEach($,ie){y(g(this)).forEach(((Z,re)=>{$.call(ie,this.get(re),re,this)}))},get($){var ie,Z;const re=g(this),oe=y(re).get($),ce=((Z=(ie=re.options).mark)===null||Z===void 0?void 0:Z.call(ie,oe,i))===i.mutable;if(re.options.strict&&N(oe,re.options,ce),ce||re.finalized||!d(oe,re.options)||oe!==re.original.get($))return oe;const ue=c.createDraft({original:oe,parentDraft:re,key:$,finalities:re.finalities,options:re.options});return A(re),re.copy.set($,ue),ue},keys(){return y(g(this)).keys()},values(){const $=this.keys();return{[n]:()=>this.values(),next:()=>{const ie=$.next();return ie.done?ie:{done:!1,value:this.get(ie.value)}}}},entries(){const $=this.keys();return{[n]:()=>this.entries(),next:()=>{const ie=$.next();if(ie.done)return ie;const Z=this.get(ie.value);return{done:!1,value:[ie.value,Z]}}}},[n](){return this.entries()}},j=Reflect.ownKeys(k),H=($,ie,{isValuesIterator:Z})=>()=>{var re,oe;const ce=ie.next();if(ce.done)return ce;const ue=ce.value;let pe=$.setMap.get(ue);const he=g(pe),fe=((oe=(re=$.options).mark)===null||oe===void 0?void 0:oe.call(re,pe,i))===i.mutable;if($.options.strict&&N(ue,$.options,fe),fe||he||!d(ue,$.options)||$.finalized||!$.original.has(ue))he&&(pe=he.proxy);else{const de=c.createDraft({original:ue,parentDraft:$,key:ue,finalities:$.finalities,options:$.options});$.setMap.set(ue,de),pe=de}return{done:!1,value:Z?pe:[pe,pe]}},G={get size(){return g(this).setMap.size},has($){const ie=g(this);if(ie.setMap.has($))return!0;A(ie);const Z=g($);return!(!Z||!ie.setMap.has(Z.original))},add($){const ie=g(this);return this.has($)||(A(ie),D(ie),ie.assignedMap.set($,!0),ie.setMap.set($,$),L(ie,$,$,U)),this},delete($){if(!this.has($))return!1;const ie=g(this);A(ie),D(ie);const Z=g($);return Z&&ie.setMap.has(Z.original)?(ie.assignedMap.set(Z.original,!1),ie.setMap.delete(Z.original)):(!Z&&ie.setMap.has($)?ie.assignedMap.set($,!1):ie.assignedMap.delete($),ie.setMap.delete($))},clear(){if(!this.size)return;const $=g(this);A($),D($);for(const ie of $.original)$.assignedMap.set(ie,!1);$.setMap.clear()},values(){const $=g(this);A($);const ie=$.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:H($,ie,{isValuesIterator:!0})}},entries(){const $=g(this);A($);const ie=$.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:H($,ie,{isValuesIterator:!1})}},keys(){return this.values()},[n](){return this.values()},forEach($,ie){const Z=this.values();let re=Z.next();for(;!re.done;)$.call(ie,re.value,re.value,this),re=Z.next()}};Set.prototype.difference&&Object.assign(G,{intersection($){return Set.prototype.intersection.call(new Set(this.values()),$)},union($){return Set.prototype.union.call(new Set(this.values()),$)},difference($){return Set.prototype.difference.call(new Set(this.values()),$)},symmetricDifference($){return Set.prototype.symmetricDifference.call(new Set(this.values()),$)},isSubsetOf($){return Set.prototype.isSubsetOf.call(new Set(this.values()),$)},isSupersetOf($){return Set.prototype.isSupersetOf.call(new Set(this.values()),$)},isDisjointFrom($){return Set.prototype.isDisjointFrom.call(new Set(this.values()),$)}});const z=Reflect.ownKeys(G),W={get($,ie,Z){var re,oe;const ce=(re=$.copy)===null||re===void 0?void 0:re[ie];if(ce&&$.finalities.draftsCache.has(ce))return ce;if(ie===t)return $;let ue;if($.options.mark){const fe=ie==="size"&&($.original instanceof Map||$.original instanceof Set)?Reflect.get($.original,ie):Reflect.get($.original,ie,Z);if(ue=$.options.mark(fe,i),ue===i.mutable)return $.options.strict&&N(fe,$.options,!0),fe}const pe=y($);if(pe instanceof Map&&j.includes(ie))return ie==="size"?Object.getOwnPropertyDescriptor(k,"size").get.call($.proxy):k[ie].bind($.proxy);if(pe instanceof Set&&z.includes(ie))return ie==="size"?Object.getOwnPropertyDescriptor(G,"size").get.call($.proxy):G[ie].bind($.proxy);if(!o(pe,ie)){const fe=s(pe,ie);return fe?"value"in fe?fe.value:(oe=fe.get)===null||oe===void 0?void 0:oe.call($.proxy):void 0}const he=pe[ie];if($.options.strict&&N(he,$.options),$.finalized||!d(he,$.options))return he;if(he===b($.original,ie)){if(A($),$.copy[ie]=X({original:$.original[ie],parentDraft:$,key:$.type===1?Number(ie):ie,finalities:$.finalities,options:$.options}),typeof ue=="function"){const fe=g($.copy[ie]);return A(fe),D(fe),fe.copy}return $.copy[ie]}return _(he)&&$.finalities.draftsCache.add(he),he},set($,ie,Z){var re;if($.type===3||$.type===2)throw new Error("Map/Set draft does not support any property assignment.");let oe;if($.type===1&&ie!=="length"&&(!(Number.isInteger(oe=Number(ie))&&oe>=0)||ie!==0&&oe!==0&&String(oe)!==String(ie)))throw new Error("Only supports setting array indices and the 'length' property.");const ce=s(y($),ie);if(ce?.set)return ce.set.call($.proxy,Z),!0;const ue=b(y($),ie),pe=g(ue);return pe&&P(pe.original,Z)?($.copy[ie]=Z,$.assignedMap=(re=$.assignedMap)!==null&&re!==void 0?re:new Map,$.assignedMap.set(ie,!1),!0):(P(Z,ue)&&(Z!==void 0||o($.original,ie))||(A($),D($),o($.original,ie)&&P(Z,$.original[ie])?$.assignedMap.delete(ie):$.assignedMap.set(ie,!0),$.copy[ie]=Z,L($,ie,Z,U)),!0)},has:($,ie)=>ie in y($),ownKeys:$=>Reflect.ownKeys(y($)),getOwnPropertyDescriptor($,ie){const Z=y($),re=Reflect.getOwnPropertyDescriptor(Z,ie);return re&&{writable:!0,configurable:$.type!==1||ie!=="length",enumerable:re.enumerable,value:Z[ie]}},getPrototypeOf:$=>Reflect.getPrototypeOf($.original),setPrototypeOf(){throw new Error("Cannot call 'setPrototypeOf()' on drafts")},defineProperty(){throw new Error("Cannot call 'defineProperty()' on drafts")},deleteProperty($,ie){var Z;return $.type===1?W.set.call(this,$,ie,void 0,$.proxy):(b($.original,ie)!==void 0||ie in $.original?(A($),D($),$.assignedMap.set(ie,!1)):($.assignedMap=(Z=$.assignedMap)!==null&&Z!==void 0?Z:new Map,$.assignedMap.delete(ie)),$.copy&&delete $.copy[ie],!0)}};function X($){const{original:ie,parentDraft:Z,key:re,finalities:oe,options:ce}=$,ue=u(ie),pe={type:ue,finalized:!1,parent:Z,original:ie,copy:null,proxy:null,finalities:oe,options:ce,setMap:ue===3?new Map(ie.entries()):void 0};(re||"key"in $)&&(pe.key=re);const{proxy:he,revoke:fe}=Proxy.revocable(ue===1?Object.assign([],pe):pe,W);if(oe.revoke.push(fe),pe.proxy=he,Z){const de=Z;de.finalities.draft.push(((ge,Ce)=>{var ve;const le=g(he);let me=de.type===3?de.setMap:de.copy;const ee=m(me,re),se=g(ee);if(se){let ye=se.original;se.operated&&(ye=a(ee)),O(se),F(se,U,ge,Ce),v(me,re,ye)}
15(ve=le.callbacks)===null||ve===void 0||ve.forEach((ye=>{ye(ge,Ce)}))}))}else{const de=g(he);de.finalities.draft.push(((ge,Ce)=>{O(de),F(de,U,ge,Ce)}))}return he}function Y($,ie,Z,re,oe){var ce;const ue=g($),pe=(ce=ue?.original)!==null&&ce!==void 0?ce:$,he=!!ie.length;if(ue?.operated)for(;ue.finalities.draft.length>0;)ue.finalities.draft.pop()(Z,re);const fe=he?ie[0]:ue?ue.operated?ue.copy:ue.original:$;return ue&&C(ue),oe&&E(fe,0,ue==null||ue.options.updatedValues),[fe,Z&&he?[{op:e.Replace,path:[],value:ie[0]}]:Z,re&&he?[{op:e.Replace,path:[],value:pe}]:re]}function K($){const{rootDraft:ie,value:Z,useRawReturn:re=!1,isRoot:oe=!0}=$;I(Z,((ce,ue,pe)=>{const he=g(ue);if(he&&ie&&he.finalities===ie.finalities){$.isContainDraft=!0;const fe=he.original;if(pe instanceof Set){const de=Array.from(pe);pe.clear(),de.forEach((ge=>pe.add(ce===ge?fe:ge)))}else v(pe,ce,fe)}else typeof ue=="object"&&ue!==null&&($.value=ue,$.isRoot=!1,K($))}))}function Q($){var ie;const Z=g($);if(!d($,Z?.options))return $;const re=u($);if(Z&&!Z.operated)return Z.original;let oe;function ce(){oe=re===2?f($)?new Map($):new(Object.getPrototypeOf($)).constructor($):re===3?Array.from(Z.setMap.values()):T($,Z?.options)}if(Z){Z.finalized=!0;try{ce()}finally{Z.finalized=!1}}else oe=$;if(I(oe,((ue,pe)=>{if(Z&&P(m(Z.original,ue),pe))return;const he=Q(pe);he!==pe&&(oe===$&&ce(),v(oe,ue,he))})),re===3){const ue=(ie=Z?.original)!==null&&ie!==void 0?ie:oe;return h(ue)?new Set(oe):new(Object.getPrototypeOf(ue)).constructor(oe)}return oe}function J($){if(!_($))throw new Error(`current() is only used for Draft, parameter: ${$}`);return Q($)}c.createDraft=X;const ae=$=>function ie(Z,re,oe){var ce,ue,pe;if(typeof Z=="function"&&typeof re!="function")return function(Ae,..._e){return ie(Ae,(be=>Z.call(this,be,..._e)),re)};const he=Z,fe=re;let de=oe;typeof re!="function"&&(de=re),de=Object.assign(Object.assign({},$),de);const ge=_(he)?J(he):he,Ce=Array.isArray(de.mark)?(Ae,_e)=>{for(const be of de.mark){const xe=be(Ae,_e);if(xe)return xe}}:de.mark,ve=(ce=de.enablePatches)!==null&&ce!==void 0&&ce,le=(ue=de.strict)!==null&&ue!==void 0&&ue,me={enableAutoFreeze:(pe=de.enableAutoFreeze)!==null&&pe!==void 0&&pe,mark:Ce,strict:le,enablePatches:ve};if(!d(ge,me)&&typeof ge=="object"&&ge!==null)throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");const[ee,se]=(function(Ae,_e){var be;const xe={draft:[],revoke:[],handledSet:new WeakSet,draftsCache:new WeakSet};let we,Be;_e.enablePatches&&(we=[],Be=[]);const Me=((be=_e.mark)===null||be===void 0?void 0:be.call(_e,Ae,i))!==i.mutable&&d(Ae,_e)?X({original:Ae,parentDraft:null,finalities:xe,options:_e}):Ae;return[Me,(Re=[])=>{const[Te,Ve,qe]=Y(Me,Re,we,Be,_e.enableAutoFreeze);return _e.enablePatches?[Te,Ve,qe]:Te}]})(ge,me);if(typeof re!="function"){if(!d(ge,me))throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");return[ee,se]}let ye;try{ye=fe(ee)}catch(Ae){throw C(g(ee)),Ae}const Se=Ae=>{const _e=g(ee);if(!_(Ae)){if(Ae!==void 0&&!P(Ae,ee)&&_e?.operated)throw new Error("Either the value is returned as a new non-draft value, or only the draft is modified without returning any value.");const xe=Ae?.[r];if(xe){const we=xe[0];return me.strict&&typeof Ae=="object"&&Ae!==null&&K({rootDraft:_e,value:Ae,useRawReturn:!0}),se([we])}if(Ae!==void 0)return typeof Ae=="object"&&Ae!==null&&K({rootDraft:_e,value:Ae}),se([Ae])}if(Ae===ee||Ae===void 0)return se([]);const be=g(Ae);if(me===be.options){if(be.operated)throw new Error("Cannot return a modified child draft.");return se([J(Ae)])}return se([Ae])};return ye instanceof Promise?ye.then(Se,(Ae=>{throw C(g(ee)),Ae})):Se(ye)},te=ae(),ne=Object.prototype.constructor.toString();return Un.apply=function($,ie,Z){let re;for(re=ie.length-1;re>=0;re-=1){const{value:ce,op:ue,path:pe}=ie[re];if(!pe.length&&ue===e.Replace||pe===""&&ue===e.Add){$=ce;break}}re>-1&&(ie=ie.slice(re+1));const oe=ce=>{ie.forEach((ue=>{const{path:pe,op:he}=ue,fe=(function(le){return Array.isArray(le)?le:le.split("/").map((me=>me.replace(/~1/g,"/").replace(/~0/g,"~"))).slice(1)})(pe);let de=ce;for(let le=0;le<fe.length-1;le+=1){const me=u(de);let ee=fe[le];if(typeof ee!="string"&&typeof ee!="number"&&(ee=String(ee)),(me===0||me===1)&&(ee==="__proto__"||ee==="constructor")||typeof de=="function"&&ee==="prototype")throw new Error("Patching reserved attributes like __proto__ and constructor is not allowed.");if(de=m(me===3?Array.from(de):de,ee),typeof de!="object")throw new Error(`Cannot apply patch at '${fe.join("/")}'.`)}const ge=u(de),Ce=x(ue.value),ve=fe[fe.length-1];switch(he){case e.Replace:switch(ge){case 2:return de.set(ve,Ce);case 3:throw new Error("Cannot apply replace patch to set.");default:return de[ve]=Ce}case e.Add:switch(ge){case 1:return ve==="-"?de.push(Ce):de.splice(ve,0,Ce);case 2:return de.set(ve,Ce);case 3:return de.add(Ce);default:return de[ve]=Ce}case e.Remove:switch(ge){case 1:return de.splice(ve,1);case 2:return de.delete(ve);case 3:return de.delete(ue.value);default:return delete de[ve]}default:throw new Error(`Unsupported patch operation: ${he}.`)}}))};if(!Z?.mutable){if(_($)){if(Z!==void 0)throw new Error("Cannot apply patches with options to a draft.");return oe($),$}return te($,oe,Object.assign(Object.assign({},Z),{enablePatches:!1}))}oe($)},Un.castDraft=function($){return $},Un.castImmutable=function($){return $},Un.castMutable=function($){return $},Un.create=te,Un.current=J,Un.isDraft=_,Un.isDraftable=d,Un.makeCreator=ae,Un.markSimpleObject=$=>{if((ie=>{if(!ie||typeof ie!="object")return!1;const Z=Object.getPrototypeOf(ie);if(Z===null)return!0;const re=Object.hasOwnProperty.call(Z,"constructor")&&Z.constructor;return re===Object||typeof re=="function"&&Function.toString.call(re)===ne})($))return i.immutable},Un.original=function($){const ie=g($);if(!ie)throw new Error(`original() is only used for a draft, parameter: ${$}`);return ie.original},Un.rawReturn=function($){if(arguments.length===0)throw new Error("rawReturn() must be called with a value.");if(arguments.length>1)throw new Error("rawReturn() must be called with one argument.");return{[r]:[$]}},Un.unsafe=function($){let ie;q=!0;try{ie=$()}finally{q=!1}return ie},Un}var $k;function Xte(){return $k||($k=1,wx.exports=$te()),wx.exports}var Xk;function Lf(){if(Xk)return eP;
15Xk=1,Object.defineProperty(eP,"__esModule",{value:!0}),eP.produce=t;const e=Xte();function t(r,n){return typeof r=="object"&&!("prototype"in r)?(0,e.create)({...r},n):(0,e.create)(r,n)}return eP}var Rc={},dh={},fh={},mh={},Kk;function or(){if(Kk)return mh;Kk=1,Object.defineProperty(mh,"__esModule",{value:!0}),mh.isFunction=void 0;function e(t){return typeof t=="function"}return mh.isFunction=e,mh}var jn={},ph={},hh={},Yk;function El(){if(Yk)return hh;Yk=1,Object.defineProperty(hh,"__esModule",{value:!0}),hh.createErrorClass=void 0;function e(t){var r=function(i){Error.call(i),i.stack=new Error().stack},n=t(r);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}return hh.createErrorClass=e,hh}var Qk;function oK(){if(Qk)return ph;Qk=1,Object.defineProperty(ph,"__esModule",{value:!0}),ph.UnsubscriptionError=void 0;var e=El();return ph.UnsubscriptionError=e.createErrorClass(function(t){return function(n){t(this),this.message=n?n.length+` errors occurred during unsubscription: 16`+n.map(function(i,c){return c+1+") "+i.toString()}).join(` 17 `):"",this.name="UnsubscriptionError",this.errors=n}}),ph}var gh={},Zk;function Ys(){if(Zk)return gh;Zk=1,Object.defineProperty(gh,"__esModule",{value:!0}),gh.arrRemove=void 0;function e(t,r){if(t){var n=t.indexOf(r);0<=n&&t.splice(n,1)}}return gh.arrRemove=e,gh}var Jk;function Ji(){if(Jk)return jn;Jk=1;var e=jn&&jn.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")},t=jn&&jn.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},r=jn&&jn.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(jn,"__esModule",{value:!0}),jn.isSubscription=jn.EMPTY_SUBSCRIPTION=jn.Subscription=void 0;var n=or(),i=oK(),c=Ys(),o=(function(){function f(y){this.initialTeardown=y,this.closed=!1,this._parentage=null,this._finalizers=null}return f.prototype.unsubscribe=function(){var y,_,g,a,d;if(!this.closed){this.closed=!0;var p=this._parentage;if(p)if(this._parentage=null,Array.isArray(p))try{for(var u=e(p),m=u.next();!m.done;m=u.next()){var v=m.value;v.remove(this)}}catch(T){y={error:T}}finally{try{m&&!m.done&&(_=u.return)&&_.call(u)}finally{if(y)throw y.error}}else p.remove(this);var b=this.initialTeardown;if(n.isFunction(b))try{b()}catch(T){d=T instanceof i.UnsubscriptionError?T.errors:[T]}var P=this._finalizers;if(P){this._finalizers=null;try{for(var C=e(P),l=C.next();!l.done;l=C.next()){var S=l.value;try{h(S)}catch(T){d=d??[],T instanceof i.UnsubscriptionError?d=r(r([],t(d)),t(T.errors)):d.push(T)}}}catch(T){g={error:T}}finally{try{l&&!l.done&&(a=C.return)&&a.call(C)}finally{if(g)throw g.error}}}if(d)throw new i.UnsubscriptionError(d)}},f.prototype.add=function(y){var _;if(y&&y!==this)if(this.closed)h(y);else{if(y instanceof f){if(y.closed||y._hasParent(this))return;y._addParent(this)}(this._finalizers=(_=this._finalizers)!==null&&_!==void 0?_:[]).push(y)}},f.prototype._hasParent=function(y){var _=this._parentage;return _===y||Array.isArray(_)&&_.includes(y)},f.prototype._addParent=function(y){var _=this._parentage;this._parentage=Array.isArray(_)?(_.push(y),_):_?[_,y]:y},f.prototype._removeParent=function(y){var _=this._parentage;_===y?this._parentage=null:Array.isArray(_)&&c.arrRemove(_,y)},f.prototype.remove=function(y){var _=this._finalizers;_&&c.arrRemove(_,y),y instanceof f&&y._removeParent(this)},f.EMPTY=(function(){var y=new f;return y.closed=!0,y})(),f})();jn.Subscription=o,jn.EMPTY_SUBSCRIPTION=o.EMPTY;function s(f){return f instanceof o||f&&"closed"in f&&n.isFunction(f.remove)&&n.isFunction(f.add)&&n.isFunction(f.unsubscribe)}jn.isSubscription=s;function h(f){n.isFunction(f)?f():f.unsubscribe()}return jn}var yh={},eF;function yS(){return eF||(eF=1,Object.defineProperty(yh,"__esModule",{value:!0}),yh.config=void 0,yh.config={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNext
17Context:!1}),yh}var vh={},Oc={},tF;function sK(){return tF||(tF=1,(function(e){var t=Oc&&Oc.__read||function(n,i){var c=typeof Symbol=="function"&&n[Symbol.iterator];if(!c)return n;var o=c.call(n),s,h=[],f;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)h.push(s.value)}catch(y){f={error:y}}finally{try{s&&!s.done&&(c=o.return)&&c.call(o)}finally{if(f)throw f.error}}return h},r=Oc&&Oc.__spreadArray||function(n,i){for(var c=0,o=i.length,s=n.length;c<o;c++,s++)n[s]=i[c];return n};Object.defineProperty(e,"__esModule",{value:!0}),e.timeoutProvider=void 0,e.timeoutProvider={setTimeout:function(n,i){for(var c=[],o=2;o<arguments.length;o++)c[o-2]=arguments[o];var s=e.timeoutProvider.delegate;return s?.setTimeout?s.setTimeout.apply(s,r([n,i],t(c))):setTimeout.apply(void 0,r([n,i],t(c)))},clearTimeout:function(n){var i=e.timeoutProvider.delegate;return(i?.clearTimeout||clearTimeout)(n)},delegate:void 0}})(Oc)),Oc}var rF;function cK(){if(rF)return vh;rF=1,Object.defineProperty(vh,"__esModule",{value:!0}),vh.reportUnhandledError=void 0;var e=yS(),t=sK();function r(n){t.timeoutProvider.setTimeout(function(){var i=e.config.onUnhandledError;if(i)i(n);else throw n})}return vh.reportUnhandledError=r,vh}var bh={},nF;function Vn(){if(nF)return bh;nF=1,Object.defineProperty(bh,"__esModule",{value:!0}),bh.noop=void 0;function e(){}return bh.noop=e,bh}var sa={},iF;function Kte(){if(iF)return sa;iF=1,Object.defineProperty(sa,"__esModule",{value:!0}),sa.createNotification=sa.nextNotification=sa.errorNotification=sa.COMPLETE_NOTIFICATION=void 0,sa.COMPLETE_NOTIFICATION=(function(){return r("C",void 0,void 0)})();function e(n){return r("E",void 0,n)}sa.errorNotification=e;function t(n){return r("N",n,void 0)}sa.nextNotification=t;function r(n,i,c){return{kind:n,value:i,error:c}}return sa.createNotification=r,sa}var kc={},aF;function HI(){if(aF)return kc;aF=1,Object.defineProperty(kc,"__esModule",{value:!0}),kc.captureError=kc.errorContext=void 0;var e=yS(),t=null;function r(i){if(e.config.useDeprecatedSynchronousErrorHandling){var c=!t;if(c&&(t={errorThrown:!1,error:null}),i(),c){var o=t,s=o.errorThrown,h=o.error;if(t=null,s)throw h}}else i()}kc.errorContext=r;function n(i){e.config.useDeprecatedSynchronousErrorHandling&&t&&(t.errorThrown=!0,t.error=i)}return kc.captureError=n,kc}var oF;function vS(){return oF||(oF=1,(function(e){var t=fh&&fh.__extends||(function(){var v=function(b,P){return v=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,l){C.__proto__=l}||function(C,l){for(var S in l)Object.prototype.hasOwnProperty.call(l,S)&&
17(C[S]=l[S])},v(b,P)};return function(b,P){if(typeof P!="function"&&P!==null)throw new TypeError("Class extends value "+String(P)+" is not a constructor or null");v(b,P);function C(){this.constructor=b}b.prototype=P===null?Object.create(P):(C.prototype=P.prototype,new C)}})();Object.defineProperty(e,"__esModule",{value:!0}),e.EMPTY_OBSERVER=e.SafeSubscriber=e.Subscriber=void 0;var r=or(),n=Ji(),i=yS(),c=cK(),o=Vn(),s=Kte(),h=sK(),f=HI(),y=(function(v){t(b,v);function b(P){var C=v.call(this)||this;return C.isStopped=!1,P?(C.destination=P,n.isSubscription(P)&&P.add(C)):C.destination=e.EMPTY_OBSERVER,C}return b.create=function(P,C,l){return new d(P,C,l)},b.prototype.next=function(P){this.isStopped?m(s.nextNotification(P),this):this._next(P)},b.prototype.error=function(P){this.isStopped?m(s.errorNotification(P),this):(this.isStopped=!0,this._error(P))},b.prototype.complete=function(){this.isStopped?m(s.COMPLETE_NOTIFICATION,this):(this.isStopped=!0,this._complete())},b.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,v.prototype.unsubscribe.call(this),this.destination=null)},b.prototype._next=function(P){this.destination.next(P)},b.prototype._error=function(P){try{this.destination.error(P)}finally{this.unsubscribe()}},b.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},b})(n.Subscription);e.Subscriber=y;var _=Function.prototype.bind;function g(v,b){return _.call(v,b)}var a=(function(){function v(b){this.partialObserver=b}return v.prototype.next=function(b){var P=this.partialObserver;if(P.next)try{P.next(b)}catch(C){p(C)}},v.prototype.error=function(b){var P=this.partialObserver;if(P.error)try{P.error(b)}catch(C){p(C)}else p(b)},v.prototype.complete=function(){var b=this.partialObserver;if(b.complete)try{b.complete()}catch(P){p(P)}},v})(),d=(function(v){t(b,v);function b(P,C,l){var S=v.call(this)||this,T;if(r.isFunction(P)||!P)T={next:P??void 0,error:C??void 0,complete:l??void 0};else{var A;S&&i.config.useDeprecatedNextContext?(A=Object.create(P),A.unsubscribe=function(){return S.unsubscribe()},T={next:P.next&&g(P.next,A),error:P.error&&g(P.error,A),complete:P.complete&&g(P.complete,A)}):T=P}return S.destination=new a(T),S}return b})(y);e.SafeSubscriber=d;function p(v){i.config.useDeprecatedSynchronousErrorHandling?f.captureError(v):c.reportUnhandledError(v)}function u(v){throw v}function m(v,b){var P=i.config.onStoppedNotification;P&&h.timeoutProvider.setTimeout(function(){return P(v,b)})}e.EMPTY_OBSERVER={closed:!0,next:o.noop,error:u,complete:o.noop}})(fh)),fh}var _h={},sF;function KT(){return sF||(sF=1,Object.defineProperty(_h,"__esModule",{value:!0}),_h.observable=void 0,_h.observable=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})()),_h}var Fc={},Sh={},cF;function En(){if(cF)return Sh;cF=1,Object.defineProperty(Sh,"__esModule",{value:!0}),Sh.identity=void 0;function e(t){return t}return Sh.identity=e,Sh}var uF;function YT(){if(uF)return Fc;uF=1,Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.pipeFromArray=Fc.pipe=void 0;var e=En();function t(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];return r(n)}Fc.pipe=t;function r(n){return n.length===0?e.identity:n.length===1?n[0]:function(c){return n.reduce(function(o,s){return s(o)},c)}}return Fc.pipeFromArray=r,Fc}var lF;function fr(){if(lF)return dh;lF=1,Object.defineProperty(dh,"__esModule",{value:!0}),dh.Observable=void 0;var e=vS(),t=Ji(),r=KT(),n=YT(),i=yS(),c=or(),o=HI(),s=(function(){function _(g){g&&(this._subscribe=g)}return _.prototype.lift=function(g){var a=new _;return a.source=this,a.operator=g,a},_.prototype.subscribe=function(g,a,d){var p=this,u=y(g)?g:new e.SafeSubscriber(g,a,d);return o.errorContext(function(){var m=p,v=m.operator,b=m.source;u.add(v?v.call(u,b):b?p._subscribe(u):p._trySubscribe(u))}),u},_.prototype._trySubscribe=function(g){try{return this._subscribe(g)}catch(a){g.error(a)}},_.prototype.forEach=function(g,a){var d=this;return a=h(a),new a(function(p,u){var m=new e.SafeSubscriber({next:function(v){try{g(v)}catch(b){u(b),m.unsubscribe()}},error:u,complete:p});d.subscribe(m)})},_.prototype._subscribe=function(g){var a;return(a=this.source)===null||a===void 0?void 0:a.subscribe(g)},_.prototype[r.observable]=function(){return this},_.prototype.pipe=function(){for(var g=[],a=0;a<arguments.length;a++)g[a]=arguments[a];return n.pipeFromArray(g)(this)},_.prototype.toPromise=function(g){var a=this;return g=h(g),new g(function(d,p){var u;a.subscribe(function(m){return u=m},function(m){return p(m)},function(){return d(u)})})},_.create=function(g){return new _(g)},_})();dh.Observable=s;function h(_){var g;return(g=_??i.config.Promise)!==null&&g!==void 0?g:Promise}function f(_){return _&&c.isFunction(_.next)&&c.isFunction(_.error)&&c.isFunction(_.complete)}function y(_){return _&&_ instanceof e.Subscriber||f(_)&&t.isSubscription(_)}return dh}var Lc={},Ch={},Nc={},dF;function ft(){if(dF)return Nc;dF=1,Object.defineProperty(Nc,"__esModule",{value:!0}),Nc.operate=Nc.hasLift=void 0;var e=or();function t(n){return e.isFunction(n?.lift)}Nc.hasLift=t;function r(n){return function(i){if(t(i))return i.lift(function(c){try{return n(c,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}return Nc.operate=r,Nc}var Co={},fF;function bt(){if(fF)return Co;fF=1;
17var e=Co&&Co.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(Co,"__esModule",{value:!0}),Co.OperatorSubscriber=Co.createOperatorSubscriber=void 0;var t=vS();function r(i,c,o,s,h){return new n(i,c,o,s,h)}Co.createOperatorSubscriber=r;var n=(function(i){e(c,i);function c(o,s,h,f,y,_){var g=i.call(this,o)||this;return g.onFinalize=y,g.shouldUnsubscribe=_,g._next=s?function(a){try{s(a)}catch(d){o.error(d)}}:i.prototype._next,g._error=f?function(a){try{f(a)}catch(d){o.error(d)}finally{this.unsubscribe()}}:i.prototype._error,g._complete=h?function(){try{h()}catch(a){o.error(a)}finally{this.unsubscribe()}}:i.prototype._complete,g}return c.prototype.unsubscribe=function(){var o;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;i.prototype.unsubscribe.call(this),!s&&((o=this.onFinalize)===null||o===void 0||o.call(this))}},c})(t.Subscriber);return Co.OperatorSubscriber=n,Co}var mF;function WI(){if(mF)return Ch;mF=1,Object.defineProperty(Ch,"__esModule",{value:!0}),Ch.refCount=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){var c=null;n._refCount++;var o=t.createOperatorSubscriber(i,void 0,void 0,void 0,function(){if(!n||n._refCount<=0||0<--n._refCount){c=null;return}var s=n._connection,h=c;c=null,s&&(!h||s===h)&&s.unsubscribe(),i.unsubscribe()});n.subscribe(o),o.closed||(c=n.connect())})}return Ch.refCount=r,Ch}var pF;function QT(){if(pF)return Lc;pF=1;var e=Lc&&Lc.__extends||(function(){var s=function(h,f){return s=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,_){y.__proto__=_}||function(y,_){for(var g in _)Object.prototype.hasOwnProperty.call(_,g)&&(y[g]=_[g])},s(h,f)};return function(h,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");s(h,f);function y(){this.constructor=h}h.prototype=f===null?Object.create(f):(y.prototype=f.prototype,new y)}})();Object.defineProperty(Lc,"__esModule",{value:!0}),Lc.ConnectableObservable=void 0;var t=fr(),r=Ji(),n=WI(),i=bt(),c=ft(),o=(function(s){e(h,s);function h(f,y){var _=s.call(this)||this;return _.source=f,_.subjectFactory=y,_._subject=null,_._refCount=0,_._connection=null,c.hasLift(f)&&(_.lift=f.lift),_}return h.prototype._subscribe=function(f){return this.getSubject().subscribe(f)},h.prototype.getSubject=function(){var f=this._subject;return(!f||f.isStopped)&&(this._subject=this.subjectFactory()),this._subject},h.prototype._teardown=function(){this._refCount=0;var f=this._connection;this._subject=this._connection=null,f?.unsubscribe()},h.prototype.connect=function(){var f=this,y=this._connection;if(!y){y=this._connection=new r.Subscription;var _=this.getSubject();y.add(this.source.subscribe(i.createOperatorSubscriber(_,void 0,function(){f._teardown(),_.complete()},function(g){f._teardown(),_.error(g)},function(){return f._teardown()}))),y.closed&&(this._connection=null,y=r.Subscription.EMPTY)}return y},h.prototype.refCount=function(){return n.refCount()(this)},h})(t.Observable);return Lc.ConnectableObservable=o,Lc}var Ph={},Vx={},hF;function Yte(){return hF||(hF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.performanceTimestampProvider=void 0,e.performanceTimestampProvider={now:function(){return(e.performanceTimestampProvider.delegate||performance).now()},delegate:void 0}})(Vx)),Vx}var qc={},gF;function uK(){return gF||(gF=1,(function(e){var t=qc&&qc.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},r=qc&&qc.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(e,"__esModule",{value:!0}),e.animationFrameProvider=void 0;var n=Ji();e.animationFrameProvider={schedule:function(i){var c=requestAnimationFrame,o=cancelAnimationFrame,s=e.animationFrameProvider.delegate;s&&(c=s.requestAnimationFrame,o=s.cancelAnimationFrame);var h=c(function(f){o=void 0,i(f)});return new n.Subscription(function(){return o?.(h)})},requestAnimationFrame:function(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=e.animationFrameProvider.delegate;return(o?.requestAnimationFrame||requestAnimationFrame).apply(void 0,r([],t(i)))},cancelAnimationFrame:function(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=e.animationFrameProvider.delegate;return(o?.cancelAnimationFrame||cancelAnimationFrame).apply(void 0,r([],t(i)))},delegate:void 0}})(qc)),qc}var yF;function Qte(){if(yF)return Ph;yF=1,Object.defineProperty(Ph,"__esModule",{value:!0}),Ph.animationFrames=void 0;var e=fr(),t=Yte(),r=uK();function n(o){return o?i(o):c}Ph.animationFrames=n;function i(o){return new e.Observable(function(s){var h=o||t.performanceTimestampProvider,f=h.now(),y=0,_=function(){s.closed||(y=r.animationFrameProvider.requestAnimationFrame(function(g){y=0;var a=h.now();s.next({timestamp:o?a:g,elapsed:a-f}),_()}))};return _(),function(){y&&r.animationFrameProvider.cancelAnimationFrame(y)}})}var c=i();return Ph}var ca={},Th={},vF;function lK(){if(vF)return Th;vF=1,Object.defineProperty(Th,"__esModule",{value:!0}),Th.ObjectUnsubscribedError=void 0;var e=El();return Th.ObjectUnsubscribedError=e.createErrorClass(function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),Th}var bF;function Bn(){if(bF)return ca;bF=1;var e=ca&&ca.__extends||(function(){var f=function(y,_){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,a){g.__proto__=a}||function(g,a){for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(g[d]=a[d])},f(y,_)};return function(y,_){if(typeof _!="function"&&_!==null)throw new TypeError("Class extends value "+String(_)+" is not a constructor or null");f(y,_);function g(){this.constructor=y}
17y.prototype=_===null?Object.create(_):(g.prototype=_.prototype,new g)}})(),t=ca&&ca.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(ca,"__esModule",{value:!0}),ca.AnonymousSubject=ca.Subject=void 0;var r=fr(),n=Ji(),i=lK(),c=Ys(),o=HI(),s=(function(f){e(y,f);function y(){var _=f.call(this)||this;return _.closed=!1,_.currentObservers=null,_.observers=[],_.isStopped=!1,_.hasError=!1,_.thrownError=null,_}return y.prototype.lift=function(_){var g=new h(this,this);return g.operator=_,g},y.prototype._throwIfClosed=function(){if(this.closed)throw new i.ObjectUnsubscribedError},y.prototype.next=function(_){var g=this;o.errorContext(function(){var a,d;if(g._throwIfClosed(),!g.isStopped){g.currentObservers||(g.currentObservers=Array.from(g.observers));try{for(var p=t(g.currentObservers),u=p.next();!u.done;u=p.next()){var m=u.value;m.next(_)}}catch(v){a={error:v}}finally{try{u&&!u.done&&(d=p.return)&&d.call(p)}finally{if(a)throw a.error}}}})},y.prototype.error=function(_){var g=this;o.errorContext(function(){if(g._throwIfClosed(),!g.isStopped){g.hasError=g.isStopped=!0,g.thrownError=_;for(var a=g.observers;a.length;)a.shift().error(_)}})},y.prototype.complete=function(){var _=this;o.errorContext(function(){if(_._throwIfClosed(),!_.isStopped){_.isStopped=!0;for(var g=_.observers;g.length;)g.shift().complete()}})},y.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(y.prototype,"observed",{get:function(){var _;return((_=this.observers)===null||_===void 0?void 0:_.length)>0},enumerable:!1,configurable:!0}),y.prototype._trySubscribe=function(_){return this._throwIfClosed(),f.prototype._trySubscribe.call(this,_)},y.prototype._subscribe=function(_){return this._throwIfClosed(),this._checkFinalizedStatuses(_),this._innerSubscribe(_)},y.prototype._innerSubscribe=function(_){var g=this,a=this,d=a.hasError,p=a.isStopped,u=a.observers;return d||p?n.EMPTY_SUBSCRIPTION:(this.currentObservers=null,u.push(_),new n.Subscription(function(){g.currentObservers=null,c.arrRemove(u,_)}))},y.prototype._checkFinalizedStatuses=function(_){var g=this,a=g.hasError,d=g.thrownError,p=g.isStopped;a?_.error(d):p&&_.complete()},y.prototype.asObservable=function(){var _=new r.Observable;return _.source=this,_},y.create=function(_,g){return new h(_,g)},y})(r.Observable);ca.Subject=s;var h=(function(f){e(y,f);function y(_,g){var a=f.call(this)||this;return a.destination=_,a.source=g,a}return y.prototype.next=function(_){var g,a;(a=(g=this.destination)===null||g===void 0?void 0:g.next)===null||a===void 0||a.call(g,_)},y.prototype.error=function(_){var g,a;(a=(g=this.destination)===null||g===void 0?void 0:g.error)===null||a===void 0||a.call(g,_)},y.prototype.complete=function(){var _,g;(g=(_=this.destination)===null||_===void 0?void 0:_.complete)===null||g===void 0||g.call(_)},y.prototype._subscribe=function(_){var g,a;return(a=(g=this.source)===null||g===void 0?void 0:g.subscribe(_))!==null&&a!==void 0?a:n.EMPTY_SUBSCRIPTION},y})(s);return ca.AnonymousSubject=h,ca}var Uc={},_F;function dK(){if(_F)return Uc;_F=1;var e=Uc&&Uc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.BehaviorSubject=void 0;var t=Bn(),r=(function(n){e(i,n);function i(c){var o=n.call(this)||this;return o._value=c,o}return Object.defineProperty(i.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),i.prototype._subscribe=function(c){var o=n.prototype._subscribe.call(this,c);return!o.closed&&c.next(this._value),o},i.prototype.getValue=function(){var c=this,o=c.hasError,s=c.thrownError,h=c._value;if(o)throw s;return this._throwIfClosed(),h},i.prototype.next=function(c){n.prototype.next.call(this,this._value=c)},i})(t.Subject);return Uc.BehaviorSubject=r,Uc}var jc={},Ex={},SF;function $I(){return SF||(SF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.dateTimestampProvider=void 0,e.dateTimestampProvider={now:function(){return(e.dateTimestampProvider.delegate||Date).now()},delegate:void 0}})(Ex)),Ex}var CF;function XI(){if(CF)return jc;CF=1;var e=jc&&jc.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(jc,"__esModule",{value:!0}),jc.ReplaySubject=void 0;var t=Bn(),r=$I(),n=(function(i){e(c,i);function c(o,s,h){o===void 0&&(o=1/0),s===void 0&&(s=1/0),h===void 0&&(h=r.dateTimestampProvider);var f=i.call(this)||this;return f._bufferSize=o,f._windowTime=s,f._timestampProvider=h,f._buffer=[],f._infiniteTimeWindow=!0,f._infiniteTimeWindow=s===1/0,f._bufferSize=Math.max(1,o),f._windowTime=Math.max(1,s),f}return c.prototype.next=function(o){var s=this,h=s.isStopped,f=s._buffer,y=s._infiniteTimeWindow,_=s._timestampProvider,g=s._windowTime;h||(f.push(o),!y&&f.push(_.now()+g)),this._trimBuffer(),i.prototype.next.call(this,o)},c.prototype._subscribe=function(o){this._throwIfClosed(),this._trimBuffer();for(var s=this._innerSubscribe(o),h=this,f=h._infiniteTimeWindow,y=h._buffer,_=y.slice(),g=0;g<_.length&&!o.closed;g+=f?1:2)o.next(_[g]);return this._checkFinalizedStatuses(o),s},c.prototype._trimBuffer=function(){var o=this,s=o._bufferSize,h=o._timestampProvider,f=o._buffer,y=o._infiniteTimeWindow,_=(y?1:2)*s;if(s<1/0&&_<f.length&&f.splice(0,f.length-_),!y){for(var g=h.now(),a=0,d=1;d<f.length&&f[d]<=g;d+=2)a=d;a&&f.splice(0,a+1)}},c})(t.Subject);return jc.ReplaySubject=n,jc}var Gc={},PF;function KI(){if(PF)return Gc;PF=1;var e=Gc&&Gc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Gc,"__esModule",{value:!0}),Gc.AsyncSubject=void 0;var t=Bn(),r=(function(n){e(i,n);function i(){var c=n!==null&&n.apply(this,arguments)||this;return c._value=null,c._hasValue=!1,c._isComplete=!1,c}return i.prototype._checkFinalizedStatuses=function(c){var o=this,s=o.hasError,h=o._hasValue,f=o._value,y=o.thrownError,_=o.isStopped,g=o._isComplete;s?c.error(y):(_||g)&&(h&&c.next(f),c.complete())},i.prototype.next=function(c){this.isStopped||(this._value=c,this._hasValue=!0)},i.prototype.complete=function(){var c=this,o=c._hasValue,s=c._value,h=c._isComplete;h||(this._isComplete=!0,o&&n.prototype.next.call(this,s),n.prototype.complete.call(this))},i})(t.Subject);return Gc.AsyncSubject=r,Gc}var Bx={},zc={},Hc={},Wc={},TF;function Zte(){if(TF)return Wc;TF=1;var e=Wc&&Wc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Wc,"__esModule",{value:!0}),Wc.Action=void 0;var t=Ji(),r=(function(n){e(i,n);function i(c,o){return n.call(this)||this}return i.prototype.schedule=function(c,o){return this},i})(t.Subscription);return Wc.Action=r,Wc}var $c={},xF;function Jte(){return xF||(xF=1,(function(e){var t=$c&&$c.__read||function(n,i){var c=typeof Symbol=="function"&&n[Symbol.iterator];if(!c)return n;var o=c.call(n),s,h=[],f;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)h.push(s.value)}catch(y){f={error:y}}finally{try{s&&!s.done&&(c=o.return)&&c.call(o)}finally{if(f)throw f.error}}return h},r=$c&&$c.__spreadArray||function(n,i){for(var c=0,o=i.length,s=n.length;c<o;c++,s++)n[s]=i[c];return n};Object.defineProperty(e,"__esModule",{value:!0}),e.intervalProvider=void 0,e.intervalProvider={setInterval:function(n,i){for(var c=[],o=2;o<arguments.length;o++)c[o-2]=arguments[o];var s=e.intervalProvider.delegate;return s?.setInterval?s.setInterval.apply(s,r([n,i],t(c))):setInterval.apply(void 0,r([n,i],t(c)))},clearInterval:function(n){var i=e.intervalProvider.delegate;return(i?.clearInterval||clearInterval)(n)},delegate:void 0}})($c)),$c}var AF;function bS(){if(AF)return Hc;AF=1;var e=Hc&&Hc.__extends||(function(){var c=function(o,s){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,f){h.__proto__=f}||function(h,f){for(var y in f)Object.prototype.hasOwnProperty.call(f,y)&&(h[y]=f[y])},c(o,s)};return function(o,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");c(o,s);function h(){this.constructor=o}o.prototype=s===null?Object.create(s):(h.prototype=s.prototype,new h)}})();Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.AsyncAction=void 0;var t=Zte(),r=Jte(),n=Ys(),i=(function(c){e(o,c);function o(s,h){var f=c.call(this,s,h)||this;return f.scheduler=s,f.work=h,f.pending=!1,f}return o.prototype.schedule=function(s,h){var f;if(h===void 0&&(h=0),this.closed)return this;this.state=s;var y=this.id,_=this.scheduler;return y!=null&&(this.id=this.recycleAsyncId(_,y,h)),this.pending=!0,this.delay=h,this.id=(f=this.id)!==null&&f!==void 0?f:this.requestAsyncId(_,this.id,h),this},o.prototype.requestAsyncId=function(s,h,f){return f===void 0&&(f=0),r.intervalProvider.setInterval(s.flush.bind(s,this),f)},o.prototype.recycleAsyncId=function(s,h,f){if(f===void 0&&(f=0),f!=null&&this.delay===f&&this.pending===!1)return h;h!=null&&r.intervalProvider.clearInterval(h)},o.prototype.execute=function(s,h){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var f=this._execute(s,h);if(f)return f;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},o.prototype._execute=function(s,h){var f=!1,y;try{this.work(s)}catch(_){f=!0,y=_||new Error("Scheduled action threw falsy error")}if(f)return this.unsubscribe(),y},o.prototype.unsubscribe=function(){if(!this.closed){var s=this,h=s.id,f=s.scheduler,y=f.actions;this.work=this.state=this.scheduler=null,this.pending=!1,n.arrRemove(y,this),h!=null&&(this.id=this.recycleAsyncId(f,h,null)),this.delay=null,c.prototype.unsubscribe.call(this)}},o})(t.Action);return Hc.AsyncAction=i,Hc}var Xc={},Kc={},MF;function ere(){if(MF)return Kc;MF=1,Object.defineProperty(Kc,"__esModule",{value:!0}),Kc.TestTools=Kc.Immediate=void 0;var e=1,t,r={};function n(i){return i in r?(delete r[i],!0):!1}return Kc.Immediate={setImmediate:function(i){var c=e++;return r[c]=!0,t||(t=Promise.resolve()),t.then(function(){return n(c)&&i()}),c},clearImmediate:function(i){n(i)}},Kc.TestTools={pending:function(){return Object.keys(r).length}},Kc}var DF;function tre(){return DF||(DF=1,(function(e){var t=Xc&&Xc.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},r=Xc&&Xc.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};
17Object.defineProperty(e,"__esModule",{value:!0}),e.immediateProvider=void 0;var n=ere(),i=n.Immediate.setImmediate,c=n.Immediate.clearImmediate;e.immediateProvider={setImmediate:function(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=e.immediateProvider.delegate;return(h?.setImmediate||i).apply(void 0,r([],t(o)))},clearImmediate:function(o){var s=e.immediateProvider.delegate;return(s?.clearImmediate||c)(o)},delegate:void 0}})(Xc)),Xc}var IF;function rre(){if(IF)return zc;IF=1;var e=zc&&zc.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(zc,"__esModule",{value:!0}),zc.AsapAction=void 0;var t=bS(),r=tre(),n=(function(i){e(c,i);function c(o,s){var h=i.call(this,o,s)||this;return h.scheduler=o,h.work=s,h}return c.prototype.requestAsyncId=function(o,s,h){return h===void 0&&(h=0),h!==null&&h>0?i.prototype.requestAsyncId.call(this,o,s,h):(o.actions.push(this),o._scheduled||(o._scheduled=r.immediateProvider.setImmediate(o.flush.bind(o,void 0))))},c.prototype.recycleAsyncId=function(o,s,h){var f;if(h===void 0&&(h=0),h!=null?h>0:this.delay>0)return i.prototype.recycleAsyncId.call(this,o,s,h);var y=o.actions;s!=null&&((f=y[y.length-1])===null||f===void 0?void 0:f.id)!==s&&(r.immediateProvider.clearImmediate(s),o._scheduled===s&&(o._scheduled=void 0))},c})(t.AsyncAction);return zc.AsapAction=n,zc}var Yc={},Qc={},xh={},wF;function fK(){if(wF)return xh;wF=1,Object.defineProperty(xh,"__esModule",{value:!0}),xh.Scheduler=void 0;var e=$I(),t=(function(){function r(n,i){i===void 0&&(i=r.now),this.schedulerActionCtor=n,this.now=i}return r.prototype.schedule=function(n,i,c){return i===void 0&&(i=0),new this.schedulerActionCtor(this,n).schedule(c,i)},r.now=e.dateTimestampProvider.now,r})();return xh.Scheduler=t,xh}var VF;function _S(){if(VF)return Qc;VF=1;var e=Qc&&Qc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Qc,"__esModule",{value:!0}),Qc.AsyncScheduler=void 0;var t=fK(),r=(function(n){e(i,n);function i(c,o){o===void 0&&(o=t.Scheduler.now);var s=n.call(this,c,o)||this;return s.actions=[],s._active=!1,s}return i.prototype.flush=function(c){var o=this.actions;if(this._active){o.push(c);return}var s;this._active=!0;do if(s=c.execute(c.state,c.delay))break;while(c=o.shift());if(this._active=!1,s){for(;c=o.shift();)c.unsubscribe();throw s}},i})(t.Scheduler);return Qc.AsyncScheduler=r,Qc}var EF;function nre(){if(EF)return Yc;EF=1;var e=Yc&&Yc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.AsapScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i.prototype.flush=function(c){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var s=this.actions,h;c=c||s.shift();do if(h=c.execute(c.state,c.delay))break;while((c=s[0])&&c.id===o&&s.shift());if(this._active=!1,h){for(;(c=s[0])&&c.id===o&&s.shift();)c.unsubscribe();throw h}},i})(t.AsyncScheduler);return Yc.AsapScheduler=r,Yc}var BF;function ire(){return BF||(BF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.asap=e.asapScheduler=void 0;var t=rre(),r=nre();e.asapScheduler=new r.AsapScheduler(t.AsapAction),e.asap=e.asapScheduler})(Bx)),Bx}var Rx={},RF;function Di(){return RF||(RF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.async=e.asyncScheduler=void 0;var t=bS(),r=_S();e.asyncScheduler=new r.AsyncScheduler(t.AsyncAction),e.async=e.asyncScheduler})(Rx)),Rx}var Ox={},Zc={},OF;function are(){if(OF)return Zc;OF=1;var e=Zc&&Zc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.QueueAction=void 0;var t=bS(),r=(function(n){e(i,n);function i(c,o){var s=n.call(this,c,o)||this;return s.scheduler=c,s.work=o,s}return i.prototype.schedule=function(c,o){return o===void 0&&(o=0),o>0?n.prototype.schedule.call(this,c,o):(this.delay=o,this.state=c,this.scheduler.flush(this),this)},i.prototype.execute=function(c,o){return o>0||this.closed?n.prototype.execute.call(this,c,o):this._execute(c,o)},i.prototype.requestAsyncId=function(c,o,s){return s===void 0&&(s=0),s!=null&&s>0||s==null&&this.delay>0?n.prototype.requestAsyncId.call(this,c,o,s):(c.flush(this),0)},i})(t.AsyncAction);return Zc.QueueAction=r,Zc}var Jc={},kF;function ore(){if(kF)return Jc;kF=1;var e=Jc&&Jc.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.QueueScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i})(t.AsyncScheduler);return Jc.QueueScheduler=r,Jc}var FF;function sre(){return FF||(FF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.queue=e.queueScheduler=void 0;var t=are(),r=ore();e.queueScheduler=new r.QueueScheduler(t.QueueAction),e.queue=e.queueScheduler})(Ox)),Ox}var kx={},eu={},LF;function cre(){if(LF)return eu;LF=1;var e=eu&&eu.__extends||(function(){var i=function(c,o){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,h){s.__proto__=h}||function(s,h){for(var f in h)Object.prototype.hasOwnProperty.call(h,f)&&(s[f]=h[f])},i(c,o)};return function(c,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");i(c,o);function s(){this.constructor=c}c.prototype=o===null?Object.create(o):(s.prototype=o.prototype,new s)}})();Object.defineProperty(eu,"__esModule",{value:!0}),eu.AnimationFrameAction=void 0;var t=bS(),r=uK(),n=(function(i){e(c,i);function c(o,s){var h=i.call(this,o,s)||this;return h.scheduler=o,h.work=s,h}return c.prototype.requestAsyncId=function(o,s,h){return h===void 0&&(h=0),h!==null&&h>0?i.prototype.requestAsyncId.call(this,o,s,h):(o.actions.push(this),o._scheduled||(o._scheduled=r.animationFrameProvider.requestAnimationFrame(function(){return o.flush(void 0)})))},c.prototype.recycleAsyncId=function(o,s,h){var f;if(h===void 0&&(h=0),h!=null?h>0:this.delay>0)return i.prototype.recycleAsyncId.call(this,o,s,h);var y=o.actions;s!=null&&s===o._scheduled&&((f=y[y.length-1])===null||f===void 0?void 0:f.id)!==s&&(r.animationFrameProvider.cancelAnimationFrame(s),o._scheduled=void 0)},c})(t.AsyncAction);return eu.AnimationFrameAction=n,eu}var tu={},NF;function ure(){if(NF)return tu;NF=1;var e=tu&&tu.__extends||(function(){var n=function(i,c){return n=Object.
17setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&(o[h]=s[h])},n(i,c)};return function(i,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");n(i,c);function o(){this.constructor=i}i.prototype=c===null?Object.create(c):(o.prototype=c.prototype,new o)}})();Object.defineProperty(tu,"__esModule",{value:!0}),tu.AnimationFrameScheduler=void 0;var t=_S(),r=(function(n){e(i,n);function i(){return n!==null&&n.apply(this,arguments)||this}return i.prototype.flush=function(c){this._active=!0;var o;c?o=c.id:(o=this._scheduled,this._scheduled=void 0);var s=this.actions,h;c=c||s.shift();do if(h=c.execute(c.state,c.delay))break;while((c=s[0])&&c.id===o&&s.shift());if(this._active=!1,h){for(;(c=s[0])&&c.id===o&&s.shift();)c.unsubscribe();throw h}},i})(t.AsyncScheduler);return tu.AnimationFrameScheduler=r,tu}var qF;function lre(){return qF||(qF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.animationFrame=e.animationFrameScheduler=void 0;var t=cre(),r=ure();e.animationFrameScheduler=new r.AnimationFrameScheduler(t.AnimationFrameAction),e.animationFrame=e.animationFrameScheduler})(kx)),kx}var Po={},UF;function dre(){if(UF)return Po;UF=1;var e=Po&&Po.__extends||(function(){var o=function(s,h){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,y){f.__proto__=y}||function(f,y){for(var _ in y)Object.prototype.hasOwnProperty.call(y,_)&&(f[_]=y[_])},o(s,h)};return function(s,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");o(s,h);function f(){this.constructor=s}s.prototype=h===null?Object.create(h):(f.prototype=h.prototype,new f)}})();Object.defineProperty(Po,"__esModule",{value:!0}
17),Po.VirtualAction=Po.VirtualTimeScheduler=void 0;var t=bS(),r=Ji(),n=_S(),i=(function(o){e(s,o);function s(h,f){h===void 0&&(h=c),f===void 0&&(f=1/0);var y=o.call(this,h,function(){return y.frame})||this;return y.maxFrames=f,y.frame=0,y.index=-1,y}return s.prototype.flush=function(){for(var h=this,f=h.actions,y=h.maxFrames,_,g;(g=f[0])&&g.delay<=y&&(f.shift(),this.frame=g.delay,!(_=g.execute(g.state,g.delay))););if(_){for(;g=f.shift();)g.unsubscribe();throw _}},s.frameTimeFactor=10,s})(n.AsyncScheduler);Po.VirtualTimeScheduler=i;var c=(function(o){e(s,o);function s(h,f,y){y===void 0&&(y=h.index+=1);var _=o.call(this,h,f)||this;return _.scheduler=h,_.work=f,_.index=y,_.active=!0,_.index=h.index=y,_}return s.prototype.schedule=function(h,f){if(f===void 0&&(f=0),Number.isFinite(f)){if(!this.id)return o.prototype.schedule.call(this,h,f);this.active=!1;var y=new s(this.scheduler,this.work);return this.add(y),y.schedule(h,f)}else return r.Subscription.EMPTY},s.prototype.requestAsyncId=function(h,f,y){y===void 0&&(y=0),this.delay=h.frame+y;var _=h.actions;return _.push(this),_.sort(s.sortActions),1},s.prototype.recycleAsyncId=function(h,f,y){},s.prototype._execute=function(h,f){if(this.active===!0)return o.prototype._execute.call(this,h,f)},s.sortActions=function(h,f){return h.delay===f.delay?h.index===f.index?0:h.index>f.index?1:-1:h.delay>f.delay?1:-1},s})(t.AsyncAction);return Po.VirtualAction=c,Po}var Fx={},Lx={},jF;function ka(){return jF||(jF=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.empty=e.EMPTY=void 0;var t=fr();e.EMPTY=new t.Observable(function(i){return i.complete()});function r(i){return i?n(i):e.EMPTY}e.empty=r;function n(i){return new t.Observable(function(c){return i.schedule(function(){return c.complete()})})}})(Lx)),Lx}var Ah={},To={},Mh={},GF;function ZT(){if(GF)return Mh;GF=1,Object.defineProperty(Mh,"__esModule",{value:!0}),Mh.isScheduler=void 0;var e=or();function t(r){return r&&e.isFunction(r.schedule)}return Mh.isScheduler=t,Mh}var zF;function Ii(){if(zF)return To;zF=1,Object.defineProperty(To,"__esModule",{value:!0}),To.popNumber=To.popScheduler=To.popResultSelector=void 0;var e=or(),t=ZT();function r(o){return o[o.length-1]}function n(o){return e.isFunction(r(o))?o.pop():void 0}To.popResultSelector=n;function i(o){return t.isScheduler(r(o))?o.pop():void 0}To.popScheduler=i;function c(o,s){return typeof r(o)=="number"?o.pop():s}return To.popNumber=c,To}var Dh={},Ih={},wh={},_r={},Vh={},HF;function YI(){return HF||(HF=1,Object.defineProperty(Vh,"__esModule",{value:!0}),Vh.isArrayLike=void 0,Vh.isArrayLike=(function(e){return e&&typeof e.length=="number"&&typeof e!="function"})),Vh}var Eh={},WF;function mK(){if(WF)return Eh;WF=1,Object.defineProperty(Eh,"__esModule",{value:!0}),Eh.isPromise=void 0;var e=or();function t(r){return e.isFunction(r?.then)}return Eh.isPromise=t,Eh}var Bh={},$F;function pK(){if($F)return Bh;$F=1,Object.defineProperty(Bh,"__esModule",{value:!0}),Bh.isInteropObservable=void 0;var e=KT(),t=or();function r(n){return t.isFunction(n[e.observable])}return Bh.isInteropObservable=r,Bh}var Rh={},XF;function hK(){if(XF)return Rh;XF=1,Object.defineProperty(Rh,"__esModule",{value:!0}),Rh.isAsyncIterable=void 0;var e=or();function t(r){return Symbol.asyncIterator&&e.isFunction(r?.[Symbol.asyncIterator])}return Rh.isAsyncIterable=t,Rh}var Oh={},KF;function gK(){if(KF)return Oh;KF=1,Object.defineProperty(Oh,"__esModule",{value:!0}),Oh.createInvalidObservableTypeError=void 0;function e(t){return new TypeError("You provided "+(t!==null&&typeof t=="object"?"an invalid object":"'"+t+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}return Oh.createInvalidObservableTypeError=e,Oh}var kh={},ru={},YF;function yK(){if(YF)return ru;YF=1,Object.defineProperty(ru,"__esModule",{value:!0}),ru.iterator=ru.getSymbolIterator=void 0;function e(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}return ru.getSymbolIterator=e,ru.iterator=e(),ru}var QF;function vK(){if(QF)return kh;QF=1,Object.defineProperty(kh,"__esModule",{value:!0}),kh.isIterable=void 0;var e=yK(),t=or();function r(n){return t.isFunction(n?.[e.iterator])}return kh.isIterable=r,kh}var hi={},ZF;function QI(){if(ZF)return hi;ZF=1;var e=hi&&hi.__generator||function(o,s){var h={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},f,y,_,g;return g={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(g[Symbol.iterator]=function(){return this}),g;function a(p){return function(u){return d([p,u])}}function d(p){if(f)throw new TypeError("Generator is already executing.");for(;h;)try{if(f=1,y&&(_=p[0]&2?y.return:p[0]?y.throw||((_=y.return)&&_.call(y),0):y.next)&&!(_=_.call(y,p[1])).done)return _;switch(y=0,_&&(p=[p[0]&2,_.value]),p[0]){case 0:case 1:_=p;break;case 4:return h.label++,{value:p[1],done:!1};case 5:h.label++,y=p[1],p=[0];continue;case 7:p=h.ops.pop(),h.trys.pop();continue;
vendor: 4,066 bytes, line 17
17default:if(_=h.trys,!(_=_.length>0&&_[_.length-1])&&(p[0]===6||p[0]===2)){h=0;continue}if(p[0]===3&&(!_||p[1]>_[0]&&p[1]<_[3])){h.label=p[1];break}if(p[0]===6&&h.label<_[1]){h.label=_[1],_=p;break}if(_&&h.label<_[2]){h.label=_[2],h.ops.push(p);break}_[2]&&h.ops.pop(),h.trys.pop();continue}p=s.call(o,h)}catch(u){p=[6,u],y=0}finally{f=_=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}},t=hi&&hi.__await||function(o){return this instanceof t?(this.v=o,this):new t(o)},r=hi&&hi.__asyncGenerator||function(o,s,h){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var f=h.apply(o,s||[]),y,_=[];return y={},g("next"),g("throw"),g("return"),y[Symbol.asyncIterator]=function(){return this},y;function g(v){f[v]&&(y[v]=function(b){return new Promise(function(P,C){_.push([v,b,P,C])>1||a(v,b)})})}function a(v,b){try{d(f[v](b))}catch(P){m(_[0][3],P)}}function d(v){v.value instanceof t?Promise.resolve(v.value.v).then(p,u):m(_[0][2],v)}function p(v){a("next",v)}function u(v){a("throw",v)}function m(v,b){v(b),_.shift(),_.length&&a(_[0][0],_[0][1])}};Object.defineProperty(hi,"__esModule",{value:!0}),hi.isReadableStreamLike=hi.readableStreamLikeToAsyncGenerator=void 0;var n=or();function i(o){return r(this,arguments,function(){var h,f,y,_;return e(this,function(g){switch(g.label){case 0:h=o.getReader(),g.label=1;case 1:g.trys.push([1,,9,10]),g.label=2;case 2:return[4,t(h.read())];case 3:return f=g.sent(),y=f.value,_=f.done,_?[4,t(void 0)]:[3,5];case 4:return[2,g.sent()];case 5:return[4,t(y)];case 6:return[4,g.sent()];case 7:return g.sent(),[3,2];case 8:return[3,10];case 9:return h.releaseLock(),[7];case 10:return[2]}})})}hi.readableStreamLikeToAsyncGenerator=i;function c(o){return n.isFunction(o?.getReader)}return hi.isReadableStreamLike=c,hi}var JF;function Ft(){if(JF)return _r;JF=1;var e=_r&&_r.__awaiter||function(S,T,A,x){function M(D){return D instanceof A?D:new A(function(V){V(D)})}return new(A||(A=Promise))(function(D,V){function R(B){try{I(x.next(B))}catch(w){V(w)}}function E(B){try{I(x.throw(B))}catch(w){V(w)}}function I(B){B.done?D(B.value):M(B.value).then(R,E)}I((x=x.apply(S,T||[])).next())})},t=_r&&_r.__generator||function(S,T){var A={label:0,sent:function(){if(D[0]&1)throw D[1];return D[1]},trys:[],ops:[]},x,M,D,V;return V={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(V[Symbol.iterator]=function(){return this}),V;function R(I){return function(B){return E([I,B])}}function E(I){if(x)throw new TypeError("Generator is already executing.");for(;A;)try{if(x=1,M&&(D=I[0]&2?M.return:I[0]?M.throw||((D=M.return)&&D.call(M),0):M.next)&&!(D=D.call(M,I[1])).done)return D;switch(M=0,D&&(I=[I[0]&2,D.value]),I[0]){case 0:case 1:D=I;break;case 4:return A.label++,{value:I[1],done:!1};case 5:A.label++,M=I[1],I=[0];continue;case 7:I=A.ops.pop(),A.trys.pop();continue;default:if(D=A.trys,!(D=D.length>0&&D[D.length-1])&&(I[0]===6||I[0]===2)){A=0;continue}if(I[0]===3&&(!D||I[1]>D[0]&&I[1]<D[3])){A.label=I[1];break}if(I[0]===6&&A.label<D[1]){A.label=D[1],D=I;break}if(D&&A.label<D[2]){A.label=D[2],A.ops.push(I);break}D[2]&&A.ops.pop(),A.trys.pop();continue}I=T.call(S,A)}catch(B){I=[6,B],M=0}finally{x=D=0}if(I[0]&5)throw I[1];return{value:I[0]?I[1]:void 0,done:!0}}},r=_r&&_r.__asyncValues||function(S){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var T=S[Symbol.asyncIterator],A;return T?T.call(S):(S=typeof n=="function"?n(S):S[Symbol.iterator](),A={},x("next"),x("throw"),x("return"),A[Symbol.asyncIterator]=function(){return this},A);function x(D){A[D]=S[D]&&function(V){return new Promise(function(R,E){V=S[D](V),M(R,E,V.done,V.value)})}}function M(D,V,R,E){Promise.resolve(E).then(function(I){D({value:I,done:R})},V)}},n=_r&&_r.__values||function(S){var T=typeof Symbol=="function"&&Symbol.iterator,A=T&&S[T],x=0;if(A)return A.call(S);if(S&&typeof S.length=="number")return{next:function(){return S&&x>=S.length&&(S=void 0),{value:S&&S[x++],done:!S}}};throw new TypeError(T?"Object is not iterable.":"Symbol.iterator is not defined.")};
17Object.defineProperty(_r,"__esModule",{value:!0}),_r.fromReadableStreamLike=_r.fromAsyncIterable=_r.fromIterable=_r.fromPromise=_r.fromArrayLike=_r.fromInteropObservable=_r.innerFrom=void 0;var i=YI(),c=mK(),o=fr(),s=pK(),h=hK(),f=gK(),y=vK(),_=QI(),g=or(),a=cK(),d=KT();function p(S){if(S instanceof o.Observable)return S;if(S!=null){if(s.isInteropObservable(S))return u(S);if(i.isArrayLike(S))return m(S);if(c.isPromise(S))return v(S);if(h.isAsyncIterable(S))return P(S);if(y.isIterable(S))return b(S);if(_.isReadableStreamLike(S))return C(S)}throw f.createInvalidObservableTypeError(S)}_r.innerFrom=p;function u(S){return new o.Observable(function(T){var A=S[d.observable]();if(g.isFunction(A.subscribe))return A.subscribe(T);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}_r.fromInteropObservable=u;function m(S){return new o.Observable(function(T){for(var A=0;A<S.length&&!T.closed;A++)T.next(S[A]);T.complete()})}_r.fromArrayLike=m;function v(S){return new o.Observable(function(T){S.then(function(A){T.closed||(T.next(A),T.complete())},function(A){return T.error(A)}).then(null,a.reportUnhandledError)})}_r.fromPromise=v;function b(S){return new o.Observable(function(T){var A,x;try{for(var M=n(S),D=M.next();!D.done;D=M.next()){var V=D.value;if(T.next(V),T.closed)return}}catch(R){A={error:R}}finally{try{D&&!D.done&&(x=M.return)&&x.call(M)}finally{if(A)throw A.error}}T.complete()})}_r.fromIterable=b;function P(S){return new o.Observable(function(T){l(S,T).catch(function(A){return T.error(A)})})}_r.fromAsyncIterable=P;function C(S){return P(_.readableStreamLikeToAsyncGenerator(S))}_r.fromReadableStreamLike=C;function l(S,T){var A,x,M,D;return e(this,void 0,void 0,function(){var V,R;return t(this,function(E){switch(E.label){case 0:E.trys.push([0,5,6,11]),A=r(S),E.label=1;case 1:return[4,A.next()];case 2:if(x=E.sent(),!!x.done)return[3,4];if(V=x.value,T.next(V),T.closed)return[2];E.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return R=E.sent(),M={error:R},[3,11];case 6:return E.trys.push([6,,9,10]),x&&!x.done&&(D=A.return)?[4,D.call(A)]:[3,8];case 7:E.sent(),E.label=8;case 8:return[3,10];case 9:if(M)throw M.error;return[7];case 10:return[7];case 11:return T.complete(),[2]}})})}return _r}var Fh={},Lh={},eL;function Qs(){if(eL)return Lh;eL=1,Object.defineProperty(Lh,"__esModule",{value:!0}),Lh.executeSchedule=void 0;function e(t,r,n,i,c){i===void 0&&(i=0),c===void 0&&(c=!1);var o=r.schedule(function(){n(),c?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!c)return o}return Lh.executeSchedule=e,Lh}var tL;function SS(){if(tL)return Fh;tL=1,Object.defineProperty(Fh,"__esModule",{value:!0}),Fh.observeOn=void 0;var e=Qs(),t=ft(),r=bt();function n(i,c){return c===void 0&&(c=0),t.operate(function(o,s){o.subscribe(r.createOperatorSubscriber(s,function(h){return e.executeSchedule(s,i,function(){return s.next(h)},c)},function(){return e.executeSchedule(s,i,function(){return s.complete()},c)},function(h){return e.executeSchedule(s,i,function(){return s.error(h)},c)}))})}return Fh.observeOn=n,Fh}var Nh={},rL;function CS(){if(rL)return Nh;rL=1,Object.defineProperty(Nh,"__esModule",{value:!0}),Nh.subscribeOn=void 0;var e=ft();function t(r,n){return n===void 0&&(n=0),e.operate(function(i,c){c.add(r.schedule(function(){return i.subscribe(c)},n))})}return Nh.subscribeOn=t,Nh}var nL;function fre(){if(nL)return wh;nL=1,Object.defineProperty(wh,"__esModule",{value:!0}),wh.scheduleObservable=void 0;var e=Ft(),t=SS(),r=CS();function n(i,c){return e.innerFrom(i).pipe(r.subscribeOn(c),t.observeOn(c))}return wh.scheduleObservable=n,wh}var qh={},iL;function mre(){if(iL)return qh;iL=1,Object.defineProperty(qh,"__esModule",{value:!0}),qh.schedulePromise=void 0;var e=Ft(),t=SS(),r=CS();function n(i,c){return e.innerFrom(i).pipe(r.subscribeOn(c),t.observeOn(c))}return qh.schedulePromise=n,qh}var Uh={},aL;function pre(){if(aL)return Uh;aL=1,Object.defineProperty(Uh,"__esModule",{value:!0}),Uh.scheduleArray=void 0;var e=fr();function t(r,n){return new e.Observable(function(i){var c=0;
17return n.schedule(function(){c===r.length?i.complete():(i.next(r[c++]),i.closed||this.schedule())})})}return Uh.scheduleArray=t,Uh}var jh={},oL;function bK(){if(oL)return jh;oL=1,Object.defineProperty(jh,"__esModule",{value:!0}),jh.scheduleIterable=void 0;var e=fr(),t=yK(),r=or(),n=Qs();function i(c,o){return new e.Observable(function(s){var h;return n.executeSchedule(s,o,function(){h=c[t.iterator](),n.executeSchedule(s,o,function(){var f,y,_;try{f=h.next(),y=f.value,_=f.done}catch(g){s.error(g);return}_?s.complete():s.next(y)},0,!0)}),function(){return r.isFunction(h?.return)&&h.return()}})}return jh.scheduleIterable=i,jh}var Gh={},sL;function _K(){if(sL)return Gh;sL=1,Object.defineProperty(Gh,"__esModule",{value:!0}),Gh.scheduleAsyncIterable=void 0;var e=fr(),t=Qs();function r(n,i){if(!n)throw new Error("Iterable cannot be null");return new e.Observable(function(c){t.executeSchedule(c,i,function(){var o=n[Symbol.asyncIterator]();t.executeSchedule(c,i,function(){o.next().then(function(s){s.done?c.complete():c.next(s.value)})},0,!0)})})}return Gh.scheduleAsyncIterable=r,Gh}var zh={},cL;function hre(){if(cL)return zh;cL=1,Object.defineProperty(zh,"__esModule",{value:!0}),zh.scheduleReadableStreamLike=void 0;var e=_K(),t=QI();function r(n,i){return e.scheduleAsyncIterable(t.readableStreamLikeToAsyncGenerator(n),i)}return zh.scheduleReadableStreamLike=r,zh}var uL;function SK(){if(uL)return Ih;uL=1,Object.defineProperty(Ih,"__esModule",{value:!0}),Ih.scheduled=void 0;var e=fre(),t=mre(),r=pre(),n=bK(),i=_K(),c=pK(),o=mK(),s=YI(),h=vK(),f=hK(),y=gK(),_=QI(),g=hre();function a(d,p){if(d!=null){if(c.isInteropObservable(d))return e.scheduleObservable(d,p);if(s.isArrayLike(d))return r.scheduleArray(d,p);if(o.isPromise(d))return t.schedulePromise(d,p);if(f.isAsyncIterable(d))return i.scheduleAsyncIterable(d,p);if(h.isIterable(d))return n.scheduleIterable(d,p);if(_.isReadableStreamLike(d))return g.scheduleReadableStreamLike(d,p)}throw y.createInvalidObservableTypeError(d)}return Ih.scheduled=a,Ih}var lL;function Zs(){if(lL)return Dh;lL=1,Object.defineProperty(Dh,"__esModule",{value:!0}),Dh.from=void 0;var e=SK(),t=Ft();function r(n,i){return i?e.scheduled(n,i):t.innerFrom(n)}return Dh.from=r,Dh}var dL;function ZI(){if(dL)return Ah;dL=1,Object.defineProperty(Ah,"__esModule",{value:!0}),Ah.of=void 0;var e=Ii(),t=Zs();function r(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];var c=e.popScheduler(n);return t.from(n,c)}return Ah.of=r,Ah}var Hh={},fL;function CK(){if(fL)return Hh;fL=1,Object.defineProperty(Hh,"__esModule",{value:!0}),Hh.throwError=void 0;var e=fr(),t=or();function r(n,i){var c=t.isFunction(n)?n:function(){return n},o=function(s){return s.error(c())};return new e.Observable(i?function(s){return i.schedule(o,0,s)}:o)}return Hh.throwError=r,Hh}var mL;function JI(){return mL||(mL=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.observeNotification=e.Notification=e.NotificationKind=void 0;var t=ka(),r=ZI(),n=CK(),i=or();(function(s){s.NEXT="N",s.ERROR="E",s.COMPLETE="C"})(e.NotificationKind||(e.NotificationKind={}));var c=(function(){function s(h,f,y){this.kind=h,this.value=f,this.error=y,this.hasValue=h==="N"}return s.prototype.observe=function(h){return o(this,h)},s.prototype.do=function(h,f,y){var _=this,g=_.kind,a=_.value,d=_.error;return g==="N"?h?.(a):g==="E"?f?.(d):y?.()},s.prototype.accept=function(h,f,y){var _;return i.isFunction((_=h)===null||_===void 0?void 0:_.next)?this.observe(h):this.do(h,f,y)},s.prototype.toObservable=function(){var h=this,f=h.kind,y=h.value,_=h.error,g=f==="N"?r.of(y):f==="E"?n.throwError(function(){return _}):f==="C"?t.EMPTY:0;if(!g)throw new TypeError("Unexpected notification kind "+f);return g},s.createNext=function(h){return new s("N",h)},s.createError=function(h){return new s("E",void 0,h)},s.createComplete=function(){return s.completeNotification},s.completeNotification=new s("C"),s})();e.Notification=c;function o(s,h){var f,y,_,g=s,a=g.kind,d=g.value,p=g.error;if(typeof a!="string")throw new TypeError('Invalid notification, missing "kind"');a==="N"?(f=h.next)===null||f===void 0||f.call(h,d):a==="E"?(y=h.error)===null||y===void 0||y.call(h,p):(_=h.complete)===null||_===void 0||_.call(h)}e.observeNotification=o})(Fx)),Fx}var Wh={},pL;function gre(){if(pL)return Wh;pL=1,Object.defineProperty(Wh,"__esModule",{value:!0}),Wh.isObservable=void 0;var e=fr(),t=or();function r(n){return!!n&&(n instanceof e.Observable||t.isFunction(n.lift)&&t.isFunction(n.subscribe))}return Wh.isObservable=r,Wh}var $h={},Xh={},hL;function Bl(){if(hL)return Xh;hL=1,Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.EmptyError=void 0;var e=El();return Xh.EmptyError=e.createErrorClass(function(t){return function(){t(this),this.name="EmptyError",this.message="no elements in sequence"}}),Xh}var gL;function yre(){if(gL)return $h;gL=1,Object.defineProperty($h,"__esModule",{value:!0}),$h.lastValueFrom=void 0;var e=Bl();function t(r,n){var i=typeof n=="object";return new Promise(function(c,o){var s=!1,h;r.subscribe({next:function(f){h=f,s=!0},error:o,complete:function(){s?c(h):i?c(n.defaultValue):o(new e.EmptyError)}})})}return $h.lastValueFrom=t,$h}var Kh={},yL;function vre(){if(yL)return Kh;yL=1,Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.firstValueFrom=void 0;var e=Bl(),t=vS();function r(n,i){var c=typeof i=="object";return new Promise(function(o,s){var h=new t.SafeSubscriber({next:function(f){o(f),h.unsubscribe()},error:s,complete:function(){c?o(i.defaultValue):s(new e.EmptyError)}});n.subscribe(h)})}return Kh.firstValueFrom=r,Kh}var Yh={},vL;function PK(){if(vL)return Yh;vL=1,Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.ArgumentOutOfRangeError=void 0;var e=El();return Yh.ArgumentOutOfRangeError=e.createErrorClass(function(t){return function(){t(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}}),Yh}var Qh={},bL;function TK(){if(bL)return Qh;bL=1,Object.defineProperty(Qh,"__esModule",{value:!0}),Qh.NotFoundError=void 0;var e=El();return Qh.NotFoundError=e.createErrorClass(function(t){return function(n){t(this),this.name="NotFoundError",this.message=n}}),Qh}var Zh={},_L;function xK(){if(_L)return Zh;_L=1,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.SequenceError=void 0;var e=El();return Zh.SequenceError=e.createErrorClass(function(t){return function(n){t(this),this.name="SequenceError",this.message=n}}),Zh}var Nx={},Jh={},SL;function ew(){if(SL)return Jh;SL=1,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.isValidDate=void 0;function e(t){return t instanceof Date&&!isNaN(t)}return Jh.isValidDate=e,Jh}var CL;function hT(){return CL||(CL=1,(function(e){Object.defineProperty(e,"__esMo
17dule",{value:!0}),e.timeout=e.TimeoutError=void 0;var t=Di(),r=ew(),n=ft(),i=Ft(),c=El(),o=bt(),s=Qs();e.TimeoutError=c.createErrorClass(function(y){return function(g){g===void 0&&(g=null),y(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=g}});function h(y,_){var g=r.isValidDate(y)?{first:y}:typeof y=="number"?{each:y}:y,a=g.first,d=g.each,p=g.with,u=p===void 0?f:p,m=g.scheduler,v=m===void 0?_??t.asyncScheduler:m,b=g.meta,P=b===void 0?null:b;if(a==null&&d==null)throw new TypeError("No timeout provided.");return n.operate(function(C,l){var S,T,A=null,x=0,M=function(D){T=s.executeSchedule(l,v,function(){try{S.unsubscribe(),i.innerFrom(u({meta:P,lastValue:A,seen:x})).subscribe(l)}catch(V){l.error(V)}},D)};S=C.subscribe(o.createOperatorSubscriber(l,function(D){T?.unsubscribe(),x++,l.next(A=D),d>0&&M(d)},void 0,void 0,function(){T?.closed||T?.unsubscribe(),A=null})),!x&&M(a!=null?typeof a=="number"?a:+a-v.now():d)})}e.timeout=h;function f(y){throw new e.TimeoutError(y)}})(Nx)),Nx}var eg={},xo={},Ao={},tg={},PL;function Js(){if(PL)return tg;PL=1,Object.defineProperty(tg,"__esModule",{value:!0}),tg.map=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){o.next(n.call(i,h,s++))}))})}return tg.map=r,tg}var TL;function Rl(){if(TL)return Ao;TL=1;var e=Ao&&Ao.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},t=Ao&&Ao.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};Object.defineProperty(Ao,"__esModule",{value:!0}),Ao.mapOneOrManyArgs=void 0;var r=Js(),n=Array.isArray;function i(o,s){return n(s)?o.apply(void 0,t([],e(s))):o(s)}function c(o){return r.map(function(s){return i(o,s)})}return Ao.mapOneOrManyArgs=c,Ao}var xL;function AK(){if(xL)return xo;xL=1;var e=xo&&xo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=xo&&xo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(xo,"__esModule",{value:!0}),xo.bindCallbackInternals=void 0;var r=ZT(),n=fr(),i=CS(),c=Rl(),o=SS(),s=KI();function h(f,y,_,g){if(_)if(r.isScheduler(_))g=_;else return function(){for(var a=[],d=0;d<arguments.length;d++)a[d]=arguments[d];return h(f,y,g).apply(this,a).pipe(c.mapOneOrManyArgs(_))};return g?function(){for(var a=[],d=0;d<arguments.length;d++)a[d]=arguments[d];return h(f,y).apply(this,a).pipe(i.subscribeOn(g),o.observeOn(g))}:function(){for(var a=this,d=[],p=0;p<arguments.length;p++)d[p]=arguments[p];var u=new s.AsyncSubject,m=!0;return new n.Observable(function(v){var b=u.subscribe(v);if(m){m=!1;var P=!1,C=!1;y.apply(a,t(t([],e(d)),[function(){for(var l=[],S=0;S<arguments.length;S++)l[S]=arguments[S];if(f){var T=l.shift();if(T!=null){u.error(T);return}}u.next(1<l.length?l:l[0]),C=!0,P&&u.complete()}])),C&&u.complete(),P=!0}return b})}}return xo.bindCallbackInternals=h,xo}var AL;function bre(){if(AL)return eg;AL=1,Object.defineProperty(eg,"__esModule",{value:!0}),eg.bindCallback=void 0;var e=AK();function t(r,n,i){return e.bindCallbackInternals(!1,r,n,i)}return eg.bindCallback=t,eg}var rg={},ML;function _re(){if(ML)return rg;ML=1,Object.defineProperty(rg,"__esModule",{value:!0}),rg.bindNodeCallback=void 0;var e=AK();function t(r,n,i){return e.bindCallbackInternals(!0,r,n,i)}return rg.bindNodeCallback=t,rg}var nu={},ng={},DL;function MK(){if(DL)return ng;DL=1,Object.defineProperty(ng,"__esModule",{value:!0}),ng.argsArgArrayOrObject=void 0;var e=Array.isArray,t=Object.getPrototypeOf,r=Object.prototype,n=Object.keys;function i(o){if(o.length===1){var s=o[0];if(e(s))return{args:s,keys:null};if(c(s)){var h=n(s);return{args:h.map(function(f){return s[f]}),keys:h}}}return{args:o,keys:null}}ng.argsArgArrayOrObject=i;function c(o){return o&&typeof o=="object"&&t(o)===r}return ng}var ig={},IL;function DK(){if(IL)return ig;
17IL=1,Object.defineProperty(ig,"__esModule",{value:!0}),ig.createObject=void 0;function e(t,r){return t.reduce(function(n,i,c){return n[i]=r[c],n},{})}return ig.createObject=e,ig}var wL;function tw(){if(wL)return nu;wL=1,Object.defineProperty(nu,"__esModule",{value:!0}),nu.combineLatestInit=nu.combineLatest=void 0;var e=fr(),t=MK(),r=Zs(),n=En(),i=Rl(),c=Ii(),o=DK(),s=bt(),h=Qs();function f(){for(var g=[],a=0;a<arguments.length;a++)g[a]=arguments[a];var d=c.popScheduler(g),p=c.popResultSelector(g),u=t.argsArgArrayOrObject(g),m=u.args,v=u.keys;if(m.length===0)return r.from([],d);var b=new e.Observable(y(m,d,v?function(P){return o.createObject(v,P)}:n.identity));return p?b.pipe(i.mapOneOrManyArgs(p)):b}nu.combineLatest=f;function y(g,a,d){return d===void 0&&(d=n.identity),function(p){_(a,function(){for(var u=g.length,m=new Array(u),v=u,b=u,P=function(l){_(a,function(){var S=r.from(g[l],a),T=!1;S.subscribe(s.createOperatorSubscriber(p,function(A){m[l]=A,T||(T=!0,b--),b||p.next(d(m.slice()))},function(){--v||p.complete()}))},p)},C=0;C<u;C++)P(C)},p)}}nu.combineLatestInit=y;function _(g,a,d){g?h.executeSchedule(d,g,a):a()}return nu}var ag={},og={},sg={},cg={},ug={},VL;function rw(){if(VL)return ug;VL=1,Object.defineProperty(ug,"__esModule",{value:!0}),ug.mergeInternals=void 0;var e=Ft(),t=Qs(),r=bt();function n(i,c,o,s,h,f,y,_){var g=[],a=0,d=0,p=!1,u=function(){p&&!g.length&&!a&&c.complete()},m=function(b){return a<s?v(b):g.push(b)},v=function(b){f&&c.next(b),a++;var P=!1;e.innerFrom(o(b,d++)).subscribe(r.createOperatorSubscriber(c,function(C){h?.(C),f?m(C):c.next(C)},function(){P=!0},void 0,function(){if(P)try{a--;for(var C=function(){var l=g.shift();y?t.executeSchedule(c,y,function(){return v(l)}):v(l)};g.length&&a<s;)C();u()}catch(l){c.error(l)}}))};return i.subscribe(r.createOperatorSubscriber(c,m,function(){p=!0,u()})),function(){_?.()}}return ug.mergeInternals=n,ug}var EL;function ss(){if(EL)return cg;EL=1,Object.defineProperty(cg,"__esModule",{value:!0}),cg.mergeMap=void 0;var e=Js(),t=Ft(),r=ft(),n=rw(),i=or();function c(o,s,h){return h===void 0&&(h=1/0),i.isFunction(s)?c(function(f,y){return e.map(function(_,g){return s(f,_,y,g)})(t.innerFrom(o(f,y)))},h):(typeof s=="number"&&(h=s),r.operate(function(f,y){return n.mergeInternals(f,y,o,h)}))}return cg.mergeMap=c,cg}var BL;function PS(){if(BL)return sg;BL=1,Object.defineProperty(sg,"__esModule",{value:!0}),sg.mergeAll=void 0;var e=ss(),t=En();function r(n){return n===void 0&&(n=1/0),e.mergeMap(t.identity,n)}return sg.mergeAll=r,sg}var RL;function JT(){if(RL)return og;RL=1,Object.defineProperty(og,"__esModule",{value:!0}),og.concatAll=void 0;var e=PS();function t(){return e.mergeAll(1)}return og.concatAll=t,og}var OL;function e2(){if(OL)return ag;OL=1,Object.defineProperty(ag,"__esModule",{value:!0}),ag.concat=void 0;var e=JT(),t=Ii(),r=Zs();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return e.concatAll()(r.from(i,t.popScheduler(i)))}return ag.concat=n,ag}var lg={},dg={},kL;function t2(){if(kL)return dg;kL=1,Object.defineProperty(dg,"__esModule",{value:!0}),dg.defer=void 0;var e=fr(),t=Ft();function r(n){return new e.Observable(function(i){t.innerFrom(n()).subscribe(i)})}return dg.defer=r,dg}var FL;function Sre(){if(FL)return lg;FL=1,Object.defineProperty(lg,"__esModule",{value:!0}),lg.connectable=void 0;var e=Bn(),t=fr(),r=t2(),n={connector:function(){return new e.Subject},resetOnDisconnect:!0};function i(c,o){o===void 0&&(o=n);var s=null,h=o.connector,f=o.resetOnDisconnect,y=f===void 0?!0:f,_=h(),g=new t.Observable(function(a){return _.subscribe(a)});return g.connect=function(){return(!s||s.closed)&&(s=r.defer(function(){return c}).subscribe(_),y&&s.add(function(){return _=h()})),s},g}return lg.connectable=i,lg}var fg={},LL;function Cre(){if(LL)return fg;LL=1,Object.defineProperty(fg,"__esModule",{value:!0}),fg.forkJoin=void 0;var e=fr(),t=MK(),r=Ft(),n=Ii(),i=bt(),c=Rl(),o=DK();function s(){for(var h=[],f=0;f<arguments.length;f++)h[f]=arguments[f];var y=n.popResultSelector(h),_=t.argsArgArrayOrObject(h),g=_.args,a=_.keys,d=new e.Observable(function(p){var u=g.length;if(!u){p.complete();return}for(var m=new Array(u),v=u,b=u,P=function(l){var S=!1;r.innerFrom(g[l]).subscribe(i.createOperatorSubscriber(p,function(T){S||(S=!0,b--),m[l]=T},function(){return v--},void 0,function(){(!v||!S)&&(b||p.next(a?o.createObject(a,m):m),p.complete())}))},C=0;C<u;
17C++)P(C)});return y?d.pipe(c.mapOneOrManyArgs(y)):d}return fg.forkJoin=s,fg}var iu={},NL;function Pre(){if(NL)return iu;NL=1;var e=iu&&iu.__read||function(p,u){var m=typeof Symbol=="function"&&p[Symbol.iterator];if(!m)return p;var v=m.call(p),b,P=[],C;try{for(;(u===void 0||u-- >0)&&!(b=v.next()).done;)P.push(b.value)}catch(l){C={error:l}}finally{try{b&&!b.done&&(m=v.return)&&m.call(v)}finally{if(C)throw C.error}}return P};Object.defineProperty(iu,"__esModule",{value:!0}),iu.fromEvent=void 0;var t=Ft(),r=fr(),n=ss(),i=YI(),c=or(),o=Rl(),s=["addListener","removeListener"],h=["addEventListener","removeEventListener"],f=["on","off"];function y(p,u,m,v){if(c.isFunction(m)&&(v=m,m=void 0),v)return y(p,u,m).pipe(o.mapOneOrManyArgs(v));var b=e(d(p)?h.map(function(l){return function(S){return p[l](u,S,m)}}):g(p)?s.map(_(p,u)):a(p)?f.map(_(p,u)):[],2),P=b[0],C=b[1];if(!P&&i.isArrayLike(p))return n.mergeMap(function(l){return y(l,u,m)})(t.innerFrom(p));if(!P)throw new TypeError("Invalid event target");return new r.Observable(function(l){var S=function(){for(var T=[],A=0;A<arguments.length;A++)T[A]=arguments[A];return l.next(1<T.length?T:T[0])};return P(S),function(){return C(S)}})}iu.fromEvent=y;function _(p,u){return function(m){return function(v){return p[m](u,v)}}}function g(p){return c.isFunction(p.addListener)&&c.isFunction(p.removeListener)}function a(p){return c.isFunction(p.on)&&c.isFunction(p.off)}function d(p){return c.isFunction(p.addEventListener)&&c.isFunction(p.removeEventListener)}return iu}var mg={},qL;function Tre(){if(qL)return mg;qL=1,Object.defineProperty(mg,"__esModule",{value:!0}),mg.fromEventPattern=void 0;var e=fr(),t=or(),r=Rl();function n(i,c,o){return o?n(i,c).pipe(r.mapOneOrManyArgs(o)):new e.Observable(function(s){var h=function(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];return s.next(y.length===1?y[0]:y)},f=i(h);return t.isFunction(c)?function(){return c(h,f)}:void 0})}return mg.fromEventPattern=n,mg}var au={},UL;function xre(){if(UL)return au;UL=1;var e=au&&au.__generator||function(o,s){var h={label:0,sent:function(){if(_[0]&1)throw _[1];return _[1]},trys:[],ops:[]},f,y,_,g;return g={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(g[Symbol.iterator]=function(){return this}),g;function a(p){return function(u){return d([p,u])}}function d(p){if(f)throw new TypeError("Generator is already executing.");for(;h;)try{if(f=1,y&&(_=p[0]&2?y.return:p[0]?y.throw||((_=y.return)&&_.call(y),0):y.next)&&!(_=_.call(y,p[1])).done)return _;switch(y=0,_&&(p=[p[0]&2,_.value]),p[0]){case 0:case 1:_=p;break;case 4:return h.label++,{value:p[1],done:!1};case 5:h.label++,y=p[1],p=[0];continue;case 7:p=h.ops.pop(),h.trys.pop();continue;default:if(_=h.trys,!(_=_.length>0&&_[_.length-1])&&(p[0]===6||p[0]===2)){h=0;continue}if(p[0]===3&&(!_||p[1]>_[0]&&p[1]<_[3])){h.label=p[1];break}if(p[0]===6&&h.label<_[1]){h.label=_[1],_=p;break}if(_&&h.label<_[2]){h.label=_[2],h.ops.push(p);break}_[2]&&h.ops.pop(),h.trys.pop();continue}p=s.call(o,h)}catch(u){p=[6,u],y=0}finally{f=_=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}};Object.defineProperty(au,"__esModule",{value:!0}),au.generate=void 0;var t=En(),r=ZT(),n=t2(),i=bK();function c(o,s,h,f,y){var _,g,a,d;arguments.length===1?(_=o,d=_.initialState,s=_.condition,h=_.iterate,g=_.resultSelector,a=g===void 0?t.identity:g,y=_.scheduler):(d=o,!f||r.isScheduler(f)?(a=t.identity,y=f):a=f);function p(){var u;return e(this,function(m){switch(m.label){case 0:u=d,m.label=1;case 1:return!s||s(u)?[4,a(u)]:[3,4];case 2:m.sent(),m.label=3;case 3:return u=h(u),[3,1];case 4:return[2]}})}return n.defer(y?function(){return i.scheduleIterable(p(),y)}:p)}return au.generate=c,au}var pg={},jL;function Are(){if(jL)return pg;
17jL=1,Object.defineProperty(pg,"__esModule",{value:!0}),pg.iif=void 0;var e=t2();function t(r,n,i){return e.defer(function(){return r()?n:i})}return pg.iif=t,pg}var hg={},gg={},GL;function Ol(){if(GL)return gg;GL=1,Object.defineProperty(gg,"__esModule",{value:!0}),gg.timer=void 0;var e=fr(),t=Di(),r=ZT(),n=ew();function i(c,o,s){c===void 0&&(c=0),s===void 0&&(s=t.async);var h=-1;return o!=null&&(r.isScheduler(o)?s=o:h=o),new e.Observable(function(f){var y=n.isValidDate(c)?+c-s.now():c;y<0&&(y=0);var _=0;return s.schedule(function(){f.closed||(f.next(_++),0<=h?this.schedule(void 0,h):f.complete())},y)})}return gg.timer=i,gg}var zL;function IK(){if(zL)return hg;zL=1,Object.defineProperty(hg,"__esModule",{value:!0}),hg.interval=void 0;var e=Di(),t=Ol();function r(n,i){return n===void 0&&(n=0),i===void 0&&(i=e.asyncScheduler),n<0&&(n=0),t.timer(n,n,i)}return hg.interval=r,hg}var yg={},HL;function Mre(){if(HL)return yg;HL=1,Object.defineProperty(yg,"__esModule",{value:!0}),yg.merge=void 0;var e=PS(),t=Ft(),r=ka(),n=Ii(),i=Zs();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=n.popScheduler(o),f=n.popNumber(o,1/0),y=o;return y.length?y.length===1?t.innerFrom(y[0]):e.mergeAll(f)(i.from(y,h)):r.EMPTY}return yg.merge=c,yg}var qx={},WL;function $L(){return WL||(WL=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.never=e.NEVER=void 0;var t=fr(),r=Vn();e.NEVER=new t.Observable(r.noop);function n(){return e.NEVER}e.never=n})(qx)),qx}var vg={},bg={},XL;function Nf(){if(XL)return bg;XL=1,Object.defineProperty(bg,"__esModule",{value:!0}),bg.argsOrArgArray=void 0;var e=Array.isArray;function t(r){return r.length===1&&e(r[0])?r[0]:r}return bg.argsOrArgArray=t,bg}var KL;function wK(){if(KL)return vg;KL=1,Object.defineProperty(vg,"__esModule",{value:!0}),vg.onErrorResumeNext=void 0;
17var e=fr(),t=Nf(),r=bt(),n=Vn(),i=Ft();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var h=t.argsOrArgArray(o);return new e.Observable(function(f){var y=0,_=function(){if(y<h.length){var g=void 0;try{g=i.innerFrom(h[y++])}catch{_();return}var a=new r.OperatorSubscriber(f,void 0,n.noop,n.noop);g.subscribe(a),a.add(_)}else f.complete()};_()})}return vg.onErrorResumeNext=c,vg}var _g={},YL;function Dre(){if(YL)return _g;YL=1,Object.defineProperty(_g,"__esModule",{value:!0}),_g.pairs=void 0;var e=Zs();function t(r,n){return e.from(Object.entries(r),n)}return _g.pairs=t,_g}var Sg={},Cg={},QL;function VK(){if(QL)return Cg;QL=1,Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.not=void 0;function e(t,r){return function(n,i){return!t.call(r,n,i)}}return Cg.not=e,Cg}var Pg={},ZL;function ec(){if(ZL)return Pg;ZL=1,Object.defineProperty(Pg,"__esModule",{value:!0}),Pg.filter=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){return n.call(i,h,s++)&&o.next(h)}))})}return Pg.filter=r,Pg}var JL;function Ire(){if(JL)return Sg;JL=1,Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.partition=void 0;var e=VK(),t=ec(),r=Ft();function n(i,c,o){return[t.filter(c,o)(r.innerFrom(i)),t.filter(e.not(c,o))(r.innerFrom(i))]}return Sg.partition=n,Sg}var ou={},e4;function EK(){if(e4)return ou;e4=1,Object.defineProperty(ou,"__esModule",{value:!0}),ou.raceInit=ou.race=void 0;var e=fr(),t=Ft(),r=Nf(),n=bt();function i(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];return o=r.argsOrArgArray(o),o.length===1?t.innerFrom(o[0]):new e.Observable(c(o))}ou.race=i;function c(o){return function(s){for(var h=[],f=function(_){h.push(t.innerFrom(o[_]).subscribe(n.createOperatorSubscriber(s,function(g){if(h){for(var a=0;a<h.length;a++)a!==_&&h[a].unsubscribe();h=null}s.next(g)})))},y=0;h&&!s.closed&&y<o.length;y++)f(y)}}return ou.raceInit=c,ou}var Tg={},t4;function wre(){if(t4)return Tg;t4=1,Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.range=void 0;var e=fr(),t=ka();function r(n,i,c){if(i==null&&(i=n,n=0),i<=0)return t.EMPTY;var o=i+n;return new e.Observable(c?function(s){var h=n;return c.schedule(function(){h<o?(s.next(h++),this.schedule()):s.complete()})}:function(s){for(var h=n;h<o&&!s.closed;)s.next(h++);s.complete()})}return Tg.range=r,Tg}var xg={},r4;function Vre(){if(r4)return xg;r4=1,Object.defineProperty(xg,"__esModule",{value:!0}),xg.using=void 0;var e=fr(),t=Ft(),r=ka();function n(i,c){return new e.Observable(function(o){var s=i(),h=c(s),f=h?t.innerFrom(h):r.EMPTY;return f.subscribe(o),function(){s&&s.unsubscribe()}})}return xg.using=n,xg}var Mo={},n4;function nw(){if(n4)return Mo;n4=1;var e=Mo&&Mo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Mo&&Mo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Mo,"__esModule",{value:!0}),Mo.zip=void 0;var r=fr(),n=Ft(),i=Nf(),c=ka(),o=bt(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f),g=i.argsOrArgArray(f);return g.length?new r.Observable(function(a){var d=g.map(function(){return[]}),p=g.map(function(){return!1});a.add(function(){d=p=null});for(var u=function(v){n.innerFrom(g[v]).subscribe(o.createOperatorSubscriber(a,function(b){if(d[v].push(b),d.every(function(C){return C.length})){var P=d.map(function(C){return C.shift()});a.next(_?_.apply(void 0,t([],e(P))):P),d.some(function(C,l){return!C.length&&p[l]})&&a.complete()}},function(){p[v]=!0,!d[v].length&&a.complete()}))},m=0;!a.closed&&m<g.length;m++)u(m);return function(){d=p=null}}):c.EMPTY}return Mo.zip=h,Mo}var Ux={},i4;function Ere(){return i4||(i4=1,Object.defineProperty(Ux,"__esModule",{value:!0})),Ux}var Ag={},a4;function iw(){if(a4)return Ag;
17a4=1,Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.audit=void 0;var e=ft(),t=Ft(),r=bt();function n(i){return e.operate(function(c,o){var s=!1,h=null,f=null,y=!1,_=function(){if(f?.unsubscribe(),f=null,s){s=!1;var a=h;h=null,o.next(a)}y&&o.complete()},g=function(){f=null,y&&o.complete()};c.subscribe(r.createOperatorSubscriber(o,function(a){s=!0,h=a,f||t.innerFrom(i(a)).subscribe(f=r.createOperatorSubscriber(o,_,g))},function(){y=!0,(!s||!f||f.closed)&&o.complete()}))})}return Ag.audit=n,Ag}var Mg={},o4;function BK(){if(o4)return Mg;o4=1,Object.defineProperty(Mg,"__esModule",{value:!0}),Mg.auditTime=void 0;var e=Di(),t=iw(),r=Ol();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.audit(function(){return r.timer(i,c)})}return Mg.auditTime=n,Mg}var Dg={},s4;function RK(){if(s4)return Dg;s4=1,Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.buffer=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=[];return o.subscribe(r.createOperatorSubscriber(s,function(f){return h.push(f)},function(){s.next(h),s.complete()})),n.innerFrom(c).subscribe(r.createOperatorSubscriber(s,function(){var f=h;h=[],s.next(f)},t.noop)),function(){h=null}})}return Dg.buffer=i,Dg}var su={},c4;function OK(){if(c4)return su;c4=1;var e=su&&su.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(su,"__esModule",{value:!0}),su.bufferCount=void 0;var t=ft(),r=bt(),n=Ys();function i(c,o){return o===void 0&&(o=null),o=o??c,t.operate(function(s,h){var f=[],y=0;s.subscribe(r.createOperatorSubscriber(h,function(_){var g,a,d,p,u=null;y++%o===0&&f.push([]);try{for(var m=e(f),v=m.next();!v.done;v=m.next()){var b=v.value;b.push(_),c<=b.length&&(u=u??[],u.push(b))}}catch(l){g={error:l}}finally{try{v&&!v.done&&(a=m.return)&&a.call(m)}finally{if(g)throw g.error}}if(u)try{for(var P=e(u),C=P.next();!C.done;C=P.next()){var b=C.value;n.arrRemove(f,b),h.next(b)}}catch(l){d={error:l}}finally{try{C&&!C.done&&(p=P.return)&&p.call(P)}finally{if(d)throw d.error}}},function(){var _,g;try{for(var a=e(f),d=a.next();!d.done;d=a.next()){var p=d.value;h.next(p)}}catch(u){_={error:u}}finally{try{d&&!d.done&&(g=a.return)&&g.call(a)}finally{if(_)throw _.error}}h.complete()},void 0,function(){f=null}))})}return su.bufferCount=i,su}var cu={},u4;function kK(){if(u4)return cu;u4=1;var e=cu&&cu.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(cu,"__esModule",{value:!0}),cu.bufferTime=void 0;var t=Ji(),r=ft(),n=bt(),i=Ys(),c=Di(),o=Ii(),s=Qs();function h(f){for(var y,_,g=[],a=1;a<arguments.length;a++)g[a-1]=arguments[a];var d=(y=o.popScheduler(g))!==null&&y!==void 0?y:c.asyncScheduler,p=(_=g[0])!==null&&_!==void 0?_:null,u=g[1]||1/0;return r.operate(function(m,v){var b=[],P=!1,C=function(T){var A=T.buffer,x=T.subs;x.unsubscribe(),i.arrRemove(b,T),v.next(A),P&&l()},l=function(){if(b){var T=new t.Subscription;v.add(T);var A=[],x={buffer:A,subs:T};b.push(x),s.executeSchedule(T,d,function(){return C(x)},f)}};p!==null&&p>=0?s.executeSchedule(v,d,l,p,!0):P=!0,l();var S=n.createOperatorSubscriber(v,function(T){var A,x,M=b.slice();try{for(var D=e(M),V=D.next();!V.done;V=D.next()){var R=V.value,E=R.buffer;E.push(T),u<=E.length&&C(R)}}catch(I){A={error:I}}finally{try{V&&!V.done&&(x=D.return)&&x.call(D)}finally{if(A)throw A.error}}},function(){for(;b?.length;)v.next(b.shift().buffer);S?.unsubscribe(),v.complete(),v.unsubscribe()},void 0,function(){return b=null});m.subscribe(S)})}return cu.bufferTime=h,cu}var uu={},l4;function FK(){if(l4)return uu;l4=1;var e=uu&&uu.__values||function(h){var f=typeof Symbol=="function"&&Symbol.iterator,y=f&&h[f],_=0;
17if(y)return y.call(h);if(h&&typeof h.length=="number")return{next:function(){return h&&_>=h.length&&(h=void 0),{value:h&&h[_++],done:!h}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(uu,"__esModule",{value:!0}),uu.bufferToggle=void 0;var t=Ji(),r=ft(),n=Ft(),i=bt(),c=Vn(),o=Ys();function s(h,f){return r.operate(function(y,_){var g=[];n.innerFrom(h).subscribe(i.createOperatorSubscriber(_,function(a){var d=[];g.push(d);var p=new t.Subscription,u=function(){o.arrRemove(g,d),_.next(d),p.unsubscribe()};p.add(n.innerFrom(f(a)).subscribe(i.createOperatorSubscriber(_,u,c.noop)))},c.noop)),y.subscribe(i.createOperatorSubscriber(_,function(a){var d,p;try{for(var u=e(g),m=u.next();!m.done;m=u.next()){var v=m.value;v.push(a)}}catch(b){d={error:b}}finally{try{m&&!m.done&&(p=u.return)&&p.call(u)}finally{if(d)throw d.error}}},function(){for(;g.length>0;)_.next(g.shift());_.complete()}))})}return uu.bufferToggle=s,uu}var Ig={},d4;function LK(){if(d4)return Ig;d4=1,Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.bufferWhen=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=null,f=null,y=function(){f?.unsubscribe();var _=h;h=[],_&&s.next(_),n.innerFrom(c()).subscribe(f=r.createOperatorSubscriber(s,y,t.noop))};y(),o.subscribe(r.createOperatorSubscriber(s,function(_){return h?.push(_)},function(){h&&s.next(h),s.complete()},void 0,function(){return h=f=null}))})}return Ig.bufferWhen=i,Ig}var wg={},f4;function NK(){if(f4)return wg;f4=1,Object.defineProperty(wg,"__esModule",{value:!0}),wg.catchError=void 0;var e=Ft(),t=bt(),r=ft();function n(i){return r.operate(function(c,o){var s=null,h=!1,f;s=c.subscribe(t.createOperatorSubscriber(o,void 0,void 0,function(y){f=e.innerFrom(i(y,n(i)(c))),s?(s.unsubscribe(),s=null,f.subscribe(o)):h=!0})),h&&(s.unsubscribe(),s=null,f.subscribe(o))})}return wg.catchError=n,wg}var Vg={},Eg={},Bg={},Rg={},Og={},kg={},m4;function qK(){if(m4)return kg;m4=1,Object.defineProperty(kg,"__esModule",{value:!0}),kg.scanInternals=void 0;var e=bt();function t(r,n,i,c,o){return function(s,h){var f=i,y=n,_=0;s.subscribe(e.createOperatorSubscriber(h,function(g){var a=_++;y=f?r(y,g,a):(f=!0,g),c&&h.next(y)},o&&(function(){f&&h.next(y),h.complete()})))}}return kg.scanInternals=t,kg}var p4;function qf(){if(p4)return Og;p4=1,Object.defineProperty(Og,"__esModule",{value:!0}),Og.reduce=void 0;var e=qK(),t=ft();function r(n,i){return t.operate(e.scanInternals(n,i,arguments.length>=2,!1,!0))}return Og.reduce=r,Og}var h4;function aw(){if(h4)return Rg;h4=1,Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.toArray=void 0;var e=qf(),t=ft(),r=function(i,c){return i.push(c),i};function n(){return t.operate(function(i,c){e.reduce(r,[])(i).subscribe(c)})}return Rg.toArray=n,Rg}var g4;function UK(){if(g4)return Bg;g4=1,Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.joinAllInternals=void 0;var e=En(),t=Rl(),r=YT(),n=ss(),i=aw();function c(o,s){return r.pipe(i.toArray(),n.mergeMap(function(h){return o(h)}),s?t.mapOneOrManyArgs(s):e.identity)}return Bg.joinAllInternals=c,Bg}var y4;function ow(){if(y4)return Eg;y4=1,Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.combineLatestAll=void 0;var e=tw(),t=UK();function r(n){return t.joinAllInternals(e.combineLatest,n)}return Eg.combineLatestAll=r,Eg}var v4;function jK(){if(v4)return Vg;v4=1,Object.defineProperty(Vg,"__esModule",{value:!0}),Vg.combineAll=void 0;var e=ow();return Vg.combineAll=e.combineLatestAll,Vg}var Do={},Io={},b4;function GK(){if(b4)return Io;b4=1;var e=Io&&Io.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Io&&Io.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Io,"__esModule",{value:!0}),Io.combineLatest=void 0;var r=tw(),n=ft(),i=Nf(),c=Rl(),o=YT(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f);return _?o.pipe(h.apply(void 0,t([],e(f))),c.mapOneOrManyArgs(_)):n.operate(function(g,a){r.combineLatestInit(t([g],e(i.argsOrArgArray(f))))(a)})}return Io.combineLatest=h,Io}var _4;function zK(){if(_4)return Do;_4=1;var e=Do&&Do.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}
17finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Do&&Do.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Do,"__esModule",{value:!0}),Do.combineLatestWith=void 0;var r=GK();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.combineLatest.apply(void 0,t([],e(i)))}return Do.combineLatestWith=n,Do}var Fg={},S4;function sw(){if(S4)return Fg;S4=1,Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.concatMap=void 0;var e=ss(),t=or();function r(n,i){return t.isFunction(i)?e.mergeMap(n,i,1):e.mergeMap(n,1)}return Fg.concatMap=r,Fg}var Lg={},C4;function HK(){if(C4)return Lg;C4=1,Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.concatMapTo=void 0;var e=sw(),t=or();function r(n,i){return t.isFunction(i)?e.concatMap(function(){return n},i):e.concatMap(function(){return n})}return Lg.concatMapTo=r,Lg}var wo={},Vo={},P4;function WK(){if(P4)return Vo;P4=1;var e=Vo&&Vo.__read||function(s,h){var f=typeof Symbol=="function"&&s[Symbol.iterator];if(!f)return s;var y=f.call(s),_,g=[],a;try{for(;(h===void 0||h-- >0)&&!(_=y.next()).done;)g.push(_.value)}catch(d){a={error:d}}finally{try{_&&!_.done&&(f=y.return)&&f.call(y)}finally{if(a)throw a.error}}return g},t=Vo&&Vo.__spreadArray||function(s,h){for(var f=0,y=h.length,_=s.length;f<y;f++,_++)s[_]=h[f];return s};Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.concat=void 0;var r=ft(),n=JT(),i=Ii(),c=Zs();function o(){for(var s=[],h=0;h<arguments.length;h++)s[h]=arguments[h];var f=i.popScheduler(s);return r.operate(function(y,_){n.concatAll()(c.from(t([y],e(s)),f)).subscribe(_)})}return Vo.concat=o,Vo}var T4;function $K(){if(T4)return wo;T4=1;var e=wo&&wo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=wo&&wo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(wo,"__esModule",{value:!0}),wo.concatWith=void 0;var r=WK();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.concat.apply(void 0,t([],e(i)))}return wo.concatWith=n,wo}var Ng={},qg={},x4;function Bre(){if(x4)return qg;x4=1,Object.defineProperty(qg,"__esModule",{value:!0}),qg.fromSubscribable=void 0;var e=fr();function t(r){return new e.Observable(function(n){return r.subscribe(n)})}return qg.fromSubscribable=t,qg}var A4;function r2(){if(A4)return Ng;A4=1,Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.connect=void 0;var e=Bn(),t=Ft(),r=ft(),n=Bre(),i={connector:function(){return new e.Subject}};function c(o,s){s===void 0&&(s=i);var h=s.connector;return r.operate(function(f,y){var _=h();t.innerFrom(o(n.fromSubscribable(_))).subscribe(y),y.add(f.subscribe(_))})}return Ng.connect=c,Ng}var Ug={},M4;function XK(){if(M4)return Ug;M4=1,Object.defineProperty(Ug,"__esModule",{value:!0}),Ug.count=void 0;var e=qf();function t(r){return e.reduce(function(n,i,c){return!r||r(i,c)?n+1:n},0)}return Ug.count=t,Ug}var jg={},D4;function KK(){if(D4)return jg;D4=1,Object.defineProperty(jg,"__esModule",{value:!0}),jg.debounce=void 0;var e=ft(),t=Vn(),r=bt(),n=Ft();function i(c){return e.operate(function(o,s){var h=!1,f=null,y=null,_=function(){if(y?.unsubscribe(),y=null,h){h=!1;var g=f;f=null,s.next(g)}};o.subscribe(r.createOperatorSubscriber(s,function(g){y?.unsubscribe(),h=!0,f=g,y=r.createOperatorSubscriber(s,_,t.noop),n.innerFrom(c(g)).subscribe(y)},function(){_(),s.complete()},void 0,function(){f=y=null}))})}return jg.debounce=i,jg}var Gg={},I4;function YK(){if(I4)return Gg;I4=1,Object.defineProperty(Gg,"__esModule",{value:!0}),Gg.debounceTime=void 0;var e=Di(),t=ft(),r=bt();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.operate(function(o,s){var h=null,f=null,y=null,_=function(){if(h){h.unsubscribe(),h=null;var a=f;f=null,s.next(a)}};function g(){var a=y+i,d=c.now();if(d<a){h=this.schedule(void 0,a-d),s.add(h);return}_()}
17o.subscribe(r.createOperatorSubscriber(s,function(a){f=a,y=c.now(),h||(h=c.schedule(g,i),s.add(h))},function(){_(),s.complete()},void 0,function(){f=h=null}))})}return Gg.debounceTime=n,Gg}var zg={},w4;function TS(){if(w4)return zg;w4=1,Object.defineProperty(zg,"__esModule",{value:!0}),zg.defaultIfEmpty=void 0;var e=ft(),t=bt();function r(n){return e.operate(function(i,c){var o=!1;i.subscribe(t.createOperatorSubscriber(c,function(s){o=!0,c.next(s)},function(){o||c.next(n),c.complete()}))})}return zg.defaultIfEmpty=r,zg}var Hg={},Wg={},$g={},V4;function xS(){if(V4)return $g;V4=1,Object.defineProperty($g,"__esModule",{value:!0}),$g.take=void 0;var e=ka(),t=ft(),r=bt();function n(i){return i<=0?function(){return e.EMPTY}:t.operate(function(c,o){var s=0;c.subscribe(r.createOperatorSubscriber(o,function(h){++s<=i&&(o.next(h),i<=s&&o.complete())}))})}return $g.take=n,$g}var Xg={},E4;function cw(){if(E4)return Xg;E4=1,Object.defineProperty(Xg,"__esModule",{value:!0}),Xg.ignoreElements=void 0;var e=ft(),t=bt(),r=Vn();function n(){return e.operate(function(i,c){i.subscribe(t.createOperatorSubscriber(c,r.noop))})}return Xg.ignoreElements=n,Xg}var Kg={},B4;function uw(){if(B4)return Kg;B4=1,Object.defineProperty(Kg,"__esModule",{value:!0}),Kg.mapTo=void 0;var e=Js();function t(r){return e.map(function(){return r})}return Kg.mapTo=t,Kg}var R4;function lw(){if(R4)return Wg;R4=1,Object.defineProperty(Wg,"__esModule",{value:!0}),Wg.delayWhen=void 0;var e=e2(),t=xS(),r=cw(),n=uw(),i=ss(),c=Ft();function o(s,h){return h?function(f){return e.concat(h.pipe(t.take(1),r.ignoreElements()),f.pipe(o(s)))}:i.mergeMap(function(f,y){return c.innerFrom(s(f,y)).pipe(t.take(1),n.mapTo(f))})}return Wg.delayWhen=o,Wg}var O4;function QK(){if(O4)return Hg;
17O4=1,Object.defineProperty(Hg,"__esModule",{value:!0}),Hg.delay=void 0;var e=Di(),t=lw(),r=Ol();function n(i,c){c===void 0&&(c=e.asyncScheduler);var o=r.timer(i,c);return t.delayWhen(function(){return o})}return Hg.delay=n,Hg}var Yg={},k4;function ZK(){if(k4)return Yg;k4=1,Object.defineProperty(Yg,"__esModule",{value:!0}),Yg.dematerialize=void 0;var e=JI(),t=ft(),r=bt();function n(){return t.operate(function(i,c){i.subscribe(r.createOperatorSubscriber(c,function(o){return e.observeNotification(o,c)}))})}return Yg.dematerialize=n,Yg}var Qg={},F4;function JK(){if(F4)return Qg;F4=1,Object.defineProperty(Qg,"__esModule",{value:!0}),Qg.distinct=void 0;var e=ft(),t=bt(),r=Vn(),n=Ft();function i(c,o){return e.operate(function(s,h){var f=new Set;s.subscribe(t.createOperatorSubscriber(h,function(y){var _=c?c(y):y;f.has(_)||(f.add(_),h.next(y))})),o&&n.innerFrom(o).subscribe(t.createOperatorSubscriber(h,function(){return f.clear()},r.noop))})}return Qg.distinct=i,Qg}var Zg={},L4;function dw(){if(L4)return Zg;L4=1,Object.defineProperty(Zg,"__esMo
17dule",{value:!0}),Zg.distinctUntilChanged=void 0;var e=En(),t=ft(),r=bt();function n(c,o){return o===void 0&&(o=e.identity),c=c??i,t.operate(function(s,h){var f,y=!0;s.subscribe(r.createOperatorSubscriber(h,function(_){var g=o(_);(y||!c(f,g))&&(y=!1,f=g,h.next(_))}))})}Zg.distinctUntilChanged=n;function i(c,o){return c===o}return Zg}var Jg={},N4;function eY(){if(N4)return Jg;N4=1,Object.defineProperty(Jg,"__esModule",{value:!0}),Jg.distinctUntilKeyChanged=void 0;var e=dw();function t(r,n){return e.distinctUntilChanged(function(i,c){return n?n(i[r],c[r]):i[r]===c[r]})}return Jg.distinctUntilKeyChanged=t,Jg}var e0={},t0={},q4;function AS(){if(q4)return t0;q4=1,Object.defineProperty(t0,"__esModule",{value:!0}),t0.throwIfEmpty=void 0;var e=Bl(),t=ft(),r=bt();function n(c){return c===void 0&&(c=i),t.operate(function(o,s){var h=!1;o.subscribe(r.createOperatorSubscriber(s,function(f){h=!0,s.next(f)},function(){return h?s.complete():s.error(c())}))})}t0.throwIfEmpty=n;function i(){return new e.EmptyError}return t0}var U4;function tY(){if(U4)return e0;U4=1,Object.defineProperty(e0,"__esModule",{value:!0}),e0.elementAt=void 0;var e=PK(),t=ec(),r=AS(),n=TS(),i=xS();function c(o,s){if(o<0)throw new e.ArgumentOutOfRangeError;var h=arguments.length>=2;return function(f){return f.pipe(t.filter(function(y,_){return _===o}),i.take(1),h?n.defaultIfEmpty(s):r.throwIfEmpty(function(){return new e.ArgumentOutOfRangeError}))}}return e0.elementAt=c,e0}var Eo={},j4;function rY(){if(j4)return Eo;j4=1;var e=Eo&&Eo.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=Eo&&Eo.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(Eo,"__esModule",{value:!0}),Eo.endWith=void 0;var r=e2(),n=ZI();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return function(s){return r.concat(s,n.of.apply(void 0,t([],e(c))))}}return Eo.endWith=i,Eo}var r0={},G4;function nY(){if(G4)return r0;G4=1,Object.defineProperty(r0,"__esModule",{value:!0}),r0.every=void 0;var e=ft(),t=bt();function r(n,i){return e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){n.call(i,h,s++,c)||(o.next(!1),o.complete())},function(){o.next(!0),o.complete()}))})}return r0.every=r,r0}var n0={},i0={},a0={},z4;function fw(){if(z4)return a0;z4=1,Object.defineProperty(a0,"__esModule",{value:!0}),a0.exhaustMap=void 0;var e=Js(),t=Ft(),r=ft(),n=bt();function i(c,o){return o?function(s){return s.pipe(i(function(h,f){return t.innerFrom(c(h,f)).pipe(e.map(function(y,_){return o(h,y,f,_)}))}))}:r.operate(function(s,h){var f=0,y=null,_=!1;s.subscribe(n.createOperatorSubscriber(h,function(g){y||(y=n.createOperatorSubscriber(h,void 0,function(){y=null,_&&h.complete()}),t.innerFrom(c(g,f++)).subscribe(y))},function(){_=!0,!y&&h.complete()}))})}return a0.exhaustMap=i,a0}var H4;function mw(){if(H4)return i0;H4=1,Object.defineProperty(i0,"__esModule",{value:!0}),i0.exhaustAll=void 0;var e=fw(),t=En();function r(){return e.exhaustMap(t.identity)}return i0.exhaustAll=r,i0}var W4;function iY(){if(W4)return n0;W4=1,Object.defineProperty(n0,"__esModule",{value:!0}),n0.exhaust=void 0;var e=mw();return n0.exhaust=e.exhaustAll,n0}var o0={},$4;function aY(){if($4)return o0;$4=1,Object.defineProperty(o0,"__esModule",{value:!0}),o0.expand=void 0;var e=ft(),t=rw();function r(n,i,c){return i===void 0&&(i=1/0),i=(i||0)<1?1/0:i,e.operate(function(o,s){return t.mergeInternals(o,s,n,i,void 0,!0,c)})}return o0.expand=r,o0}var s0={},X4;function oY(){if(X4)return s0;X4=1,Object.defineProperty(s0,"__esModule",{value:!0}),s0.finalize=void 0;var e=ft();function t(r){return e.operate(function(n,i){try{n.subscribe(i)}finally{i.add(r)}})}return s0.finalize=t,s0}var lu={},K4;function pw(){if(K4)return lu;K4=1,Object.defineProperty(lu,"__esModule",{value:!0}),lu.createFind=lu.find=void 0;var e=ft(),t=bt();
17function r(i,c){return e.operate(n(i,c,"value"))}lu.find=r;function n(i,c,o){var s=o==="index";return function(h,f){var y=0;h.subscribe(t.createOperatorSubscriber(f,function(_){var g=y++;i.call(c,_,g,h)&&(f.next(s?g:_),f.complete())},function(){f.next(s?-1:void 0),f.complete()}))}}return lu.createFind=n,lu}var c0={},Y4;function sY(){if(Y4)return c0;Y4=1,Object.defineProperty(c0,"__esModule",{value:!0}),c0.findIndex=void 0;var e=ft(),t=pw();function r(n,i){return e.operate(t.createFind(n,i,"index"))}return c0.findIndex=r,c0}var u0={},Q4;function cY(){if(Q4)return u0;Q4=1,Object.defineProperty(u0,"__esModule",{value:!0}),u0.first=void 0;var e=Bl(),t=ec(),r=xS(),n=TS(),i=AS(),c=En();function o(s,h){var f=arguments.length>=2;return function(y){return y.pipe(s?t.filter(function(_,g){return s(_,g,y)}):c.identity,r.take(1),f?n.defaultIfEmpty(h):i.throwIfEmpty(function(){return new e.EmptyError}))}}return u0.first=o,u0}var l0={},Z4;function uY(){if(Z4)return l0;Z4=1,Object.defineProperty(l0,"__esModule",{value:!0}),l0.groupBy=void 0;var e=fr(),t=Ft(),r=Bn(),n=ft(),i=bt();function c(o,s,h,f){return n.operate(function(y,_){var g;!s||typeof s=="function"?g=s:(h=s.duration,g=s.element,f=s.connector);var a=new Map,d=function(P){a.forEach(P),P(_)},p=function(P){return d(function(C){return C.error(P)})},u=0,m=!1,v=new i.OperatorSubscriber(_,function(P){try{var C=o(P),l=a.get(C);if(!l){a.set(C,l=f?f():new r.Subject);var S=b(C,l);if(_.next(S),h){var T=i.createOperatorSubscriber(l,function(){l.complete(),T?.unsubscribe()},void 0,void 0,function(){return a.delete(C)});v.add(t.innerFrom(h(S)).subscribe(T))}}l.next(g?g(P):P)}catch(A){p(A)}},function(){return d(function(P){return P.complete()})},p,function(){return a.clear()},function(){return m=!0,u===0});y.subscribe(v);function b(P,C){var l=new e.Observable(function(S){u++;var T=C.subscribe(S);return function(){T.unsubscribe(),--u===0&&m&&v.unsubscribe()}});return l.key=P,l}})}return l0.groupBy=c,l0}var d0={},J4;function lY(){if(J4)return d0;J4=1,Object.defineProperty(d0,"__esModule",{value:!0}),d0.isEmpty=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){n.subscribe(t.createOperatorSubscriber(i,function(){i.next(!1),i.complete()},function(){i.next(!0),i.complete()}))})}return d0.isEmpty=r,d0}var f0={},du={},eN;function hw(){if(eN)return du;eN=1;var e=du&&du.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(du,"__esModule",{value:!0}),du.takeLast=void 0;var t=ka(),r=ft(),n=bt();function i(c){return c<=0?function(){return t.EMPTY}:r.operate(function(o,s){var h=[];o.subscribe(n.createOperatorSubscriber(s,function(f){h.push(f),c<h.length&&h.shift()},function(){var f,y;try{for(var _=e(h),g=_.next();!g.done;g=_.next()){var a=g.value;s.next(a)}}catch(d){f={error:d}}finally{try{g&&!g.done&&(y=_.return)&&y.call(_)}finally{if(f)throw f.error}}s.complete()},void 0,function(){h=null}))})}return du.takeLast=i,du}var tN;function dY(){if(tN)return f0;tN=1,Object.defineProperty(f0,"__esModule",{value:!0}),f0.last=void 0;var e=Bl(),t=ec(),r=hw(),n=AS(),i=TS(),c=En();function o(s,h){var f=arguments.length>=2;return function(y){return y.pipe(s?t.filter(function(_,g){return s(_,g,y)}):c.identity,r.takeLast(1),f?i.defaultIfEmpty(h):n.throwIfEmpty(function(){return new e.EmptyError}))}}return f0.last=o,f0}var m0={},rN;function fY(){if(rN)return m0;rN=1,Object.defineProperty(m0,"__esModule",{value:!0}),m0.materialize=void 0;var e=JI(),t=ft(),r=bt();function n(){return t.operate(function(i,c){i.subscribe(r.createOperatorSubscriber(c,function(o){c.next(e.Notification.createNext(o))},function(){c.next(e.Notification.createComplete()),c.complete()},function(o){c.next(e.Notification.createError(o)),c.complete()}))})}return m0.materialize=n,m0}var p0={},nN;function mY(){if(nN)return p0;nN=1,Object.defineProperty(p0,"__esModule",{value:!0}),p0.max=void 0;var e=qf(),t=or();function r(n){return e.reduce(t.isFunction(n)?function(i,c){return n(i,c)>0?i:c}:function(i,c){return i>c?i:c})}return p0.max=r,p0}var h0={},iN;
17function pY(){if(iN)return h0;iN=1,Object.defineProperty(h0,"__esModule",{value:!0}),h0.flatMap=void 0;var e=ss();return h0.flatMap=e.mergeMap,h0}var g0={},aN;function hY(){if(aN)return g0;aN=1,Object.defineProperty(g0,"__esModule",{value:!0}),g0.mergeMapTo=void 0;var e=ss(),t=or();function r(n,i,c){return c===void 0&&(c=1/0),t.isFunction(i)?e.mergeMap(function(){return n},i,c):(typeof i=="number"&&(c=i),e.mergeMap(function(){return n},c))}return g0.mergeMapTo=r,g0}var y0={},oN;function gY(){if(oN)return y0;oN=1,Object.defineProperty(y0,"__esModule",{value:!0}),y0.mergeScan=void 0;var e=ft(),t=rw();function r(n,i,c){return c===void 0&&(c=1/0),e.operate(function(o,s){var h=i;return t.mergeInternals(o,s,function(f,y){return n(h,f,y)},c,function(f){h=f},!1,void 0,function(){return h=null})})}return y0.mergeScan=r,y0}var Bo={},Ro={},sN;function yY(){if(sN)return Ro;sN=1;var e=Ro&&Ro.__read||function(s,h){var f=typeof Symbol=="function"&&s[Symbol.iterator];if(!f)return s;var y=f.call(s),_,g=[],a;try{for(;(h===void 0||h-- >0)&&!(_=y.next()).done;)g.push(_.value)}catch(d){a={error:d}}finally{try{_&&!_.done&&(f=y.return)&&f.call(y)}finally{if(a)throw a.error}}return g},t=Ro&&Ro.__spreadArray||function(s,h){for(var f=0,y=h.length,_=s.length;f<y;f++,_++)s[_]=h[f];return s};Object.defineProperty(Ro,"__esModule",{value:!0}),Ro.merge=void 0;var r=ft(),n=PS(),i=Ii(),c=Zs();function o(){for(var s=[],h=0;h<arguments.length;h++)s[h]=arguments[h];var f=i.popScheduler(s),y=i.popNumber(s,1/0);return r.operate(function(_,g){n.mergeAll(y)(c.from(t([_],e(s)),f)).subscribe(g)})}return Ro.merge=o,Ro}var cN;function vY(){if(cN)return Bo;cN=1;var e=Bo&&Bo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Bo&&Bo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Bo,"__esModule",{value:!0}),Bo.mergeWith=void 0;var r=yY();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.merge.apply(void 0,t([],e(i)))}return Bo.mergeWith=n,Bo}var v0={},uN;function bY(){if(uN)return v0;uN=1,Object.defineProperty(v0,"__esModule",{value:!0}),v0.min=void 0;var e=qf(),t=or();function r(n){return e.reduce(t.isFunction(n)?function(i,c){return n(i,c)<0?i:c}:function(i,c){return i<c?i:c})}return v0.min=r,v0}var b0={},lN;function n2(){if(lN)return b0;lN=1,Object.defineProperty(b0,"__esModule",{value:!0}),b0.multicast=void 0;var e=QT(),t=or(),r=r2();function n(i,c){var o=t.isFunction(i)?i:function(){return i};return t.isFunction(c)?r.connect(c,{connector:o}):function(s){return new e.ConnectableObservable(s,o)}}return b0.multicast=n,b0}var ua={},dN;function _Y(){if(dN)return ua;dN=1;var e=ua&&ua.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=ua&&ua.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(ua,"__esModule",{value:!0}),ua.onErrorResumeNext=ua.onErrorResumeNextWith=void 0;var r=Nf(),n=wK();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];var s=r.argsOrArgArray(c);return function(h){return n.onErrorResumeNext.apply(void 0,t([h],e(s)))}}return ua.onErrorResumeNextWith=i,ua.onErrorResumeNext=i,ua}var _0={},fN;function SY(){if(fN)return _0;fN=1,Object.defineProperty(_0,"__esModule",{value:!0}),_0.pairwise=void 0;var e=ft(),t=bt();function r(){return e.operate(function(n,i){var c,o=!1;n.subscribe(t.createOperatorSubscriber(i,function(s){var h=c;c=s,o&&i.next([h,s]),o=!0}))})}return _0.pairwise=r,_0}var S0={},mN;function CY(){if(mN)return S0;mN=1,Object.defineProperty(S0,"__esModule",{value:!0}),S0.pluck=void 0;var e=Js();function t(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];var i=r.length;if(i===0)throw new Error("list of properties cannot be empty.");return e.map(function(c){for(var o=c,s=0;s<i;s++){var h=o?.[r[s]];if(typeof h<"u")o=h;else return}return o}
17)}return S0.pluck=t,S0}var C0={},pN;function PY(){if(pN)return C0;pN=1,Object.defineProperty(C0,"__esModule",{value:!0}),C0.publish=void 0;var e=Bn(),t=n2(),r=r2();function n(i){return i?function(c){return r.connect(i)(c)}:function(c){return t.multicast(new e.Subject)(c)}}return C0.publish=n,C0}var P0={},hN;function TY(){if(hN)return P0;hN=1,Object.defineProperty(P0,"__esModule",{value:!0}),P0.publishBehavior=void 0;var e=dK(),t=QT();function r(n){return function(i){var c=new e.BehaviorSubject(n);return new t.ConnectableObservable(i,function(){return c})}}return P0.publishBehavior=r,P0}var T0={},gN;function xY(){if(gN)return T0;gN=1,Object.defineProperty(T0,"__esModule",{value:!0}),T0.publishLast=void 0;var e=KI(),t=QT();function r(){return function(n){var i=new e.AsyncSubject;return new t.ConnectableObservable(n,function(){return i})}}return T0.publishLast=r,T0}var x0={},yN;function AY(){if(yN)return x0;yN=1,Object.defineProperty(x0,"__esModule",{value:!0}),x0.publishReplay=void 0;var e=XI(),t=n2(),r=or();function n(i,c,o,s){o&&!r.isFunction(o)&&(s=o);var h=r.isFunction(o)?o:void 0;return function(f){return t.multicast(new e.ReplaySubject(i,c,s),h)(f)}}return x0.publishReplay=n,x0}var Oo={},vN;function gw(){if(vN)return Oo;vN=1;var e=Oo&&Oo.__read||function(o,s){var h=typeof Symbol=="function"&&o[Symbol.iterator];if(!h)return o;var f=h.call(o),y,_=[],g;try{for(;(s===void 0||s-- >0)&&!(y=f.next()).done;)_.push(y.value)}catch(a){g={error:a}}finally{try{y&&!y.done&&(h=f.return)&&h.call(f)}finally{if(g)throw g.error}}return _},t=Oo&&Oo.__spreadArray||function(o,s){for(var h=0,f=s.length,y=o.length;h<f;h++,y++)o[y]=s[h];return o};Object.defineProperty(Oo,"__esModule",{value:!0}),Oo.raceWith=void 0;var r=EK(),n=ft(),i=En();function c(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];return o.length?n.operate(function(h,f){r.raceInit(t([h],e(o)))(f)}):i.identity}return Oo.raceWith=c,Oo}var A0={},bN;function MY(){if(bN)return A0;bN=1,Object.defineProperty(A0,"__esModule",{value:!0}),A0.repeat=void 0;var e=ka(),t=ft(),r=bt(),n=Ft(),i=Ol();function c(o){var s,h=1/0,f;return o!=null&&(typeof o=="object"?(s=o.count,h=s===void 0?1/0:s,f=o.delay):h=o),h<=0?function(){return e.EMPTY}:t.operate(function(y,_){var g=0,a,d=function(){if(a?.unsubscribe(),a=null,f!=null){var u=typeof f=="number"?i.timer(f):n.innerFrom(f(g)),m=r.createOperatorSubscriber(_,function(){m.unsubscribe(),p()});u.subscribe(m)}else p()},p=function(){var u=!1;a=y.subscribe(r.createOperatorSubscriber(_,void 0,function(){++g<h?a?d():u=!0:_.complete()})),u&&d()};p()})}return A0.repeat=c,A0}var M0={},_N;function DY(){if(_N)return M0;_N=1,Object.defineProperty(M0,"__esModule",{value:!0}),M0.repeatWhen=void 0;var e=Ft(),t=Bn(),r=ft(),n=bt();function i(c){return r.operate(function(o,s){var h,f=!1,y,_=!1,g=!1,a=function(){return g&&_&&(s.complete(),!0)},d=function(){return y||(y=new t.Subject,e.innerFrom(c(y)).subscribe(n.createOperatorSubscriber(s,function(){h?p():f=!0},function(){_=!0,a()}))),y},p=function(){g=!1,h=o.subscribe(n.createOperatorSubscriber(s,void 0,function(){g=!0,!a()&&d().next()})),f&&(h.unsubscribe(),h=null,f=!1,p())};p()})}return M0.repeatWhen=i,M0}var D0={},SN;function IY(){if(SN)return D0;SN=1,Object.defineProperty(D0,"__esModule",{value:!0}),D0.retry=void 0;var e=ft(),t=bt(),r=En(),n=Ol(),i=Ft();function c(o){o===void 0&&(o=1/0);var s;o&&typeof o=="object"?s=o:s={count:o};var h=s.count,f=h===void 0?1/0:h,y=s.delay,_=s.resetOnSuccess,g=_===void 0?!1:_;return f<=0?r.identity:e.operate(function(a,d){var p=0,u,m=function(){var v=!1;u=a.subscribe(t.createOperatorSubscriber(d,function(b){g&&(p=0),d.next(b)},void 0,function(b){if(p++<f){var P=function(){u?(u.unsubscribe(),u=null,m()):v=!0};if(y!=null){var C=typeof y=="number"?n.timer(y):i.innerFrom(y(b,p)),l=t.createOperatorSubscriber(d,function(){l.unsubscribe(),P()},function(){d.complete()});C.subscribe(l)}else P()}else d.error(b)})),v&&(u.unsubscribe(),u=null,m())};m()})}return D0.retry=c,D0}var I0={},CN;function wY(){if(CN)return I0;CN=1,Object.defineProperty(I0,"__esModule",{value:!0}),I0.retryWhen=void 0;var e=Ft(),t=Bn(),r=ft(),n=bt();function i(c){return r.operate(function(o,s){var h,f=!1,y,_=function(){h=o.subscribe(n.createOperatorSubscriber(s,void 0,void 0,function(g){y||(y=new t.Subject,e.innerFrom(c(y)).subscribe(n.createOperatorSubscriber(s,function(){return h?_():f=!0}))),y&&y.next(g)})),f&&(h.unsubscribe(),h=null,f=!1,_())};_()})}return I0.retryWhen=i,I0}var w0={},PN;function yw(){if(PN)return w0;PN=1,Object.defineProperty(w0,"__esModule",{value:!0}),w0.sample=void 0;
17var e=Ft(),t=ft(),r=Vn(),n=bt();function i(c){return t.operate(function(o,s){var h=!1,f=null;o.subscribe(n.createOperatorSubscriber(s,function(y){h=!0,f=y})),e.innerFrom(c).subscribe(n.createOperatorSubscriber(s,function(){if(h){h=!1;var y=f;f=null,s.next(y)}},r.noop))})}return w0.sample=i,w0}var V0={},TN;function VY(){if(TN)return V0;TN=1,Object.defineProperty(V0,"__esModule",{value:!0}),V0.sampleTime=void 0;var e=Di(),t=yw(),r=IK();function n(i,c){return c===void 0&&(c=e.asyncScheduler),t.sample(r.interval(i,c))}return V0.sampleTime=n,V0}var E0={},xN;function EY(){if(xN)return E0;xN=1,Object.defineProperty(E0,"__esModule",{value:!0}),E0.scan=void 0;var e=ft(),t=qK();function r(n,i){return e.operate(t.scanInternals(n,i,arguments.length>=2,!0))}return E0.scan=r,E0}var B0={},AN;function BY(){if(AN)return B0;AN=1,Object.defineProperty(B0,"__esModule",{value:!0}),B0.sequenceEqual=void 0;var e=ft(),t=bt(),r=Ft();function n(c,o){return o===void 0&&(o=function(s,h){return s===h}),e.operate(function(s,h){var f=i(),y=i(),_=function(a){h.next(a),h.complete()},g=function(a,d){var p=t.createOperatorSubscriber(h,function(u){var m=d.buffer,v=d.complete;m.length===0?v?_(!1):a.buffer.push(u):!o(u,m.shift())&&_(!1)},function(){a.complete=!0;var u=d.complete,m=d.buffer;u&&_(m.length===0),p?.unsubscribe()});return p};s.subscribe(g(f,y)),r.innerFrom(c).subscribe(g(y,f))})}B0.sequenceEqual=n;function i(){return{buffer:[],complete:!1}}return B0}var ko={},MN;function vw(){if(MN)return ko;MN=1;var e=ko&&ko.__read||function(h,f){var y=typeof Symbol=="function"&&h[Symbol.iterator];if(!y)return h;var _=y.call(h),g,a=[],d;try{for(;(f===void 0||f-- >0)&&!(g=_.next()).done;)a.push(g.value)}catch(p){d={error:p}}finally{try{g&&!g.done&&(y=_.return)&&y.call(_)}finally{if(d)throw d.error}}return a},t=ko&&ko.__spreadArray||function(h,f){for(var y=0,_=f.length,g=h.length;y<_;y++,g++)h[g]=f[y];return h};Object.defineProperty(ko,"__esModule",{value:!0}),ko.share=void 0;var r=Ft(),n=Bn(),i=vS(),c=ft();function o(h){h===void 0&&(h={});var f=h.connector,y=f===void 0?function(){return new n.Subject}:f,_=h.resetOnError,g=_===void 0?!0:_,a=h.resetOnComplete,d=a===void 0?!0:a,p=h.resetOnRefCountZero,u=p===void 0?!0:p;return function(m){var v,b,P,C=0,l=!1,S=!1,T=function(){b?.unsubscribe(),b=void 0},A=function(){T(),v=P=void 0,l=S=!1},x=function(){var M=v;A(),M?.unsubscribe()};return c.operate(function(M,D){C++,!S&&!l&&T();var V=P=P??y();D.add(function(){C--,C===0&&!S&&!l&&(b=s(x,u))}),V.subscribe(D),!v&&C>0&&(v=new i.SafeSubscriber({next:function(R){return V.next(R)},error:function(R){S=!0,T(),b=s(A,g,R),V.error(R)},complete:function(){l=!0,T(),b=s(A,d),V.complete()}}),r.innerFrom(M).subscribe(v))})(m)}}ko.share=o;function s(h,f){for(var y=[],_=2;_<arguments.length;_++)y[_-2]=arguments[_];if(f===!0){h();return}if(f!==!1){var g=new i.SafeSubscriber({next:function(){g.unsubscribe(),h()}});return r.innerFrom(f.apply(void 0,t([],e(y)))).subscribe(g)}}return ko}var R0={},DN;function RY(){if(DN)return R0;DN=1,Object.defineProperty(R0,"__esModule",{value:!0}),R0.shareReplay=void 0;var e=XI(),t=vw();function r(n,i,c){var o,s,h,f,y=!1;return n&&typeof n=="object"?(o=n.bufferSize,f=o===void 0?1/0:o,s=n.windowTime,i=s===void 0?1/0:s,h=n.refCount,y=h===void 0?!1:h,c=n.scheduler):f=n??1/0,t.share({connector:function(){return new e.ReplaySubject(f,i,c)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:y})}return R0.shareReplay=r,R0}var O0={},IN;function OY(){if(IN)return O0;IN=1,Object.defineProperty(O0,"__esModule",{value:!0}),O0.single=void 0;var e=Bl(),t=xK(),r=TK(),n=ft(),i=bt();function c(o){return n.operate(function(s,h){var f=!1,y,_=!1,g=0;s.subscribe(i.createOperatorSubscriber(h,function(a){_=!0,(!o||o(a,g++,s))&&(f&&h.error(new t.SequenceError("Too many matching values")),f=!0,y=a)},function(){f?(h.next(y),h.complete()):h.error(_?new r.NotFoundError("No matching values"):new e.EmptyError)}))})}return O0.single=c,O0}var k0={},wN;function kY(){if(wN)return k0;wN=1,Object.defineProperty(k0,"__esModule",{value:!0}),k0.skip=void 0;var e=ec();function t(r){return e.filter(function(n,i){return r<=i})}return k0.skip=t,k0}var F0={},VN;
17function FY(){if(VN)return F0;VN=1,Object.defineProperty(F0,"__esModule",{value:!0}),F0.skipLast=void 0;var e=En(),t=ft(),r=bt();function n(i){return i<=0?e.identity:t.operate(function(c,o){var s=new Array(i),h=0;return c.subscribe(r.createOperatorSubscriber(o,function(f){var y=h++;if(y<i)s[y]=f;else{var _=y%i,g=s[_];s[_]=f,o.next(g)}})),function(){s=null}})}return F0.skipLast=n,F0}var L0={},EN;function LY(){if(EN)return L0;EN=1,Object.defineProperty(L0,"__esModule",{value:!0}),L0.skipUntil=void 0;var e=ft(),t=bt(),r=Ft(),n=Vn();function i(c){return e.operate(function(o,s){var h=!1,f=t.createOperatorSubscriber(s,function(){f?.unsubscribe(),h=!0},n.noop);r.innerFrom(c).subscribe(f),o.subscribe(t.createOperatorSubscriber(s,function(y){return h&&s.next(y)}))})}return L0.skipUntil=i,L0}var N0={},BN;function NY(){if(BN)return N0;BN=1,Object.defineProperty(N0,"__esModule",{value:!0}),N0.skipWhile=void 0;var e=ft(),t=bt();function r(n){return e.operate(function(i,c){var o=!1,s=0;i.subscribe(t.createOperatorSubscriber(c,function(h){return(o||(o=!n(h,s++)))&&c.next(h)}))})}return N0.skipWhile=r,N0}var q0={},RN;function qY(){if(RN)return q0;RN=1,Object.defineProperty(q0,"__esModule",{value:!0}),q0.startWith=void 0;var e=e2(),t=Ii(),r=ft();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];var o=t.popScheduler(i);return r.operate(function(s,h){(o?e.concat(i,s,o):e.concat(i,s)).subscribe(h)})}return q0.startWith=n,q0}var U0={},j0={},ON;function MS(){if(ON)return j0;ON=1,Object.defineProperty(j0,"__esModule",{value:!0}),j0.switchMap=void 0;var e=Ft(),t=ft(),r=bt();function n(i,c){return t.operate(function(o,s){var h=null,f=0,y=!1,_=function(){return y&&!h&&s.complete()};o.subscribe(r.createOperatorSubscriber(s,function(g){h?.unsubscribe();var a=0,d=f++;e.innerFrom(i(g,d)).subscribe(h=r.createOperatorSubscriber(s,function(p){return s.next(c?c(g,p,d,a++):p)},function(){h=null,_()}))},function(){y=!0,_()}))})}return j0.switchMap=n,j0}var kN;function UY(){if(kN)return U0;kN=1,Object.defineProperty(U0,"__esModule",{value:!0}),U0.switchAll=void 0;var e=MS(),t=En();function r(){return e.switchMap(t.identity)}return U0.switchAll=r,U0}var G0={},FN;function jY(){if(FN)return G0;FN=1,Object.defineProperty(G0,"__esModule",{value:!0}),G0.switchMapTo=void 0;var e=MS(),t=or();function r(n,i){return t.isFunction(i)?e.switchMap(function(){return n},i):e.switchMap(function(){return n})}return G0.switchMapTo=r,G0}var z0={},LN;function GY(){if(LN)return z0;LN=1,Object.defineProperty(z0,"__esModule",{value:!0}),z0.switchScan=void 0;var e=MS(),t=ft();function r(n,i){return t.operate(function(c,o){var s=i;return e.switchMap(function(h,f){return n(s,h,f)},function(h,f){return s=f,f})(c).subscribe(o),function(){s=null}})}return z0.switchScan=r,z0}var H0={},NN;function zY(){if(NN)return H0;NN=1,Object.defineProperty(H0,"__esModule",{value:!0}),H0.takeUntil=void 0;var e=ft(),t=bt(),r=Ft(),n=Vn();function i(c){return e.operate(function(o,s){r.innerFrom(c).subscribe(t.createOperatorSubscriber(s,function(){return s.complete()},n.noop)),!s.closed&&o.subscribe(s)})}return H0.takeUntil=i,H0}var W0={},qN;function HY(){if(qN)return W0;qN=1,Object.defineProperty(W0,"__esModule",{value:!0}),W0.takeWhile=void 0;var e=ft(),t=bt();function r(n,i){return i===void 0&&(i=!1),e.operate(function(c,o){var s=0;c.subscribe(t.createOperatorSubscriber(o,function(h){var f=n(h,s++);(f||i)&&o.next(h),!f&&o.complete()}))})}return W0.takeWhile=r,W0}var $0={},UN;function WY(){if(UN)return $0;UN=1,Object.defineProperty($0,"__esModule",{value:!0}),$0.tap=void 0;var e=or(),t=ft(),r=bt(),n=En();function i(c,o,s){var h=e.isFunction(c)||o||s?{next:c,error:o,complete:s}:c;return h?t.operate(function(f,y){var _;(_=h.subscribe)===null||_===void 0||_.call(h);var g=!0;f.subscribe(r.createOperatorSubscriber(y,function(a){var d;(d=h.next)===null||d===void 0||d.call(h,a),y.next(a)},function(){var a;g=!1,(a=h.complete)===null||a===void 0||a.call(h),y.complete()},function(a){var d;g=!1,(d=h.error)===null||d===void 0||d.call(h,a),y.error(a)},function(){var a,d;g&&((a=h.unsubscribe)===null||a===void 0||a.call(h)),(d=h.finalize)===null||d===void 0||d.call(h)}))}):n.identity}return $0.tap=i,$0}var X0={},jN;function bw(){if(jN)return X0;jN=1,Object.defineProperty(X0,"__esModule",{value:!0}),X0.throttle=void 0;
17var e=ft(),t=bt(),r=Ft();function n(i,c){return e.operate(function(o,s){var h=c??{},f=h.leading,y=f===void 0?!0:f,_=h.trailing,g=_===void 0?!1:_,a=!1,d=null,p=null,u=!1,m=function(){p?.unsubscribe(),p=null,g&&(P(),u&&s.complete())},v=function(){p=null,u&&s.complete()},b=function(C){return p=r.innerFrom(i(C)).subscribe(t.createOperatorSubscriber(s,m,v))},P=function(){if(a){a=!1;var C=d;d=null,s.next(C),!u&&b(C)}};o.subscribe(t.createOperatorSubscriber(s,function(C){a=!0,d=C,!(p&&!p.closed)&&(y?P():b(C))},function(){u=!0,!(g&&a&&p&&!p.closed)&&s.complete()}))})}return X0.throttle=n,X0}var K0={},GN;function $Y(){if(GN)return K0;GN=1,Object.defineProperty(K0,"__esModule",{value:!0}),K0.throttleTime=void 0;var e=Di(),t=bw(),r=Ol();function n(i,c,o){c===void 0&&(c=e.asyncScheduler);var s=r.timer(i,c);return t.throttle(function(){return s},o)}return K0.throttleTime=n,K0}var fu={},zN;function XY(){if(zN)return fu;zN=1,Object.defineProperty(fu,"__esModule",{value:!0}),fu.TimeInterval=fu.timeInterval=void 0;var e=Di(),t=ft(),r=bt();function n(c){return c===void 0&&(c=e.asyncScheduler),t.operate(function(o,s){var h=c.now();o.subscribe(r.createOperatorSubscriber(s,function(f){var y=c.now(),_=y-h;h=y,s.next(new i(f,_))}))})}
17fu.timeInterval=n;var i=(function(){function c(o,s){this.value=o,this.interval=s}return c})();return fu.TimeInterval=i,fu}var Y0={},HN;function KY(){if(HN)return Y0;HN=1,Object.defineProperty(Y0,"__esModule",{value:!0}),Y0.timeoutWith=void 0;var e=Di(),t=ew(),r=hT();function n(i,c,o){var s,h,f;if(o=o??e.async,t.isValidDate(i)?s=i:typeof i=="number"&&(h=i),c)f=function(){return c};else throw new TypeError("No observable provided to switch to");if(s==null&&h==null)throw new TypeError("No timeout provided.");return r.timeout({first:s,each:h,scheduler:o,with:f})}return Y0.timeoutWith=n,Y0}var Q0={},WN;function YY(){if(WN)return Q0;WN=1,Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.timestamp=void 0;var e=$I(),t=Js();function r(n){return n===void 0&&(n=e.dateTimestampProvider),t.map(function(i){return{value:i,timestamp:n.now()}})}return Q0.timestamp=r,Q0}var Z0={},$N;function QY(){if($N)return Z0;$N=1,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.window=void 0;var e=Bn(),t=ft(),r=bt(),n=Vn(),i=Ft();function c(o){return t.operate(function(s,h){var f=new e.Subject;h.next(f.asObservable());var y=function(_){f.error(_),h.error(_)};return s.subscribe(r.createOperatorSubscriber(h,function(_){return f?.next(_)},function(){f.complete(),h.complete()},y)),i.innerFrom(o).subscribe(r.createOperatorSubscriber(h,function(){f.complete(),h.next(f=new e.Subject)},n.noop,y)),function(){f?.unsubscribe(),f=null}})}return Z0.window=c,Z0}var mu={},XN;function ZY(){if(XN)return mu;XN=1;var e=mu&&mu.__values||function(c){var o=typeof Symbol=="function"&&Symbol.iterator,s=o&&c[o],h=0;if(s)return s.call(c);if(c&&typeof c.length=="number")return{next:function(){return c&&h>=c.length&&(c=void 0),{value:c&&c[h++],done:!c}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mu,"__esModule",{value:!0}),mu.windowCount=void 0;var t=Bn(),r=ft(),n=bt();function i(c,o){o===void 0&&(o=0);var s=o>0?o:c;return r.operate(function(h,f){var y=[new t.Subject],_=0;f.next(y[0].asObservable()),h.subscribe(n.createOperatorSubscriber(f,function(g){var a,d;try{for(var p=e(y),u=p.next();!u.done;u=p.next()){var m=u.value;m.next(g)}}catch(P){a={error:P}}finally{try{u&&!u.done&&(d=p.return)&&d.call(p)}finally{if(a)throw a.error}}var v=_-c+1;if(v>=0&&v%s===0&&y.shift().complete(),++_%s===0){var b=new t.Subject;y.push(b),f.next(b.asObservable())}},function(){for(;y.length>0;)y.shift().complete();f.complete()},function(g){for(;y.length>0;)y.shift().error(g);f.error(g)},function(){y=null}))})}return mu.windowCount=i,mu}var J0={},KN;function JY(){if(KN)return J0;KN=1,Object.defineProperty(J0,"__esModule",{value:!0}),J0.windowTime=void 0;var e=Bn(),t=Di(),r=Ji(),n=ft(),i=bt(),c=Ys(),o=Ii(),s=Qs();function h(f){for(var y,_,g=[],a=1;a<arguments.length;a++)g[a-1]=arguments[a];var d=(y=o.popScheduler(g))!==null&&y!==void 0?y:t.asyncScheduler,p=(_=g[0])!==null&&_!==void 0?_:null,u=g[1]||1/0;return n.operate(function(m,v){var b=[],P=!1,C=function(A){var x=A.window,M=A.subs;x.complete(),M.unsubscribe(),c.arrRemove(b,A),P&&l()},l=function(){if(b){var A=new r.Subscription;v.add(A);var x=new e.Subject,M={window:x,subs:A,seen:0};b.push(M),v.next(x.asObservable()),s.executeSchedule(A,d,function(){return C(M)},f)}};p!==null&&p>=0?s.executeSchedule(v,d,l,p,!0):P=!0,l();var S=function(A){return b.slice().forEach(A)},T=function(A){S(function(x){var M=x.window;return A(M)}),A(v),v.unsubscribe()};return m.subscribe(i.createOperatorSubscriber(v,function(A){S(function(x){x.window.next(A),u<=++x.seen&&C(x)})},function(){return T(function(A){return A.complete()})},function(A){return T(function(x){return x.error(A)})})),function(){b=null}})}return J0.windowTime=h,J0}var pu={},YN;function eQ(){if(YN)return pu;YN=1;var e=pu&&pu.__values||function(f){var y=typeof Symbol=="function"&&Symbol.iterator,_=y&&f[y],g=0;if(_)return _.call(f);if(f&&typeof f.length=="number")return{next:function(){return f&&g>=f.length&&(f=void 0),{value:f&&f[g++],done:!f}}};throw new TypeError(y?"Object is not iterable.":"Symbol.iterator is not defined.")};
17Object.defineProperty(pu,"__esModule",{value:!0}),pu.windowToggle=void 0;var t=Bn(),r=Ji(),n=ft(),i=Ft(),c=bt(),o=Vn(),s=Ys();function h(f,y){return n.operate(function(_,g){var a=[],d=function(p){for(;0<a.length;)a.shift().error(p);g.error(p)};i.innerFrom(f).subscribe(c.createOperatorSubscriber(g,function(p){var u=new t.Subject;a.push(u);var m=new r.Subscription,v=function(){s.arrRemove(a,u),u.complete(),m.unsubscribe()},b;try{b=i.innerFrom(y(p))}catch(P){d(P);return}g.next(u.asObservable()),m.add(b.subscribe(c.createOperatorSubscriber(g,v,o.noop,d)))},o.noop)),_.subscribe(c.createOperatorSubscriber(g,function(p){var u,m,v=a.slice();try{for(var b=e(v),P=b.next();!P.done;P=b.next()){var C=P.value;C.next(p)}}catch(l){u={error:l}}finally{try{P&&!P.done&&(m=b.return)&&m.call(b)}finally{if(u)throw u.error}}},function(){for(;0<a.length;)a.shift().complete();g.complete()},d,function(){for(;0<a.length;)a.shift().unsubscribe()}))})}return pu.windowToggle=h,pu}var ey={},QN;function tQ(){if(QN)return ey;QN=1,Object.defineProperty(ey,"__esModule",{value:!0}),ey.windowWhen=void 0;var e=Bn(),t=ft(),r=bt(),n=Ft();function i(c){return t.operate(function(o,s){var h,f,y=function(g){h.error(g),s.error(g)},_=function(){f?.unsubscribe(),h?.complete(),h=new e.Subject,s.next(h.asObservable());var g;try{g=n.innerFrom(c())}catch(a){y(a);return}g.subscribe(f=r.createOperatorSubscriber(s,_,_,y))};_(),o.subscribe(r.createOperatorSubscriber(s,function(g){return h.next(g)},function(){h.complete(),s.complete()},y,function(){f?.unsubscribe(),h=null}))})}return ey.windowWhen=i,ey}var Fo={},ZN;function rQ(){if(ZN)return Fo;ZN=1;var e=Fo&&Fo.__read||function(f,y){var _=typeof Symbol=="function"&&f[Symbol.iterator];if(!_)return f;var g=_.call(f),a,d=[],p;try{for(;(y===void 0||y-- >0)&&!(a=g.next()).done;)d.push(a.value)}catch(u){p={error:u}}finally{try{a&&!a.done&&(_=g.return)&&_.call(g)}finally{if(p)throw p.error}}return d},t=Fo&&Fo.__spreadArray||function(f,y){for(var _=0,g=y.length,a=f.length;_<g;_++,a++)f[a]=y[_];return f};Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.withLatestFrom=void 0;var r=ft(),n=bt(),i=Ft(),c=En(),o=Vn(),s=Ii();function h(){for(var f=[],y=0;y<arguments.length;y++)f[y]=arguments[y];var _=s.popResultSelector(f);return r.operate(function(g,a){for(var d=f.length,p=new Array(d),u=f.map(function(){return!1}),m=!1,v=function(P){i.innerFrom(f[P]).subscribe(n.createOperatorSubscriber(a,function(C){p[P]=C,!m&&!u[P]&&(u[P]=!0,(m=u.every(c.identity))&&(u=null))},o.noop))},b=0;b<d;b++)v(b);g.subscribe(n.createOperatorSubscriber(a,function(P){if(m){var C=t([P],e(p));a.next(_?_.apply(void 0,t([],e(C))):C)}}))})}return Fo.withLatestFrom=h,Fo}var ty={},JN;function nQ(){if(JN)return ty;JN=1,Object.defineProperty(ty,"__esModule",{value:!0}),ty.zipAll=void 0;var e=nw(),t=UK();function r(n){return t.joinAllInternals(e.zip,n)}return ty.zipAll=r,ty}var Lo={},No={},eq;function iQ(){if(eq)return No;eq=1;var e=No&&No.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=No&&No.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(No,"__esModule",{value:!0}),No.zip=void 0;var r=nw(),n=ft();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return n.operate(function(s,h){r.zip.apply(void 0,t([s],e(c))).subscribe(h)})}return No.zip=i,No}var tq;function aQ(){if(tq)return Lo;tq=1;var e=Lo&&Lo.__read||function(i,c){var o=typeof Symbol=="function"&&i[Symbol.iterator];if(!o)return i;var s=o.call(i),h,f=[],y;try{for(;(c===void 0||c-- >0)&&!(h=s.next()).done;)f.push(h.value)}catch(_){y={error:_}}finally{try{h&&!h.done&&(o=s.return)&&o.call(s)}finally{if(y)throw y.error}}return f},t=Lo&&Lo.__spreadArray||function(i,c){for(var o=0,s=c.length,h=i.length;o<s;o++,h++)i[h]=c[o];return i};Object.defineProperty(Lo,"__esModule",{value:!0}),Lo.zipWith=void 0;var r=iQ();function n(){for(var i=[],c=0;c<arguments.length;c++)i[c]=arguments[c];return r.zip.apply(void 0,t([],e(i)))}return Lo.zipWith=n,Lo}var rq;function Rn(){return rq||(rq=1,(function(e){var t=Rc&&Rc.__createBinding||(Object.create?(function(Hl,Wl,oo,hc){hc===void 0&&(hc=oo),Object.defineProperty(Hl,hc,{enumerable:!0,get:function(){return Wl[oo]}})}):(function(Hl,Wl,oo,hc){hc===void 0&&(hc=oo),Hl[hc]=Wl[oo]})),r=Rc&&Rc.__exportStar||function(Hl,Wl){for(var oo in Hl)oo!=="default"&&!Object.prototype.hasOwnProperty.call(Wl,oo)&&t(Wl,Hl,oo)};
vendor: 6,902 bytes, line 17
17Object.defineProperty(e,"__esModule",{value:!0}),e.interval=e.iif=e.generate=e.fromEventPattern=e.fromEvent=e.from=e.forkJoin=e.empty=e.defer=e.connectable=e.concat=e.combineLatest=e.bindNodeCallback=e.bindCallback=e.UnsubscriptionError=e.TimeoutError=e.SequenceError=e.ObjectUnsubscribedError=e.NotFoundError=e.EmptyError=e.ArgumentOutOfRangeError=e.firstValueFrom=e.lastValueFrom=e.isObservable=e.identity=e.noop=e.pipe=e.NotificationKind=e.Notification=e.Subscriber=e.Subscription=e.Scheduler=e.VirtualAction=e.VirtualTimeScheduler=e.animationFrameScheduler=e.animationFrame=e.queueScheduler=e.queue=e.asyncScheduler=e.async=e.asapScheduler=e.asap=e.AsyncSubject=e.ReplaySubject=e.BehaviorSubject=e.Subject=e.animationFrames=e.observable=e.ConnectableObservable=e.Observable=void 0,e.filter=e.expand=e.exhaustMap=e.exhaustAll=e.exhaust=e.every=e.endWith=e.elementAt=e.distinctUntilKeyChanged=e.distinctUntilChanged=e.distinct=e.dematerialize=e.delayWhen=e.delay=e.defaultIfEmpty=e.debounceTime=e.debounce=e.count=e.connect=e.concatWith=e.concatMapTo=e.concatMap=e.concatAll=e.combineLatestWith=e.combineLatestAll=e.combineAll=e.catchError=e.bufferWhen=e.bufferToggle=e.bufferTime=e.bufferCount=e.buffer=e.auditTime=e.audit=e.config=e.NEVER=e.EMPTY=e.scheduled=e.zip=e.using=e.timer=e.throwError=e.range=e.race=e.partition=e.pairs=e.onErrorResumeNext=e.of=e.never=e.merge=void 0,e.switchMap=e.switchAll=e.subscribeOn=e.startWith=e.skipWhile=e.skipUntil=e.skipLast=e.skip=e.single=e.shareReplay=e.share=e.sequenceEqual=e.scan=e.sampleTime=e.sample=e.refCount=e.retryWhen=e.retry=e.repeatWhen=e.repeat=e.reduce=e.raceWith=e.publishReplay=e.publishLast=e.publishBehavior=e.publish=e.pluck=e.pairwise=e.onErrorResumeNextWith=e.observeOn=e.multicast=e.min=e.mergeWith=e.mergeScan=e.mergeMapTo=e.mergeMap=e.flatMap=e.mergeAll=e.max=e.materialize=e.mapTo=e.map=e.last=e.isEmpty=e.ignoreElements=e.groupBy=e.first=e.findIndex=e.find=e.finalize=void 0,e.zipWith=e.zipAll=e.withLatestFrom=e.windowWhen=e.windowToggle=e.windowTime=e.windowCount=e.window=e.toArray=e.timestamp=e.timeoutWith=e.timeout=e.timeInterval=e.throwIfEmpty=e.throttleTime=e.throttle=e.tap=e.takeWhile=e.takeUntil=e.takeLast=e.take=e.switchScan=e.switchMapTo=void 0;var n=fr();Object.defineProperty(e,"Observable",{enumerable:!0,get:function(){return n.Observable}});var i=QT();Object.defineProperty(e,"ConnectableObservable",{enumerable:!0,get:function(){return i.ConnectableObservable}});var c=KT();Object.defineProperty(e,"observable",{enumerable:!0,get:function(){return c.observable}});var o=Qte();Object.defineProperty(e,"animationFrames",{enumerable:!0,get:function(){return o.animationFrames}});var s=Bn();Object.defineProperty(e,"Subject",{enumerable:!0,get:function(){return s.Subject}});var h=dK();Object.defineProperty(e,"BehaviorSubject",{enumerable:!0,get:function(){return h.BehaviorSubject}});var f=XI();Object.defineProperty(e,"ReplaySubject",{enumerable:!0,get:function(){return f.ReplaySubject}});var y=KI();Object.defineProperty(e,"AsyncSubject",{enumerable:!0,get:function(){return y.AsyncSubject}});var _=ire();Object.defineProperty(e,"asap",{enumerable:!0,get:function(){return _.asap}}),Object.defineProperty(e,"asapScheduler",{enumerable:!0,get:function(){return _.asapScheduler}});var g=Di();Object.defineProperty(e,"async",{enumerable:!0,get:function(){return g.async}}),Object.defineProperty(e,"asyncScheduler",{enumerable:!0,get:function(){return g.asyncScheduler}});var a=sre();Object.defineProperty(e,"queue",{enumerable:!0,get:function(){return a.queue}}),Object.defineProperty(e,"queueScheduler",{enumerable:!0,get:function(){return a.queueScheduler}});var d=lre();Object.defineProperty(e,"animationFrame",{enumerable:!0,get:function(){return d.animationFrame}}),Object.defineProperty(e,"animationFrameScheduler",{enumerable:!0,get:function(){return d.animationFrameScheduler}});var p=dre();Object.defineProperty(e,"VirtualTimeScheduler",{enumerable:!0,get:function(){return p.VirtualTimeScheduler}}),Object.defineProperty(e,"VirtualAction",{enumerable:!0,get:function(){return p.VirtualAction}});var u=fK();Object.defineProperty(e,"Scheduler",{enumerable:!0,get:function(){return u.Scheduler}});var m=Ji();Object.defineProperty(e,"Subscription",{enumerable:!0,get:function(){return m.Subscription}});var v=vS();Object.defineProperty(e,"Subscriber",{enumerable:!0,get:function(){return v.Subscriber}});var b=JI();Object.defineProperty(e,"Notification",{enumerable:!0,get:function(){return b.Notification}}),Object.defineProperty(e,"NotificationKind",{enumerable:!0,get:function(){return b.NotificationKind}});var P=YT();Object.defineProperty(e,"pipe",{enumerable:!0,get:function(){return P.pipe}});var C=Vn();Object.defineProperty(e,"noop",{enumerable:!0,get:function(){return C.noop}});var l=En();Object.defineProperty(e,"identity",{enumerable:!0,get:function(){return l.identity}});var S=gre();Object.defineProperty(e,"isObservable",{enumerable:!0,get:function(){return S.isObservable}});var T=yre();Object.defineProperty(e,"lastValueFrom",{enumerable:!0,get:function(){return T.lastValueFrom}});var A=vre();Object.defineProperty(e,"firstValueFrom",{enumerable:!0,get:function(){return A.firstValueFrom}});var x=PK();Object.defineProperty(e,"ArgumentOutOfRangeError",{enumerable:!0,get:function(){return x.ArgumentOutOfRangeError}});var M=Bl();Object.defineProperty(e,"EmptyError",{enumerable:!0,get:function(){return M.EmptyError}});var D=TK();Object.defineProperty(e,"NotFoundError",{enumerable:!0,get:function(){return D.NotFoundError}});var V=lK();Object.defineProperty(e,"ObjectUnsubscribedError",{enumerable:!0,get:function(){return V.ObjectUnsubscribedError}});var R=xK();Object.defineProperty(e,"SequenceError",{enumerable:!0,get:function(){return R.SequenceError}});var E=hT();Object.defineProperty(e,"TimeoutError",{enumerable:!0,get:function(){return E.TimeoutError}});var I=oK();Object.defineProperty(e,"UnsubscriptionError",{enumerable:!0,get:function(){return I.UnsubscriptionError}});var B=bre();Object.defineProperty(e,"bindCallback",{enumerable:!0,get:function(){return B.bindCallback}});var w=_re();Object.defineProperty(e,"bindNodeCallback",{enumerable:!0,get:function(){return w.bindNodeCallback}});var O=tw();Object.defineProperty(e,"combineLatest",{enumerable:!0,get:function(){return O.combineLatest}});var F=e2();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return F.concat}});var L=Sre();Object.defineProperty(e,"connectable",{enumerable:!0,get:function(){return L.connectable}});var U=t2();Object.defineProperty(e,"defer",{enumerable:!0,get:function(){return U.defer}});var q=ka();Object.defineProperty(e,"empty",{enumerable:!0,get:function(){return q.empty}});var N=Cre();Object.defineProperty(e,"forkJoin",{enumerable:!0,get:function(){return N.forkJoin}});var k=Zs();Object.defineProperty(e,"from",{enumerable:!0,get:function(){return k.from}});var j=Pre();
17Object.defineProperty(e,"fromEvent",{enumerable:!0,get:function(){return j.fromEvent}});var H=Tre();Object.defineProperty(e,"fromEventPattern",{enumerable:!0,get:function(){return H.fromEventPattern}});var G=xre();Object.defineProperty(e,"generate",{enumerable:!0,get:function(){return G.generate}});var z=Are();Object.defineProperty(e,"iif",{enumerable:!0,get:function(){return z.iif}});var W=IK();Object.defineProperty(e,"interval",{enumerable:!0,get:function(){return W.interval}});var X=Mre();Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return X.merge}});var Y=$L();Object.defineProperty(e,"never",{enumerable:!0,get:function(){return Y.never}});var K=ZI();Object.defineProperty(e,"of",{enumerable:!0,get:function(){return K.of}});var Q=wK();Object.defineProperty(e,"onErrorResumeNext",{enumerable:!0,get:function(){return Q.onErrorResumeNext}});var J=Dre();Object.defineProperty(e,"pairs",{enumerable:!0,get:function(){return J.pairs}});var ae=Ire();Object.defineProperty(e,"partition",{enumerable:!0,get:function(){return ae.partition}});var te=EK();Object.defineProperty(e,"race",{enumerable:!0,get:function(){return te.race}});var ne=wre();Object.defineProperty(e,"range",{enumerable:!0,get:function(){return ne.range}});var $=CK();Object.defineProperty(e,"throwError",{enumerable:!0,get:function(){return $.throwError}});var ie=Ol();Object.defineProperty(e,"timer",{enumerable:!0,get:function(){return ie.timer}});var Z=Vre();Object.defineProperty(e,"using",{enumerable:!0,get:function(){return Z.using}});var re=nw();Object.defineProperty(e,"zip",{enumerable:!0,get:function(){return re.zip}});var oe=SK();Object.defineProperty(e,"scheduled",{enumerable:!0,get:function(){return oe.scheduled}});var ce=ka();Object.defineProperty(e,"EMPTY",{enumerable:!0,get:function(){return ce.EMPTY}});var ue=$L();Object.defineProperty(e,"NEVER",{enumerable:!0,get:function(){return ue.NEVER}}),r(Ere(),e);var pe=yS();Object.defineProperty(e,"config",{enumerable:!0,get:function(){return pe.config}});var he=iw();Object.defineProperty(e,"audit",{enumerable:!0,get:function(){return he.audit}});var fe=BK();Object.defineProperty(e,"auditTime",{enumerable:!0,get:function(){return fe.auditTime}});var de=RK();Object.defineProperty(e,"buffer",{enumerable:!0,get:function(){return de.buffer}});var ge=OK();Object.defineProperty(e,"bufferCount",{enumerable:!0,get:function(){return ge.bufferCount}});var Ce=kK();Object.defineProperty(e,"bufferTime",{enumerable:!0,get:function(){return Ce.bufferTime}});var ve=FK();Object.defineProperty(e,"bufferToggle",{enumerable:!0,get:function(){return ve.bufferToggle}});var le=LK();Object.defineProperty(e,"bufferWhen",{enumerable:!0,get:function(){return le.bufferWhen}});var me=NK();Object.defineProperty(e,"catchError",{enumerable:!0,get:function(){return me.catchError}});var ee=jK();Object.defineProperty(e,"combineAll",{enumerable:!0,get:function(){return ee.combineAll}});var se=ow();Object.defineProperty(e,"combineLatestAll",{enumerable:!0,get:function(){return se.combineLatestAll}});var ye=zK();Object.defineProperty(e,"combineLatestWith",{enumerable:!0,get:function(){return ye.combineLatestWith}});var Se=JT();Object.defineProperty(e,"concatAll",{enumerable:!0,get:function(){return Se.concatAll}});var Ae=sw();Object.defineProperty(e,"concatMap",{enumerable:!0,get:function(){return Ae.concatMap}});var _e=HK();Object.defineProperty(e,"concatMapTo",{enumerable:!0,get:function(){return _e.concatMapTo}});var be=$K();Object.defineProperty(e,"concatWith",{enumerable:!0,get:function(){return be.concatWith}});var xe=r2();Object.defineProperty(e,"connect",{enumerable:!0,get:function(){return xe.connect}});var we=XK();Object.defineProperty(e,"count",{enumerable:!0,get:function(){return we.count}});var Be=KK();Object.defineProperty(e,"debounce",{enumerable:!0,get:function(){return Be.debounce}});var Me=YK();Object.defineProperty(e,"debounceTime",{enumerable:!0,get:function(){return Me.debounceTime}});var Re=TS();Object.defineProperty(e,"defaultIfEmpty",{enumerable:!0,get:function(){return Re.defaultIfEmpty}});var Te=QK();Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return Te.delay}});var Ve=lw();Object.defineProperty(e,"delayWhen",{enumerable:!0,get:function(){return Ve.delayWhen}});var qe=ZK();Object.defineProperty(e,"dematerialize",{enumerable:!0,get:function(){return qe.dematerialize}});var ke=JK();Object.defineProperty(e,"distinct",{enumerable:!0,get:function(){return ke.distinct}});var ze=dw();Object.defineProperty(e,"distinctUntilChanged",{enumerable:!0,get:function(){return ze.distinctUntilChanged}});var We=eY();Object.defineProperty(e,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return We.distinctUntilKeyChanged}});var Je=tY();Object.defineProperty(e,"elementAt",{enumerable:!0,get:function(){return Je.elementAt}});var De=rY();Object.defineProperty(e,"endWith",{enumerable:!0,get:function(){return De.endWith}});var Oe=nY();Object.defineProperty(e,"every",{enumerable:!0,get:function(){return Oe.every}});var Fe=iY();Object.defineProperty(e,"exhaust",{enumerable:!0,get:function(){return Fe.exhaust}});var Le=mw();Object.defineProperty(e,"exhaustAll",{enumerable:!0,get:function(){return Le.exhaustAll}});var He=fw();Object.defineProperty(e,"exhaustMap",{enumerable:!0,get:function(){return He.exhaustMap}});var Pe=aY();Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return Pe.expand}});var Ie=ec();Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return Ie.filter}});var Ee=oY();Object.defineProperty(e,"finalize",{enumerable:!0,get:function(){return Ee.finalize}});var Ue=pw();Object.defineProperty(e,"find",{enumerable:!0,get:function(){return Ue.find}});var $e=sY();Object.defineProperty(e,"findIndex",{enumerable:!0,get:function(){return $e.findIndex}});var Ye=cY();Object.defineProperty(e,"first",{enumerable:!0,get:function(){return Ye.first}});var Qe=uY();Object.defineProperty(e,"groupBy",{enumerable:!0,get:function(){return Qe.groupBy}
17});var it=cw();Object.defineProperty(e,"ignoreElements",{enumerable:!0,get:function(){return it.ignoreElements}});var ht=lY();Object.defineProperty(e,"isEmpty",{enumerable:!0,get:function(){return ht.isEmpty}});var mt=dY();Object.defineProperty(e,"last",{enumerable:!0,get:function(){return mt.last}});var St=Js();Object.defineProperty(e,"map",{enumerable:!0,get:function(){return St.map}});var Bt=uw();Object.defineProperty(e,"mapTo",{enumerable:!0,get:function(){return Bt.mapTo}});var Ot=fY();Object.defineProperty(e,"materialize",{enumerable:!0,get:function(){return Ot.materialize}});var br=mY();Object.defineProperty(e,"max",{enumerable:!0,get:function(){return br.max}});var Ir=PS();Object.defineProperty(e,"mergeAll",{enumerable:!0,get:function(){return Ir.mergeAll}});var Cn=pY();Object.defineProperty(e,"flatMap",{enumerable:!0,get:function(){return Cn.flatMap}});var Fn=ss();Object.defineProperty(e,"mergeMap",{enumerable:!0,get:function(){return Fn.mergeMap}});var ei=hY();Object.defineProperty(e,"mergeMapTo",{enumerable:!0,get:function(){return ei.mergeMapTo}});var Ze=gY();Object.defineProperty(e,"mergeScan",{enumerable:!0,get:function(){return Ze.mergeScan}});var ot=vY();Object.defineProperty(e,"mergeWith",{enumerable:!0,get:function(){return ot.mergeWith}});var pt=bY();Object.defineProperty(e,"min",{enumerable:!0,get:function(){return pt.min}});var xt=n2();Object.defineProperty(e,"multicast",{enumerable:!0,get:function(){return xt.multicast}});var pr=SS();Object.defineProperty(e,"observeOn",{enumerable:!0,get:function(){return pr.observeOn}});var Rr=_Y();Object.defineProperty(e,"onErrorResumeNextWith",{enumerable:!0,get:function(){return Rr.onErrorResumeNextWith}});var Qt=SY();Object.defineProperty(e,"pairwise",{enumerable:!0,get:function(){return Qt.pairwise}});var tr=CY();Object.defineProperty(e,"pluck",{enumerable:!0,get:function(){return tr.pluck}});var Fr=PY();Object.defineProperty(e,"publish",{enumerable:!0,get:function(){return Fr.publish}});var un=TY();Object.defineProperty(e,"publishBehavior",{enumerable:!0,get:function(){return un.publishBehavior}});var Pn=xY();Object.defineProperty(e,"publishLast",{enumerable:!0,get:function(){return Pn.publishLast}});var Ln=AY();Object.defineProperty(e,"publishReplay",{enumerable:!0,get:function(){return Ln.publishReplay}});var ti=gw();Object.defineProperty(e,"raceWith",{enumerable:!0,get:function(){return ti.raceWith}});var je=qf();Object.defineProperty(e,"reduce",{enumerable:!0,get:function(){return je.reduce}});var tt=MY();Object.defineProperty(e,"repeat",{enumerable:!0,get:function(){return tt.repeat}});var ut=DY();Object.defineProperty(e,"repeatWhen",{enumerable:!0,get:function(){return ut.repeatWhen}});var Pt=IY();Object.defineProperty(e,"retry",{enumerable:!0,get:function(){return Pt.retry}});var Wt=wY();Object.defineProperty(e,"retryWhen",{enumerable:!0,get:function(){return Wt.retryWhen}});var kt=WI();Object.defineProperty(e,"refCount",{enumerable:!0,get:function(){return kt.refCount}});var ar=yw();Object.defineProperty(e,"sample",{enumerable:!0,get:function(){return ar.sample}});var Qr=VY();Object.defineProperty(e,"sampleTime",{enumerable:!0,get:function(){return Qr.sampleTime}});var Lr=EY();Object.defineProperty(e,"scan",{enumerable:!0,get:function(){return Lr.scan}});var Ei=BY();Object.defineProperty(e,"sequenceEqual",{enumerable:!0,get:function(){return Ei.sequenceEqual}});var Bi=vw();Object.defineProperty(e,"share",{enumerable:!0,get:function(){return Bi.share}});var Ri=RY();Object.defineProperty(e,"shareReplay",{enumerable:!0,get:function(){return Ri.shareReplay}});var ys=OY();Object.defineProperty(e,"single",{enumerable:!0,get:function(){return ys.single}});var zr=kY();Object.defineProperty(e,"skip",{enumerable:!0,get:function(){return zr.skip}});var Zr=FY();Object.defineProperty(e,"skipLast",{enumerable:!0,get:function(){return Zr.skipLast}});var ri=LY();Object.defineProperty(e,"skipUntil",{enumerable:!0,get:function(){return ri.skipUntil}});var fi=NY();Object.defineProperty(e,"skipWhile",{enumerable:!0,get:function(){return fi.skipWhile}});var xr=qY();Object.defineProperty(e,"startWith",{enumerable:!0,get:function(){return xr.startWith}});var hn=CS();Object.defineProperty(e,"subscribeOn",{enumerable:!0,get:function(){return hn.subscribeOn}});var fc=UY();Object.defineProperty(e,"switchAll",{enumerable:!0,get:function(){return fc.switchAll}});var mc=MS();Object.defineProperty(e,"switchMap",{enumerable:!0,get:function(){return mc.switchMap}});var pc=jY();Object.defineProperty(e,"switchMapTo",{enumerable:!0,get:function(){return pc.switchMapTo}});var iC=GY();Object.defineProperty(e,"switchScan",{enumerable:!0,get:function(){return iC.switchScan}});var Xe=xS();Object.defineProperty(e,"take",{enumerable:!0,get:function(){return Xe.take}});var st=hw();Object.defineProperty(e,"takeLast",{enumerable:!0,get:function(){return st.takeLast}});var Dt=zY();Object.defineProperty(e,"takeUntil",{enumerable:!0,get:function(){return Dt.takeUntil}});var Mt=HY();Object.defineProperty(e,"takeWhile",{enumerable:!0,get:function(){return Mt.takeWhile}});var Nt=WY();Object.defineProperty(e,"tap",{enumerable:!0,get:function(){return Nt.tap}});var Hr=bw();Object.defineProperty(e,"throttle",{enumerable:!0,get:function(){return Hr.throttle}});var ln=$Y();Object.defineProperty(e,"throttleTime",{enumerable:!0,get:function(){return ln.throttleTime}});var Nr=AS();Object.defineProperty(e,"throwIfEmpty",{enumerable:!0,get:function(){return Nr.throwIfEmpty}});var ao=XY();Object.defineProperty(e,"timeInterval",{enumerable:!0,get:function(){return ao.timeInterval}});var ct=hT();Object.defineProperty(e,"timeout",{enumerable:!0,get:function(){return ct.timeout}});var Tn=KY();Object.defineProperty(e,"timeoutWith",{enumerable:!0,get:function(){return Tn.timeoutWith}});var zl=YY();Object.defineProperty(e,"timestamp",{enumerable:!0,get:function(){return zl.timestamp}});var ni=aw();Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return ni.toArray}});var T2=QY();Object.defineProperty(e,"window",{enumerable:!0,get:function(){return T2.window}
17});var VZ=ZY();Object.defineProperty(e,"windowCount",{enumerable:!0,get:function(){return VZ.windowCount}});var EZ=JY();Object.defineProperty(e,"windowTime",{enumerable:!0,get:function(){return EZ.windowTime}});var BZ=eQ();Object.defineProperty(e,"windowToggle",{enumerable:!0,get:function(){return BZ.windowToggle}});var RZ=tQ();Object.defineProperty(e,"windowWhen",{enumerable:!0,get:function(){return RZ.windowWhen}});var OZ=rQ();Object.defineProperty(e,"withLatestFrom",{enumerable:!0,get:function(){return OZ.withLatestFrom}});var kZ=nQ();Object.defineProperty(e,"zipAll",{enumerable:!0,get:function(){return kZ.zipAll}});var FZ=aQ();Object.defineProperty(e,"zipWith",{enumerable:!0,get:function(){return FZ.zipWith}})})(Rc)),Rc}var jx={},Gx={},hu={},nq;function Kn(){if(nq)return hu;nq=1,Object.defineProperty(hu,"__esModule",{value:!0}),hu.Viewport=r,hu.cameraProject=i,hu.cameraUnproject=c;const e=wt(),t=Fa();function r(){return r.zero()}(function(o){function s(){return{x:0,y:0,width:0,height:0}}o.zero=s;function h(d,p,u,m){return{x:d,y:p,width:u,height:m}}o.create=h;function f(d){return{...d}}o.clone=f;function y(d,p){return Object.assign(d,p)}o.copy=y;function _(d,p,u,m,v){return d.x=p,d.y=u,d.width=m,d.height=v,d}o.set=_;function g(d,p){return d[0]=p.x,d[1]=p.y,d[2]=p.width,d[3]=p.height,d}o.toVec4=g;function a(d,p){return d.x===p.x&&d.y===p.y&&d.width===p.width&&d.height===p.height}o.equals=a})(r||(hu.Viewport=r={}));const n=(0,t.Vec4)();function i(o,s,h,f){const{x:y,y:_,width:g,height:a}=h;t.Vec4.set(n,s[0],s[1],s[2],1),t.Vec4.transformMat4(n,n,f);const d=n[3];return d!==0&&(n[0]/=d,n[1]/=d,n[2]/=d),o[0]=(n[0]+1)*g*.5+y,o[1]=(n[1]+1)*a*.5+_,o[2]=(n[2]+1)*.5,o[3]=d===0?0:1/d,o}function c(o,s,h,f){const{x:y,y:_,width:g,height:a}=h,d=s[0]-y,p=s[1]-_,u=s[2];return o[0]=2*d/g-1,o[1]=2*p/a-1,o[2]=2*u-1,e.Vec3.transformMat4(o,o,f)}return hu}var iq;function cs(){return iq||(iq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InputObserver=e.EmptyKeyInput=e.ButtonsType=e.ModifiersKeys=e.DefaultInputObserverProps=void 0,e.getButtons=h,e.getButton=f,e.getModifiers=y,e.normalizeWheel=m;const t=Rn(),r=Kn(),n=ns(),i=wt(),c=rn(),o=Y_(),s=et();function h(v){if(typeof v=="object"){if("buttons"in v)return v.buttons;if("which"in v){const b=v.which;if(b===2)return 4;if(b===3)return 2;if(b>0)return 1<<b-1}}return 0}function f(v){if(typeof v=="object"&&"button"in v){const b=v.button;if(b===1)return 4;if(b===2)return 2;if(b>=0)return 1<<b}return 0}function y(v){return{alt:"altKey"in v?v.altKey:!1,shift:"shiftKey"in v?v.shiftKey:!1,control:"ctrlKey"in v?v.ctrlKey:!1,meta:"metaKey"in v?v.metaKey:!1}}e.DefaultInputObserverProps={noScroll:!0,noMiddleClickScroll:!0,noContextMenu:!0,noPinchZoom:!0,noTextSelect:!0,preventGestures:!1,mask:(v,b)=>!0,pixelScale:1};var _;(function(v){v.None=l();function b(S,T){return S.shift===T.shift&&S.alt===T.alt&&S.control===T.control&&S.meta===T.meta}v.areEqual=b;function P(S){return b(S,v.None)}v.areNone=P;function C(S){if(!S)return 0;let T=0;return S.shift&&T++,S.alt&&T++,S.control&&T++,S.meta&&T++,T}v.size=C;function l(S={}){return{shift:!!S.shift,alt:!!S.alt,control:!!S.control,meta:!!S.meta}}v.create=l})(_||(e.ModifiersKeys=_={}));var g;(function(v){v.has=o.BitFlags.has,v.create=o.BitFlags.create,(function(b){b[b.None=0]="None",b[b.Primary=1]="Primary",b[b.Secondary=2]="Secondary",b[b.Auxilary=4]="Auxilary",b[b.Forth=8]="Forth",b[b.Five=16]="Five",b[b.Trigger=32]="Trigger",b[b.Squeeze=48]="Squeeze"})(v.Flag||(v.Flag={}))})(g||(e.ButtonsType=g={})),e.EmptyKeyInput={key:"",code:"",modifiers:_.None,x:-1,y:-1,pageX:-1,pageY:-1,preventDefault:s.noop};var a;(function(v){v[v.Stopped=0]="Stopped",v[v.Started=1]="Started",v[v.Moving=2]="Moving"})(a||(a={}));function d(){return{drag:new t.Subject,interactionEnd:new t.Subject,click:new t.Subject,move:new t.Subject,wheel:new t.Subject,pinch:new t.Subject,gesture:new t.Subject,resize:new t.Subject,leave:new t.Subject,enter:new t.Subject,modifiers:new t.Subject,key:new t.Subject,keyUp:new t.Subject,keyDown:new t.Subject,lock:new t.Subject,trackedPointers:new t.Subject}}const p=["Backspace","Delete"];var u;(function(v){function b(C={}){const{noScroll:l,noContextMenu:S}={...e.DefaultInputObserverProps,...C};return{noScroll:l,noContextMenu:S,pointerLock:!1,width:0,height:0,pixelRatio:1,...d(),setPixelScale:s.noop,updateTrackedPointers:s.noop,updateScreenTouches:s.noop,requestPointerLock:s.noop,exitPointerLock:s.noop,dispose:s.noop}}v.create=b;function P(C,l={}){let{noScroll:S,noMiddleClickScroll:T,noContextMenu:A,noPinchZo
17om:x,noTextSelect:M,mask:D,pixelScale:V,preventGestures:R}={...e.DefaultInputObserverProps,...l},E=C.clientWidth*j(),I=C.clientHeight*j(),B=!1,w=(0,r.Viewport)();const O=(0,n.Vec2)(),F=(0,n.Vec2)(),L=(0,n.Vec2)(),U=(0,n.Vec2)(),q=(0,n.Vec2)(),N={shift:!1,alt:!1,control:!1,meta:!1},k={x:-1,y:-1,pageX:-1,pageY:-1};function j(){return window.devicePixelRatio*V}function H(){return{...N}}function G(je){return je.target===document.body||je.target===C}let z=a.Stopped,W=!1,X=g.create(g.Flag.None),Y=g.Flag.None,K=!1,Q=!1,J;typeof window.ResizeObserver<"u"&&(J=new window.ResizeObserver(pr));const ae=d(),{drag:te,interactionEnd:ne,wheel:$,pinch:ie,gesture:Z,click:re,move:oe,leave:ce,enter:ue,resize:pe,modifiers:he,key:fe,keyUp:de,keyDown:ge,lock:Ce,trackedPointers:ve}=ae;le();function le(){C.addEventListener("contextmenu",ye,!1),C.addEventListener("wheel",Ir,!1),C.addEventListener("mousedown",it,!1),window.addEventListener("mousemove",ht,!1),window.addEventListener("mouseup",mt,!1),C.addEventListener("touchstart",$e,!1),C.addEventListener("touchmove",Qe,!1),C.addEventListener("touchend",Ye,!1),C.addEventListener("gesturechange",pt,!1),C.addEventListener("gesturestart",Ze,!1),C.addEventListener("gestureend",xt,!1),window.addEventListener("blur",Ae),window.addEventListener("keyup",be,!1),window.addEventListener("keydown",_e,!1),window.addEventListener("keypress",xe,!1),document.addEventListener("pointerlockchange",ee,!1),document.addEventListener("pointerlockerror",se,!1),J!=null?J.observe(C.parentElement):window.addEventListener("resize",pr,!1)}function me(){W||(W=!0,C.removeEventListener("contextmenu",ye,!1),C.removeEventListener("wheel",Ir,!1),C.removeEventListener("mousedown",it,!1),window.removeEventListener("mousemove",ht,!1),window.removeEventListener("mouseup",mt,!1),C.removeEventListener("touchstart",$e,!1),C.removeEventListener("touchmove",Qe,!1),C.removeEventListener("touchend",Ye,!1),C.removeEventListener("gesturechange",pt,!1),C.removeEventListener("gesturestart",Ze,!1),C.removeEventListener("gestureend",xt,!1),window.removeEventListener("blur",Ae),window.removeEventListener("keyup",be,!1),window.removeEventListener("keydown",_e,!1),window.removeEventListener("keypress",xe,!1),document.removeEventListener("pointerlockchange",ee,!1),document.removeEventListener("pointerlockerror",se,!1),Pn.remove(),J!=null?(J.unobserve(C.parentElement),J.disconnect()):window.removeEventListener("resize",pr,!1))}function ee(){C.ownerDocument.pointerLockElement===C?B=!0:B=!1,ti(B),Ce.next(B)}function se(){console.error("Unable to use Pointer Lock API"),B=!1,ti(B),Ce.next(B)}function ye(je){D(je.clientX,je.clientY)&&A&&je.preventDefault()}function Se(je){N.alt=je.altKey,N.shift=je.shiftKey,N.control=je.ctrlKey,N.meta=je.metaKey}function Ae(){(X||N.shift||N.alt||N.meta||N.control)&&(X=0,N.shift=N.alt=N.control=N.meta=!1)}function _e(je){let tt=!1;!N.alt&&je.altKey&&(tt=!0,N.alt=!0),!N.shift&&je.shiftKey&&(tt=!0,N.shift=!0),!N.control&&je.ctrlKey&&(tt=!0,N.control=!0),!N.meta&&je.metaKey&&(tt=!0,N.meta=!0),tt&&K&&he.next(H()),G(je)&&K&&ge.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}function be(je){let tt=!1;N.alt&&!je.altKey&&(tt=!0,N.alt=!1),N.shift&&!je.shiftKey&&(tt=!0,N.shift=!1),N.control&&!je.ctrlKey&&(tt=!0,N.control=!1),N.meta&&!je.metaKey&&(tt=!0,N.meta=!1),tt&&K&&he.next(H()),p.includes(je.key)&&xe(je),G(je)&&K&&de.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}function xe(je){!G(je)||!K||fe.next({key:je.key,code:je.code,modifiers:H(),...k,preventDefault:()=>je.preventDefault()})}const we={primary:{prev:void 0,down:(0,n.Vec2)(),end:(0,n.Vec2)(),axes:[]},secondary:{prev:void 0,down:(0,n.Vec2)(),end:(0,n.Vec2)(),axes:[]},distance:-1};function Be(je,tt,ut){const Pt=g.has(tt,je);return(ut?g.has(ut,je):!1)&&!Pt}function Me(je,tt){const{x:ut,y:Pt,dx:Wt,dy:kt,ray:ar,buttons:Qr,axes:Lr}=je,[Ei,Bi]=[ut,Pt],Ri=_.create(),ys=!0,zr=tt?we.secondary:we.primary,{prev:Zr}=zr;Qr===g.Flag.Secondary?oe.next({x:ut,y:Pt,pageX:Ei,pageY:Bi,buttons:g.Flag.None,button:g.Flag.None,modifiers:Ri,inside:!0,onElement:!0,ray:ar}):Zr?.buttons===g.Flag.Secondary&&ce.next(void 0);const ri=g.has(Qr,g.Flag.Primary),fi=Zr?g.has(Zr.buttons,g.Flag.Primary):!1;
17if(fi&&!ri&&(n.Vec2.set(zr.end,ut,Pt),n.Vec2.distance(zr.end,zr.down)<20&&re.next({x:ut,y:Pt,pageX:Ei,pageY:Bi,buttons:g.Flag.Trigger,button:g.Flag.Trigger,modifiers:Ri,ray:ar}),ne.next(void 0)),ri){const hn=!fi;te.next({x:ut,y:Pt,dx:Wt,dy:kt,pageX:Ei,pageY:Bi,buttons:g.Flag.Trigger,button:g.Flag.Trigger,modifiers:Ri,isStart:hn,useDelta:ys}),hn&&n.Vec2.set(zr.down,ut,Pt)}const xr={x:0,y:0,pageX:0,pageY:0,modifiers:Ri,preventDefault:()=>{}};if(Be(g.Flag.Forth,Qr,Zr?.buttons)){const hn=tt?"GamepadX":"GamepadA";de.next({...xr,code:hn,key:hn})}if(Be(g.Flag.Five,Qr,Zr?.buttons)){const hn=tt?"GamepadY":"GamepadB";de.next({...xr,code:hn,key:hn})}Lr&&(Lr[2]<0?(ge.next({...xr,code:"GamepadLeft",key:"GamepadLeft"}),de.next({...xr,code:"GamepadRight",key:"GamepadRight"})):Lr[2]>0?(ge.next({...xr,code:"GamepadRight",key:"GamepadRight"}),de.next({...xr,code:"GamepadLeft",key:"GamepadLeft"})):Lr[2]!==zr.axes[2]&&(de.next({...xr,code:"GamepadLeft",key:"GamepadLeft"}),de.next({...xr,code:"GamepadRight",key:"GamepadRight"})),Lr[3]<0?(ge.next({...xr,code:"GamepadUp",key:"GamepadUp"}),de.next({...xr,code:"GamepadDown",key:"GamepadDown"})):Lr[3]>0?(ge.next({...xr,code:"GamepadDown",key:"GamepadDown"}),de.next({...xr,code:"GamepadUp",key:"GamepadUp"})):Lr[3]!==zr.axes[3]&&(de.next({...xr,code:"GamepadUp",key:"GamepadUp"}),de.next({...xr,code:"GamepadDown",key:"GamepadDown"}))),zr.axes=Lr||[],zr.prev=je}function Re(je,tt,ut){const Pt=i.Vec3.distance(je.ray.origin,tt.ray.origin);if(we.distance>0){const Wt=Pt/we.distance;Z.next({scale:Wt,rotation:0,deltaScale:0,deltaRotation:0,buttons:ut,button:ut,modifiers:H()})}we.distance=Pt}function Te(je){let tt,ut;for(const Pt of je)Pt.handedness==="right"?tt=Pt:Pt.handedness==="left"&&(ut=Pt);!tt&&ut&&(tt=ut,ut=void 0),tt?.buttons===g.Flag.Primary&&ut?.buttons===g.Flag.Primary?Re(tt,ut,g.Flag.Trigger):tt?.buttons===g.Flag.Secondary&&ut?.buttons===g.Flag.Secondary?Re(tt,ut,g.Flag.Squeeze):(we.distance===-1&&(tt&&Me(tt,!1),ut&&Me(ut,!0)),!tt?.buttons&&!ut?.buttons&&(we.distance=-1))}let Ve,qe,ke=-1;function ze(je){if(je.length===2){const zr=n.Vec2.fromObj(je[0]),Zr=n.Vec2.fromObj(je[1]),ri=n.Vec2.distance(zr,Zr),fi=g.Flag.Trigger;if(ke>0){const xr=ri/ke;Z.next({scale:xr,rotation:0,deltaScale:0,deltaRotation:0,buttons:fi,button:fi,modifiers:H()})}ke=ri,Ve=void 0;return}ke=-1;const tt=je[0];if(!tt){if(qe&&Ve){const zr=n.Vec2.fromObj(qe),Zr=n.Vec2.fromObj(Ve);if(n.Vec2.distance(zr,Zr)<10){const[ri,fi]=zr,[xr,hn]=[ri,fi],fc=_.create(),mc=g.Flag.Trigger,{ray:pc}=qe;re.next({x:ri,y:fi,pageX:xr,pageY:hn,buttons:mc,button:mc,modifiers:fc,ray:pc})}ne.next(void 0)}Ve=void 0,qe=void 0;return}const ut=n.Vec2.fromObj(tt),[Pt,Wt]=ut,[kt,ar]=[Pt,Wt],Qr=_.create(),Lr=g.Flag.Trigger,Ei=!0,Bi=Ve===void 0,Ri=Ve?Pt-Ve.x:0,ys=Ve?Wt-Ve.y:0;Ve=tt,Bi&&(qe=tt),te.next({x:Pt,y:Wt,dx:Ri,dy:ys,pageX:kt,pageY:ar,buttons:Lr,button:Lr,modifiers:Qr,isStart:Bi,useDelta:Ei})}function We(je){const tt=je.touches[0],ut=je.touches[1];return{clientX:(tt.clientX+ut.clientX)/2,clientY:(tt.clientY+ut.clientY)/2,pageX:(tt.pageX+ut.pageX)/2,pageY:(tt.pageY+ut.pageY)/2,target:je.target}}function Je(je){const tt=je.touches[0].pageX-je.touches[1].pageX,ut=je.touches[0].pageY-je.touches[1].pageY;return Math.sqrt(tt*tt+ut*ut)}let De=-1,Oe;const Fe=(0,n.Vec2)(),Le=(0,n.Vec2)();function He(je){De<0||(n.Vec2.set(Le,je.touches[0].pageX,je.touches[0].pageY),De+=n.Vec2.distance(Fe,Le),n.Vec2.copy(Fe,Le))}const Pe=(0,n.Vec2)();let Ie=!1,Ee=0,Ue=1;function $e(je){if(je.preventDefault(),Oe=void 0,De=-1,je.touches.length===1)X=Y=g.Flag.Primary,De=0,n.Vec2.set(Fe,je.touches[0].pageX,je.touches[0].pageY),Oe=je.touches[0],Bt(je.touches[0]),n.Vec2.copy(Pe,F),Ie=!0;else if(je.touches.length===2){X=g.Flag.Secondary|g.Flag.Auxilary,Y=g.Flag.Secondary,Se(je),Ue=1,Ee=Je(je);const{pageX:tt,pageY:ut}=Fr(We(je));Ie||(tr(Pe,We(je)),Ie=!0),ie.next({isStart:!0,distance:Ee,delta:0,fraction:Ue,fractionDelta:0,startX:Pe[0],startY:Pe[1],centerPageX:tt,centerPageY:ut,buttons:X,button:Y,modifiers:H()})}else je.touches.length===3&&(X=Y=g.Flag.Forth,Bt(We(je)))}function Ye(je){if(St(),Oe&&De<=4){const tt=Oe;if(!D(tt.clientX,tt.clientY))return;tr(Le,tt);const{pageX:ut,pageY:Pt}=Fr(tt),[Wt,kt]=Le;re.next({x:Wt,y:kt,pageX:ut,pageY:Pt,buttons:X,button:Y,modifiers:H()})}Oe=void 0,Ie=!1}function Qe(je){if(Y=g.Flag.None,x&&(je.preventDefault(),je.stopPropagation(),je.originalEvent&&(je.originalEvent.preventDefault(),je.originalEvent.stopPropagation())),Oe=void 0,je.touches.length===1)X=g.Flag.Primary,Oe=je.touches[0],He(je),br(je.touches[0]);else if(je.touches.length===2){X=g.Flag.Secondary|g.Flag.Auxilary,Y=g.Flag.Secondary,Se(je);const{pageX:tt,pageY:ut}=Fr(We(je)),Pt=Je(je),Wt=Ee-Pt,kt=Ee/Pt,ar=kt-Ue;Ue=kt,ie.next({isStart:!1,distance:Pt,delta:Wt,fraction:kt,fractionDelta:ar,startX:Pe[0],startY:Pe[1],centerPageX:tt,centerPageY:ut,buttons:X,button:Y,modifiers:H()})}else je.touches.length===3&&(X=g.Flag.Forth,br(We(je)))}
17function it(je){Se(je),X=h(je),Y=f(je),T&&X===g.Flag.Auxilary&&je.preventDefault,Bt(je)}function ht(je){Se(je),X=h(je),Y=g.Flag.None,br(je)}function mt(je){Se(je),X=h(je),Y=f(je),Ot(je),St()}function St(){ne.next(void 0)}function Bt(je){D(je.clientX,je.clientY)&&(tr(F,je),n.Vec2.copy(O,F),Rr(F)&&(z=a.Started))}function Ot(je){if(z=a.Stopped,!!D(je.clientX,je.clientY)){if(tr(L,je),!Q&&n.Vec2.distance(L,O)<4){const{pageX:tt,pageY:ut}=Fr(je),[Pt,Wt]=L;re.next({x:Pt,y:Wt,pageX:tt,pageY:ut,buttons:X,button:Y,modifiers:H()})}Q=!1}}function br(je){var tt;tr(L,je);const{pageX:ut,pageY:Pt}=Fr(je),[Wt,kt]=L,{movementX:ar,movementY:Qr}=je,Lr=Rr(L)&&D(je.clientX,je.clientY);if(K&&!Lr?ce.next(void 0):!K&&Lr&&ue.next(void 0),K=Lr,k.x=Wt,k.y=kt,k.pageX=ut,k.pageY=Pt,oe.next({x:Wt,y:kt,pageX:ut,pageY:Pt,movementX:ar,movementY:Qr,buttons:X,button:Y,modifiers:H(),inside:Lr,onElement:je.target===C}),z===a.Stopped||(M&&((tt=je.preventDefault)===null||tt===void 0||tt.call(je)),n.Vec2.div(U,n.Vec2.sub(U,L,F),Qt(q)),n.Vec2.magnitude(U)<c.EPSILON))return;const Ei=z===a.Started;if(Ei&&!D(je.clientX,je.clientY))return;n.Vec2.distance(L,O)>=4&&(Q=!0);const[Bi,Ri]=U;te.next({x:Wt,y:kt,dx:Bi,dy:Ri,pageX:ut,pageY:Pt,buttons:X,button:Y,modifiers:H(),isStart:Ei}),n.Vec2.copy(F,L),z=a.Moving}function Ir(je){if(!D(je.clientX,je.clientY))return;tr(L,je);const{pageX:tt,pageY:ut}=Fr(je),[Pt,Wt]=L;S&&je.preventDefault();const kt=m(je);X=Y=g.Flag.Auxilary,(kt.dx||kt.dy||kt.dz)&&$.next({x:Pt,y:Wt,pageX:tt,pageY:ut,...kt,buttons:X,button:Y,modifiers:H()})}function Cn(je){var tt,ut;R&&(je.preventDefault(),(tt=je.stopImmediatePropagation)===null||tt===void 0||tt.call(je),(ut=je.stopPropagation)===null||ut===void 0||ut.call(je))}let Fn=0,ei=0;function Ze(je){Cn(je),Fn=je.scale,ei=je.rotation,Z.next({scale:je.scale,rotation:je.rotation,deltaRotation:0,deltaScale:0,isStart:!0,buttons:X,button:Y,modifiers:H()})}function ot(je,tt){Z.next({scale:je.scale,rotation:je.rotation,deltaRotation:ei-je.rotation,deltaScale:Fn-je.scale,isEnd:tt,buttons:X,button:Y,modifiers:H()}),ei=je.rotation,Fn=je.scale}function pt(je){Cn(je),ot(je)}function xt(je){Cn(je),ot(je,!0)}function pr(){E=C.clientWidth*j(),I=C.clientHeight*j(),pe.next({})}function Rr(je){if(C instanceof Window||C instanceof Document||C===document.body)return!0;{const tt=C.getBoundingClientRect();return je[0]>=0&&je[1]>=0&&je[0]<tt.width&&je[1]<tt.height}}function Qt(je){return je[0]=C.clientWidth,je[1]=C.clientHeight,je}function tr(je,tt){if(E=C.clientWidth*j(),I=C.clientHeight*j(),B){const ut=j();je[0]=(w.x+w.width/2)/ut,je[1]=(I-(w.y+w.height/2))/ut}else{const ut=C.getBoundingClientRect();je[0]=(tt.clientX||0)-ut.left,je[1]=(tt.clientY||0)-ut.top}return je}function Fr(je){return B?{pageX:Math.round(window.innerWidth/2)+w.x,pageY:Math.round(window.innerHeight/2)+w.y}:{pageX:je.pageX,pageY:je.pageY}}const un=30,Pn=Ln();function Ln(){var je;const tt=document.createElement("div"),ut="30%",Pt="10%",Wt=`#000 ${ut}, #0000 0 calc(100% - ${ut}), #000 0`,kt=`linear-gradient(0deg, ${Wt}) 50%/${Pt} 100% no-repeat`,ar=`linear-gradient(90deg, ${Wt}) 50%/100% ${Pt} no-repeat`;return Object.assign(tt.style,{width:`${un}px`,aspectRatio:1,background:`${kt}, ${ar}, radial-gradient(circle at 50%, #000 5%, #0000 5%)`,display:"none",zIndex:1e3,position:"absolute",mixBlendMode:"difference",filter:"invert(1)"}),(je=C.parentElement)===null||je===void 0||je.appendChild(tt),tt}function ti(je){if(Pn.style.display=je?"block":"none",je){const tt=j(),ut=(w.x+w.width/2)/tt,Pt=(w.y+w.height/2)/tt;Pn.style.width=`${un}px`,Pn.style.left=`calc(${ut}px - ${un/2}px)`,Pn.style.bottom=`calc(${Pt}px - ${un/2}px)`}}return{get noScroll(){return S},set noScroll(je){S=je},get noContextMenu(){return A},set noContextMenu(je){A=je},get width(){return E},get height(){return I},get pixelRatio(){return j()},get pointerLock(){return B},...ae,setPixelScale:je=>{V=je,E=C.clientWidth*j(),I=C.clientHeight*j()},updateTrackedPointers:je=>{Te(je),ve.next(je)},updateScreenTouches:je=>{ze(je)},requestPointerLock:je=>{w=je,B||C.requestPointerLock()},exitPointerLock:()=>{B&&C.ownerDocument.exitPointerLock()},dispose:me}}v.fromElement=P})(u||(e.InputObserver=u={}));function m(v){let l=0,S=0,T=0,A=0,x=0;return"detail"in v&&(S=v.detail),"wheelDelta"in v&&(S=-v.wheelDelta/120),"wheelDeltaY"in v&&(S=-v.wheelDeltaY/120
17),"wheelDeltaX"in v&&(l=-v.wheelDeltaX/120),"axis"in v&&v.axis===v.HORIZONTAL_AXIS&&(l=S,S=0),T=l*10,A=S*10,"deltaY"in v&&(A=v.deltaY),"deltaX"in v&&(T=v.deltaX),"deltaZ"in v&&(x=v.deltaZ),(T||A||x)&&v.deltaMode&&(v.deltaMode===1?(T*=40,A*=40,x*=40):(T*=800,A*=800,x*=800)),T&&!l&&(l=T<0?-1:1),A&&!S&&(S=A<0?-1:1),{spinX:l,spinY:S,dx:T,dy:A,dz:x}}})(Gx)),Gx}var zx={},ry={},ny={},aq;function DS(){if(aq)return ny;aq=1,Object.defineProperty(ny,"__esModule",{value:!0}),ny.Plane3D=t;const e=wt();function t(){return t.create(e.Vec3.create(1,0,0),0)}return(function(r){function n(v,b){return{normal:v,constant:b}}r.create=n;function i(v,b){return e.Vec3.copy(v.normal,b.normal),v.constant=b.constant,v}r.copy=i;function c(v){return i(r(),v)}r.clone=c;function o(v,b){const P=1/e.Vec3.magnitude(b.normal);return e.Vec3.scale(v.normal,b.normal,P),v.constant=b.constant*P,v}r.normalize=o;function s(v,b){return e.Vec3.negate(v.normal,b.normal),v.constant=-b.constant,v}r.negate=s;function h(v,b,P){return e.Vec3.toArray(v.normal,b,P),b[P+3]=v.constant,b}r.toArray=h;function f(v,b,P){return e.Vec3.fromArray(v.normal,b,P),v.constant=b[P+3],v}r.fromArray=f;function y(v,b,P){return e.Vec3.copy(v.normal,b),v.constant=-e.Vec3.dot(v.normal,P),v}r.fromNormalAndCoplanarPoint=y;function _(v,b,P,C){const l=e.Vec3.triangleNormal((0,e.Vec3)(),b,P,C);return y(v,l,b),v}r.fromCoplanarPoints=_;const g=(0,e.Vec3)();function a(v,b,P,C,l){e.Vec3.set(g,b,P,C);const S=1/e.Vec3.magnitude(g);return e.Vec3.scale(v.normal,g,S),v.constant=l*S,v}r.setUnnormalized=a;function d(v,b){return e.Vec3.dot(v.normal,b)+v.constant}r.distanceToPoint=d;function p(v,b){return d(v,b.center)-b.radius}r.distanceToSphere3D=p;function u(v,b,P){return e.Vec3.scaleAndAdd(v,P,b.normal,-d(b,P))}r.projectPoint=u;function m(v,b,P){const C=e.Vec3.dot(b.normal,P.direction);if(C===0)return!1;const l=-(e.Vec3.dot(b.normal,P.origin)+b.constant)/C;return l<0?!1:(e.Vec3.scaleAndAdd(v,P.origin,P.direction,l),!0)}r.intersectRay3D=m})(t||(ny.Plane3D=t={})),ny}var oq;function oQ(){if(oq)return ry;oq=1,Object.defineProperty(ry,"__esModule",{value:!0}),ry.Frustum3D=r;const e=wt(),t=DS();function r(){return r.create((0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)(),(0,t.Plane3D)())}return(function(n){(function(g){g[g.Right=0]="Right",g[g.Left=1]="Left",g[g.Bottom=2]="Bottom",g[g.Top=3]="Top",g[g.Far=4]="Far",g[g.Near=5]="Near"})(n.PlaneIndex||(n.PlaneIndex={}));function i(g,a,d,p,u,m){return[g,a,d,p,u,m]}n.create=i;function c(g,a){for(let d=0;d<6;++d)t.Plane3D.copy(g[d],a[d]);return g}n.copy=c;function o(g){return c(n(),g)}n.clone=o;function s(g,a){const d=a[0],p=a[1],u=a[2],m=a[3],v=a[4],b=a[5],P=a[6],C=a[7],l=a[8],S=a[9],T=a[10],A=a[11],x=a[12],M=a[13],D=a[14],V=a[15];return t.Plane3D.setUnnormalized(g[0],m-d,C-v,A-l,V-x),t.Plane3D.setUnnormalized(g[1],m+d,C+v,A+l,V+x),t.Plane3D.setUnnormalized(g[2],m+p,C+b,A+S,V+M),t.Plane3D.setUnnormalized(g[3],m-p,C-b,A-S,V-M),t.Plane3D.setUnnormalized(g[4],m-u,C-P,A-T,V-D),t.Plane3D.setUnnormalized(g[5],m+u,C+P,A+T,V+D),g}n.fromProjectionMatrix=s;function h(g,a){const d=a.center,p=-a.radius;for(let u=0;u<6;++u)if(t.Plane3D.distanceToPoint(g[u],d)<p)return!1;return!0}n.intersectsSphere3D=h;const f=(0,e.Vec3)();function y(g,a){for(let d=0;d<6;++d){const p=g[d];if(f[0]=p.normal[0]>0?a.max[0]:a.min[0],f[1]=p.normal[1]>0?a.max[1]:a.min[1],f[2]=p.normal[2]>0?a.max[2]:a.min[2],t.Plane3D.distanceToPoint(p,f)<0)return!1}return!0}n.intersectsBox3D=y;function _(g,a){for(let d=0;d<6;++d)if(t.Plane3D.distanceToPoint(g[d],a)<0)return!1;return!0}n.containsPoint=_})(r||(ry.Frustum3D=r={})),ry}var sq;function i2(){return sq||(sq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Renderer=e.RendererParams=e.MarkingType=e.PickType=void 0,e.getTransformedLightDirection=v;const t=Kn(),r=Ge(),n=vt(),i=et(),c=Ne(),o=er(),s=Vt(),h=ir(),f=Ct(),y=oQ(),_=DS(),g=rt();var a;(function(P){P[P.None=0]="None",P[P.Object=1]="Object",P[P.Instance=2]="Instance",P[P.Group=3]="Group"})(a||(e.PickType=a={}));var d;(function(P){P[P.None=0]="None",P[P.Depth=1]="Depth",P[P.Mask=2]="Mask"}
17)(d||(e.MarkingType=d={})),e.RendererParams={backgroundColor:c.ParamDefinition.Color((0,n.Color)(0),{description:"Background color of the 3D canvas"}),pickingAlphaThreshold:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{description:"The minimum opacity value needed for an object to be pickable."}),colorMarker:c.ParamDefinition.Boolean(!0,{description:"Enable color marker"}),highlightColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,.4,.6)),selectColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(.2,1,.1)),dimColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),highlightStrength:c.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1}),selectStrength:c.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1}),dimStrength:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.1}),markerPriority:c.ParamDefinition.Select(1,[[1,"Highlight"],[2,"Select"]]),xrayEdgeFalloff:c.ParamDefinition.Numeric(1,{min:0,max:3,step:.1}),celSteps:c.ParamDefinition.Numeric(5,{min:2,max:16,step:1}),exposure:c.ParamDefinition.Numeric(1,{min:0,max:3,step:.01}),light:c.ParamDefinition.ObjectList({inclination:c.ParamDefinition.Numeric(150,{min:0,max:180,step:1}),azimuth:c.ParamDefinition.Numeric(320,{min:0,max:360,step:1}),color:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),intensity:c.ParamDefinition.Numeric(.6,{min:0,max:5,step:.01})},P=>n.Color.toHexString(P.color),{defaultValue:[{inclination:150,azimuth:320,color:n.Color.fromNormalizedRgb(1,1,1),intensity:.6}]}),ambientColor:c.ParamDefinition.Color(n.Color.fromNormalizedRgb(1,1,1)),ambientIntensity:c.ParamDefinition.Numeric(.4,{min:0,max:2,step:.01}),enableAnimation:c.ParamDefinition.Boolean(!0,{description:"Enable time-based animations."})};const p=(0,r.Vec3)(),u=(0,r.Vec3)();function m(P,C){const l=P.length,{direction:S,color:T}=C||{direction:new Array(l*3).fill(0),color:new Array(l*3).fill(0)};for(let A=0;A<l;++A){const x=P[A];r.Vec3.directionFromSpherical(p,(0,o.degToRad)(x.inclination),(0,o.degToRad)(x.azimuth),1),r.Vec3.toArray(p,S,A*3),r.Vec3.scale(u,n.Color.toVec3Normalized(u,x.color),x.intensity),r.Vec3.toArray(u,T,A*3)}return{count:l,direction:S,color:T}}function v(P,C){const l=new Array(P.count*3);for(let S=0,T=P.count;S<T;++S)r.Vec3.fromArray(p,P.direction,S*3),r.Vec3.transformDirection(p,p,C),r.Vec3.toArray(p,l,S*3);return l}var b;(function(P){let C;(function(T){T[T.None=0]="None",T[T.BlendedFront=1]="BlendedFront",T[T.BlendedBack=2]="BlendedBack"})(C||(C={}));let l;(function(T){T[T.All=0]="All",T[T.Opaque=1]="Opaque",T[T.Transparent=2]="Transparent"})(l||(l={}));function S(T,A={}){const{gl:x,state:M,stats:D}=T,V=c.ParamDefinition.merge(e.RendererParams,c.ParamDefinition.getDefaultValues(e.RendererParams),A),R=m(V.light),E=(0,t.Viewport)(),I=r.Vec2.create(x.drawingBufferWidth,x.drawingBufferHeight),B=n.Color.toVec3Normalized((0,r.Vec3)(),V.backgroundColor);let w=!1,O=null;const F=T.resources.texture("image-uint8","rgba","ubyte","nearest");F.define(1,1),F.load({array:new Uint8Array([255,255,255,255]),width:1,height:1});const L=[["tDepth",F]],U=(0,r.Mat4)(),q=(0,r.Mat4)(),N=(0,r.Mat4)(),k=(0,r.Mat4)(),j=(0,r.Mat4)(),H=(0,r.Mat4)(),G=(0,r.Mat4)(),z=(0,r.Mat4)(),W=(0,r.Mat4)(),X=(0,r.Mat4)(),Y=(0,r.Mat4)(),K=(0,r.Vec3)(),Q=(0,r.Vec3)(),J=(0,r.Vec3)(),ae=(0,_.Plane3D)(),te=(0,r.Vec2)(),ne=(0,y.Frustum3D)();let $=1;const ie=(0,g.Sphere3D)(),Z=(0,r.Vec3)();r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,0),V.ambientIntensity);const re={uDrawId:i.ValueCell.create(0),uModel:i.ValueCell.create(r.Mat4.identity()),uView:i.ValueCell.create(q),uInvView:i.ValueCell.create(N),uModelView:i.ValueCell.create(k),uInvModelView:i.ValueCell.create(j),uInvProjection:i.ValueCell.create(H),uProjection:i.ValueCell.create((0,r.Mat4)()),uModelViewProjection:i.ValueCell.create(G),uInvModelViewProjection:i.ValueCell.create(z),uHasHeadRotation:i.ValueCell.create(!1),uInvHeadRotation:i.ValueCell.create(W),uHasEyeCamera:i.ValueCell.create(!1),uModelViewEye:i.ValueCell.create(X),uInvModelViewEye:i.ValueCell.create(Y),uIsAsymmetricProjection:i.ValueCell.create(!1),uIsOrtho:i.ValueCell.create(1),uViewOffset:i.ValueCell.create(te),uModelScale:i.ValueCell.create(1),uPixelRatio:i.ValueCell.create(T.pixelRatio),uViewport:i.ValueCell.create(t.Viewport.toVec4((0,r.Vec4)(),E)),uDrawingBufferSize:i.ValueCell.create(I),uCameraPosition:i.ValueCell.create(Q),uCameraDir:i.ValueCell.create(K),uCameraPlane:i.ValueCell.create(_.Plane3D.toArray(ae,(0,r.Vec4)(),0)),uNear:i.ValueCell.create(1),uFar:i.ValueCell.create(1e4),uFog:i.ValueCell.create(!0),uFogNear:i.ValueCell.create(1),uFogFar:i.ValueCell.create(1e4),uFogColor:i.ValueCell.create(B),uRenderMask:i.ValueCell.create(0),uMarkingDepthTest:i.ValueCell.create(!1),uPickType:i.ValueCell.create(a.None),uMarkingType:i.
17ValueCell.create(d.None),uTransparentBackground:i.ValueCell.create(!1),uLightDirection:i.ValueCell.create(R.direction),uLightColor:i.ValueCell.create(R.color),uAmbientColor:i.ValueCell.create(Z),uPickingAlphaThreshold:i.ValueCell.create(V.pickingAlphaThreshold),uHighlightColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.highlightColor)),uSelectColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.selectColor)),uDimColor:i.ValueCell.create(n.Color.toVec3Normalized((0,r.Vec3)(),V.dimColor)),uHighlightStrength:i.ValueCell.create(V.highlightStrength),uSelectStrength:i.ValueCell.create(V.selectStrength),uDimStrength:i.ValueCell.create(V.dimStrength),uMarkerPriority:i.ValueCell.create(V.markerPriority),uMarkerAverage:i.ValueCell.create(0),uXrayEdgeFalloff:i.ValueCell.create(V.xrayEdgeFalloff),uCelSteps:i.ValueCell.create(V.celSteps),uExposure:i.ValueCell.create(V.exposure),uTime:i.ValueCell.create(0),uEnableAnimation:i.ValueCell.create(V.enableAnimation)},oe=Object.entries(re);let ce=!0;const ue=(Te,Ve,qe)=>{var ke,ze,We;if(Te.state.disposed||!Te.state.visible||!Te.state.pickable&&Ve==="pick"||!Te.values.drawCount.ref.value||(g.Sphere3D.scaleNX(ie,Te.values.boundingSphere.ref.value,$),!y.Frustum3D.intersectsSphere3D(ne,ie)))return;const[Je,De]=Te.values.uLod.ref.value;if(Je!==0||De!==0){const{center:Le,radius:He}=ie,Pe=_.Plane3D.distanceToPoint(ae,Le);if(Pe+He<Je*$||Pe-He>De*$)return}if($===1){if(O!==null&&O(ie))return;const Le=Te.values.instanceGrid.ref.value.cellSize>0,He=Te.values.uInstanceCount.ref.value>1;Le&&(He||Te.values.lodLevels)?Te.cull(ae,ne,O,T.stats):Te.uncull()}else if(Te.values.lodLevels){const{center:Le,radius:He}=ie,Pe=_.Plane3D.distanceToPoint(ae,Le);Te.cullSimple(Pe,He,$)}else Te.uncull();const Fe=Te.getProgram(Ve);if(M.currentProgramId!==Fe.id&&(ce=!0,Fe.use()),ce&&(Fe.setUniforms(oe),Fe.bindTextures(L,0),ce=!1),Te.values.dGeometryType.ref.value==="directVolume"){if(Ve!=="color")return;M.disable(x.CULL_FACE),M.frontFace(x.CCW)}else qe===C.BlendedFront?(M.enable(x.CULL_FACE),!((ke=Te.values.dFlipSided)===null||ke===void 0)&&ke.ref.value?(M.frontFace(x.CW),M.cullFace(x.FRONT)):(M.frontFace(x.CCW),M.cullFace(x.BACK))):qe===C.BlendedBack?(M.enable(x.CULL_FACE),!((ze=Te.values.dFlipSided)===null||ze===void 0)&&ze.ref.value?(M.frontFace(x.CW),M.cullFace(x.BACK)):(M.frontFace(x.CCW),M.cullFace(x.FRONT))):(Te.values.uDoubleSided?Te.values.uDoubleSided.ref.value||Te.values.hasReflection.ref.value?M.disable(x.CULL_FACE):M.enable(x.CULL_FACE):M.disable(x.CULL_FACE),!((We=Te.values.dFlipSided)===null||We===void 0)&&We.ref.value?(M.frontFace(x.CW),M.cullFace(x.FRONT)):(M.frontFace(x.CCW),M.cullFace(x.BACK)));Te.render(Ve,L.length)},pe=(Te,Ve)=>{i.ValueCell.update(re.uView,Te.view),i.ValueCell.update(re.uInvView,r.Mat4.invert(N,Te.view)),i.ValueCell.update(re.uProjection,Te.projection),i.ValueCell.update(re.uInvProjection,r.Mat4.invert(H,Te.projection)),i.ValueCell.updateIfChanged(re.uIsOrtho,Te.state.mode==="orthographic"?1:0),i.ValueCell.update(re.uViewOffset,Te.viewOffset.enabled?r.Vec2.set(te,Te.viewOffset.offsetX*16,Te.viewOffset.offsetY*16):r.Vec2.set(te,0,0)),i.ValueCell.updateIfChanged(re.uModelScale,Te.scale),i.ValueCell.update(re.uCameraPosition,r.Mat4.getTranslation(Q,N)),r.Vec3.scale(J,Te.state.target,Te.scale),r.Vec3.normalize(K,r.Vec3.sub(K,J,Q)),i.ValueCell.update(re.uCameraDir,K),i.ValueCell.updateIfChanged(re.uFar,Te.far),i.ValueCell.updateIfChanged(re.uNear,Te.near),i.ValueCell.updateIfChanged(re.uFog,Te.state.fog>0),i.ValueCell.updateIfChanged(re.uFogFar,Te.fogFar),i.ValueCell.updateIfChanged(re.uFogNear,Te.fogNear),i.ValueCell.updateIfChanged(re.uTrans
17parentBackground,w),y.Frustum3D.fromProjectionMatrix(ne,Te.projectionView),_.Plane3D.copy(ae,ne[y.Frustum3D.PlaneIndex.Near]),ae.constant-=_.Plane3D.distanceToPoint(ae,Q),i.ValueCell.update(re.uCameraPlane,_.Plane3D.toArray(ae,re.uCameraPlane.ref.value,0)),i.ValueCell.updateIfChanged(re.uMarkerAverage,Ve.markerAverage),!r.Mat4.isZero(Te.headRotation)?(i.ValueCell.updateIfChanged(re.uHasHeadRotation,!0),i.ValueCell.update(re.uInvHeadRotation,r.Mat4.invert(W,Te.headRotation)),i.ValueCell.update(re.uLightDirection,v(R,W))):(i.ValueCell.updateIfChanged(re.uHasHeadRotation,!1),i.ValueCell.updateIfChanged(re.uInvHeadRotation,r.Mat4.id),i.ValueCell.update(re.uLightDirection,R.direction)),i.ValueCell.update(re.uIsAsymmetricProjection,Te.isAsymmetricProjection)},he=(Te,Ve,qe,ke,ze)=>{(0,s.arrayMapUpsert)(L,"tDepth",qe||F),$=Ve.scale,i.ValueCell.update(re.uModel,r.Mat4.scaleUniformly(U,Te.view,$)),i.ValueCell.update(re.uModelView,r.Mat4.mul(k,Ve.view,U)),i.ValueCell.update(re.uInvModelView,r.Mat4.invert(j,k)),i.ValueCell.update(re.uModelViewProjection,r.Mat4.mul(G,k,Ve.projection)),i.ValueCell.update(re.uInvModelViewProjection,r.Mat4.invert(z,G)),i.ValueCell.updateIfChanged(re.uRenderMask,ke),i.ValueCell.updateIfChanged(re.uMarkingDepthTest,ze),!r.Mat4.isZero(Ve.viewEye)?(i.ValueCell.updateIfChanged(re.uHasEyeCamera,!0),i.ValueCell.update(re.uModelViewEye,r.Mat4.mul(X,Ve.viewEye,U)),i.ValueCell.update(re.uInvModelViewEye,r.Mat4.invert(Y,X))):(i.ValueCell.updateIfChanged(re.uHasEyeCamera,!1),i.ValueCell.updateIfChanged(re.uModelViewEye,r.Mat4.id),i.ValueCell.updateIfChanged(re.uInvModelViewEye,r.Mat4.id)),M.enable(x.SCISSOR_TEST),M.colorMask(!0,!0,!0,!0);const{x:Je,y:De,width:Oe,height:Fe}=E;M.viewport(Je,De,Oe,Fe),M.scissor(Je,De,Oe,Fe),ce=!0,M.currentRenderItemId=-1},fe=function(Te){var Ve,qe,ke,ze;const We=(0,h.clamp)(Te.values.alpha.ref.value*Te.state.alphaFactor,0,1),Je=((Ve=Te.values.dXrayShaded)===null||Ve===void 0?void 0:Ve.ref.value)==="on"||((qe=Te.values.dXrayShaded)===null||qe===void 0?void 0:qe.ref.value)==="inverted";return We===1&&Te.values.transparencyAverage.ref.value!==1&&Te.values.dGeometryType.ref.value!=="directVolume"&&((ke=Te.values.dPointStyle)===null||ke===void 0?void 0:ke.ref.value)!=="fuzzy"&&!Je||((ze=Te.values.dTransparentBackfaces)===null||ze===void 0?void 0:ze.ref.value)==="opaque"},de=function(Te){var Ve,qe,ke;const ze=(0,h.clamp)(Te.values.alpha.ref.value*Te.state.alphaFactor,0,1),We=((Ve=Te.values.dXrayShaded)===null||Ve===void 0?void 0:Ve.ref.value)==="on"||((qe=Te.values.dXrayShaded)===null||qe===void 0?void 0:qe.ref.value)==="inverted";return ze!==0&&(ze<1||Te.values.transparencyAverage.ref.value>0||Te.values.dGeometryType.ref.value==="directVolume"||((ke=Te.values.dPointStyle)===null||ke===void 0?void 0:ke.ref.value)==="fuzzy"||Te.values.dGeometryType.ref.value==="text"||Te.values.dGeometryType.ref.value==="image"||We)},ge=function(Te){return Te.values.emissiveAverage.ref.value+Te.values.uEmissive.ref.value>0}
17,Ce=(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderPick"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1),i.ValueCell.updateIfChanged(re.uPickType,ke);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We)ze[We].state.colorOnly||ue(ze[We],qe,C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderPick")},ve=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepth"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke)ue(qe[ke],"depth",C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderDepth")},le=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"depth",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthOpaque")},me=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthOpaqueBack"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),M.depthFunc(x.GREATER),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"depth",C.BlendedBack)}M.depthFunc(x.LESS),f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthOpaqueBack")},ee=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDepthTransparent"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];de(Je)&&ue(Je,"depth",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDepthTransparent")},se=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderMarkingDepth"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.All,!1),i.ValueCell.updateIfChanged(re.uMarkingType,d.Depth);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];(0,h.clamp)(We.values.alpha.ref.value*We.state.alphaFactor,0,1)!==0&&We.values.transparencyAverage.ref.value!==1&&We.values.markerAverage.ref.value!==1&&ue(qe[ke],"marking",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderMarkingDepth")},ye=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderMarkingMask"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,qe,l.All,!!qe),i.ValueCell.updateIfChanged(re.uMarkingType,d.Mask);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze)ke[ze].values.markerAverage.ref.value>0&&ue(ke[ze],"marking",C.None);f.isTimingMode&&T.timer.markEnd("Renderer.renderMarkingMask")},Se=(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderEmissiveOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),ke?(M.depthMask(!1),M.depthFunc(x.LEQUAL)):M.depthMask(!0),he(Te,Ve,qe,l.Opaque,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];fe(De)&&(!ke||ge(De))&&ue(De,"emissive",C.None)}ke&&(M.depthFunc(x.LESS),M.depthMask(!0)),f.isTimingMode&&T.timer.markEnd("Renderer.renderEmissiveOpaque")},Ae=(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderEmissiveTransparent");const ke=T.extensions.blendMinMax;M.enable(x.BLEND),M.blendFunc(x.ONE,x.ONE),ke&&M.blendEquation(ke.MAX),M.enable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&De.values.dGeometryType.ref.value!=="directVolume"&&ge(De)&&ue(De,"emissive",C.None)}ke&&M.blendEquation(x.FUNC_ADD),f.isTimingMode&&T.timer.markEnd("Renderer.renderEmissiveTransparent")},_e=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderTracing"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"tracing",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderTracing")},be=(Te,Ve)=>{Te.hasOpaque&&xe(Te,Ve),Te.opacityAverage<1&&we(Te,Ve)},xe=(Te,Ve)=>{f.isTimingMode&&T.timer.mark("Renderer.renderOpaque"),M.disable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!0),he(Te,Ve,null,l.Opaque,!1);const{renderables:qe}=Te;for(let ke=0,ze=qe.length;ke<ze;++ke){const We=qe[ke];fe(We)&&ue(We,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderOpaque")},we=(Te,Ve)=>{var qe,ke;f.isTimingMode&&T.timer.mark("Renderer.renderBlendedTransparent"),w?M.blendFunc(x.ONE,x.ONE_MINUS_SRC_ALPHA):M.blendFuncSeparate(x.SRC_ALPHA,x.ONE_MINUS_SRC_ALPHA,x.ONE,x.ONE_MINUS_SRC_ALPHA),M.enable(x.BLEND),M.enable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,null,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&(!((qe=De.values.uDoubleSided)===null||qe===void 0)&&qe.ref.value?(((ke=De.values.dTransparentBackfaces)===null||ke===void 0?void 0:ke.ref.value)!=="opaque"&&ue(De,"color",C.BlendedBack),ue(De,"color",C.BlendedFront)):ue(De,"color",C.None))}f.isTimingMode&&T.timer.markEnd("Renderer.renderBlendedTransparent")};return{clear:(Te,Ve,qe)=>{M.enable(x.SCISSOR_TEST),M.enable(x.DEPTH_TEST),M.colorMask(!0,!0,
17!0,!0),M.depthMask(!0),qe||w&&!Ve?M.clearColor(0,0,0,0):Te?M.clearColor(B[0],B[1],B[2],1):M.clearColor(1,1,1,1),x.clear(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)},clearDepth:(Te=!1)=>{M.enable(x.SCISSOR_TEST),M.enable(x.DEPTH_TEST),M.depthMask(!0),Te?(M.colorMask(!0,!0,!0,!0),M.clearColor(1,1,1,1),x.clear(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)):x.clear(x.DEPTH_BUFFER_BIT)},update:pe,renderPick:Ce,renderDepth:ve,renderDepthOpaque:le,renderDepthOpaqueBack:me,renderDepthTransparent:ee,renderMarkingDepth:se,renderMarkingMask:ye,renderEmissiveOpaque:Se,renderEmissiveTransparent:Ae,renderTracing:_e,renderBlended:be,renderOpaque:xe,renderBlendedTransparent:we,renderVolume:(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderVolume"),M.blendFunc(x.ONE,x.ONE_MINUS_SRC_ALPHA),M.enable(x.BLEND),M.disable(x.DEPTH_TEST),M.depthMask(!1),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];Je.values.dGeometryType.ref.value==="directVolume"&&ue(Je,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderVolume")},renderWboitTransparent:(Te,Ve,qe)=>{f.isTimingMode&&T.timer.mark("Renderer.renderWboitTransparent"),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ke}=Te;for(let ze=0,We=ke.length;ze<We;++ze){const Je=ke[ze];de(Je)&&ue(Je,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderWboitTransparent")},renderDpoitTransparent:(Te,Ve,qe,ke)=>{f.isTimingMode&&T.timer.mark("Renderer.renderDpoitTransparent"),M.enable(x.BLEND),(0,s.arrayMapUpsert)(L,"tDpoitDepth",ke.depth),(0,s.arrayMapUpsert)(L,"tDpoitFrontColor",ke.frontColor),(0,s.arrayMapUpsert)(L,"tDpoitBackColor",ke.backColor),he(Te,Ve,qe,l.Transparent,!1);const{renderables:ze}=Te;for(let We=0,Je=ze.length;We<Je;++We){const De=ze[We];de(De)&&ue(De,"color",C.None)}f.isTimingMode&&T.timer.markEnd("Renderer.renderDpoitTransparent")},setTime:Te=>{i.ValueCell.updateIfChanged(re.uTime,Te)},setProps:Te=>{Te.backgroundColor!==void 0&&Te.backgroundColor!==V.backgroundColor&&(V.backgroundColor=Te.backgroundColor,n.Color.toVec3Normalized(B,V.backgroundColor),i.ValueCell.update(re.uFogColor,r.Vec3.copy(re.uFogColor.ref.value,B))),Te.pickingAlphaThreshold!==void 0&&Te.pickingAlphaThreshold!==V.pickingAlphaThreshold&&(V.pickingAlphaThreshold=Te.pickingAlphaThreshold,i.ValueCell.update(re.uPickingAlphaThreshold,V.pickingAlphaThreshold)),Te.colorMarker!==void 0&&Te.colorMarker!==V.colorMarker&&(V.colorMarker=Te.colorMarker),Te.highlightColor!==void 0&&Te.highlightColor!==V.highlightColor&&(V.highlightColor=Te.highlightColor,i.ValueCell.update(re.uHighlightColor,n.Color.toVec3Normalized(re.uHighlightColor.ref.value,V.highlightColor))),Te.selectColor!==void 0&&Te.selectColor!==V.selectColor&&(V.selectColor=Te.selectColor,i.ValueCell.update(re.uSelectColor,n.Color.toVec3Normalized(re.uSelectColor.ref.value,V.selectColor))),Te.dimColor!==void 0&&Te.dimColor!==V.dimColor&&(V.dimColor=Te.dimColor,i.ValueCell.update(re.uDimColor,n.Color.toVec3Normalized(re.uDimColor.ref.value,V.dimColor))),Te.highlightStrength!==void 0&&Te.highlightStrength!==V.highlightStrength&&(V.highlightStrength=Te.highlightStrength,i.ValueCell.update(re.uHighlightStrength,V.highlightStrength)),Te.selectStrength!==void 0&&Te.selectStrength!==V.selectStrength&&(V.selectStrength=Te.selectStrength,i.ValueCell.update(re.uSelectStrength,V.selectStrength)),Te.dimStrength!==void 0&&Te.dimStrength!==V.dimStrength&&(V.dimStrength=Te.dimStrength,i.ValueCell.update(re.uDimStrength,V.dimStrength)),Te.markerPriority!==void 0&&Te.markerPriority!==V.markerPriority&&(V.markerPriority=Te.markerPriority,i.ValueCell.update(re.uMarkerPriority,V.markerPriority)),Te.xrayEdgeFalloff!==void 0&&Te.xrayEdgeFalloff!==V.xrayEdgeFalloff&&(V.xrayEdgeFalloff=Te.xrayEdgeFalloff,i.ValueCell.update(re.uXrayEdgeFalloff,V.xrayEdgeFalloff)),Te.celSteps!==void 0&&Te.celSteps!==V.celSteps&&(V.celSteps=Te.celSteps,i.ValueCell.update(re.uCelSteps,V.celSteps)),Te.exposure!==void 0&&Te.exposure!==V.exposure&&(V.exposure=Te.exposure,i.ValueCell.update(re.uExposure,V.exposure)),Te.light!==void 0&&!(0,i.deepEqual)(Te.light,V.light)&&(V.light=Te.light,Object.assign(R,m(Te.light,R)),i.ValueCell.update(re.uLightDirection,R.direction),i.ValueCell.update(re.uLightColor,R.color)),Te.ambientColor!==void 0&&Te.ambientColor!==V.ambientColor&&(V.ambientColor=Te.ambientColor,r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,
170),V.ambientIntensity),i.ValueCell.update(re.uAmbientColor,Z)),Te.ambientIntensity!==void 0&&Te.ambientIntensity!==V.ambientIntensity&&(V.ambientIntensity=Te.ambientIntensity,r.Vec3.scale(Z,n.Color.toArrayNormalized(V.ambientColor,Z,0),V.ambientIntensity),i.ValueCell.update(re.uAmbientColor,Z)),Te.enableAnimation!==void 0&&Te.enableAnimation!==V.enableAnimation&&(V.enableAnimation=Te.enableAnimation,i.ValueCell.update(re.uEnableAnimation,V.enableAnimation))},setViewport:(Te,Ve,qe,ke)=>{M.viewport(Te,Ve,qe,ke),M.scissor(Te,Ve,qe,ke),(Te!==E.x||Ve!==E.y||qe!==E.width||ke!==E.height)&&(t.Viewport.set(E,Te,Ve,qe,ke),i.ValueCell.update(re.uViewport,r.Vec4.set(re.uViewport.ref.value,Te,Ve,qe,ke)))},setTransparentBackground:Te=>{w=Te},setDrawingBufferSize:(Te,Ve)=>{(Te!==I[0]||Ve!==I[1])&&i.ValueCell.update(re.uDrawingBufferSize,r.Vec2.set(I,Te,Ve))},setPixelRatio:Te=>{i.ValueCell.update(re.uPixelRatio,Te)},setOcclusionTest:Te=>{O=Te},props:V,get stats(){return{programCount:T.stats.resourceCounts.program,shaderCount:T.stats.resourceCounts.shader,attributeCount:T.stats.resourceCounts.attribute,elementsCount:T.stats.resourceCounts.elements,framebufferCount:T.stats.resourceCounts.framebuffer,renderbufferCount:T.stats.resourceCounts.renderbuffer,textureCount:T.stats.resourceCounts.texture,vertexArrayCount:T.stats.resourceCounts.vertexArray,drawCount:D.drawCount,instanceCount:D.instanceCount,instancedDrawCount:D.instancedDrawCount}},get light(){return R},get ambientColor(){return re.uAmbientColor.ref.value},dispose:()=>{}}}P.create=S})(b||(e.Renderer=b={}))})(zx)),zx}var Hx={},iy={},cq;function IS(){if(cq)return iy;cq=1,Object.defineProperty(iy,"__esModule",{value:!0}),iy.Binding=r;const e=cs(),t=ui();function r(s,h="",f=""){return r.create(s,h,f)}(function(s){function h(m,v="",b=""){return{triggers:m,action:v,description:b}}s.create=h;function f(m){return!!m&&Array.isArray(m.triggers)&&typeof m.action=="string"}s.isBinding=f,s.Empty={triggers:[],action:"",description:""};function y(m){return m.triggers.length===0||m.triggers.every(v=>v.buttons===void 0&&v.modifiers===void 0&&!v.code)}s.isEmpty=y;function _(m,v,b){return m.triggers.some(P=>p.match(P,v,b))}s.match=_;function g(m,v,b,P){return m.triggers.some(C=>p.matchKey(C,v,b,P))}s.matchKey=g;function a(m){return m.triggers.map(p.format).join(" or ")}s.formatTriggers=a;function d(m,v=""){const b=m.description||(0,t.stringToWords)(v);return(0,t.interpolate)(b,{triggers:"<i>"+a(m)+"</i>"})}s.format=d;function p(m,v){return p.create(m,v)}s.Trigger=p;function u(m,v){return p.create(void 0,v,m)}s.TriggerKey=u,(function(m){function v(l,S,T){return{buttons:l,modifiers:S,code:T}}m.create=v,m.Empty={};function b(l,S,T){const{buttons:A,modifiers:x}=l;return A!==void 0&&(A===S||e.ButtonsType.has(A,S))&&(!x||e.ModifiersKeys.areEqual(x,T))}m.match=b;function P(l,S,T,A){const{modifiers:x,code:M}=l;return M!==void 0&&(M===S||M.length===1&&S.length===4&&S.startsWith("Key")&&!!A&&A.length===1&&A.toUpperCase()===M.toUpperCase())&&(!x||e.ModifiersKeys.areEqual(x,T))}m.matchKey=P;function C(l){const S=[],T=i(l.buttons,l.code);T&&S.push(T);const A=o(l.code);A&&S.push(A);const x=c(l.modifiers);return x&&S.push(x),S.join(" + ")}m.format=C})(p=s.Trigger||(s.Trigger={}))})(r||(iy.Binding=r={}));const n=e.ButtonsType;function i(s,h){const f=[];return s===void 0&&!h?f.push("any mouse button"):s===0?f.push("mouse hover"):s!==void 0&&(n.has(s,n.Flag.Primary)&&f.push("left mouse button"),n.has(s,n.Flag.Secondary)&&f.push("right mouse button"),n.has(s,n.Flag.Auxilary)&&f.push("wheel/middle mouse button"),n.has(s,n.Flag.Forth)&&f.push("three fingers")),f.join(" + ")}function c(s,h){const f=[];return s&&(s.alt&&f.push("alt key"),s.control&&f.push("control key"),s.meta&&f.push("meta/command key"),s.shift&&f.push("shift key")),f.join(" + ")}function o(s){return s?.startsWith("Key")&&(s=s.substring(3)),s&&(0,t.camelCaseToWords)(s).toLowerCase()}return iy}var uq;function Rre(){return uq||(uq=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TrackballControls=e.DefaultTrackballControlsAttribs=e.TrackballControlsParams=e.DefaultTrackballBindings=void 0;
17const t=Ge(),r=Kn(),n=cs(),i=Ne(),c=er(),o=IS(),s=n.ButtonsType,h=n.ModifiersKeys,f=o.Binding.Trigger,y=o.Binding.TriggerKey;e.DefaultTrackballBindings={dragRotate:(0,o.Binding)([f(s.Flag.Primary,h.create()),f(s.Flag.Trigger)],"Rotate","Drag using ${triggers}"),dragRotateZ:(0,o.Binding)([f(s.Flag.Primary,h.create({shift:!0,control:!0}))],"Rotate around z-axis (roll)","Drag using ${triggers}"),dragPan:(0,o.Binding)([f(s.Flag.Secondary,h.create()),f(s.Flag.Primary,h.create({control:!0}))],"Pan","Drag using ${triggers}"),dragZoom:o.Binding.Empty,dragFocus:(0,o.Binding)([f(s.Flag.Forth,h.create())],"Focus","Drag using ${triggers}"),dragFocusZoom:(0,o.Binding)([f(s.Flag.Auxilary,h.create())],"Focus and zoom","Drag using ${triggers}"),scrollZoom:(0,o.Binding)([f(s.Flag.Auxilary,h.create())],"Zoom","Scroll using ${triggers}"),scrollFocus:(0,o.Binding)([f(s.Flag.Auxilary,h.create({shift:!0}))],"Clip","Scroll using ${triggers}"),scrollFocusZoom:o.Binding.Empty,keyMoveForward:(0,o.Binding)([y("KeyW"),y("GamepadUp")],"Move forward","Press ${triggers}"),keyMoveBack:(0,o.Binding)([y("KeyS"),y("GamepadDown")],"Move back","Press ${triggers}"),keyMoveLeft:(0,o.Binding)([y("KeyA")],"Move left","Press ${triggers}"),keyMoveRight:(0,o.Binding)([y("KeyD")],"Move right","Press ${triggers}"),keyMoveUp:(0,o.Binding)([y("KeyR")],"Move up","Press ${triggers}"),keyMoveDown:(0,o.Binding)([y("KeyF")],"Move down","Press ${triggers}"),keyRollLeft:(0,o.Binding)([y("KeyQ")],"Roll left","Press ${triggers}"),keyRollRight:(0,o.Binding)([y("KeyE")],"Roll right","Press ${triggers}"),keyPitchUp:(0,o.Binding)([y("ArrowUp",h.create({shift:!0}))],"Pitch up","Press ${triggers}"),keyPitchDown:(0,o.Binding)([y("ArrowDown",h.create({shift:!0}))],"Pitch down","Press ${triggers}"),keyYawLeft:(0,o.Binding)([y("ArrowLeft",h.create({shift:!0}))],"Yaw left","Press ${triggers}"),keyYawRight:(0,o.Binding)([y("ArrowRight",h.create({shift:!0}))],"Yaw right","Press ${triggers}"),boostMove:(0,o.Binding)([y("ShiftLeft")],"Boost move","Press ${triggers}"),enablePointerLock:(0,o.Binding)([y("Space",h.create({control:!0}))],"Enable pointer lock","Press ${triggers}")},e.TrackballControlsParams={rotateSpeed:i.ParamDefinition.Numeric(5,{min:1,max:10,step:1}),zoomSpeed:i.ParamDefinition.Numeric(7,{min:1,max:15,step:1}),panSpeed:i.ParamDefinition.Numeric(1,{min:.1,max:5,step:.1}),moveSpeed:i.ParamDefinition.Numeric(.75,{min:.1,max:3,step:.1}),boostMoveFactor:i.ParamDefinition.Numeric(5,{min:.1,max:10,step:.1}),flyMode:i.ParamDefinition.Boolean(!1),animate:i.ParamDefinition.MappedStatic("off",{off:i.ParamDefinition.EmptyGroup(),spin:i.ParamDefinition.Group({speed:i.ParamDefinition.Numeric(.1,{min:-2,max:2,step:.01},{description:"Number of rotations per second"}),axis:i.ParamDefinition.Vec3(t.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})},{description:"Spin the 3D scene around an axis in camera space"}),rock:i.ParamDefinition.Group({speed:i.ParamDefinition.Numeric(.3,{min:-5,max:5,step:.1},{description:"Number of oscilations per second"}),angle:i.ParamDefinition.Numeric(10,{min:0,max:90,step:1},{description:"How many degrees to rotate in each direction."}),axis:i.ParamDefinition.Vec3(t.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})},{description:"Rock the 3D scene around an axis in camera space"})}),staticMoving:i.ParamDefinition.Boolean(!0,{isHidden:!0}),dynamicDampingFactor:i.ParamDefinition.Numeric(.2,{},{isHidden:!0}),minDistance:i.ParamDefinition.Numeric(.01,{},{isHidden:!0}),maxDistance:i.ParamDefinition.Numeric(1e150,{},{isHidden:!0}),gestureScaleFactor:i.ParamDefinition.Numeric(1,{},{isHidden:!0}),maxWheelDelta:i.ParamDefinition.Numeric(.02,{},{isHidden:!0}),autoAdjustMinMaxDistance:i.ParamDefinition.MappedStatic("on",{off:i.ParamDefinition.EmptyGroup(),on:i.ParamDefinition.Group({minDistanceFactor:i.ParamDefinition.Numeric(0),minDistancePadding:i.ParamDefinition.Numeric(5),maxDistanceFactor:i.ParamDefinition.Numeric(10),maxDistanceMin:i.ParamDefinition.Numeric(20)})},{isHidden:!0})},e.DefaultTrackballControlsAttribs={bindings:e.DefaultTrackballBindings};var _;(function(g){function a(d,p,u,m={},v={}){const b={...i.ParamDefinition.getDefaultValues(e.TrackballControlsParams),...m},P={...e.DefaultTrackballControlsAttribs,...v},C=P.bindings,l=r.Viewport.clone(p.viewport);let S=!1;const T=d.drag.subscribe(De),A=d.interactionEnd.subscribe(Oe),x=d.wheel.subscribe(Fe),M=d.pinch.subscribe(Le),D=d.keyDown.subscribe(Pe),V=d.keyUp.subscribe(Ie),R=d.move.
17subscribe(He),E=d.lock.subscribe($e),I=d.leave.subscribe(Qe);let B=!1;const w=(0,t.Vec3)(),O=(0,t.Vec3)(),F=(0,t.Vec2)(),L=(0,t.Vec2)(),U=(0,t.Vec3)();let q=0;const N=(0,t.Vec2)(),k=(0,t.Vec2)();let j=0,H=0,G=0;const z=(0,t.Vec2)(),W=(0,t.Vec2)(),X=(0,t.Vec2)(),Y=(0,t.Vec2)(),K=(0,t.Vec2)(),Q=(0,t.Vec2)(),J=t.Vec3.clone(p.target),ae=t.Vec3.clone(p.position),te=t.Vec3.clone(p.up),ne=(0,t.Vec2)();function $(Ze,ot){return t.Vec2.set(ne,(Ze-l.x)/l.width,(ot-l.y)/l.height)}const ie=(0,t.Vec2)();function Z(Ze,ot){return t.Vec2.set(ie,(Ze-l.width*.5-l.x)/(l.width*.5),(l.height+2*(l.y-ot))/l.width)}function re(){const Ze=d.width/d.height||1;return b.rotateSpeed*d.pixelRatio*Ze}const oe=(0,t.Vec3)(),ce=(0,t.Quat)(),ue=(0,t.Vec3)(),pe=(0,t.Vec3)(),he=(0,t.Vec3)(),fe=(0,t.Vec3)();function de(){const Ze=L[0]-F[0],ot=L[1]-F[1];t.Vec3.set(fe,Ze,ot,0);const pt=t.Vec3.magnitude(fe)*re();pt?(t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(ue,O),t.Vec3.normalize(pe,p.up),t.Vec3.normalize(he,t.Vec3.cross(he,pe,ue)),t.Vec3.setMagnitude(pe,pe,ot),t.Vec3.setMagnitude(he,he,Ze),t.Vec3.add(fe,pe,he),t.Vec3.normalize(oe,t.Vec3.cross(oe,fe,O)),t.Quat.setAxisAngle(ce,oe,pt),t.Vec3.transformQuat(O,O,ce),t.Vec3.transformQuat(p.up,p.up,ce),t.Vec3.copy(U,oe),q=pt):!b.staticMoving&&q&&(q*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.sub(O,p.position,p.target),t.Quat.setAxisAngle(ce,U,q),t.Vec3.transformQuat(O,O,ce),t.Vec3.transformQuat(p.up,p.up,ce)),t.Vec2.copy(F,L)}const ge=(0,t.Quat)(),Ce=(0,t.Vec3)();function ve(){const Ze=(Me.rollRight-Me.rollLeft)/45,ot=(k[0]-N[0])*-Math.sign(k[1]),pt=(k[1]-N[1])*-Math.sign(k[0]),xt=-b.rotateSpeed*(-ot+pt)+Ze;xt?(t.Vec3.normalize(Ce,O),t.Quat.setAxisAngle(ge,Ce,xt),t.Vec3.transformQuat(p.up,p.up,ge),j=xt):!b.staticMoving&&j&&(j*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.normalize(Ce,O),t.Quat.setAxisAngle(ge,Ce,j),t.Vec3.transformQuat(p.up,p.up,ge)),t.Vec2.copy(N,k)}const le=(0,t.Quat)(),me=(0,t.Vec3)();function ee(){const Ze=(Me.pitchUp-Me.pitchDown)/(b.flyMode?360:90),ot=-b.rotateSpeed*Ze;ot?(t.Vec3.cross(me,O,p.up),t.Vec3.normalize(me,me),t.Quat.setAxisAngle(le,me,ot),t.Vec3.transformQuat(O,O,le),t.Vec3.transformQuat(p.up,p.up,le),H=ot):!b.staticMoving&&H&&(H*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.cross(me,O,p.up),t.Vec3.normalize(me,me),t.Quat.setAxisAngle(le,me,H),t.Vec3.transformQuat(O,O,le),t.Vec3.transformQuat(p.up,p.up,le))}const se=(0,t.Quat)(),ye=(0,t.Vec3)();function Se(){const Ze=(Me.yawRight-Me.yawLeft)/(b.flyMode?360:90),ot=-b.rotateSpeed*Ze;ot?(t.Vec3.normalize(ye,p.up),t.Quat.setAxisAngle(se,ye,ot),t.Vec3.transformQuat(O,O,se),t.Vec3.transformQuat(p.up,p.up,se),G=ot):!b.staticMoving&&G&&(G*=Math.sqrt(1-b.dynamicDampingFactor),t.Vec3.normalize(ye,p.up),t.Quat.setAxisAngle(se,ye,G),t.Vec3.transformQuat(O,O,se),t.Vec3.transformQuat(p.up,p.up,se))}function Ae(){const Ze=1+(W[1]-z[1])*b.zoomSpeed;Ze!==1&&Ze>0&&t.Vec3.scale(O,O,Ze),b.staticMoving?t.Vec2.copy(z,W):z[1]+=(W[1]-z[1])*b.dynamicDampingFactor}function _e(){const Ze=(Y[1]-X[1])*b.zoomSpeed;if(Ze!==0){const ot=Math.max(1,p.state.radius+p.state.radius*Ze);p.setState({radius:ot})}b.staticMoving?t.Vec2.copy(X,Y):X[1]+=(Y[1]-X[1])*b.dynamicDampingFactor}const be=(0,t.Vec2)(),xe=(0,t.Vec3)(),we=(0,t.Vec3)();function Be(){if(t.Vec2.sub(be,t.Vec2.copy(be,Q),K),t.Vec2.squaredMagnitude(be)){const Ze=d.pixelRatio*b.panSpeed;be[0]*=1/p.zoom*p.viewport.width*Ze,be[1]*=1/p.zoom*p.viewport.height*Ze,t.Vec3.cross(we,t.Vec3.copy(we,O),p.up),t.Vec3.setMagnitude(we,we,be[0]),t.Vec3.setMagnitude(xe,p.up,be[1]),t.Vec3.add(we,we,xe),t.Vec3.add(p.position,p.position,we),t.Vec3.add(p.target,p.target,we),b.staticMoving?t.Vec2.copy(K,Q):(t.Vec2.sub(be,Q,K),t.Vec2.scale(be,be,b.dynamicDampingFactor),t.Vec2.add(K,K,be))}}const Me={moveUp:0,moveDown:0,moveLeft:0,moveRight:0,moveForward:0,moveBack:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0,boostMove:0},Re=(0,t.Vec3)(),Te=(0,t.Vec3)();function Ve(Ze){t.Vec3.sub(Te,p.position,p.target);const ot=Math.max(p.state.minNear,b.minDistance);t.Vec3.setMagnitude(Te,Te,ot);const pt=b.flyMode||d.pointerLock,xt=Ze*(60/1e3)*b.moveSpeed*(Me.boostMove===1?b.boostMoveFactor:1);if(Me.moveForward===1&&(t.Vec3.distance(p.position,u.boundingSphereVisible.center)<u.boundingSphereVisible.radius&&pt?(t.Vec3.normalize(Re,Te),t.Vec3.scaleAndSub(p.position,p.position,Re,xt)):(t.Vec3.sub(Re,p.position,p.target),t.Vec3.scale(Re,Re,1-xt/100),t.Vec3.add(p.position,p.target,Re)),pt&&t.Vec3.sub(p.target,p.position,Te)),Me.moveBack===1&&(t.Vec3.distance(p.position,u.boundingSphereVisible.center)<u.boundingSphereVisible.radius&&pt?(t.Vec3.normalize(Re,Te),t.Vec3.scaleAndAdd(p.position,p.position,Re,xt)):(t.Vec3.sub(Re,p.position,p.target),t.Vec3.scale(Re,Re,1+xt/100),t.Vec3.add(p.position,p.target,Re)),pt&&t.Vec3.sub(p.target,p.position,Te)),Me.moveLeft===1&&(t.Vec3.cross(Re,Te,p.up),t.Vec3.normalize(Re,Re),pt?(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveRight===1&&(t.Vec3.cross(Re,Te,p.up),t.Vec3.normalize(Re,Re),pt?(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveUp===1&&(t.Vec3.normalize(Re,p.up),pt?(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),Me.moveDown===1&&(t.Vec3.normalize(Re,p.up),pt?(t.Vec3.scaleAndSub(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,Te)):(t.Vec3.scaleAndAdd(p.position,p.position,Re,xt),t.Vec3.sub(p.target,p.position,O))),pt){const pr=t.Vec3.distance(p.position,u.boundingSphereVisible.center);p.setState({minFar:pr+u.boundingSphereVisible.radius})}}function qe(){const Ze=Math.min(Math.max(p.state.radiusMax*1e3,.01),b.maxDistance);t.Vec3.squaredMagnitude(O)>Ze*Ze&&(t.Vec3.setMagnitude(O,O,Ze),t.Vec3.add(p.position,p.target,O),t.Vec2.copy(z,W),t.Vec2.copy(X,Y)),t.Vec3.squaredMagnitude(O)<b.minDistance*b.minDistance&&(t.Vec3.setMagnitude(O,O,b.minDistance),t.Vec3.add(p.position,p.target,O),t.Vec2.copy(z,W),t.Vec2.copy(X,Y))}function ke(Ze,ot){return Ze*=d.pixelRatio,ot*=d.pixelRatio,Ze>l.x+l.width||d.height-ot>l.y+l.height||Ze<l.x||d.height-ot<l.y}let ze=-1;function We(Ze){if(ze===Ze)return;const ot=Ze-ze;ze>0&&(b.animate.name==="spin"?br(ot):b.animate.name==="rock"&&Cn(ot)),t.Vec3.sub(O,p.position,p.target),de(),ve(),ee(),Se(),Ae(),_e(),Be(),t.Vec3.add(p.position,p.target,O),qe(),ze>0&&Ve(Math.min(ot,15*1e3/60)),t.Vec3.sub(O,p.position,p.target),qe(),t.Vec3.squaredDistance(w,p.position)>t.EPSILON&&t.Vec3.copy(w,p.position),ze=Ze}function Je(){t.Vec3.copy(p.target,J),t.Vec3.copy(p.position,ae),t.Vec3.copy(p.up,te),t.Vec3.sub(O,p.position,p.target),t.Vec3.copy(w,p.position)}function De({x:Ze,y:ot,dx:pt,dy:xt,pageX:pr,pageY:Rr,buttons:Qt,modifiers:tr,isStart:Fr,useDelta:un}){const Pn=!un&&ke(Ze,ot);if(Fr&&Pn||!Fr&&!B)return;B=!0,Fn();const Ln=o.Binding.match(C.dragRotate,Qt,tr),ti=o.Binding.match(C.dragRotateZ,Qt,tr),je=o.Binding.match(C.dragPan,Qt,tr),tt=o.Binding.match(C.dragZoom,Qt,tr),ut=o.Binding.match(C.dragFocus,Qt,tr),Pt=o.Binding.match(C.dragFocusZoom,Qt,tr);
17un&&Ln&&t.Vec2.copy(F,Z(pr-pt,Rr-xt)),Z(pr,Rr),$(pr,Rr);const Wt=d.pixelRatio,kt=(Ze*Wt-l.width/2-l.x)/l.width,ar=-(d.height-ot*Wt-l.height/2-l.y)/l.height;if(Fr&&(Ln&&(t.Vec2.copy(L,ie),t.Vec2.copy(F,L)),ti&&(t.Vec2.set(k,kt,ar),t.Vec2.copy(N,k)),(tt||Pt)&&(t.Vec2.copy(z,ne),t.Vec2.copy(W,z)),ut&&(t.Vec2.copy(X,ne),t.Vec2.copy(Y,X)),je&&(t.Vec2.copy(K,ne),t.Vec2.copy(Q,K))),Ln&&t.Vec2.copy(L,ie),ti&&t.Vec2.set(k,kt,ar),(tt||Pt)&&t.Vec2.copy(W,ne),ut&&t.Vec2.copy(Y,ne),Pt){const Qr=t.Vec3.distance(p.state.position,p.state.target);p.setState({radius:Qr/5})}je&&t.Vec2.copy(Q,ne)}function Oe(){B=!1}function Fe({x:Ze,y:ot,spinX:pt,spinY:xt,dz:pr,buttons:Rr,modifiers:Qt}){if(ke(Ze,ot))return;let tr=(0,c.absMax)(pt*.075,xt*.075,pr*1e-4);tr<-b.maxWheelDelta?tr=-b.maxWheelDelta:tr>b.maxWheelDelta&&(tr=b.maxWheelDelta),o.Binding.match(C.scrollZoom,Rr,Qt)&&(W[1]+=tr),o.Binding.match(C.scrollFocus,Rr,Qt)&&(Y[1]+=tr)}function Le({isStart:Ze,startX:ot,startY:pt,centerPageX:xt,centerPageY:pr,fractionDelta:Rr,buttons:Qt,modifiers:tr}){if(ke(ot,pt))return;const Fr=o.Binding.match(C.dragPan,Qt,tr),un=o.Binding.match(C.scrollZoom,Qt,tr);B=Fr||un,Fr&&($(xt,pr),Ze?(t.Vec2.copy(K,ne),t.Vec2.copy(Q,K)):t.Vec2.copy(Q,ne)),un&&(W[1]+=b.gestureScaleFactor*Rr)}function He({movementX:Ze,movementY:ot}){if(!d.pointerLock||Ze===void 0||ot===void 0)return;const pt=l.width*.5-l.x,xt=l.height*.5-l.y;t.Vec2.copy(F,Z(pt,xt)),t.Vec2.copy(L,Z(Ze+pt,ot+xt))}function Pe({modifiers:Ze,code:ot,key:pt,x:xt,y:pr}){ke(xt,pr)||(o.Binding.matchKey(C.keyMoveForward,ot,Ze,pt)?Me.moveForward=1:o.Binding.matchKey(C.keyMoveBack,ot,Ze,pt)?Me.moveBack=1:o.Binding.matchKey(C.keyMoveLeft,ot,Ze,pt)?Me.moveLeft=1:o.Binding.matchKey(C.keyMoveRight,ot,Ze,pt)?Me.moveRight=1:o.Binding.matchKey(C.keyMoveUp,ot,Ze,pt)?Me.moveUp=1:o.Binding.matchKey(C.keyMoveDown,ot,Ze,pt)?Me.moveDown=1:o.Binding.matchKey(C.keyRollLeft,ot,Ze,pt)?Me.rollLeft=1:o.Binding.matchKey(C.keyRollRight,ot,Ze,pt)?Me.rollRight=1:o.Binding.matchKey(C.keyPitchUp,ot,Ze,pt)?Me.pitchUp=1:o.Binding.matchKey(C.keyPitchDown,ot,Ze,pt)?Me.pitchDown=1:o.Binding.matchKey(C.keyYawLeft,ot,Ze,pt)?Me.yawLeft=1:o.Binding.matchKey(C.keyYawRight,ot,Ze,pt)&&(Me.yawRight=1),o.Binding.matchKey(C.boostMove,ot,Ze,pt)&&(Me.boostMove=1),o.Binding.matchKey(C.enablePointerLock,ot,Ze,pt)&&d.requestPointerLock(l))}function Ie({modifiers:Ze,code:ot,key:pt,x:xt,y:pr}){var Rr,Qt,tr,Fr,un,Pn,Ln,ti,je,tt,ut,Pt;if(ke(xt,pr))return;let Wt=!1;ot.startsWith("Alt")?(Wt=!0,Ze.alt=!0):ot.startsWith("Shift")?(Wt=!0,Ze.shift=!0):ot.startsWith("Control")?(Wt=!0,Ze.control=!0):ot.startsWith("Meta")&&(Wt=!0,Ze.meta=!0);const kt=[];Wt?(Me.moveForward&&kt.push(((Rr=C.keyMoveForward.triggers[0])===null||Rr===void 0?void 0:Rr.code)||""),Me.moveBack&&kt.push(((Qt=C.keyMoveBack.triggers[0])===null||Qt===void 0?void 0:Qt.code)||""),Me.moveLeft&&kt.push(((tr=C.keyMoveLeft.triggers[0])===null||tr===void 0?void 0:tr.code)||""),Me.moveRight&&kt.push(((Fr=C.keyMoveRight.triggers[0])===null||Fr===void 0?void 0:Fr.code)||""),Me.moveUp&&kt.push(((un=C.keyMoveUp.triggers[0])===null||un===void 0?void 0:un.code)||""),Me.moveDown&&kt.push(((Pn=C.keyMoveDown.triggers[0])===null||Pn===void 0?void 0:Pn.code)||""),Me.rollLeft&&kt.push(((Ln=C.keyRollLeft.triggers[0])===null||Ln===void 0?void 0:Ln.code)||""),Me.rollRight&&kt.push(((ti=C.keyRollRight.triggers[0])===null||ti===void 0?void 0:ti.code)||""),Me.pitchUp&&kt.push(((je=C.keyPitchUp.triggers[0])===null||je===void 0?void 0:je.code)||""),Me.pitchDown&&kt.push(((tt=C.keyPitchDown.triggers[0])===null||tt===void 0?void 0:tt.code)||""),Me.yawLeft&&kt.push(((ut=C.keyYawLeft.triggers[0])===null||ut===void 0?void 0:ut.code)||""),Me.yawRight&&kt.push(((Pt=C.keyYawRight.triggers[0])===null||Pt===void 0?void 0:Pt.code)||"")):kt.push(ot);for(const ar of kt)o.Binding.matchKey(C.keyMoveForward,ar,Ze,pt)?Me.moveForward=0:o.Binding.matchKey(C.keyMoveBack,ar,Ze,pt)?Me.moveBack=0:o.Binding.matchKey(C.keyMoveLeft,ar,Ze,pt)?Me.moveLeft=0:o.Binding.matchKey(C.keyMoveRight,ar,Ze,pt)?Me.moveRight=0:o.Binding.matchKey(C.keyMoveUp,ar,Ze,pt)?Me.moveUp=0:o.Binding.matchKey(C.keyMoveDown,ar,Ze,pt)?Me.moveDown=0:o.Binding.matchKey(C.keyRollLeft,ar,Ze,pt)?Me.rollLeft=0:o.Binding.matchKey(C.keyRollRight,ar,Ze,pt)?Me.rollRight=0:o.Binding.matchKey(C.keyPitchUp,ar,Ze,pt)?Me.pitchUp=0:o.Binding.matchKey(C.keyPitchDown,ar,Ze,pt)?Me.pitchDown=0:o.Binding.matchKey(C.keyYawLeft,ar,Ze,pt)?Me.yawLeft=0:o.Binding.matchKey(C.keyYawRight,ar,Ze,pt)&&(Me.yawRight=0);o.Binding.matchKey(C.boostMove,ot,Ze,pt)&&(Me.boostMove=0)}function Ee(){t.Vec3.sub(Te,p.position,p.target);const Ze=Math.max(p.state.minNear,b.minDistance);t.Vec3.setMagnitude(Te,Te,Ze),t.Vec3.sub(p.target,p.position,Te);const ot=t.Vec3.distance(p.position,u.boundingSphereVisible.center);p.setState({minFar:ot+u.boundingSphereVisible.radius})}function Ue(){const{center:Ze,radius:ot}=u.boundingSphereVisible;if(t.Vec3.distance(p.position,Ze)>ot){const xt=p.getFocus(Ze,ot);p.setState({...xt,minFar:0})}else p.setState({minFar:0,radius:u.boundingSphereVisible.radius})}function $e(Ze){Ze?Ee():Ue()}function Ye(){Me.moveForward=0,Me.moveBack=0,Me.moveLeft=0,Me.moveRight=0,Me.moveUp=0,Me.moveDown=0,Me.rollLeft=0,Me.rollRight=0,Me.pitchUp=0,Me.pitchDown=0,Me.yawLeft=0,Me.yawRight=0,Me.boostMove=0}function Qe(){Ye()}function it(){S||(S=!0,T.unsubscribe(),x.unsubscribe(),M.unsubscribe(),A.unsubscribe(),D.unsubscribe(),V.unsubscribe(),R.unsubscribe(),E.unsubscribe(),I.unsubscribe())}const ht=(0,t.Quat)(),mt=(0,t.Vec3)(),St=(0,t.Vec3)(),Bt=(0,t.Vec3)(),Ot=(0,t.Vec3)();function br(Ze){if(b.animate.name!=="spin"||b.animate.params.speed===0||B)return;const ot=2*Math.PI*b.animate.params.speed/1e3,pt=Ze*ot;t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(Ot,O),t.Vec3.normalize(St,p.up),t.Vec3.cross(Bt,St,Ot),t.Vec3.normalize(Bt,Bt);const xt=b.animate.params.axis;t.Vec3.set(mt,xt[0]*Bt[0]+xt[1]*St[0]+xt[2]*Ot[0],xt[0]*Bt[1]+xt[1]*St[1]+xt[2]*Ot[1],xt[0]*Bt[2]+xt[1]*St[2]+xt[2]*Ot[2]),t.Vec3.normalize(mt,mt),t.Quat.setAxisAngle(ht,mt,pt),t.Vec3.transformQuat(O,O,ht),t.Vec3.transformQuat(p.up,p.up,ht),t.Vec3.add(p.position,p.target,O)}let Ir=0;function Cn(Ze){if(b.animate.name!=="rock"||b.animate.params.speed===0||B)return;const ot=Ze/1e3*b.animate.params.speed,pt=(0,c.degToRad)(b.animate.params.angle),xt=Math.sin(Ir*Math.PI*2)*pt,Rr=Math.sin((Ir+ot)*Math.PI*2)*pt-xt;t.Vec3.sub(O,p.position,p.target),t.Vec3.normalize(Ot,O),t.Vec3.normalize(St,p.up),t.Vec3.cross(Bt,St,Ot),t.Vec3.normalize(Bt,Bt);const Qt=b.animate.params.axis;t.Vec3.set(mt,Qt[0]*Bt[0]+Qt[1]*St[0]+Qt[2]*Ot[0],Qt[0]*Bt[1]+Qt[1]*St[1]+Qt[2]*Ot[1],Qt[0]*Bt[2]+Qt[1]*St[2]+Qt[2]*Ot[2]),t.Vec3.normalize(mt,mt),t.Quat.setAxisAngle(ht,mt,Rr),t.Vec3.transformQuat(O,O,ht),t.Vec3.transformQuat(p.up,p.up,ht),t.Vec3.add(p.position,p.target,O),Ir+=ot,Ir>=1&&(Ir=0)}function Fn(){Ir=0}function ei(Ze){ze=-1,We(Ze)}return{viewport:l,get isAnimating(){return b.animate.name!=="off"},get isMoving(){return Me.moveForward===1||Me.moveBack===1||Me.moveLeft===1||Me.moveRight===1||Me.moveUp===1||Me.moveDown===1||Me.rollLeft===1||Me.rollRight===1||Me.pitchUp===1||Me.pitchDown===1||Me.yawLeft===1||Me.yawRight===1},get props(){return b},setProps:Ze=>{var ot;((ot=Ze.animate)===null||ot===void 0?void 0:ot.name)==="rock"&&b.animate.name!=="rock"&&Fn(),Ze.flyMode!==void 0&&Ze.flyMode!==b.flyMode&&(Ze.flyMode?Ee():Ue()),Object.assign(b,Ze)},get attribs(){return P},setAttribs:Ze=>{Object.assign(P,Ze),Object.assign(C,P.bindings)},start:ei,update:We,reset:Je,dispose:it}}g.create=a})(_||(e.TrackballControls=_={}))})(Hx)),Hx}var qo={},qt={},ay={},qr={},oy={},lq;function Ore(){return lq||(lq=1,Object.defineProperty(oy,"__esModule",{value:!0}),oy.apply_fog=void 0,oy.apply_fog=` 18float preFogAlpha = gl_FragColor.a; 19if (uFog) { 20 float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); 21 float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
22 float fogAlpha = (1.0 - fogFactor) * gl_FragColor.a; 23 if (!uTransparentBackground) { 24 if (gl_FragColor.a < 1.0) { 25 // transparent objects are blended with background color 26 gl_FragColor.a = fogAlpha; 27 } else { 28 // mix opaque objects with background color 29 gl_FragColor.rgb = mix(gl_FragColor.rgb, uFogColor, fogFactor); 30 } 31 } else { 32 #if defined(dRenderVariant_colorDpoit) && !defined(dGeometryType_directVolume) 33 if (gl_FragColor.a < 1.0) { 34 // transparent objects are blended with background color 35 gl_FragColor.a = fogAlpha; 36 } else { 37 // opaque objects need to be pre-multiplied alpha 38 gl_FragColor.rgb *= fogAlpha; 39 gl_FragColor.a = fogAlpha; 40 } 41 #else 42 // pre-multiplied alpha expected for transparent background 43 gl_FragColor.rgb *= fogAlpha; 44 gl_FragColor.a = fogAlpha; 45 #endif 46 } 47} else if (uTransparentBackground) { 48 #if !defined(dRenderVariant_colorDpoit) && !defined(dGeometryType_directVolume) 49 // pre-multiplied alpha expected for transparent background 50 gl_FragColor.rgb *= gl_FragColor.a; 51 #endif 52} 53`),oy}var sy={},dq;function kre(){return dq||(dq=1,Object.defineProperty(sy,"__esModule",{value:!0}),sy.apply_interior_color=void 0,sy.apply_interior_color=` 54if (interior) { 55 material.rgb = mix(material.rgb, uInteriorColor.rgb, uInteriorColor.a); 56 57 float isf = clamp(uInteriorSubstance.a, 0.0, 0.99); // clamp to avoid artifacts 58 metalness = mix(metalness, uInteriorSubstance.r, isf); 59 roughness = mix(roughness, uInteriorSubstance.g, isf); 60 bumpiness = mix(bumpiness, uInteriorSubstance.b, isf); 61 62 #ifdef dTransparentBackfaces_opaque 63 material.a = 1.0; 64 #endif 65} 66`),sy}var cy={},fq;function Fre(){return fq||(fq=1,Object.defineProperty(cy,"__esModule",{value:!0}),cy.apply_light_color=void 0,cy.apply_light_color=` 67#if defined(dIgnoreLight) 68 #ifdef bumpEnabled 69 if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) { 70 material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness; 71 material.rgb -= 0.5 * uBumpAmplitude * bumpiness; 72 } 73 #endif 74 75 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 76 material.rgb += material.rgb * emissive; 77 #endif 78 79 gl_FragColor = material; 80#else 81 #ifdef bumpEnabled 82 if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) { 83 normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency); 84 } 85 #endif 86 87 vec4 color = material; 88 89 #if defined(dCelShaded) 90 // clamp to avoid artifacts 91 metalness = clamp(metalness, 0.0, 0.99); 92 roughness = clamp(roughness, 0.05, 1.0); 93 #endif 94 95 GeometricContext geometry; 96 geometry.position = -vViewPosition; 97 geometry.normal = normal; 98 geometry.viewDir = normalize(vViewPosition); 99 100 PhysicalMaterial physicalMaterial; 101 physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness); 102 #ifdef enabledFragDepth 103 physicalMaterial.roughness = min(max(roughness, 0.0525), 1.0); 104 #else 105 vec3 dxy = max(abs(dFdx(normal)), abs(dFdy(normal))); 106 float geometryRoughness = max(max(dxy.x, dxy.y), dxy.z); 107 physicalMaterial.roughness = min(max(roughness, 0.0525) + geometryRoughness, 1.0); 108 #endif 109 physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness); 110 physicalMaterial.specularF90 = 1.0; 111 112 IncidentLight directLight; 113 114 vec3 outgoingLight = vec3(0.0); 115 116 #if defined(dCelShaded) 117 float celDiffuse; 118 float celSpecular; 119 float celIntensity; 120 121 #pragma unroll_loop_start 122 for (int i = 0; i < dLightCount; ++i) { 123 directLight.direction = uLightDirection[i]; 124 directLight.color = uLightColor[i] * PI; // * PI for punctual light 125 126 celDiffuse = RECIPROCAL_PI * max(dot(geometry.normal, directLight.direction), 0.0) * (1.0 - metalness); 127 celSpecular = luminance(saturate(dot(geometry.normal, directLight.direction)) * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, physicalMaterial.specularColor, physicalMaterial.specularF90, roughness)); 128 129 celIntensity = celDiffuse + celSpecular; 130 celIntensity = ceil(celIntensity * uCelSteps) / uCelSteps; 131 132 outgoingLight += color.rgb * directLight.color * celIntensity; 133 } 134 #pragma unroll_loop_end 135 136 outgoingLight += physicalMaterial.diffuseColor * uAmbientColor; 137 #else 138 ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); 139 140 #pragma unroll_loop_start 141 for (int i = 0; i < dLightCount; ++i) { 142 directLight.direction = uLightDirection[i]; 143 directLight.color = uLightColor[i] * PI; // * PI for punctual light 144 RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight); 145 } 146 #pragma unroll_loop_end 147 148 vec3 irradiance = uAmbientColor * PI; // * PI for punctual light 149 RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight); 150 151 // indirect specular only metals 152 vec3 radiance = uAmbientColor * metalness; 153 vec3 iblIrradiance = uAmbientColor * metalness; 154 vec3 clearcoatRadiance = vec3(0.0); 155 RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight); 156 157 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular; 158 #endif 159 outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background 160 161 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 162 outgoingLight += color.rgb * emissive; 163 #endif 164
165 gl_FragColor = vec4(outgoingLight, color.a); 166#endif 167 168gl_FragColor.rgb *= uExposure; 169`),cy}var uy={},mq;function Lre(){return mq||(mq=1,Object.defineProperty(uy,"__esModule",{value:!0}),uy.apply_marker_color=void 0,uy.apply_marker_color=` 170 171#if defined(dColorMarker) 172 if (marker > 0.0) { 173 if ((uMarkerPriority == 1 && marker != 2.0) || (uMarkerPriority != 1 && marker == 1.0)) { 174 gl_FragColor.rgb = mix(gl_FragColor.rgb, uHighlightColor, uHighlightStrength); 175 gl_FragColor.a = max(gl_FragColor.a, uHighlightStrength * 0.002); // for direct-volume rendering 176 } else { 177 gl_FragColor.rgb = mix(gl_FragColor.rgb, uSelectColor, uSelectStrength); 178 gl_FragColor.a = max(gl_FragColor.a, uSelectStrength * 0.002); // for direct-volume rendering 179 } 180 } else if (uMarkerAverage > 0.0) { 181 gl_FragColor.rgb = mix(gl_FragColor.rgb, uDimColor, uDimStrength); 182 gl_FragColor.a = max(gl_FragColor.a, uDimStrength * 0.002); // for direct-volume rendering 183 } 184#endif 185`),uy}var ly={},pq;function Nre(){return pq||(pq=1,Object.defineProperty(ly,"__esModule",{value:!0}),ly.assign_clipping_varying=void 0,ly.assign_clipping_varying=` 186#if dClipObjectCount != 0 && defined(dClipping) 187 #if defined(dClippingType_instance) 188 vClipping = readFromTexture(tClipping, aInstance, uClippingTexDim).a; 189 #elif defined(dMarkerType_groupInstance) 190 vClipping = readFromTexture(tClipping, aInstance * float(uGroupCount) + group, uClippingTexDim).a; 191 #endif 192#endif 193`),ly}var dy={},hq;function qre(){return hq||(hq=1,Object.defineProperty(dy,"__esModule",{value:!0}),dy.assign_color_varying=void 0,dy.assign_color_varying=` 194#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 195 #if defined(dColorType_attribute) 196 vColor.rgb = aColor; 197 #elif defined(dColorType_instance) 198 vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb; 199 #elif defined(dColorType_group) 200 #if defined(dDualColor) 201 vec4 color2; 202 if (aColorMode == 2.0) { 203 vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; 204 } else { 205 vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb; 206 color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb; 207 } 208 #else 209 vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; 210 #endif 211 #elif defined(dColorType_groupInstance) 212 #if defined(dDualColor) 213 vec4 color2; 214 if (aColorMode == 2.0) { 215 vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb; 216 } else { 217 vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb; 218 color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb; 219 } 220 #else 221 vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb; 222 #endif 223 #elif defined(dColorType_vertex) 224 vColor.rgb = readFromTexture(tColor, vertexId, uColorTexDim).rgb; 225 #elif defined(dColorType_vertexInstance) 226 vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + vertexId, uColorTexDim).rgb; 227 #elif defined(dColorType_volume) 228 vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim; 229 vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb; 230 #elif defined(dColorType_volumeInstance) 231 vec3 cgridPos = (uColorGridTransform.w * (vModelPosition / uModelScale - uColorGridTransform.xyz)) / uColorGridDim; 232 vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb; 233 #endif 234 235 #ifdef dUsePalette 236 vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / PALETTE_SCALE; 237 #endif 238 239 #ifdef dOverpaint 240 #if defined(dOverpaintType_instance) 241 vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim); 242 #elif defined(dOverpaintType_groupInstance) 243 vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim); 244 #elif defined(dOverpaintType_vertexInstance) 245 vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + vertexId, uOverpaintTexDim); 246 #elif defined(dOverpaintType_volumeInstance) 247 vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition / uModelScale - uOverpaintGridTransform.xyz)) / uOverpaintGridDim; 248 vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim); 249 #endif 250 251 // pre-mix to avoid darkening due to empty overpaint 252 #ifdef dColorType_uniform 253 vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a); 254 #else 255 vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a); 256 #endif 257 vOverpaint *= uOverpaintStrength; 258 #endif 259 260 #ifdef dEmissive 261 #if defined(dEmissiveType_instance) 262 vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a; 263 #elif defined(dEmissiveType_groupInstance) 264 vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a; 265 #elif defined(dEmissiveType_vertexInstance) 266 vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + vertexId, uEmissiveTexDim).a; 267 #elif defined(dEmissiveType_volumeInstance) 268 vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition / uModelScale - uEmissiveGridTransform.xyz)) / uEmissiveGridDim; 269 vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a; 270 #endif 271 vEmissive *= uEmissiveStrength; 272 #endif 273 274 #ifdef dSubstance 275 #if defined(dSubstanceType_instance) 276 vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim); 277 #elif defined(dSubstanceType_groupInstance) 278 vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim); 279 #elif defined(dSubstanceType_vertexInstance) 280 vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + vertexId, uSubstanceTexDim); 281 #elif defined(dSubstanceType_volumeInstance) 282 vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition / uModelScale - uSubstanceGridTransform.xyz)) / uSubstanceGridDim; 283 vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim); 284 #endif 285 286 // pre-mix to avoid artifacts due to empty substance 287 vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a); 288 vSubstance *= uSubstanceStrength; 289 #endif 290#elif defined(dRenderVariant_emissive) 291 #ifdef dEmissive 292 #if defined(dEmissiveType_instance) 293 vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a; 294 #elif defined(dEmissiveType_groupInstance) 295 vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a; 296 #elif defined(dEmissiveType_vertexInstance) 297 vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + vertexId, uEmissiveTexDim).a; 298 #elif defined(dEmissiveType_volumeInstance) 299 vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition / uModelScale - uEmissiveGridTransform.xyz)) / uEmissiveGridDim; 300 vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a; 301 #endif 302 vEmissive *= uEmissiveStrength; 303 #endif 304#elif defined(dRenderVariant_pick) 305 #ifdef requiredDrawBuffers 306 vObject = vec4(packIntToRGB(float(uObjectId)), 1.0); 307 vInstance = vec4(packIntToRGB(aInstance), 1.0); 308 vGroup = vec4(packIntToRGB(group), 1.0); 309 #else 310 if (uPickType == 1) { 311 vColor = vec4(packIntToRGB(float(uObjectId)), 1.0); 312 } else if (uPickType == 2) { 313 vColor = vec4(packIntToRGB(aInstance), 1.0); 314 } else { 315 vColor = vec4(packIntToRGB(group), 1.0); 316 } 317 #endif 318#endif 319 320#ifdef dTransparency 321 #if defined(dTransparencyType_instance)
322 vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a; 323 #elif defined(dTransparencyType_groupInstance) 324 vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a; 325 #elif defined(dTransparencyType_vertexInstance) 326 vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + vertexId, uTransparencyTexDim).a; 327 #elif defined(dTransparencyType_volumeInstance) 328 vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition / uModelScale - uTransparencyGridTransform.xyz)) / uTransparencyGridDim; 329 vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a; 330 #endif 331 vTransparency *= uTransparencyStrength; 332#endif 333`),dy}var fy={},gq;function Ure(){return gq||(gq=1,Object.defineProperty(fy,"__esModule",{value:!0}),fy.assign_group=void 0,fy.assign_group=` 334#ifdef dGeometryType_textureMesh 335 float group = unpackRGBToInt(readFromTexture(tGroup, vertexId, uGeoTexDim).rgb); 336#else 337 float group = aGroup; 338#endif 339`),fy}var my={},yq;function jre(){return yq||(yq=1,Object.defineProperty(my,"__esModule",{value:!0}),my.assign_marker_varying=void 0,my.assign_marker_varying=` 340#if defined(dNeedsMarker) 341 #if defined(dMarkerType_instance) 342 vMarker = readFromTexture(tMarker, aInstance, uMarkerTexDim).a; 343 #elif defined(dMarkerType_groupInstance) 344 vMarker = readFromTexture(tMarker, aInstance * float(uGroupCount) + group, uMarkerTexDim).a; 345 #endif 346#endif 347`),my}var py={},vq;function Gre(){return vq||(vq=1,Object.defineProperty(py,"__esModule",{value:!0}),py.assign_material_color=void 0,py.assign_material_color=` 348#if defined(dNeedsMarker) 349 float marker = uMarker; 350 if (uMarker == -1.0) { 351 marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win 352 } 353#endif 354 355// optional per-fragment opacity multiplier; defaults to 1.0 356#ifndef dHasMaterialOpacity 357 float materialOpacity = 1.0; 358#endif 359 360#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 361 #if defined(dUsePalette) 362 vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha); 363 #elif defined(dColorType_uniform) 364 vec4 material = vec4(uColor, uAlpha); 365 #elif defined(dColorType_varying) 366 vec4 material = vec4(vColor.rgb, uAlpha); 367 #endif 368 369 // mix material with overpaint 370 #if defined(dOverpaint) 371 material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a); 372 #endif 373 374 float emissive = uEmissive; 375 #ifdef dEmissive 376 emissive += vEmissive; 377 #endif 378 379 float metalness = uMetalness; 380 float roughness = uRoughness; 381 float bumpiness = uBumpiness; 382 #ifdef dSubstance 383 float sf = clamp(vSubstance.a, 0.0, 0.99); // clamp to avoid artifacts 384 metalness = mix(metalness, vSubstance.r, sf); 385 roughness = mix(roughness, vSubstance.g, sf); 386 bumpiness = mix(bumpiness, vSubstance.b, sf); 387 #endif 388 389 #if defined(dXrayShaded) 390 material.a = calcXrayShadedAlpha(material.a, normal); 391 #endif 392#elif defined(dRenderVariant_depth) 393 if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) { 394 discard; 395 } 396 vec4 material; 397 if (uRenderMask == MaskOpaque) { 398 #if defined(dXrayShaded) 399 discard; 400 #endif 401 #if defined(dTransparency) 402 float dta = 1.0 - vTransparency; 403 #if __VERSION__ == 100 || defined(dVaryingGroup) 404 if (vTransparency < 0.1) dta = 1.0; // hard cutoff to avoid artifacts 405 #endif 406 407 if (uAlpha * materialOpacity * dta < 1.0) { 408 discard; 409 } 410 #else 411 if (uAlpha * materialOpacity < 1.0) { 412 discard; 413 } 414 #endif 415 material = packDepthToRGBA(fragmentDepth); 416 } else if (uRenderMask == MaskTransparent) { 417 float alpha = uAlpha * materialOpacity; 418 #if defined(dTransparency) 419 float dta = 1.0 - vTransparency; 420 alpha *= dta; 421 #endif 422 423 #ifdef dXrayShaded
424 alpha = calcXrayShadedAlpha(alpha, normal); 425 #else 426 if (alpha == 1.0) { 427 discard; 428 } 429 #endif 430 material = packDepthWithAlphaToRGBA(fragmentDepth, alpha); 431 } 432#elif defined(dRenderVariant_marking) 433 vec4 material; 434 if(uMarkingType == 1) { 435 if (marker > 0.0) 436 discard; 437 #ifdef enabledFragDepth 438 material = packDepthToRGBA(gl_FragDepthEXT); 439 #else 440 material = packDepthToRGBA(gl_FragCoord.z); 441 #endif 442 } else { 443 if (marker == 0.0) 444 discard; 445 float depthTest = 1.0; 446 if (uMarkingDepthTest) { 447 depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0; 448 } 449 bool isHighlight = intMod(marker, 2.0) > 0.1; 450 float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); 451 float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ)); 452 if (fogFactor == 1.0) 453 discard; 454 material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor); 455 } 456#elif defined(dRenderVariant_emissive) 457 float emissive = uEmissive; 458 #ifdef dEmissive 459 emissive += vEmissive; 460 #endif 461 float emissiveAlpha = uAlpha; 462 #if defined(dXrayShaded) 463 emissiveAlpha = calcXrayShadedAlpha(emissiveAlpha, normal); 464 #endif 465 // fade emissive bloom with fog so the glow dims into the background like the geometry 466 if (uFog) { 467 float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); 468 emissiveAlpha *= 1.0 - smoothstep(uFogNear, uFogFar, abs(viewZ)); 469 } 470 // dim emitters behind a transparent blocker by its coverage (tDepth packs front depth+alpha) 471 vec2 emissiveBlocker = unpackRGBAToDepthWithAlpha(texture2D(tDepth, gl_FragCoord.xy / uDrawingBufferSize)); 472 if (fragmentDepth > emissiveBlocker.x + 0.0001) { 473 emissiveAlpha *= 1.0 - emissiveBlocker.y; 474 } 475 // glow with the object's own color so emissive isn't double-counted via the lit buffer 476 #if defined(dUsePalette) 477 vec3 emissiveColor = texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb; 478 #elif defined(dColorType_uniform) 479 vec3 emissiveColor = uColor; 480 #elif defined(dColorType_varying) 481 vec3 emissiveColor = vColor.rgb; 482 #else 483 vec3 emissiveColor = vec3(1.0); 484 #endif 485 #ifdef dOverpaint 486 emissiveColor = mix(emissiveColor, vOverpaint.rgb, vOverpaint.a); 487 #endif 488 float e = emissive * emissiveAlpha; 489 vec4 material = vec4(emissiveColor * e, e); 490#endif 491 492// apply per-group transparency 493#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive) || defined(dRenderVariant_tracing)) 494 float ta = 1.0 - vTransparency; 495 if (vTransparency < 0.09) ta = 1.0; // hard cutoff looks better 496 497 #if defined(dRenderVariant_pick) 498 if (ta * uAlpha < uPickingAlphaThreshold) 499 discard; // ignore so the element below can be picked 500 #elif defined(dRenderVariant_emissive) 501 material *= ta; 502 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 503 material.a *= ta; 504 #endif 505#endif 506`),py}var hy={},bq;function zre(){return bq||(bq=1,Object.defineProperty(hy,"__esModule",{value:!0}),hy.assign_position=void 0,hy.assign_position=` 507#ifdef dGeometryType_image 508 mat4 transform = aTransform; 509#else 510 mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId)); 511#endif 512mat4 model = uModel * transform; 513mat4 modelView = uView * model; 514#ifdef dGeometryType_textureMesh 515 vec3 position = readFromTexture(tPosition, vertexId, uGeoTexDim).xyz; 516#else 517 vec3 position = aPosition; 518#endif 519#ifndef dGeometryType_image 520 position = applyWiggle(position, group, aInstance); 521#endif 522vec4 position4 = vec4(position, 1.0); 523// for accessing tColorGrid in vert shader and for clipping in frag shader 524vModelPosition = (model * position4).xyz; 525vec4 mvPosition = modelView * position4; 526vViewPosition = mvPosition.xyz; 527gl_Position = uProjection * mvPosition; 528`),hy}var gy={},_q;function Hre(){return _q||(_q=1,Object.defineProperty(gy,"__esModule",{value:!0}),gy.assign_size=void 0,gy.assign_size=` 529#if defined(dSizeType_uniform) 530 float size = uSize; 531#elif defined(dSizeType_attribute) 532 float size = aSize; 533#elif defined(dSizeType_instance) 534 float size = unpackRGBToInt(readFromTexture(tSize, aInstance, uSizeTexDim).rgb); 535#elif defined(dSizeType_group) 536 float size = unpackRGBToInt(readFromTexture(tSize, group, uSizeTexDim).rgb); 537#elif defined(dSizeType_groupInstance) 538 float size = unpackRGBToInt(readFromTexture(tSize, aInstance * float(uGroupCount) + group, uSizeTexDim).rgb); 539#elif defined(dSizeType_vertex) 540 float size = unpackRGBToInt(readFromTexture(tSize, vertexId, uSizeTexDim).rgb); 541#elif defined(dSizeType_vertexInstance) 542 float size = unpackRGBToInt(readFromTexture(tSize, int(aInstance) * uVertexCount + vertexId, uSizeTexDim).rgb); 543#endif 544 545#if defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) || defined(dSizeType_vertex) || defined(dSizeType_vertexInstance) 546 size /= 100.0; // NOTE factor also set in TypeScript 547#endif 548 549size *= uSizeFactor; 550`),gy}var yy={},Sq;function Wre(){return Sq||(Sq=1,Object.defineProperty(yy,"__esModule",{value:!0}),yy.check_picking_alpha=void 0,yy.check_picking_alpha=` 551float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); 552float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));
553float fogAlpha = (1.0 - fogFactor) * uAlpha; 554float alpha = uAlpha; 555#ifdef dXrayShaded 556 // add bias to make picking xray shaded elements easier 557 alpha = calcXrayShadedAlpha(alpha, normal) + (0.3 * uPickingAlphaThreshold); 558#endif 559// if not opaque enough ignore so the element below can be picked 560if (alpha < uPickingAlphaThreshold || fogAlpha < 0.1) { 561 #ifdef dTransparentBackfaces_opaque 562 if (!interior) discard; 563 #else 564 discard; 565 #endif 566} 567`),yy}var vy={},Cq;function $re(){return Cq||(Cq=1,Object.defineProperty(vy,"__esModule",{value:!0}),vy.check_transparency=void 0,vy.check_transparency=` 568#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 569 #if defined(dTransparentBackfaces_off) 570 if (interior && material.a < 1.0) discard; 571 #elif defined(dTransparentBackfaces_opaque) 572 if (interior) material.a = 1.0; 573 #endif 574 575 #if !defined(dXrayShaded) 576 if ((uRenderMask == MaskOpaque && material.a < 1.0) || 577 (uRenderMask == MaskTransparent && material.a == 1.0) 578 ) { 579 discard; 580 } 581 #endif 582#endif 583 584#if defined(dRenderVariant_depth) 585 #if defined(dTransparentBackfaces_off) 586 if (interior) discard; 587 #endif 588#endif 589`),vy}var by={},Pq;function Xre(){return Pq||(Pq=1,Object.defineProperty(by,"__esModule",{value:!0}),by.clip_instance=void 0,by.clip_instance=` 590#if defined(dClipVariant_instance) && dClipObjectCount != 0 591 vec3 mCenter = (uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz; 592 if (clipTest(mCenter / uModelScale)) { 593 // move out of [ -w, +w ] to 'discard' in vert shader 594 gl_Position.z = 2.0 * gl_Position.w; 595 } 596#endif 597`),by}var _y={},Tq;function Kre(){return Tq||(Tq=1,Object.defineProperty(_y,"__esModule",{value:!0}),_y.clip_pixel=void 0,_y.clip_pixel=` 598#if defined(dClipVariant_pixel) && dClipObjectCount != 0 599 if (clipTest(vModelPosition / uModelScale)) 600 discard; 601#endif 602`),_y}var Sy={},xq;function Yre(){return xq||(xq=1,Object.defineProperty(Sy,"__esModule",{value:!0}),Sy.color_frag_params=void 0,Sy.color_frag_params=` 603uniform float uMetalness; 604uniform float uRoughness; 605uniform float uBumpiness; 606#ifdef bumpEnabled 607 uniform float uBumpFrequency; 608 uniform float uBumpAmplitude; 609#endif 610uniform float uEmissive; 611 612// Density value to estimate object thickness 613uniform float uDensity; 614 615#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 616 #if defined(dColorType_uniform) 617 uniform vec3 uColor; 618 #elif defined(dColorType_varying) 619 varying vec4 vColor; 620 #endif 621 622 #ifdef dUsePalette 623 uniform sampler2D tPalette; 624 varying float vPaletteV; 625 #endif 626 627 #ifdef dOverpaint 628 varying vec4 vOverpaint; 629 #endif 630 631 #ifdef dEmissive 632 varying float vEmissive; 633 #endif 634 635 #ifdef dSubstance 636 varying vec4 vSubstance; 637 #endif 638#elif defined(dRenderVariant_emissive) 639 #ifdef dEmissive 640 varying float vEmissive; 641 #endif 642#elif defined(dRenderVariant_pick) 643 #if __VERSION__ == 100 || !defined(dVaryingGroup) 644 #ifdef requiredDrawBuffers 645 varying vec4 vObject; 646 varying vec4 vInstance; 647 varying vec4 vGroup; 648 #else 649 varying vec4 vColor; 650 #endif 651 #else 652 #ifdef requiredDrawBuffers 653 flat in vec4 vObject; 654 flat in vec4 vInstance; 655 flat in vec4 vGroup; 656 #else 657 flat in vec4 vColor; 658 #endif 659 #endif 660#endif 661 662#ifdef dTransparency 663 varying float vTransparency; 664#endif 665`),Sy}var Cy={},Aq;function Qre(){return Aq||(Aq=1,Object.defineProperty(Cy,"__esModule",{value:!0}),Cy.color_vert_params=void 0,Cy.color_vert_params=` 666uniform float uMetalness; 667uniform float uRoughness; 668uniform float uBumpiness; 669 670#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 671 #if defined(dColorType_uniform) 672 uniform vec3 uColor; 673 #elif defined(dColorType_attribute) 674 varying vec4 vColor; 675 attribute vec3 aColor; 676 #elif defined(dColorType_texture) 677 varying vec4 vColor; 678 uniform vec2 uColorTexDim; 679 uniform sampler2D tColor; 680 #elif defined(dColorType_grid) 681 varying vec4 vColor; 682 uniform vec2 uColorTexDim; 683 uniform vec3 uColorGridDim; 684 uniform vec4 uColorGridTransform; 685 uniform sampler2D tColorGrid; 686 #elif defined(dColorType_direct) 687 varying vec4 vColor; 688 #endif 689 690 #ifdef dUsePalette 691 varying float vPaletteV; 692 #endif 693 694 #ifdef dOverpaint 695 #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance) 696 varying vec4 vOverpaint; 697 uniform vec2 uOverpaintTexDim; 698 uniform sampler2D tOverpaint; 699 #elif defined(dOverpaintType_volumeInstance) 700 varying vec4 vOverpaint; 701 uniform vec2 uOverpaintTexDim; 702 uniform vec3 uOverpaintGridDim; 703 uniform vec4 uOverpaintGridTransform; 704 uniform sampler2D tOverpaintGrid; 705 #endif 706 uniform float uOverpaintStrength; 707 #endif 708 709 #ifdef dEmissive 710 #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance) 711 varying float vEmissive; 712 uniform vec2 uEmissiveTexDim; 713 uniform sampler2D tEmissive; 714 #elif defined(dEmissiveType_volumeInstance) 715 varying float vEmissive; 716 uniform vec2 uEmissiveTexDim; 717 uniform vec3 uEmissiveGridDim; 718 uniform vec4 uEmissiveGridTransform; 719 uniform sampler2D tEmissiveGrid; 720 #endif 721 uniform float uEmissiveStrength; 722 #endif 723 724 #ifdef dSubstance 725 #if defined(dSubstanceType_instance) || defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance) 726 varying vec4 vSubstance; 727 uniform vec2 uSubstanceTexDim; 728 uniform sampler2D tSubstance; 729 #elif defined(dSubstanceType_volumeInstance) 730 varying vec4 vSubstance; 731 uniform vec2 uSubstanceTexDim; 732 uniform vec3 uSubstanceGridDim; 733 uniform vec4 uSubstanceGridTransform; 734 uniform sampler2D tSubstanceGrid; 735 #endif 736 uniform float uSubstanceStrength; 737 #endif 738#elif defined(dRenderVariant_emissive) 739 #ifdef dEmissive 740 #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance) 741 varying float vEmissive; 742 uniform vec2 uEmissiveTexDim; 743 uniform sampler2D tEmissive; 744 #elif defined(dEmissiveType_volumeInstance) 745 varying float vEmissive; 746 uniform vec2 uEmissiveTexDim; 747 uniform vec3 uEmissiveGridDim; 748 uniform vec4 uEmissiveGridTransform; 749 uniform sampler2D tEmissiveGrid; 750 #endif 751 uniform float uEmissiveStrength; 752 #endif 753#elif defined(dRenderVariant_pick) 754 #if __VERSION__ == 100 || !defined(dVaryingGroup) 755 #ifdef requiredDrawBuffers 756 varying vec4 vObject; 757 varying vec4 vInstance; 758 varying vec4 vGroup; 759 #else 760 varying vec4 vColor; 761 #endif 762 #else 763 #ifdef requiredDrawBuffers 764 flat out vec4 vObject; 765 flat out vec4 vInstance; 766 flat out vec4 vGroup; 767 #else 768 flat out vec4 vColor; 769 #endif 770 #endif 771#endif 772 773#ifdef dTransparency 774 #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance) 775 varying float vTransparency; 776 uniform vec2 uTransparencyTexDim; 777 uniform sampler2D tTransparency; 778 #elif defined(dTransparencyType_volumeInstance) 779 varying float vTransparency; 780 uniform vec2 uTransparencyTexDim;
781 uniform vec3 uTransparencyGridDim; 782 uniform vec4 uTransparencyGridTransform; 783 uniform sampler2D tTransparencyGrid; 784 #endif 785 uniform float uTransparencyStrength; 786#endif 787`),Cy}var Py={},Mq;function Zre(){return Mq||(Mq=1,Object.defineProperty(Py,"__esModule",{value:!0}),Py.common_animation=void 0,Py.common_animation=` 788uniform float uWiggleSpeed; 789uniform float uWiggleAmplitude; 790uniform float uWiggleFrequency; 791uniform int uWiggleMode; 792uniform float uTumbleSpeed; 793uniform float uTumbleAmplitude; 794uniform float uTumbleFrequency; 795 796#ifdef dWiggle 797 uniform vec2 uWiggleTexDim; 798 uniform sampler2D tWiggle; 799 uniform float uWiggleStrength; 800#endif 801 802vec3 applyWiggle(vec3 pos, float groupId, float instanceId) { 803 if (!uEnableAnimation) return pos; 804 float amplitude = uWiggleAmplitude; 805 #ifdef dWiggle 806 #if defined(dWiggleType_instance) 807 amplitude += readFromTexture(tWiggle, instanceId, uWiggleTexDim).a * uWiggleStrength; 808 #elif defined(dWiggleType_groupInstance) 809 amplitude += readFromTexture(tWiggle, instanceId * float(uGroupCount) + groupId, uWiggleTexDim).a * uWiggleStrength; 810 #endif 811 #endif 812 if (amplitude > 0.0 && uWiggleSpeed > 0.0 && uWiggleFrequency > 0.0) { 813 float t = uTime * uWiggleSpeed; 814 vec3 s; 815 if (uWiggleMode == 0) { 816 // Position mode: spatial position correlates nearby atoms 817 s = pos; 818 } else { 819 // Group mode: per-group independent noise 820 // Hash groupId into a well-distributed 3D seed to avoid repetition 821 s = vec3( 822 fract(sin(groupId * 127.1) * 43758.5453) * 1000.0, 823 fract(sin(groupId * 269.5) * 21639.7182) * 1000.0, 824 fract(sin(groupId * 419.2) * 32517.3926) * 1000.0 825 ); 826 } 827 s *= uWiggleFrequency; 828 pos.x += (fbm(vec3(s.x, s.y + t, s.z)) / 0.4375 - 1.0) * amplitude; 829 pos.y += (fbm(vec3(s.x + 37.0, s.y, s.z + t)) / 0.4375 - 1.0) * amplitude; 830 pos.z += (fbm(vec3(s.x + t, s.y + 73.0, s.z)) / 0.4375 - 1.0) * amplitude; 831 } 832 return pos; 833} 834 835mat4 applyTumble(mat4 transform, float instanceIndex, float objectId) { 836 if (!uEnableAnimation) return transform; 837 if (uTumbleAmplitude > 0.0 && uTumbleSpeed > 0.0 && uTumbleFrequency > 0.0) { 838 // Scale amplitude inversely with bounding-sphere radius (Stokes-Einstein: D ~ 1/r) 839 float amplitude = uTumbleAmplitude / max(uInvariantBoundingSphere.w, 1.0); 840 float t = uTime * uTumbleSpeed; 841 float seed = (instanceIndex * 127.1 + objectId * 311.7) * uTumbleFrequency; 842 843 // Per-instance rotation angles from layered noise (Brownian-like) 844 float angleX = (fbm(vec3(seed, t, 0.0)) / 0.4375 - 1.0) * amplitude; 845 float angleY = (fbm(vec3(seed, 0.0, t)) / 0.4375 - 1.0) * amplitude; 846 float angleZ = (fbm(vec3(0.0, seed, t)) / 0.4375 - 1.0) * amplitude; 847 848 float cx = cos(angleX); float sx = sin(angleX); 849 float cy = cos(angleY); float sy = sin(angleY); 850 float cz = cos(angleZ); float sz = sin(angleZ); 851 852 // Combined rotation matrix (Rz * Ry * Rx) 853 mat3 rot = mat3( 854 cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz, 855 -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz, 856 sy, -sx * cy, cx * cy 857 ); 858 859 // Per-instance translation offset from layered noise (Brownian-like) 860 vec3 offset = vec3( 861 (fbm(vec3(seed + 31.7, t, 0.0)) / 0.4375 - 1.0), 862 (fbm(vec3(seed + 31.7, 0.0, t)) / 0.4375 - 1.0), 863 (fbm(vec3(0.0, seed + 31.7, t)) / 0.4375 - 1.0) 864 ) * amplitude; 865 866 // Bounding-sphere center transformed by the linear part only (no translation) 867 vec3 localCenter = mat3(transform) * uInvariantBoundingSphere.xyz; 868 869 // Rotate basis vectors 870 mat4 result = transform; 871 result[0].xyz = rot * transform[0].xyz; 872 result[1].xyz = rot * transform[1].xyz; 873 result[2].xyz = rot * transform[2].xyz; 874 875 // Adjust translation so rotation pivots around the transformed center 876 result[3].xyz = transform[3].xyz + localCenter - rot * localCenter + offset; 877 878 return result; 879 } 880 return transform; 881} 882`),Py}var Ty={},Dq;function Jre(){return Dq||(Dq=1,Object.defineProperty(Ty,"__esModule",{value:!0}
882),Ty.common_clip=void 0,Ty.common_clip=` 883vec3 quaternionTransform(const in vec4 q, const in vec3 v) { 884 vec3 t = 2.0 * cross(q.xyz, v); 885 return v + q.w * t + cross(q.xyz, t); 886} 887 888vec4 computePlane(const in vec3 normal, const in vec3 inPoint) { 889 return vec4(normalize(normal), -dot(normal, inPoint)); 890} 891 892float planeSD(const in vec4 plane, const in vec3 center) { 893 return -dot(plane.xyz, center - plane.xyz * -plane.w); 894} 895 896float sphereSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { 897 return ( 898 length(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position) / size) - 1.0 899 ) * min(min(size.x, size.y), size.z); 900} 901 902float cubeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { 903 vec3 d = abs(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position)) - size; 904 return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0)); 905} 906 907float cylinderSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { 908 vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position); 909 910 vec2 d = abs(vec2(length(t.xz), t.y)) - size.xy; 911 return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); 912} 913 914float infiniteConeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { 915 vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position); 916 917 float q = length(t.xy); 918 return dot(size.xy, vec2(q, t.z)); 919} 920 921float getSignedDistance(const in vec3 center, const in int type, const in vec3 position, const in vec4 rotation, const in vec3 scale, const in mat4 transform) { 922 vec3 c = (transform * vec4(center, 1.0)).xyz; 923 if (type == 1) { 924 vec3 normal = quaternionTransform(rotation, vec3(0.0, 1.0, 0.0)); 925 vec4 plane = computePlane(normal, position); 926 return planeSD(plane, c); 927 } else if (type == 2) { 928 return sphereSD(position, rotation, scale * 0.5, c); 929 } else if (type == 3) { 930 return cubeSD(position, rotation, scale * 0.5, c); 931 } else if (type == 4) { 932 return cylinderSD(position, rotation, scale * 0.5, c); 933 } else if (type == 5) { 934 return infiniteConeSD(position, rotation, scale * 0.5, c); 935 } else { 936 return 0.1; 937 } 938} 939 940#if __VERSION__ == 100 941 // 8-bit 942 int bitwiseAnd(in int a, in int b) { 943 int d = 128; 944 int result = 0; 945 for (int i = 0; i < 8; ++i) { 946 if (d <= 0) break; 947 if (a >= d && b >= d) result += d; 948 if (a >= d) a -= d; 949 if (b >= d) b -= d; 950 d /= 2; 951 } 952 return result; 953 } 954 955 bool hasBit(const in int mask, const in int bit) { 956 return bitwiseAnd(mask, bit) == 0; 957 } 958#else 959 bool hasBit(const in int mask, const in int bit) { 960 return (mask & bit) == 0; 961 } 962#endif 963 964#if dClipObjectCount != 0 965 bool clipTest(const in vec3 center) { 966 // flag is a bit-flag for clip-objects to ignore (note, object ids start at 1 not 0) 967 #if defined(dClipping) 968 int flag = int(floor(vClipping * 255.0 + 0.5)); 969 #else 970 int flag = 0; 971 #endif 972 973 #pragma unroll_loop_start 974 for (int i = 0; i < dClipObjectCount; ++i) { 975 if (flag == 0 || hasBit(flag, UNROLLED_LOOP_INDEX + 1)) { 976 bool test = getSignedDistance(center, uClipObjectType[i], uClipObjectPosition[i], uClipObjectRotation[i], uClipObjectScale[i], uClipObjectTransform[i]) <= 0.0; 977 if ((!uClipObjectInvert[i] && test) || (uClipObjectInvert[i] && !test)) { 978 return true; 979 } 980 } 981 } 982 #pragma unroll_loop_end 983 return false; 984 } 985#endif 986`),Ty}var xy={},Iq;function ene(){return Iq||(Iq=1,Object.defineProperty(xy,"__esModule",{value:!0}),xy.common_frag_params=void 0,xy.common_frag_params=` 987uniform int uObjectId; 988uniform int uInstanceCount; 989uniform int uGroupCount; 990 991uniform int uPickType; 992uniform int uMarkingType; 993 994uniform vec4 uCameraPlane; 995uniform vec4 uLod; 996
997#if dClipObjectCount != 0 998 uniform int uClipObjectType[dClipObjectCount]; 999 uniform bool uClipObjectInvert[dClipObjectCount]; 1000 uniform vec3 uClipObjectPosition[dClipObjectCount]; 1001 uniform vec4 uClipObjectRotation[dClipObjectCount]; 1002 uniform vec3 uClipObjectScale[dClipObjectCount]; 1003 uniform mat4 uClipObjectTransform[dClipObjectCount]; 1004 1005 #if defined(dClipping) 1006 #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup) 1007 varying float vClipping; 1008 #else 1009 flat in float vClipping; 1010 #endif 1011 #endif 1012#endif 1013 1014#if defined(dColorMarker) 1015 uniform vec3 uHighlightColor; 1016 uniform vec3 uSelectColor; 1017 uniform vec3 uDimColor; 1018 uniform float uHighlightStrength; 1019 uniform float uSelectStrength; 1020 uniform float uDimStrength; 1021 uniform int uMarkerPriority; 1022 uniform float uMarkerAverage; 1023#endif 1024 1025#if defined(dNeedsMarker) 1026 uniform float uMarker; 1027 #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup) 1028 varying float vMarker; 1029 #else 1030 flat in float vMarker; 1031 #endif 1032#endif 1033 1034#if defined(dRenderVariant_colorDpoit) 1035 #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript 1036 uniform sampler2D tDpoitDepth; 1037 uniform sampler2D tDpoitFrontColor; 1038#endif 1039 1040varying vec3 vModelPosition; 1041varying vec3 vViewPosition; 1042 1043uniform vec2 uViewOffset; 1044uniform float uModelScale; 1045 1046uniform float uNear; 1047uniform float uFar; 1048uniform float uIsOrtho; 1049 1050uniform bool uFog; 1051uniform float uFogNear; 1052uniform float uFogFar; 1053uniform vec3 uFogColor; 1054 1055uniform float uAlpha; 1056uniform float uPickingAlphaThreshold; 1057uniform bool uTransparentBackground; 1058 1059uniform bool uDoubleSided; 1060bool interior; 1061 1062uniform float uXrayEdgeFalloff; 1063uniform float uCelSteps; 1064uniform float uExposure; 1065 1066uniform mat4 uProjection; 1067 1068uniform int uRenderMask; 1069uniform bool uMarkingDepthTest; 1070 1071uniform sampler2D tDepth; 1072uniform vec2 uDrawingBufferSize; 1073 1074float getDepthPacked(const in vec2 coords) { 1075 return unpackRGBAToDepth(texture2D(tDepth, coords)); 1076} 1077 1078float getDepth(const in vec2 coords) { 1079 #ifdef depthTextureSupport 1080 return texture2D(tDepth, coords).r; 1081 #else 1082 return unpackRGBAToDepth(texture2D(tDepth, coords)); 1083 #endif 1084} 1085 1086float calcDepth(const in vec3 pos) { 1087 vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw; 1088 return 0.5 + 0.5 * clipZW.x / clipZW.y; 1089} 1090 1091// "Bump Mapping Unparametrized Surfaces on the GPU" Morten S. Mikkelsen 1092// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf 1093vec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) { 1094 vec3 sigmaS = dFdx(position); 1095 vec3 sigmaT = dFdy(position); 1096 1097 vec3 r1 = cross(sigmaT, normal); 1098 vec3 r2 = cross(normal, sigmaS); 1099 float det = dot(sigmaS, r1); 1100 if (det == 0.0) return normal; 1101 1102 float bs = dFdx(height); 1103 float bt = dFdy(height); 1104 1105 vec3 surfGrad = sign(det) * (bs * r1 + bt * r2); 1106 return normalize(abs(det) * normal - scale * surfGrad); 1107} 1108 1109#ifdef dXrayShaded 1110 float calcXrayShadedAlpha(in float alpha, const in vec3 normal) { 1111 #if defined(dXrayShaded_on) 1112 alpha *= 1.0 - pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff); 1113 #elif defined(dXrayShaded_inverted) 1114 alpha *= pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff); 1115 #endif 1116 return clamp(alpha, 0.001, 0.999); 1117 } 1118#endif 1119`),xy}var Ay={},wq;function tne(){return wq||(wq=1,Object.defineProperty(Ay,"__esModule",{value:!0}),Ay.common_vert_params=void 0,Ay.common_vert_params=` 1120uniform mat4 uProjection, uModel, uView; 1121uniform vec3 uCameraPosition; 1122uniform vec4 uCameraPlane; 1123 1124uniform int uObjectId; 1125uniform int uVertexCount; 1126uniform int uInstanceCount; 1127uniform int uGroupCount; 1128uniform vec4 uInvariantBoundingSphere; 1129uniform vec4 uLod; 1130 1131uniform bool uDoubleSided; 1132uniform int uPickType; 1133uniform float uTime; 1134uniform bool uEnableAnimation; 1135 1136#if dClipObjectCount != 0 1137 uniform int uClipObjectType[dClipObjectCount]; 1138 uniform bool uClipObjectInvert[dClipObjectCount];
1139 uniform vec3 uClipObjectPosition[dClipObjectCount]; 1140 uniform vec4 uClipObjectRotation[dClipObjectCount]; 1141 uniform vec3 uClipObjectScale[dClipObjectCount]; 1142 uniform mat4 uClipObjectTransform[dClipObjectCount]; 1143 1144 #if defined(dClipping) 1145 uniform vec2 uClippingTexDim; 1146 uniform sampler2D tClipping; 1147 #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup) 1148 varying float vClipping; 1149 #else 1150 flat out float vClipping; 1151 #endif 1152 #endif 1153#endif 1154 1155#if defined(dNeedsMarker) 1156 uniform float uMarker; 1157 uniform vec2 uMarkerTexDim; 1158 uniform sampler2D tMarker; 1159 #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup) 1160 varying float vMarker; 1161 #else 1162 flat out float vMarker; 1163 #endif 1164#endif 1165 1166varying vec3 vModelPosition; 1167varying vec3 vViewPosition; 1168 1169uniform float uModelScale; 1170 1171#if defined(noNonInstancedActiveAttribs) 1172 // int() is needed for some Safari versions 1173 // see https://bugs.webkit.org/show_bug.cgi?id=244152 1174 #define VertexID int(gl_VertexID) 1175#else 1176 attribute float aVertex; 1177 #define VertexID int(aVertex) 1178#endif 1179 1180#if defined(enabledMultiDraw)
1181 #define DrawID gl_DrawID 1182#else 1183 #define DrawID uDrawId 1184#endif 1185`),Ay}var My={},Vq;function rne(){return Vq||(Vq=1,Object.defineProperty(My,"__esModule",{value:!0}),My.common=void 0,My.common=` 1186// TODO find a better place for these convenience defines 1187 1188#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit) 1189 #define dRenderVariant_color 1190#endif 1191 1192#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance) 1193 #define dColorType_texture 1194#endif 1195 1196#if defined(dColorType_volume) || defined(dColorType_volumeInstance) 1197 #define dColorType_grid 1198#endif 1199 1200#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid) 1201 #define dColorType_varying 1202#endif 1203 1204#if ((defined(dRenderVariant_color) || defined(dRenderVariant_tracing)) && defined(dColorMarker)) || defined(dRenderVariant_marking) 1205 #define dNeedsMarker 1206#endif 1207 1208#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted) 1209 #define dXrayShaded 1210#endif 1211 1212#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || ((defined(dRenderVariant_depth) || defined(dRenderVariant_pick)) && defined(dXrayShaded)) 1213 #define dNeedsNormal 1214#endif 1215 1216#define MaskAll 0 1217#define MaskOpaque 1 1218#define MaskTransparent 2 1219 1220// 1221 1222#define PI 3.14159265 1223#define RECIPROCAL_PI 0.31830988618 1224#define EPSILON 1e-6 1225#define ONE_MINUS_EPSILON 1.0 - EPSILON 1226#define TWO_PI 6.2831853 1227#define HALF_PI 1.570796325 1228 1229#define PALETTE_SCALE 16777214.0 // (1 << 24) - 2 1230 1231#define saturate(a) clamp(a, 0.0, 1.0) 1232 1233#if __VERSION__ == 100 1234 #define round(x) floor((x) + 0.5) 1235#endif 1236 1237float intDiv(const in float a, const in float b) { return float(int(a) / int(b)); } 1238vec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); } 1239float intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); } 1240int imod(const in int a, const in int b) { return a - b * (a / b); } 1241 1242float pow2(const in float x) { return x * x; } 1243 1244vec3 packIntToRGB(in float value) { 1245 value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0; 1246 vec3 c = vec3(0.0); 1247 c.b = mod(value, 256.0); 1248 value = floor(value / 256.0); 1249 c.g = mod(value, 256.0); 1250 value = floor(value / 256.0); 1251 c.r = mod(value, 256.0); 1252 return c / 255.0; 1253} 1254float unpackRGBToInt(const in vec3 rgb) { 1255 return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0; 1256} 1257 1258vec2 packUnitIntervalToRG(const in float v) { 1259 vec2 enc; 1260 enc.xy = vec2(fract(v * 256.0), v); 1261 enc.y -= enc.x * (1.0 / 256.0); 1262 enc.xy *= 256.0 / 255.0; 1263 1264 return enc; 1265} 1266 1267float unpackRGToUnitInterval(const in vec2 enc) { 1268 return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0)); 1269} 1270 1271float pack2x4(vec2 v) { 1272 vec2 clamped_v = clamp(v, 0.0, 1.0); 1273 vec2 scaled_v = floor(clamped_v * 15.0 + 0.5); // round to 0â15 1274 float c = scaled_v.x + scaled_v.y * 16.0; 1275 return c / 255.0; 1276} 1277 1278vec2 unpack2x4(float f) { 1279 float c = floor(f * 255.0 + 0.5); 1280 float lo = mod(c, 16.0); 1281 float hi = floor(c / 16.0); 1282 return vec2(lo, hi) / 15.0; 1283} 1284 1285vec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) { 1286 vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0); 1287 p = invProjection * p; 1288 return p.xyz / p.w; 1289} 1290 1291const float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1) 1292const float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1) 1293const vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0); 1294const vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0); 1295const float ShiftRight8 = 1.0 / 256.0; 1296 1297vec4 packDepthToRGBA(const in float v) { 1298 vec4 r = vec4(fract(v * PackFactors), v); 1299 r.yzw -= r.xyz * ShiftRight8; // tidy overflow 1300 return r * PackUpscale; 1301} 1302float unpackRGBAToDepth(const in vec4 v) { 1303 return dot(v, UnpackFactors); 1304} 1305 1306vec4 packDepthWithAlphaToRGBA(const in float depth, const in float alpha){ 1307 vec3 r = vec3(fract(depth * PackFactors.yz), depth);
1308 r.yz -= r.xy * ShiftRight8; // tidy overflow 1309 return vec4(r * PackUpscale, alpha); 1310} 1311vec2 unpackRGBAToDepthWithAlpha(const in vec4 v) { 1312 return vec2(dot(v.xyz, UnpackFactors.yzw), v.w); 1313} 1314 1315vec4 sRGBToLinear(const in vec4 c) { 1316 return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a); 1317} 1318vec4 linearTosRGB(const in vec4 c) { 1319 return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a); 1320} 1321 1322float luminance(vec3 c) { 1323 // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance 1324 const vec3 W = vec3(0.2125, 0.7154, 0.0721); 1325 return dot(c, W); 1326} 1327 1328float linearizeDepth(const in float depth, const in float near, const in float far) { 1329 return (2.0 * near) / (far + near - depth * (far - near)); 1330} 1331 1332float perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) { 1333 return (near * far) / ((far - near) * invClipZ - far); 1334} 1335 1336float orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) { 1337 return linearClipZ * (near - far) - near; 1338} 1339 1340float depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) { 1341 return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far); 1342} 1343 1344// see https://github.com/graphitemaster/normals_revisited and https://www.shadertoy.com/view/3s33zj 1345mat3 adjoint(const in mat4 m) { 1346 return mat3( 1347 cross(m[1].xyz, m[2].xyz), 1348 cross(m[2].xyz, m[0].xyz), 1349 cross(m[0].xyz, m[1].xyz) 1350 ); 1351} 1352 1353#if __VERSION__ == 100 1354 // transpose 1355 1356 float transpose(const in float m) { 1357 return m; 1358 } 1359 1360 mat2 transpose2(const in mat2 m) { 1361 return mat2( 1362 m[0][0], m[1][0], 1363 m[0][1], m[1][1] 1364 ); 1365 } 1366 1367 mat3 transpose3(const in mat3 m) { 1368 return mat3( 1369 m[0][0], m[1][0], m[2][0], 1370 m[0][1], m[1][1], m[2][1], 1371 m[0][2], m[1][2], m[2][2] 1372 ); 1373 } 1374 1375 mat4 transpose4(const in mat4 m) { 1376 return mat4( 1377 m[0][0], m[1][0], m[2][0], m[3][0], 1378 m[0][1], m[1][1], m[2][1], m[3][1], 1379 m[0][2], m[1][2], m[2][2], m[3][2], 1380 m[0][3], m[1][3], m[2][3], m[3][3] 1381 ); 1382 } 1383 1384 // inverse 1385 1386 float inverse(const in float m) { 1387 return 1.0 / m; 1388 } 1389 1390 mat2 inverse2(const in mat2 m) { 1391 return mat2(m[1][1],-m[0][1], 1392 -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]); 1393 } 1394 1395 mat3 inverse3(const in mat3 m) { 1396 float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; 1397 float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; 1398 float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; 1399 1400 float b01 = a22 * a11 - a12 * a21; 1401 float b11 = -a22 * a10 + a12 * a20; 1402 float b21 = a21 * a10 - a11 * a20; 1403 1404 float det = a00 * b01 + a01 * b11 + a02 * b21; 1405 1406 return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), 1407 b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), 1408 b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; 1409 } 1410 1411 mat4 inverse4(const in mat4 m) { 1412 float 1413 a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3], 1414 a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3], 1415 a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3], 1416 a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3], 1417 1418 b00 = a00 * a11 - a01 * a10, 1419 b01 = a00 * a12 - a02 * a10, 1420 b02 = a00 * a13 - a03 * a10, 1421 b03 = a01 * a12 - a02 * a11, 1422 b04 = a01 * a13 - a03 * a11, 1423 b05 = a02 * a13 - a03 * a12, 1424 b06 = a20 * a31 - a21 * a30, 1425 b07 = a20 * a32 - a22 * a30, 1426 b08 = a20 * a33 - a23 * a30, 1427 b09 = a21 * a32 - a22 * a31, 1428 b10 = a21 * a33 - a23 * a31, 1429 b11 = a22 * a33 - a23 * a32, 1430 1431 det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; 1432 1433 return mat4( 1434 a11 * b11 - a12 * b10 + a13 * b09, 1435 a02 * b10 - a01 * b11 - a03 * b09, 1436 a31 * b05 - a32 * b04 + a33 * b03, 1437 a22 * b04 - a21 * b05 - a23 * b03, 1438 a12 * b08 - a10 * b11 - a13 * b07, 1439 a00 * b11 - a02 * b08 + a03 * b07, 1440 a32 * b02 - a30 * b05 - a33 * b01, 1441 a20 * b05 - a22 * b02 + a23 * b01, 1442 a10 * b10 - a11 * b08 + a13 * b06, 1443 a01 * b08 - a00 * b10 - a03 * b06, 1444 a30 * b04 - a31 * b02 + a33 * b00, 1445 a21 * b02 - a20 * b04 - a23 * b00, 1446 a11 * b07 - a10 * b09 - a12 * b06, 1447 a00 * b09 - a01 * b07 + a02 * b06, 1448 a31 * b01 - a30 * b03 - a32 * b00, 1449 a20 * b03 - a21 * b01 + a22 * b00) / det; 1450 } 1451 1452 #define isNaN(x) ((x) != (x)) 1453 #define isInf(x) ((x) == (x) + 1.0) 1454#else 1455 #define transpose2(m) transpose(m) 1456 #define transpose3(m) transpose(m) 1457 #define transpose4(m) transpose(m) 1458 1459 #define inverse2(m) inverse(m) 1460 #define inverse3(m) inverse(m) 1461 #define inverse4(m) inverse(m) 1462 1463 #define isNaN isnan 1464 #define isInf isinf 1465#endif 1466 1467float hash(in float h) { 1468 return fract(sin(h) * 43758.5453123); 1469} 1470 1471float noise(in vec3 x) { 1472 vec3 p = floor(x); 1473 vec3 f = fract(x); 1474 f = f * f * (3.0 - 2.0 * f); 1475 1476 float n = p.x + p.y * 157.0 + 113.0 * p.z; 1477 return mix( 1478 mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), 1479 mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y), 1480 mix(mix(hash(n + 113.0), hash(n + 114.0), f.x), 1481 mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z); 1482} 1483 1484float fbm(in vec3 p) { 1485 float f = 0.0; 1486 f += 0.5 * noise(p); 1487 p *= 2.01; 1488 f += 0.25 * noise(p); 1489 p *= 2.02; 1490 f += 0.125 * noise(p); 1491 1492 return f; 1493} 1494`),My}var Dy={},Eq;function nne(){return Eq||(Eq=1,Object.defineProperty(Dy,"__esModule",{value:!0}),Dy.fade_lod=void 0,Dy.fade_lod=`
1495if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { 1496 float d = (dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w) / uModelScale; 1497 float ta = min( 1498 smoothstep(uLod.x, uLod.x + uLod.z, d), 1499 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d) 1500 ); 1501 1502 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 1503 float at = 0.0; 1504 1505 // shift by view-offset during multi-sample rendering to allow for blending 1506 vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25; 1507 1508 const mat4 thresholdMatrix = mat4( 1509 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, 1510 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, 1511 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, 1512 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 1513 ); 1514 int ci = int(intMod(coord.x, 4.0)); 1515 int ri = int(intMod(coord.y, 4.0)); 1516 #if __VERSION__ == 100 1517 vec4 i = vec4(float(ci * 4 + ri)); 1518 vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) + 1519 thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) + 1520 thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) + 1521 thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0))); 1522 at = v.x + v.y + v.z + v.w; 1523 #else 1524 at = thresholdMatrix[ci][ri]; 1525 #endif 1526 1527 if (ta < 0.99 && (ta < 0.01 || ta < at)) { 1528 discard; 1529 } 1530 #else 1531 if (ta < uPickingAlphaThreshold) { 1532 discard; 1533 } 1534 #endif 1535} 1536`),Dy}var Iy={},Bq;function ine(){return Bq||(Bq=1,Object.defineProperty(Iy,"__esModule",{value:!0}),Iy.float_to_rgba=void 0,Iy.float_to_rgba=` 1537 // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba 1538 // MIT License, Copyright (c) 2020 Equinor 1539 1540 float shiftRight (float v, float amt) { 1541 v = floor(v) + 0.5; 1542 return floor(v / exp2(amt)); 1543 } 1544 float shiftLeft (float v, float amt) { 1545 return floor(v * exp2(amt) + 0.5); 1546 } 1547 float maskLast (float v, float bits) { 1548 return mod(v, shiftLeft(1.0, bits)); 1549 } 1550 float extractBits (float num, float from, float to) { 1551 from = floor(from + 0.5); to = floor(to + 0.5); 1552 return maskLast(shiftRight(num, from), to - from); 1553 } 1554 1555 vec4 floatToRgba(float texelFloat, bool littleEndian) { 1556 if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0); 1557 float sign = texelFloat > 0.0 ? 0.0 : 1.0; 1558 texelFloat = abs(texelFloat); 1559 float exponent = floor(log2(texelFloat)); 1560 float biased_exponent = exponent + 127.0; 1561 float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0; 1562 float t = biased_exponent / 2.0; 1563 float last_bit_of_biased_exponent = fract(t) * 2.0; 1564 float remaining_bits_of_biased_exponent = floor(t); 1565 float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0; 1566 float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0; 1567 float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0; 1568 float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0; 1569 return ( 1570 littleEndian 1571 ? vec4(byte4, byte3, byte2, byte1) 1572 : vec4(byte1, byte2, byte3, byte4) 1573 ); 1574 } 1575`),Iy}var wy={},Rq;function ane(){return Rq||(Rq=1,Object.defineProperty(wy,"__esModule",{value:!0}),wy.light_frag_params=void 0,wy.light_frag_params=` 1576#if dLightCount != 0 1577 uniform vec3 uLightDirection[dLightCount]; 1578 uniform vec3 uLightColor[dLightCount]; 1579#endif 1580uniform vec3 uAmbientColor; 1581 1582struct PhysicalMaterial { 1583 vec3 diffuseColor; 1584 float roughness; 1585 vec3 specularColor; 1586 float specularF90; 1587}; 1588 1589struct IncidentLight { 1590 vec3 color; 1591 vec3 direction; 1592}; 1593 1594struct ReflectedLight { 1595 vec3 directDiffuse; 1596 vec3 directSpecular; 1597 vec3 indirectDiffuse; 1598 vec3 indirectSpecular; 1599}; 1600 1601struct GeometricContext { 1602 vec3 position; 1603 vec3 normal; 1604 vec3 viewDir; 1605}; 1606 1607vec3 BRDF_Lambert(const in vec3 diffuseColor) { 1608 return RECIPROCAL_PI * diffuseColor; 1609} 1610 1611vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) { 1612 // Original approximation by Christophe Schlick '94 1613 // float fresnel = pow( 1.0 - dotVH, 5.0 ); 1614 // Optimized variant (presented by Epic at SIGGRAPH '13) 1615 // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
1616 float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH); 1617 return f0 * (1.0 - fresnel) + (f90 * fresnel); 1618} 1619 1620// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2 1621// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf 1622float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) { 1623 float a2 = pow2(alpha); 1624 float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV)); 1625 float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL)); 1626 return 0.5 / max(gv + gl, EPSILON); 1627} 1628 1629// Microfacet Models for Refraction through Rough Surfaces - equation (33) 1630// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html 1631// alpha is "roughness squared" in Disneyâs reparameterization 1632float D_GGX(const in float alpha, const in float dotNH) { 1633 float a2 = pow2(alpha); 1634 float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1 1635 return RECIPROCAL_PI * a2 / pow2(denom); 1636} 1637 1638// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
1639vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) { 1640 float alpha = pow2(roughness); // UE4's roughness 1641 vec3 halfDir = normalize( lightDir + viewDir); 1642 float dotNL = saturate(dot(normal, lightDir)); 1643 float dotNV = saturate(dot(normal, viewDir)); 1644 float dotNH = saturate(dot(normal, halfDir)); 1645 float dotVH = saturate(dot(viewDir, halfDir)); 1646 vec3 F = F_Schlick(f0, f90, dotVH); 1647 float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV); 1648 float D = D_GGX(alpha, dotNH); 1649 return F * (V * D); 1650} 1651 1652// Analytical approximation of the DFG LUT, one half of the 1653// split-sum approximation used in indirect specular lighting. 1654// via 'environmentBRDF' from "Physically Based Shading on Mobile" 1655// https://www.unrealengine.com/blog/physically-based-shading-on-mobile 1656vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) { 1657 float dotNV = saturate(dot(normal, viewDir)); 1658 const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022); 1659 const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04); 1660 vec4 r = roughness * c0 + c1; 1661 float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y; 1662 vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw; 1663 return fab; 1664} 1665 1666// Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting" 1667// Approximates multiscattering in order to preserve energy. 1668// http://www.jcgt.org/published/0008/01/03/ 1669void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) { 1670 vec2 fab = DFGApprox(normal, viewDir, roughness); 1671 vec3 FssEss = specularColor * fab.x + specularF90 * fab.y; 1672 float Ess = fab.x + fab.y; 1673 float Ems = 1.0 - Ess; 1674 vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21 1675 vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg); 1676 singleScatter += FssEss; 1677 multiScatter += Fms * Ems; 1678} 1679 1680void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { 1681 float dotNL = saturate(dot(geometry.normal, directLight.direction)); 1682 vec3 irradiance = dotNL * directLight.color; 1683 reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness); 1684 reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor); 1685} 1686 1687void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { 1688 reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor); 1689} 1690 1691void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { 1692 // Both indirect specular and indirect diffuse light accumulate here 1693 vec3 singleScattering = vec3(0.0); 1694 vec3 multiScattering = vec3(0.0); 1695 vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; 1696 computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering); 1697 vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering)); 1698 reflectedLight.indirectSpecular += radiance * singleScattering; 1699 reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; 1700 reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; 1701} 1702`),wy}var Vy={},Oq;function one(){return Oq||(Oq=1,Object.defineProperty(Vy,"__esModule",{value:!0}),Vy.normal_frag_params=void 0,Vy.normal_frag_params=` 1703varying vec3 vNormal; 1704`),Vy}var Ey={},kq;function sne(){return kq||(kq=1,Object.defineProperty(Ey,"__esModule",{value:!0}),Ey.read_from_texture=void 0,Ey.read_from_texture=` 1705vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) { 1706 float x = intMod(i, dim.x); 1707 float y = floor(intDiv(i, dim.x)); 1708 vec2 uv = (vec2(x, y) + 0.5) / dim; 1709 return texture2D(tex, uv); 1710} 1711 1712vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) { 1713 int x = imod(i, int(dim.x)); 1714 int y = i / int(dim.x); 1715 vec2 uv = (vec2(x, y) + 0.5) / dim; 1716 return texture2D(tex, uv); 1717} 1718`),Ey}var By={},Fq;function cne(){return Fq||(Fq=1,Object.defineProperty(By,"__esModule",{value:!0}),By.rgba_to_float=void 0,By.rgba_to_float=` 1719 // rgbaToFloat adapted from https://github.com/ihmeuw/glsl-rgba-to-float 1720 // BSD 3-Clause License 1721 // 1722 // Copyright (c) 2019, Institute for Health Metrics and Evaluation All rights reserved. 1723 // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1724 // - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 1725 // - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 1726 // - Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 1727 // 1728 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 1729 // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1730 // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
1731 // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 1732 // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 1733 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 1734 // OF THE POSSIBILITY OF SUCH DAMAGE. 1735 1736 ivec4 floatsToBytes(vec4 inputFloats, bool littleEndian) { 1737 ivec4 bytes = ivec4(inputFloats * 255.0); 1738 return ( 1739 littleEndian 1740 ? bytes.abgr 1741 : bytes 1742 ); 1743 } 1744 1745 // Break the four bytes down into an array of 32 bits. 1746 void bytesToBits(const in ivec4 bytes, out bool bits[32]) { 1747 for (int channelIndex = 0; channelIndex < 4; ++channelIndex) { 1748 float acc = float(bytes[channelIndex]); 1749 for (int indexInByte = 7; indexInByte >= 0; --indexInByte) { 1750 float powerOfTwo = exp2(float(indexInByte)); 1751 bool bit = acc >= powerOfTwo; 1752 bits[channelIndex * 8 + (7 - indexInByte)] = bit; 1753 acc = mod(acc, powerOfTwo); 1754 } 1755 } 1756 } 1757 1758 // Compute the exponent of the 32-bit float. 1759 float getExponent(bool bits[32]) { 1760 const int startIndex = 1; 1761 const int bitStringLength = 8; 1762 const int endBeforeIndex = startIndex + bitStringLength; 1763 float acc = 0.0; 1764 int pow2 = bitStringLength - 1; 1765 for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) { 1766 acc += float(bits[bitIndex]) * exp2(float(pow2--)); 1767 } 1768 return acc; 1769 } 1770 1771 // Compute the mantissa of the 32-bit float. 1772 float getMantissa(bool bits[32], bool subnormal) { 1773 const int startIndex = 9; 1774 const int bitStringLength = 23; 1775 const int endBeforeIndex = startIndex + bitStringLength; 1776 // Leading/implicit/hidden bit convention: 1777 // If the number is not subnormal (with exponent 0), we add a leading 1 digit. 1778 float acc = float(!subnormal) * exp2(float(bitStringLength)); 1779 int pow2 = bitStringLength - 1; 1780 for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) { 1781 acc += float(bits[bitIndex]) * exp2(float(pow2--)); 1782 } 1783 return acc; 1784 } 1785 1786 // Parse the float from its 32 bits. 1787 float bitsToFloat(bool bits[32]) { 1788 float signBit = float(bits[0]) * -2.0 + 1.0; 1789 float exponent = getExponent(bits); 1790 bool subnormal = abs(exponent - 0.0) < 0.01; 1791 float mantissa = getMantissa(bits, subnormal); 1792 float exponentBias = 127.0; 1793 return signBit * mantissa * exp2(exponent - exponentBias - 23.0); 1794 } 1795 1796 float rgbaToFloat(vec4 texelRGBA, bool littleEndian) { 1797 ivec4 rgbaBytes = floatsToBytes(texelRGBA, littleEndian); 1798 bool bits[32]; 1799 bytesToBits(rgbaBytes, bits); 1800 return bitsToFloat(bits); 1801 } 1802`),By}var Ry={},Lq;function une(){return Lq||(Lq=1,Object.defineProperty(Ry,"__esModule",{value:!0}),Ry.size_vert_params=void 0,Ry.size_vert_params=` 1803#if defined(dSizeType_uniform) 1804 uniform float uSize; 1805#elif defined(dSizeType_attribute) 1806 attribute float aSize; 1807#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) || defined(dSizeType_vertex) || defined(dSizeType_vertexInstance) 1808 uniform vec2 uSizeTexDim; 1809 uniform sampler2D tSize; 1810#endif 1811 1812uniform float uSizeFactor; 1813`),Ry}var Oy={},Nq;function lne(){return Nq||(Nq=1,Object.defineProperty(Oy,"__esModule",{value:!0}),Oy.texture3d_from_1d_trilinear=void 0,Oy.texture3d_from_1d_trilinear=` 1814vec4 texture3dFrom1dTrilinear(const in sampler2D tex, const in vec3 pos, const in vec3 gridDim, const in vec2 texDim, const in float offset) { 1815 float gdYZ = gridDim.z * gridDim.y; 1816 float gdZ = gridDim.z; 1817 vec3 p0 = floor(pos * gridDim); 1818 vec3 p1 = ceil(pos * gridDim); 1819 vec3 pd = (pos * gridDim - p0) / (p1 - p0); 1820 vec4 s000 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p0.x * gdYZ, texDim); 1821 vec4 s100 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p1.x * gdYZ, texDim); 1822 vec4 s001 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p0.x * gdYZ, texDim); 1823 vec4 s101 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p1.x * gdYZ, texDim); 1824 vec4 s010 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p0.x * gdYZ, texDim); 1825 vec4 s110 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p1.x * gdYZ, texDim); 1826 vec4 s011 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p0.x * gdYZ, texDim); 1827 vec4 s111 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p1.x * gdYZ, texDim); 1828 vec4 s00 = mix(s000, s100, pd.x); 1829 vec4 s01 = mix(s001, s101, pd.x); 1830 vec4 s10 = mix(s010, s110, pd.x); 1831 vec4 s11 = mix(s011, s111, pd.x); 1832 vec4 s0 = mix(s00, s10, pd.y); 1833 vec4 s1 = mix(s01, s11, pd.y); 1834 return mix(s0, s1, pd.z); 1835} 1836`),Oy}var ky={},qq;function dne(){return qq||(qq=1,Object.defineProperty(ky,"__esModule",{value:!0}),ky.texture3d_from_2d_linear=void 0,ky.texture3d_from_2d_linear=` 1837vec4 texture3dFrom2dLinear(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { 1838 float zSlice0 = floor(pos.z * gridDim.z); 1839 float column0 = intMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x; 1840 float row0 = floor(intDiv(zSlice0 * gridDim.x, texDim.x)); 1841 vec2 coord0 = (vec2(column0 * gridDim.x, row0 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; 1842 vec4 color0 = texture2D(tex, coord0); 1843 1844 float zSlice1 = zSlice0 + 1.0; 1845 float column1 = intMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x; 1846 float row1 = floor(intDiv(zSlice1 * gridDim.x, texDim.x)); 1847 vec2 coord1 = (vec2(column1 * gridDim.x, row1 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; 1848 vec4 color1 = texture2D(tex, coord1); 1849 1850 float delta0 = abs((pos.z * gridDim.z) - zSlice0); 1851 return mix(color0, color1, delta0); 1852} 1853`),ky}var Fy={},Uq;function fne(){return Uq||(Uq=1,Object.defineProperty(Fy,"__esModule",{value:!0}),Fy.texture3d_from_2d_nearest=void 0,Fy.texture3d_from_2d_nearest=` 1854vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { 1855 float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice 1856 float column = intMod(zSlice * gridDim.x, texDim.x) / gridDim.x; 1857 float row = floor(intDiv(zSlice * gridDim.x, texDim.x)); 1858 vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; 1859 return texture2D(tex, coord); 1860} 1861`),Fy}var Ly={},jq;function mne(){return jq||(jq=1,Object.defineProperty(Ly,"__esModule",{value:!0}),Ly.wboit_write=void 0,Ly.wboit_write=` 1862#if defined(dRenderVariant_colorWboit) 1863 if (uRenderMask == MaskOpaque) { 1864 if (preFogAlpha < 1.0) { 1865 discard; 1866 } 1867 } else if (uRenderMask == MaskTransparent) { 1868 if (preFogAlpha != 1.0 && fragmentDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) { 1869 #ifdef dTransparentBackfaces_off 1870 if (interior) discard; 1871 #endif 1872 float alpha = gl_FragColor.a; 1873 float wboitWeight = alpha * clamp(pow(1.0 - fragmentDepth, 2.0), 0.01, 1.0); 1874 gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha); 1875 // extra alpha is to handle pre-multiplied alpha 1876 #ifndef dGeometryType_directVolume
1877 gl_FragData[1] = vec4((uTransparentBackground ? alpha : 1.0) * alpha * wboitWeight); 1878 #else 1879 gl_FragData[1] = vec4(alpha * alpha * wboitWeight); 1880 #endif 1881 } else { 1882 discard; 1883 } 1884 } 1885#endif 1886`),Ly}var Ny={},Gq;function pne(){return Gq||(Gq=1,Object.defineProperty(Ny,"__esModule",{value:!0}),Ny.dpoit_write=void 0,Ny.dpoit_write=` 1887#if defined(dRenderVariant_colorDpoit) 1888 if (uRenderMask == MaskOpaque) { 1889 if (preFogAlpha < 1.0) { 1890 discard; 1891 } 1892 } else if (uRenderMask == MaskTransparent) { 1893 vec2 coords = gl_FragCoord.xy / uDrawingBufferSize; 1894 if (preFogAlpha != 1.0 && fragmentDepth < getDepth(coords)) { 1895 #ifdef dTransparentBackfaces_off 1896 if (interior) discard; 1897 #endif 1898 1899 // adapted from https://github.com/tsherif/webgl2examples 1900 // The MIT License, Copyright 2017 Tarek Sherif, Shuai Shao 1901 1902 vec2 lastDepth = texture2D(tDpoitDepth, coords).rg; 1903 vec4 lastFrontColor = texture2D(tDpoitFrontColor, coords); 1904 1905 vec4 fragColor = gl_FragColor; 1906 1907 // depth value always increases 1908 // so we can use MAX blend equation 1909 gl_FragData[2].rg = vec2(-MAX_DPOIT_DEPTH); 1910 1911 // front color always increases 1912 // so we can use MAX blend equation 1913 gl_FragColor = lastFrontColor; 1914 1915 // back color is separately blend afterwards each pass 1916 gl_FragData[1] = vec4(0.0); 1917 1918 float nearestDepth = -lastDepth.x; 1919 float furthestDepth = lastDepth.y; 1920 float alphaMultiplier = 1.0 - lastFrontColor.a; 1921 1922 if (fragmentDepth < nearestDepth || fragmentDepth > furthestDepth) { 1923 // Skip this depth since it's been peeled. 1924 return; 1925 } 1926 1927 if (fragmentDepth > nearestDepth && fragmentDepth < furthestDepth) { 1928 // This needs to be peeled. 1929 // The ones remaining after MAX blended for 1930 // all need-to-peel will be peeled next pass. 1931 gl_FragData[2].rg = vec2(-fragmentDepth, fragmentDepth); 1932 return; 1933 } 1934 1935 // write to back and front color buffer 1936 if (fragmentDepth == nearestDepth) { 1937 gl_FragColor.rgb += fragColor.rgb * fragColor.a * alphaMultiplier; 1938 gl_FragColor.a = 1.0 - alphaMultiplier * (1.0 - fragColor.a); 1939 } else { 1940 gl_FragData[1] += fragColor; 1941 } 1942 1943 } else { 1944 discard; 1945 } 1946 } 1947#endif 1948`),Ny}var qy={},zq;function hne(){return zq||(zq=1,Object.defineProperty(qy,"__esModule",{value:!0}),qy.points_vert=void 0,qy.points_vert=` 1949precision highp float; 1950precision highp int; 1951 1952#include common 1953#include read_from_texture 1954#include common_vert_params 1955#include color_vert_params 1956#include size_vert_params 1957#include common_clip 1958#include common_animation 1959 1960uniform float uPixelRatio; 1961uniform vec4 uViewport; 1962 1963attribute vec3 aPosition; 1964attribute mat4 aTransform; 1965attribute float aInstance; 1966attribute float aGroup; 1967 1968void main(){ 1969 int vertexId = VertexID; 1970 1971 #include assign_group 1972 #include assign_color_varying 1973 #include assign_marker_varying 1974 #include assign_clipping_varying 1975 #include assign_position 1976 #include assign_size 1977 1978 #ifdef dPointSizeAttenuation 1979 gl_PointSize = size * uPixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 5.0; 1980 #else 1981 gl_PointSize = size * uPixelRatio; 1982 #endif 1983 gl_PointSize = max(1.0, gl_PointSize); 1984 1985 gl_Position = uProjection * mvPosition; 1986 1987 #include clip_instance 1988} 1989`),qy}var Uy={},Hq;function gne(){return Hq||(Hq=1,Object.defineProperty(Uy,"__esModule",{value:!0}),Uy.points_frag=void 0,Uy.points_frag=` 1990precision highp float; 1991precision highp int; 1992 1993#include common 1994#include common_frag_params 1995#include color_frag_params 1996#include common_clip 1997 1998const vec2 center = vec2(0.5); 1999const float radius = 0.5; 2000 2001void main(){ 2002 #include fade_lod 2003 #include clip_pixel 2004 2005 float fragmentDepth = gl_FragCoord.z; 2006 #include assign_material_color 2007 2008 #if defined(dPointStyle_circle) 2009 float dist = distance(gl_PointCoord, center); 2010 if (dist > radius) discard; 2011 #elif defined(dPointStyle_fuzzy) 2012 float dist = distance(gl_PointCoord, center); 2013 float fuzzyAlpha = 1.0 - smoothstep(0.0, radius, dist); 2014 if (fuzzyAlpha < 0.0001) discard; 2015 #endif 2016 2017 #if defined(dPointStyle_fuzzy) && (defined(dRenderVariant_color) || defined(dRenderVariant_tracing)) 2018 material.a *= fuzzyAlpha; 2019 #endif 2020 2021 #include check_transparency 2022 2023 #if defined(dRenderVariant_pick) 2024 #include check_picking_alpha 2025 #ifdef requiredDrawBuffers 2026 gl_FragColor = vObject; 2027 gl_FragData[1] = vInstance; 2028 gl_FragData[2] = vGroup; 2029 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 2030 #else 2031 gl_FragColor = vColor; 2032 #endif 2033 #elif defined(dRenderVariant_depth) 2034 gl_FragColor = material; 2035 #elif defined(dRenderVariant_marking) 2036 gl_FragColor = material; 2037 #elif defined(dRenderVariant_emissive) 2038 gl_FragColor = material; 2039 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2040 gl_FragColor = material; 2041 #include apply_marker_color 2042 2043 #if defined(dRenderVariant_color) 2044 #include apply_fog 2045 #include wboit_write 2046 #include dpoit_write 2047 #elif defined(dRenderVariant_tracing) 2048 gl_FragData[1] = vec4(normalize(vViewPosition), emissive); 2049 gl_FragData[2] = vec4(material.rgb, uDensity); 2050 #endif 2051 #endif 2052} 2053`),Uy}var jy={},Wq;function yne(){return Wq||(Wq=1,Object.defineProperty(jy,"__esModule",{value:!0}),jy.spheres_vert=void 0,jy.spheres_vert
vendor: 6,088 bytes, lines 2053-2243
2053=` 2054precision highp float; 2055precision highp int; 2056 2057#include common 2058#include read_from_texture 2059#include common_vert_params 2060#include color_vert_params 2061#include size_vert_params 2062#include common_clip 2063#include common_animation 2064 2065uniform mat4 uModelView; 2066uniform mat4 uInvProjection; 2067uniform float uIsOrtho; 2068uniform bool uIsAsymmetricProjection; 2069 2070uniform vec2 uTexDim; 2071uniform sampler2D tPositionGroup; 2072 2073attribute mat4 aTransform; 2074attribute float aInstance; 2075 2076varying float vRadius; 2077varying vec3 vPoint; 2078varying vec3 vPointViewPosition; 2079 2080/** 2081 * Bounding rectangle of a clipped, perspective-projected 3D Sphere. 2082 * Michael Mara, Morgan McGuire. 2013 2083 * 2084 * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018 2085 * https://github.com/zeux/niagara 2086 * 2087 * Only works for for symmetric projections. 2088 */ 2089void sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) { 2090 vec3 pr = p * r; 2091 float pzr2 = p.z * p.z - r * r; 2092 2093 float vx = sqrt(p.x * p.x + pzr2); 2094 float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0]; 2095 float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0]; 2096 2097 float vy = sqrt(p.y * p.y + pzr2); 2098 float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1]; 2099 float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1]; 2100 2101 gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5; 2102 gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5; 2103 gl_Position.xy *= gl_Position.w; 2104} 2105 2106const mat4 D = mat4( 2107 1.0, 0.0, 0.0, 0.0, 2108 0.0, 1.0, 0.0, 0.0, 2109 0.0, 0.0, 1.0, 0.0, 2110 0.0, 0.0, 0.0, -1.0 2111); 2112 2113/** 2114 * Compute point size and center using the technique described in: 2115 * "GPU-Based Ray-Casting of Quadratic Surfaces" http://dl.acm.org/citation.cfm?id=2386396 2116 * by Christian Sigg, Tim Weyrich, Mario Botsch, Markus Gross. 2117 */ 2118void quadraticProjection(const in vec3 position, const in float radius, const in vec2 mapping, const in mat4 transform) { 2119 vec2 xbc, ybc; 2120 2121 mat4 T = mat4( 2122 radius, 0.0, 0.0, 0.0, 2123 0.0, radius, 0.0, 0.0, 2124 0.0, 0.0, radius, 0.0, 2125 position.x, position.y, position.z, 1.0 2126 ); 2127 2128 mat4 R = transpose4(uProjection * uModelView * transform * T); 2129 float A = dot(R[3], D * R[3]); 2130 float B = -2.0 * dot(R[0], D * R[3]); 2131 float C = dot(R[0], D * R[0]); 2132 xbc[0] = (-B - sqrt(B * B - 4.0 * A * C)) / (2.0 * A); 2133 xbc[1] = (-B + sqrt(B * B - 4.0 * A * C)) / (2.0 * A); 2134 float sx = abs(xbc[0] - xbc[1]) * 0.5; 2135 2136 A = dot(R[3], D * R[3]); 2137 B = -2.0 * dot(R[1], D * R[3]); 2138 C = dot(R[1], D * R[1]); 2139 ybc[0] = (-B - sqrt(B * B - 4.0 * A * C)) / (2.0 * A); 2140 ybc[1] = (-B + sqrt(B * B - 4.0 * A * C)) / (2.0 * A); 2141 float sy = abs(ybc[0] - ybc[1]) * 0.5; 2142 2143 gl_Position.xy = vec2(0.5 * (xbc.x + xbc.y), 0.5 * (ybc.x + ybc.y)); 2144 gl_Position.xy -= mapping * vec2(sx, sy); 2145 gl_Position.xy *= gl_Position.w; 2146} 2147 2148void main(void){ 2149 vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5 2150 #if __VERSION__ == 100 2151 int m = imod(VertexID, 6); 2152 #else 2153 int m = VertexID % 6; 2154 #endif 2155 if (m == 0) { 2156 mapping = vec2(-1.0, 1.0); 2157 } else if (m == 1 || m == 3) { 2158 mapping = vec2(-1.0, -1.0); 2159 } else if (m == 4) { 2160 mapping = vec2(1.0, -1.0); 2161 } 2162 2163 int vertexId = VertexID / 6; 2164 2165 vec4 positionGroup = readFromTexture(tPositionGroup, vertexId, uTexDim); 2166 vec3 position = positionGroup.rgb; 2167 float group = positionGroup.a; 2168 2169 position = applyWiggle(position, group, aInstance); 2170 mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId)); 2171 2172 #include assign_color_varying 2173 #include assign_marker_varying 2174 #include assign_clipping_varying 2175 #include assign_size 2176 2177 vRadius = size * uModelScale; 2178 2179 vec4 position4 = vec4(position, 1.0); 2180 vModelPosition = (uModel * transform * position4).xyz; // for clipping in frag shader 2181 2182 float d; 2183 if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { 2184 if (uModelScale != 1.0) { 2185 vRadius *= uLod.w; 2186 } else { 2187 d = (dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w) / uModelScale; 2188 float f = min( 2189 smoothstep(uLod.x, uLod.x + uLod.z, d), 2190 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d) 2191 ) * uLod.w; 2192 vRadius *= f; 2193 } 2194 } 2195 2196 vec4 mvPosition = uModelView * transform * position4; 2197 2198 #ifdef dApproximate 2199 vec4 mvCorner = vec4(mvPosition.xyz, 1.0); 2200 mvCorner.xy += mapping * vRadius; 2201 gl_Position = uProjection * mvCorner; 2202 #else 2203 if (uIsOrtho == 1.0) { 2204 vec4 mvCorner = vec4(mvPosition.xyz, 1.0); 2205 mvCorner.xy += mapping * vRadius; 2206 gl_Position = uProjection * mvCorner; 2207 } else if (uIsAsymmetricProjection) { 2208 gl_Position = uProjection * vec4(mvPosition.xyz, 1.0); 2209 quadraticProjection(position, vRadius / uModelScale, mapping, transform); 2210 } else { 2211 gl_Position = uProjection * vec4(mvPosition.xyz, 1.0); 2212 sphereProjection(mvPosition.xyz, vRadius, mapping); 2213 } 2214 #endif 2215 2216 vec4 vPoint4 = uInvProjection * gl_Position; 2217 vPoint = vPoint4.xyz / vPoint4.w; 2218 vPointViewPosition = -mvPosition.xyz / mvPosition.w; 2219 2220 if (gl_Position.z < -gl_Position.w) { 2221 mvPosition.z -= 2.0 * vRadius; // avoid clipping 2222 gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z; 2223 } 2224 2225 if (uModelScale == 1.0) { 2226 if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { 2227 if (d < uLod.x || d > uLod.y) { 2228 // move out of [ -w, +w ] to 'discard' in vert shader 2229 gl_Position.z = 2.0 * gl_Position.w; 2230 } 2231 } 2232 } 2233 2234 #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0 2235 if (clipTest(vModelPosition / uModelScale)) { 2236 // move out of [ -w, +w ] to 'discard' in vert shader 2237 gl_Position.z = 2.0 * gl_Position.w; 2238 } 2239 #else 2240 #include clip_instance 2241 #endif 2242} 2243`
2243),jy}var Gy={},$q;function vne(){return $q||($q=1,Object.defineProperty(Gy,"__esModule",{value:!0}),Gy.spheres_frag=void 0,Gy.spheres_frag=` 2244precision highp float; 2245precision highp int; 2246 2247#define bumpEnabled 2248 2249#include common 2250#include common_frag_params 2251#include color_frag_params 2252#include light_frag_params 2253#include common_clip 2254 2255uniform mat4 uInvView; 2256uniform float uAlphaThickness; 2257 2258uniform vec4 uInteriorColor; 2259uniform vec4 uInteriorSubstance; 2260 2261varying float vRadius; 2262varying vec3 vPoint; 2263varying vec3 vPointViewPosition; 2264 2265#ifdef dSolidInterior 2266 const bool solidInterior = true; 2267#else 2268 const bool solidInterior = false; 2269#endif 2270 2271bool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){ 2272 vec3 cameraSpherePos = -vPointViewPosition; 2273 2274 vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho); 2275 vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho); 2276 vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho); 2277 2278 float B = dot(rayDirection, cameraSphereDir); 2279 float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir); 2280 2281 if (det < 0.0) return false; 2282 2283 float sqrtDet = sqrt(det); 2284 float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho); 2285 float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho); 2286 2287 cameraPos = rayDirection * negT + rayOrigin; 2288 modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz; 2289 fragmentDepth = calcDepth(cameraPos); 2290 2291 bool objectClipped = false; 2292 2293 #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0 2294 if (clipTest(modelPos)) { 2295 objectClipped = true; 2296 fragmentDepth = -1.0; 2297 } 2298 #endif 2299 2300 if (fragmentDepth > 0.0) { 2301 cameraNormal = normalize(cameraPos - cameraSpherePos); 2302 interior = false; 2303 return true; 2304 } else if (uDoubleSided || solidInterior) { 2305 cameraPos = rayDirection * posT + rayOrigin; 2306 modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz; 2307 fragmentDepth = calcDepth(cameraPos); 2308 cameraNormal = -normalize(cameraPos - cameraSpherePos); 2309 interior = true; 2310 if (fragmentDepth > 0.0) { 2311 #ifdef dSolidInterior 2312 if (!objectClipped) { 2313 fragmentDepth = 0.0 + (0.0000001 / vRadius); 2314 cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, -1.0), uIsOrtho); 2315 2316 // intersection of ray with near plane 2317 float nearT = - (uNear + dot(rayOrigin, vec3(0.0, 0.0, 1.0))) / dot(rayDirection, vec3(0.0, 0.0, 1.0)); 2318 cameraPos = rayDirection * nearT + rayOrigin; 2319 modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz; 2320 } 2321 #endif 2322 return true; 2323 } 2324 } 2325 2326 return false; 2327} 2328 2329void main(void){ 2330 vec3 cameraNormal; 2331 float fragmentDepth; 2332 2333 #ifdef dApproximate 2334 vec3 pointDir = -vPointViewPosition - vPoint; 2335 if (dot(pointDir, pointDir) > vRadius * vRadius) discard; 2336 vec3 vViewPosition = -vPointViewPosition; 2337 fragmentDepth = gl_FragCoord.z; 2338 #if !defined(dIgnoreLight) || defined(dXrayShaded) || defined(dRenderVariant_tracing) 2339 pointDir.z -= cos(length(pointDir)) * vRadius * 0.5; 2340 cameraNormal = -normalize(pointDir); 2341 #endif 2342 interior = false; 2343 #else 2344 vec3 modelPos; 2345 vec3 cameraPos; 2346 bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth); 2347 if (!hit) discard; 2348 2349 if (fragmentDepth < 0.0) discard; 2350 if (fragmentDepth > 1.0) discard; 2351 2352 gl_FragDepthEXT = fragmentDepth; 2353 2354 vec3 vModelPosition = modelPos; 2355 vec3 vViewPosition = cameraPos; 2356 #endif 2357 2358 #include fade_lod 2359 #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0 2360 #include clip_pixel 2361 #endif 2362 2363 #ifdef dNeedsNormal 2364 vec3 normal = -cameraNormal; 2365 #endif 2366 2367 #include assign_material_color 2368 2369 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2370 if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) { 2371 material.a *= min(1.0, vRadius / (uAlphaThickness * uModelScale)); 2372 } 2373 #endif 2374 2375 #include check_transparency 2376 2377 #if defined(dRenderVariant_pick) 2378 #include check_picking_alpha 2379 #ifdef requiredDrawBuffers 2380 gl_FragColor = vObject; 2381 gl_FragData[1] = vInstance; 2382 gl_FragData[2] = vGroup; 2383 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 2384 #else 2385 gl_FragColor = vColor; 2386 #endif 2387 #elif defined(dRenderVariant_depth) 2388 gl_FragColor = material; 2389 #elif defined(dRenderVariant_marking) 2390 gl_FragColor = material; 2391 #elif defined(dRenderVariant_emissive) 2392 gl_FragColor = material; 2393 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2394 #include apply_interior_color 2395 #include apply_light_color 2396 #include apply_marker_color 2397 2398 #if defined(dRenderVariant_color) 2399 #include apply_fog 2400 #include wboit_write 2401 #include dpoit_write 2402 #elif defined(dRenderVariant_tracing) 2403 gl_FragData[1] = vec4(normal, emissive); 2404 gl_FragData[2] = vec4(material.rgb, uDensity); 2405 #endif 2406 #endif 2407} 2408`),Gy}var zy={},Xq;function bne(){return Xq||(Xq=1,Object.defineProperty(zy,"__esModule",{value:!0}),zy.cylinders_vert=void 0,zy.cylinders_vert=` 2409precision highp float; 2410precision highp int; 2411 2412#include common 2413#include read_from_texture 2414#include common_vert_params 2415#include color_vert_params 2416#include size_vert_params 2417#include common_clip 2418#include common_animation 2419 2420uniform mat4 uModelView; 2421 2422attribute mat4 aTransform; 2423attribute float aInstance; 2424attribute float aGroup; 2425 2426attribute vec3 aMapping; 2427attribute vec3 aStart; 2428attribute vec3 aEnd; 2429attribute float aScale; 2430attribute float aCap; 2431attribute float aColorMode; 2432 2433varying mat4 vTransform; 2434varying vec3 vStart; 2435varying vec3 vEnd; 2436varying float vSize; 2437varying float vCap; 2438 2439uniform float uIsOrtho; 2440uniform vec3 uCameraDir; 2441 2442void main() { 2443 int vertexId = VertexID; 2444 2445 #include assign_group 2446 #include assign_color_varying 2447 #include assign_marker_varying 2448 #include assign_clipping_varying 2449 #include assign_size 2450 2451 mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId)); 2452 vec3 wigStart = applyWiggle(aStart, aGroup, aInstance); 2453 vec3 wigEnd = applyWiggle(aEnd, aGroup, aInstance); 2454 mat4 modelTransform = uModel * transform; 2455 2456 vTransform = modelTransform; 2457 vStart = (modelTransform * vec4(wigStart, 1.0)).xyz; 2458 vEnd = (modelTransform * vec4(wigEnd, 1.0)).xyz; 2459 vSize = size * aScale * uModelScale; 2460 vCap = aCap; 2461 2462 vModelPosition = (vStart + vEnd) * 0.5; 2463 vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho); 2464 vec3 dir = vEnd - vStart; 2465 float f = aMapping.x > 0.0 ? 1.0 : 0.0; 2466 // ensure cylinder 'dir' is pointing towards the camera 2467 if(dot(camDir, dir) < 0.0) { 2468 dir = -dir; 2469 f = 1.0 - f; 2470 } 2471 2472 vec3 left = cross(camDir, dir); 2473 vec3 up = cross(left, dir); 2474 left = vSize * normalize(left); 2475 up = vSize * normalize(up); 2476 2477 // move vertex in object-space from center to corner 2478 vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up; 2479
2480 vec4 mvPosition = uView * vec4(vModelPosition, 1.0); 2481 vViewPosition = mvPosition.xyz; 2482 gl_Position = uProjection * mvPosition; 2483 2484 if (gl_Position.z < -gl_Position.w) { 2485 mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping 2486 gl_Position.z = (uProjection * mvPosition).z; 2487 } 2488 2489 #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance)) 2490 // dual-color mixing 2491 // - for aColorMode between 0 and 1 use aColorMode to interpolate 2492 // - for aColorMode == 2 do nothing, i.e., use vColor 2493 // - for aColorMode == 3 use position on cylinder axis to interpolate 2494 if (aColorMode <= 1.0){ 2495 vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode); 2496 } else if (aColorMode == 3.0) { 2497 vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5)); 2498 } 2499 #endif 2500 2501 #include clip_instance 2502} 2503`),zy}var Hy={},Kq;function _ne(){return Kq||(Kq=1,Object.defineProperty(Hy,"__esModule",{value:!0}),Hy.cylinders_frag=void 0,Hy.cylinders_frag
vendor: 10,974 bytes, lines 2503-2810
2503=` 2504precision highp float; 2505precision highp int; 2506 2507#define bumpEnabled 2508 2509uniform mat4 uView; 2510 2511varying mat4 vTransform; 2512varying vec3 vStart; 2513varying vec3 vEnd; 2514varying float vSize; 2515varying float vCap; 2516 2517uniform vec3 uCameraDir; 2518uniform vec3 uCameraPosition; 2519uniform mat4 uInvView; 2520 2521uniform vec4 uInteriorColor; 2522uniform vec4 uInteriorSubstance; 2523 2524#include common 2525#include common_frag_params 2526#include color_frag_params 2527#include light_frag_params 2528#include common_clip 2529 2530#ifdef dSolidInterior 2531 const bool solidInterior = true; 2532#else 2533 const bool solidInterior = false; 2534#endif 2535 2536// adapted from https://www.shadertoy.com/view/4lcSRn 2537// The MIT License, Copyright 2016 Inigo Quilez 2538bool CylinderImpostor( 2539 in vec3 rayOrigin, in vec3 rayDir, 2540 in vec3 start, in vec3 end, in float radius, 2541 out vec3 cameraNormal, out bool interior, 2542 out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth 2543){ 2544 vec3 ba = end - start; 2545 vec3 oc = rayOrigin - start; 2546 2547 float baba = dot(ba, ba); 2548 float bard = dot(ba, rayDir); 2549 float baoc = dot(ba, oc); 2550 2551 float k2 = baba - bard * bard; 2552 float k1 = baba * dot(oc, rayDir) - baoc * bard; 2553 float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba; 2554 2555 float h = k1 * k1 - k2 * k0; 2556 if (h < 0.0) return false; 2557 2558 bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9; 2559 bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9; 2560 2561 #ifdef dSolidInterior 2562 bool topInterior = !topCap; 2563 bool bottomInterior = !bottomCap; 2564 topCap = true; 2565 bottomCap = true; 2566 #else 2567 bool topInterior = false; 2568 bool bottomInterior = false; 2569 #endif 2570 2571 bool clipped = false; 2572 bool objectClipped = false; 2573 2574 // body outside 2575 h = sqrt(h); 2576 float t = (-k1 - h) / k2; 2577 float y = baoc + t * bard; 2578 if (y > 0.0 && y < baba) { 2579 interior = false; 2580 cameraNormal = (oc + t * rayDir - ba * y / baba) / radius; 2581 modelPosition = rayOrigin + t * rayDir; 2582 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2583 fragmentDepth = calcDepth(viewPosition); 2584 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 2585 if (clipTest(modelPosition)) { 2586 objectClipped = true; 2587 fragmentDepth = -1.0; 2588 #ifdef dSolidInterior 2589 topCap = !topInterior; 2590 bottomCap = !bottomInterior; 2591 #endif 2592 } 2593 #endif 2594 if (fragmentDepth > 0.0) return true; 2595 clipped = true; 2596 } 2597 2598 if (!clipped) { 2599 if (topCap && y < 0.0) { 2600 // top cap 2601 t = -baoc / bard; 2602 if (abs(k1 + k2 * t) < h) { 2603 interior = topInterior; 2604 cameraNormal = -ba / baba; 2605 modelPosition = rayOrigin + t * rayDir; 2606 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2607 fragmentDepth = calcDepth(viewPosition); 2608 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 2609 if (clipTest(modelPosition)) { 2610 objectClipped = true; 2611 fragmentDepth = -1.0; 2612 #ifdef dSolidInterior 2613 topCap = !topInterior; 2614 bottomCap = !bottomInterior; 2615 #endif 2616 } 2617 #endif 2618 if (fragmentDepth > 0.0) { 2619 #ifdef dSolidInterior 2620 if (interior) cameraNormal = -rayDir; 2621 #endif 2622 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 2623 return true; 2624 #else 2625 return !interior; 2626 #endif 2627 } 2628 } 2629 } else if (bottomCap && y >= 0.0) { 2630 // bottom cap 2631 t = (baba - baoc) / bard; 2632 if (abs(k1 + k2 * t) < h) { 2633 interior = bottomInterior; 2634 cameraNormal = ba / baba; 2635 modelPosition = rayOrigin + t * rayDir; 2636 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2637 fragmentDepth = calcDepth(viewPosition); 2638 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 2639 if (clipTest(modelPosition)) { 2640 objectClipped = true; 2641 fragmentDepth = -1.0; 2642 #ifdef dSolidInterior 2643 topCap = !topInterior; 2644 bottomCap = !bottomInterior; 2645 #endif 2646 } 2647 #endif 2648 if (fragmentDepth > 0.0) { 2649 #ifdef dSolidInterior 2650 if (interior) cameraNormal = -rayDir; 2651 #endif 2652 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 2653 return true; 2654 #else 2655 return !interior; 2656 #endif 2657 } 2658 } 2659 } 2660 } 2661 2662 if (uDoubleSided || solidInterior) { 2663 // body inside 2664 h = -h; 2665 t = (-k1 - h) / k2; 2666 y = baoc + t * bard; 2667 if (y > 0.0 && y < baba) { 2668 interior = true; 2669 cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius; 2670 modelPosition = rayOrigin + t * rayDir; 2671 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2672 fragmentDepth = calcDepth(viewPosition); 2673 if (fragmentDepth > 0.0) { 2674 #ifdef dSolidInterior 2675 if (!objectClipped) { 2676 fragmentDepth = 0.0 + (0.0000002 / vSize); 2677 cameraNormal = -rayDir; 2678 2679 // intersection of ray in model space with near plane in camera space 2680 vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz; 2681 vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz; 2682 float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z; 2683 viewPosition = cameraRayOrigin + nearT * cameraRayDir; 2684 modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz; 2685 } 2686 #endif 2687 return true; 2688 } 2689 } 2690 2691 if (topCap && y < 0.0) { 2692 // top cap 2693 t = -baoc / bard; 2694 if (abs(k1 + k2 * t) < -h) { 2695 interior = true; 2696 cameraNormal = ba / baba; 2697 modelPosition = rayOrigin + t * rayDir; 2698 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2699 fragmentDepth = calcDepth(viewPosition); 2700 if (fragmentDepth > 0.0) { 2701 #ifdef dSolidInterior 2702 if (!objectClipped) { 2703 fragmentDepth = 0.0 + (0.0000002 / vSize); 2704 cameraNormal = -rayDir; 2705 2706 // intersection of ray in model space with near plane in camera space 2707 vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz; 2708 vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz; 2709 float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z; 2710 viewPosition = cameraRayOrigin + nearT * cameraRayDir; 2711 modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz; 2712 } 2713 #endif 2714 return true; 2715 } 2716 } 2717 } else if (bottomCap && y >= 0.0) { 2718 // bottom cap 2719 t = (baba - baoc) / bard; 2720 if (abs(k1 + k2 * t) < -h) { 2721 interior = true; 2722 cameraNormal = -ba / baba; 2723 modelPosition = rayOrigin + t * rayDir; 2724 viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; 2725 fragmentDepth = calcDepth(viewPosition); 2726 if (fragmentDepth > 0.0) { 2727 #ifdef dSolidInterior 2728 if (!objectClipped) { 2729 fragmentDepth = 0.0 + (0.0000002 / vSize); 2730 cameraNormal = -rayDir; 2731 2732 // intersection of ray in model space with near plane in camera space 2733 vec3 cameraRayOrigin = (uView * vec4(rayOrigin, 1.0)).xyz; 2734 vec3 cameraRayDir = (uView * vec4(rayDir, 0.0)).xyz; 2735 float nearT = - (uNear + cameraRayOrigin.z) / cameraRayDir.z; 2736 viewPosition = cameraRayOrigin + nearT * cameraRayDir; 2737 modelPosition = (uInvView * vec4(viewPosition, 1.0)).xyz; 2738 } 2739 #endif 2740 return true; 2741 } 2742 } 2743 } 2744 } 2745 2746 return false; 2747} 2748 2749void main() { 2750 vec3 rayOrigin = vModelPosition; 2751 vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho); 2752 2753 vec3 cameraNormal; 2754 vec3 modelPosition; 2755 vec3 viewPosition; 2756 float fragmentDepth; 2757 bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth); 2758 if (!hit) discard; 2759 2760 if (fragmentDepth < 0.0) discard; 2761 if (fragmentDepth > 1.0) discard; 2762 2763 gl_FragDepthEXT = fragmentDepth; 2764 2765 vec3 vViewPosition = viewPosition; 2766 vec3 vModelPosition = modelPosition; 2767 2768 #include fade_lod 2769 #include clip_pixel 2770 2771 #ifdef dNeedsNormal 2772 mat3 normalMatrix = adjoint(uView); 2773 vec3 normal = normalize(normalMatrix * -normalize(cameraNormal)); 2774 #endif 2775 2776 #include assign_material_color 2777 #include check_transparency 2778 2779 #if defined(dRenderVariant_pick) 2780 #include check_picking_alpha 2781 #ifdef requiredDrawBuffers 2782 gl_FragColor = vObject; 2783 gl_FragData[1] = vInstance; 2784 gl_FragData[2] = vGroup; 2785 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 2786 #else 2787 gl_FragColor = vColor; 2788 #endif 2789 #elif defined(dRenderVariant_depth) 2790 gl_FragColor = material; 2791 #elif defined(dRenderVariant_marking) 2792 gl_FragColor = material; 2793 #elif defined(dRenderVariant_emissive) 2794 gl_FragColor = material; 2795 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2796 #include apply_interior_color 2797 #include apply_light_color 2798 #include apply_marker_color 2799 2800 #if defined(dRenderVariant_color) 2801 #include apply_fog 2802 #include wboit_write 2803 #include dpoit_write 2804 #elif defined(dRenderVariant_tracing) 2805 gl_FragData[1] = vec4(normal, emissive); 2806 gl_FragData[2] = vec4(material.rgb, uDensity); 2807 #endif 2808 #endif 2809} 2810`
2810),Hy}var Wy={},Yq;function Sne(){return Yq||(Yq=1,Object.defineProperty(Wy,"__esModule",{value:!0}),Wy.text_vert=void 0,Wy.text_vert=` 2811precision highp float; 2812precision highp int; 2813 2814#include common 2815#include read_from_texture 2816#include common_vert_params 2817#include color_vert_params 2818#include size_vert_params 2819#include common_clip 2820 2821uniform mat4 uModelView; 2822 2823attribute vec3 aPosition; 2824attribute vec2 aMapping; 2825attribute float aDepth; 2826attribute vec2 aTexCoord; 2827attribute mat4 aTransform; 2828attribute float aInstance; 2829attribute float aGroup; 2830 2831uniform float uOffsetX; 2832uniform float uOffsetY; 2833uniform float uOffsetZ; 2834 2835uniform float uIsOrtho; 2836uniform float uPixelRatio; 2837uniform vec4 uViewport; 2838uniform mat4 uInvHeadRotation; 2839uniform bool uHasHeadRotation; 2840uniform mat4 uModelViewEye; 2841uniform mat4 uInvModelViewEye; 2842uniform bool uHasEyeCamera; 2843 2844varying vec2 vTexCoord; 2845 2846void main(void){ 2847 int vertexId = VertexID; 2848 2849 #include assign_group 2850 #include assign_color_varying 2851 #include assign_marker_varying 2852 #include assign_clipping_varying 2853 #include assign_size 2854 2855 vTexCoord = aTexCoord; 2856 2857 float scale = uModelScale; 2858 2859 float offsetX = uOffsetX * scale; 2860 float offsetY = uOffsetY * scale; 2861 float offsetZ = (uOffsetZ + aDepth * 0.95) * scale; 2862
2863 vec4 position4 = vec4(aPosition, 1.0); 2864 vec4 mvPosition = uHasEyeCamera 2865 ? uModelViewEye * aTransform * position4 2866 : uModelView * aTransform * position4; 2867 2868 vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader 2869 2870 // TODO 2871 // #ifdef FIXED_SIZE 2872 // if (ortho) { 2873 // scale /= pixelRatio * ((uViewport.w / 2.0) / -uCameraPosition.z) * 0.1; 2874 // } else { 2875 // scale /= pixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 0.1; 2876 // } 2877 // #endif 2878 2879 vec4 mvCenter = vec4(mvPosition.xyz, 1.0); 2880 2881 if (vTexCoord.x == 10.0) { // indicates background plane 2882 // move a bit to the back, taking distance to camera into account to avoid z-fighting 2883 offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCenter).xyz); 2884 } 2885 2886 // apply Z offset in view space 2887 if (!uHasEyeCamera) { 2888 if (uIsOrtho == 1.0) { 2889 mvCenter.z += offsetZ; 2890 } else { 2891 mvCenter.xyz += normalize(-mvCenter.xyz) * offsetZ; 2892 } 2893 } 2894 2895 if (uHasEyeCamera) { 2896 mvCenter = uModelView * uInvModelViewEye * mvCenter; 2897 } 2898 2899 // project center to clip space 2900 vec4 clip = uProjection * mvCenter; 2901 2902 // compute corner offset in screen-space units 2903 vec2 cornerOffset = aMapping * size * scale; 2904 cornerOffset.x += offsetX; 2905 cornerOffset.y += offsetY; 2906 2907 if (uHasHeadRotation) { 2908 vec3 rotatedOffset = (uInvHeadRotation * vec4(cornerOffset, 0.0, 0.0)).xyz; 2909 clip += uProjection * vec4(rotatedOffset, 0.0); 2910 } else { 2911 // apply offset in clip space to avoid perspective distortion on the quad 2912 clip.xy += vec2(uProjection[0][0], uProjection[1][1]) * cornerOffset; 2913 } 2914 2915 gl_Position = clip; 2916 2917 vViewPosition = -mvCenter.xyz; 2918 2919 #include clip_instance 2920} 2921`),Wy}var $y={},Qq;function Cne(){return Qq||(Qq=1,Object.defineProperty($y,"__esModule",{value:!0}),$y.text_frag=void 0,$y.text_frag=` 2922precision highp float; 2923precision highp int; 2924 2925#include common 2926#include common_frag_params 2927#include color_frag_params 2928#include common_clip 2929 2930uniform sampler2D tFont; 2931 2932uniform vec3 uBorderColor; 2933uniform float uBorderWidth; 2934uniform vec3 uBackgroundColor;
2935uniform float uBackgroundOpacity; 2936 2937varying vec2 vTexCoord; 2938 2939void main(){ 2940 #include fade_lod 2941 #include clip_pixel 2942 2943 float fragmentDepth = gl_FragCoord.z; 2944 2945 // determine if this is a background or glyph fragment 2946 bool isBackground = vTexCoord.x > 1.0; 2947 2948 // discard background for pick/marking/emissive, but keep it in depth 2949 #if !defined(dRenderVariant_color) && !defined(dRenderVariant_tracing) && !defined(dRenderVariant_depth) 2950 if (isBackground) discard; 2951 #endif 2952 2953 // SDF test for glyph fragments â discard pixels outside glyph+border 2954 float rawSdf = 0.0; 2955 if (!isBackground) { 2956 rawSdf = texture2D(tFont, vTexCoord).a; 2957 float sdf = rawSdf + min(uBorderWidth, 0.49); // clamp to avoid exceeding max SDF range 2958 if (sdf < 0.5) discard; 2959 } 2960 2961 #ifdef enabledFragDepth 2962 gl_FragDepthEXT = fragmentDepth; 2963 #endif 2964 2965 // background writes its own opacity into depth alpha; glyphs stay opaque 2966 #define dHasMaterialOpacity 2967 float materialOpacity = isBackground ? uBackgroun
2967dOpacity : 1.0; 2968 #include assign_material_color 2969 2970 if (isBackground) { 2971 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2972 material = vec4(uBackgroundColor, uBackgroundOpacity * material.a); 2973 #endif 2974 } else { 2975 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 2976 if (uBorderWidth > 0.0 && rawSdf < 0.5) { 2977 material.xyz = uBorderColor; 2978 } else { 2979 // push text fragments forward in depth so they render in front of border 2980 #ifdef enabledFragDepth 2981 gl_FragDepthEXT = fragmentDepth - 0.0001; 2982 #endif 2983 } 2984 #endif 2985 } 2986 2987 #include check_transparency 2988 2989 #if defined(dRenderVariant_pick) 2990 #include check_picking_alpha 2991 #ifdef requiredDrawBuffers 2992 gl_FragColor = vObject; 2993 gl_FragData[1] = vInstance; 2994 gl_FragData[2] = vGroup; 2995 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 2996 #else 2997 gl_FragColor = vColor; 2998 #endif 2999 #elif defined(dRenderVariant_depth) 3000 gl_FragColor = material; 3001 #elif defined(dRenderVariant_marking) 3002 gl_FragColor = material; 3003 #elif defined(dRenderVariant_emissive) 3004 gl_FragColor = material; 3005 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 3006 gl_FragColor = material; 3007 #include apply_marker_color 3008 3009 #if defined(dRenderVariant_color) 3010 #include apply_fog 3011 #include wboit_write 3012 #include dpoit_write 3013 #elif defined(dRenderVariant_tracing) 3014 gl_FragData[1] = vec4(-normalize(vViewPosition), emissive); 3015 gl_FragData[2] = vec4(material.rgb, uDensity); 3016 #endif 3017 #endif 3018} 3019`),$y}var Xy={},Zq;function Pne(){return Zq||(Zq=1,Object.defineProperty(Xy,"__esModule",{value:!0}),Xy.lines_vert=void 0,Xy.lines_vert=` 3020precision highp float; 3021precision highp int; 3022 3023#include common 3024#include read_from_texture 3025#include common_vert_params 3026#include color_vert_params 3027#include size_vert_params 3028#include common_clip 3029#include common_animation 3030 3031uniform float uPixelRatio; 3032uniform vec4 uViewport; 3033 3034attribute mat4 aTransform; 3035attribute float aInstance; 3036attribute float aGroup; 3037 3038attribute vec2 aMapping; 3039attribute vec3 aStart; 3040attribute vec3 aEnd; 3041 3042void trimSegment(const in vec4 start, inout vec4 end) { 3043 // trim end segment so it terminates between the camera plane and the near plane 3044 // conservative estimate of the near plane 3045 float a = uProjection[2][2]; // 3rd entry in 3rd column 3046 float b = uProjection[3][2]; // 3rd entry in 4th column 3047 float nearEstimate = -0.5 * b / a; 3048 float alpha = (nearEstimate - start.z) / (end.z - start.z); 3049 end.xyz = mix(start.xyz, end.xyz, alpha); 3050} 3051 3052void main(){ 3053 float aspect = uViewport.z / uViewport.w; 3054 int vertexId = VertexID; 3055 3056 #include assign_group 3057 #include assign_color_varying 3058 #include assign_marker_varying 3059 #include assign_clipping_varying 3060 #include assign_size 3061 3062 mat4 transform = applyTumble(aTransform, aInstance, float(uObjectId)); 3063 vec3 wigStart = applyWiggle(aStart, group, aInstance); 3064 vec3 wigEnd = applyWiggle(aEnd, group, aInstance); 3065 mat4 modelView = uView * uModel * transform; 3066 3067 // camera space 3068 vec4 start = modelView * vec4(wigStart, 1.0); 3069 vec4 end = modelView * vec4(wigEnd, 1.0); 3070 3071 // assign position 3072 vec4 position4 = vec4((aMapping.y < 0.5) ? wigStart : wigEnd, 1.0); 3073 vViewPosition = (aMapping.y < 0.5) ? start.xyz : end.xyz; 3074 3075 vModelPosition = (uModel * transform * position4).xyz; // for clipping in frag shader 3076 3077 // special case for perspective projection, and segments that terminate either in, or behind, the camera plane 3078 // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space 3079 // but we need to perform ndc-space calculations in the shader, so we must address this issue directly 3080 // perhaps there is a more elegant solution -- WestLangley 3081 bool perspective = (uProjection[2][3] == -1.0); // 4th entry in the 3rd column 3082 if (perspective) { 3083 if (start.z < 0.0 && end.z >= 0.0) { 3084 trimSegment(start, end); 3085 } else if (end.z < 0.0 && start.z >= 0.0) { 3086 trimSegment(end, start); 3087 } 3088 } 3089 3090 // clip space 3091 vec4 clipStart = uProjection * start; 3092 vec4 clipEnd = uProjection * end; 3093 3094 // ndc space 3095 vec2 ndcStart = clipStart.xy / clipStart.w; 3096 vec2 ndcEnd = clipEnd.xy / clipEnd.w; 3097 3098 // direction 3099 vec2 dir = ndcEnd - ndcStart; 3100 3101 // account for clip-space aspect ratio 3102 dir.x *= aspect; 3103 dir = normalize(dir); 3104 3105 // perpendicular to dir 3106 vec2 offset = vec2(dir.y, - dir.x); 3107 3108 // undo aspect ratio adjustment 3109 dir.x /= aspect; 3110 offset.x /= aspect; 3111 3112 // sign flip 3113 if (aMapping.x < 0.0) offset *= -1.0; 3114 3115 // calculate linewidth 3116 float linewidth; 3117 #ifdef dLineSizeAttenuation 3118 linewidth = size * uPixelRatio * ((uViewport.w / 2.0) / -start.z) * 5.0; 3119 #else 3120 linewidth = size * uPixelRatio; 3121 #endif 3122 linewidth = max(1.0, linewidth); 3123 3124 // adjust for linewidth 3125 offset *= linewidth; 3126 3127 // adjust for clip-space to screen-space conversion 3128 offset /= uViewport.w; 3129 3130 // select end 3131 vec4 clip = (aMapping.y < 0.5) ? clipStart : clipEnd; 3132 3133 // back to clip space 3134 offset *= clip.w; 3135 clip.xy += offset; 3136 gl_Position = clip; 3137 3138 #include clip_instance 3139} 3140`),Xy}var Ky={},Jq;function Tne(){return Jq||(Jq=1,Object.defineProperty(Ky,"__esModule",{value:!0}),Ky.lines_frag=void 0,Ky.lines_frag=` 3141precision highp float; 3142precision highp int; 3143 3144#include common 3145#include common_frag_params 3146#include color_frag_params 3147#include common_clip 3148 3149void main(){ 3150 #include fade_lod 3151 #include clip_pixel 3152 3153 float fragmentDepth = gl_FragCoord.z; 3154 #include assign_material_color 3155 #include check_transparency 3156 3157 #if defined(dRenderVariant_pick) 3158 #include check_picking_alpha 3159 #ifdef requiredDrawBuffers 3160 gl_FragColor = vObject; 3161 gl_FragData[1] = vInstance; 3162 gl_FragData[2] = vGroup; 3163 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 3164 #else 3165 gl_FragColor = vColor; 3166 #endif 3167 #elif defined(dRenderVariant_depth) 3168 gl_FragColor = material; 3169 #elif defined(dRenderVariant_marking) 3170 gl_FragColor = material; 3171 #elif defined(dRenderVariant_emissive) 3172 gl_FragColor = material; 3173 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 3174 gl_FragColor = material; 3175 #include apply_marker_color 3176 3177 #if defined(dRenderVariant_color) 3178 #include apply_fog 3179 #include wboit_write 3180 #include dpoit_write 3181 #elif defined(dRenderVariant_tracing) 3182 gl_FragData[1] = vec4(normalize(vViewPosition), emissive); 3183 gl_FragData[2] = vec4(material.rgb, uDensity); 3184 #endif 3185 #endif 3186} 3187`),Ky}var Yy={},eU;function xne(){return eU||(eU=1,Object.defineProperty(Yy,"__esModule",{value:!0}),Yy.mesh_vert=void 0,Yy.mesh_vert=` 3188precision highp float; 3189precision highp int; 3190precision highp sampler2D; 3191 3192#include common 3193#include read_from_texture 3194#include common_vert_params 3195#include color_vert_params 3196#include common_clip 3197#include common_animation 3198#include texture3d_from_2d_linear 3199 3200#ifdef dGeometryType_textureMesh 3201 uniform vec2 uGeoTexDim; 3202 uniform sampler2D tPosition; 3203 uniform sampler2D tGroup; 3204 uniform sampler2D tNormal; 3205#else 3206 attribute vec3 aPosition; 3207 attribute float aGroup; 3208 attribute vec3 aNormal; 3209#endif 3210attribute mat4 aTransform; 3211attribute float aInstance; 3212 3213varying vec3 vNormal; 3214 3215void main(){ 3216 int vertexId = VertexID; 3217 3218 #include assign_group 3219 #include assign_marker_varying 3220 #include assign_clipping_varying 3221 #include assign_position 3222 #include assign_color_varying 3223 #include clip_instance 3224 3225 #ifdef dGeometryType_textureMesh 3226 vec3 normal = readFromTexture(tNormal, vertexId, uGeoTexDim).xyz; 3227 #else 3228 vec3 normal = aNormal; 3229 #endif 3230 mat3 normalMatrix = adjoint(modelView); 3231 vec3 transformedNormal = normalize(normalMatrix * normalize(normal)); 3232 #if defined(dFlipSided) 3233 if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR 3234 transformedNormal = -transformedNormal; 3235 } 3236 #endif 3237 vNormal = transformedNormal; 3238} 3239`),Yy}var Qy={},tU;function Ane(){return tU||(tU=1,Object.defineProperty(Qy,"__esModule",{value:!0}),Qy.mesh_frag=void 0,Qy.mesh_frag=` 3240precision highp float; 3241precision highp int; 3242 3243#define bumpEnabled 3244 3245#include common 3246#include common_frag_params 3247#include color_frag_params 3248#include light_frag_params 3249#include normal_frag_params 3250#include common_clip 3251
3252uniform vec4 uInteriorColor; 3253uniform vec4 uInteriorSubstance; 3254 3255void main() { 3256 #include fade_lod 3257 #include clip_pixel 3258 3259 interior = !gl_FrontFacing; 3260 3261 float fragmentDepth = gl_FragCoord.z; 3262 3263 #ifdef dNeedsNormal 3264 #if defined(dFlatShaded) 3265 vec3 fdx = dFdx(vViewPosition); 3266 vec3 fdy = dFdy(vViewPosition); 3267 vec3 normal = -normalize(cross(fdx,fdy)); 3268 #else 3269 vec3 normal = -normalize(vNormal); 3270 if (uDoubleSided) normal *= float(gl_FrontFacing) * 2.0 - 1.0; 3271 #endif 3272 3273 #if defined(dFlipSided) 3274 normal *= -1.0; 3275 #endif 3276 #endif 3277 3278 #include assign_material_color 3279 #include check_transparency 3280 3281 #if defined(dRenderVariant_pick) 3282 #include check_picking_alpha 3283 #ifdef requiredDrawBuffers 3284 gl_FragColor = vObject; 3285 gl_FragData[1] = vInstance; 3286 gl_FragData[2] = vGroup; 3287 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 3288 #else 3289 gl_FragColor = vColor; 3290 #endif 3291 #elif defined(dRenderVariant_depth) 3292 gl_FragColor = material; 3293 #elif defined(dRenderVariant_marking) 3294 gl_FragColor = material; 3295 #elif defined(dRenderVariant_emissive) 3296 gl_FragColor = material; 3297 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 3298 #include apply_interior_color 3299 #include apply_light_color 3300 #include apply_marker_color 3301 3302 #if defined(dRenderVariant_color) 3303 #include apply_fog 3304 #include wboit_write 3305 #include dpoit_write 3306 #elif defined(dRenderVariant_tracing) 3307 gl_FragData[1] = vec4(normal, emissive); 3308 gl_FragData[2] = vec4(material.rgb, uDensity); 3309 #endif 3310 #endif 3311} 3312`),Qy}var Zy={},rU;function Mne(){return rU||(rU=1,Object.defineProperty(Zy,"__esModule",{value:!0}),Zy.directVolume_vert=void 0,Zy.directVolume_vert=` 3313precision highp float; 3314 3315attribute vec3 aPosition; 3316attribute mat4 aTransform; 3317attribute float aInstance; 3318 3319uniform mat4 uModel; 3320uniform mat4 uModelView; 3321uniform mat4 uProjection; 3322uniform vec4 uInvariantBoundingSphere; 3323uniform float uModelScale; 3324 3325varying vec3 vModelPosition; 3326varying float vInstance; 3327varying vec4 vBoundingSphere; 3328varying mat4 vTransform; 3329 3330uniform vec3 uBboxSize; 3331uniform vec3 uBboxMin; 3332uniform vec3 uBboxMax; 3333uniform vec3 uGridDim; 3334uniform mat4 uTransform; 3335 3336uniform mat4 uUnitToCartn; 3337 3338void main() { 3339 vec4 unitCoord = vec4(aPosition + vec3(0.5), 1.0); 3340 vec4 mvPosition = uModelView * aTransform * uUnitToCartn * unitCoord; 3341 3342 vModelPosition = (uModel * aTransform * uUnitToCartn * unitCoord).xyz; 3343 vInstance = aInstance; 3344 vBoundingSphere = vec4( 3345 (uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz, 3346 uModelScale * uInvariantBoundingSphere.w 3347 ); 3348 vTransform = aTransform; 3349 3350 gl_Position = uProjection * mvPosition; 3351 3352 // move z position to near clip plane (but not too close to get precision issues) 3353 gl_Position.z = gl_Position.w - 0.01; 3354} 3355`),Zy}var Jy={},nU;function Dne(){return nU||(nU=1,Object.defineProperty(Jy,"__esModule",{value:!0}),Jy.directVolume_frag=void 0,Jy.directVolume_frag
vendor: 12,272 bytes, lines 3355-3725
3355=` 3356precision highp float; 3357precision highp int; 3358 3359#include common 3360#include light_frag_params 3361 3362#if dClipObjectCount != 0 3363 uniform int uClipObjectType[dClipObjectCount]; 3364 uniform bool uClipObjectInvert[dClipObjectCount]; 3365 uniform vec3 uClipObjectPosition[dClipObjectCount]; 3366 uniform vec4 uClipObjectRotation[dClipObjectCount]; 3367 uniform vec3 uClipObjectScale[dClipObjectCount]; 3368 uniform mat4 uClipObjectTransform[dClipObjectCount]; 3369#endif 3370#include common_clip 3371 3372#include read_from_texture 3373#include texture3d_from_1d_trilinear 3374#include texture3d_from_2d_nearest 3375#include texture3d_from_2d_linear 3376 3377uniform mat4 uProjection, uTransform, uModelView, uModel, uView; 3378uniform vec3 uCameraDir; 3379uniform float uModelScale; 3380 3381uniform sampler2D tDepth; 3382uniform vec2 uDrawingBufferSize; 3383 3384varying vec3 vModelPosition; 3385varying float vInstance; 3386varying vec4 vBoundingSphere; 3387varying mat4 vTransform; 3388 3389uniform mat4 uInvView; 3390uniform vec3 uGridDim; 3391uniform vec3 uBboxSize; 3392uniform sampler2D tTransferTex; 3393uniform float uTransferScale; 3394uniform float uStepScale; 3395uniform float uJumpLength; 3396 3397uniform int uObjectId; 3398uniform int uVertexCount; 3399uniform int uInstanceCount; 3400uniform int uGroupCount; 3401 3402#if defined(dColorMarker) 3403 uniform vec3 uHighlightColor; 3404 uniform vec3 uSelectColor; 3405 uniform vec3 uDimColor; 3406 uniform float uHighlightStrength; 3407 uniform float uSelectStrength; 3408 uniform float uDimStrength; 3409 uniform int uMarkerPriority; 3410 uniform float uMarkerAverage; 3411 3412 uniform float uMarker; 3413 uniform vec2 uMarkerTexDim; 3414 uniform sampler2D tMarker; 3415#endif 3416 3417uniform float uMetalness; 3418uniform float uRoughness; 3419uniform float uEmissive; 3420 3421// Density value to estimate object thickness 3422uniform float uDensity; 3423 3424uniform bool uFog; 3425uniform float uFogNear; 3426uniform float uFogFar; 3427uniform vec3 uFogColor; 3428 3429uniform float uAlpha; 3430uniform bool uTransparentBackground; 3431uniform float uXrayEdgeFalloff; 3432uniform float uCelSteps; 3433uniform float uExposure; 3434 3435uniform int uRenderMask; 3436 3437uniform float uNear; 3438uniform float uFar; 3439uniform float uIsOrtho; 3440 3441uniform vec3 uCellDim; 3442uniform vec3 uCameraPosition; 3443uniform mat4 uCartnToUnit; 3444 3445#if __VERSION__ != 100 3446 // for webgl1 this is given as a 'define' 3447 uniform int uMaxSteps; 3448#endif 3449 3450#if defined(dGridTexType_2d) 3451 precision highp sampler2D; 3452 uniform sampler2D tGridTex; 3453 uniform vec3 uGridTexDim; 3454#elif defined(dGridTexType_3d) 3455 precision highp sampler3D; 3456 uniform sampler3D tGridTex; 3457#endif 3458 3459#if defined(dColorType_uniform) 3460 uniform vec3 uColor; 3461#elif defined(dColorType_texture) 3462 uniform vec2 uColorTexDim; 3463 uniform sampler2D tColor; 3464#endif 3465 3466#ifdef dOverpaint 3467 #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance) 3468 uniform vec2 uOverpaintTexDim; 3469 uniform sampler2D tOverpaint; 3470 #endif 3471#endif 3472 3473#ifdef dUsePalette 3474 uniform vec2 uPaletteDomain; 3475 uniform sampler2D tPalette; 3476#endif 3477 3478#if defined(dGridTexType_2d) 3479 vec4 textureVal(vec3 pos) { 3480 return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy); 3481 } 3482 vec4 textureGroup(vec3 pos) { 3483 return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy); 3484 } 3485#elif defined(dGridTexType_3d) 3486 vec4 textureVal(vec3 pos) { 3487 return texture(tGridTex, pos + (vec3(0.5) / uGridDim)); 3488 } 3489 vec4 textureGroup(vec3 pos) { 3490 return texelFetch(tGridTex, ivec3(pos * uGridDim), 0); 3491 } 3492#endif 3493 3494float calcDepth(const in vec3 pos) { 3495 vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw; 3496 return 0.5 + 0.5 * clipZW.x / clipZW.y; 3497} 3498 3499float transferFunction(float value) { 3500 return texture2D(tTransferTex, vec2(value, 0.0)).a; 3501} 3502 3503float getDepth(const in vec2 coords) { 3504 #ifdef depthTextureSupport 3505 return texture2D(tDepth, coords).r; 3506 #else 3507 return unpackRGBAToDepth(texture2D(tDepth, coords)); 3508 #endif 3509} 3510 3511const float gradOffset = 0.5; 3512 3513vec3 v3m4(vec3 p, mat4 m) { 3514 return (m * vec4(p, 1.0)).xyz; 3515} 3516 3517float preFogAlphaBlended = 0.0; 3518 3519vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) { 3520 mat3 normalMatrix = adjoint(uModelView * vTransform); 3521 mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform); 3522 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 3523 mat4 modelTransform = uModel * vTransform * uTransform; 3524 #endif 3525 mat4 modelViewTransform = uModelView * vTransform * uTransform; 3526 3527 vec3 scaleVol = vec3(1.0) / uGridDim; 3528 vec3 pos = startLoc; 3529 vec4 cell; 3530 float prevValue = -1.0; 3531 float value = 0.0; 3532 vec4 src = vec4(0.0); 3533 vec4 dst = vec4(0.0); 3534 float fragmentDepth; 3535 3536 vec3 posMin = vec3(0.0); 3537 vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim; 3538 3539 vec3 unitPos; 3540 3541 vec3 nextPos; 3542 float nextValue; 3543 3544 vec4 material; 3545 vec4 overpaint; 3546 float metalness = uMetalness; 3547 float roughness = uRoughness; 3548 float emissive = uEmissive; 3549 3550 vec3 gradient = vec3(1.0); 3551 vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0); 3552 vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0); 3553 vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z); 3554 3555 float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear); 3556 float maxDistSq = maxDist * maxDist; 3557 3558 for (int i = 0; i < uMaxSteps; ++i) { 3559 // break when beyond bounding-sphere or far-plane 3560 vec3 distVec = startLoc - pos; 3561 if (dot(distVec, distVec) > maxDistSq) break; 3562 3563 unitPos = v3m4(pos / uModelScale, cartnToUnit); 3564 3565 // continue when outside of grid 3566 if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z || 3567 unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z 3568 ) { 3569 prevValue = value; 3570 pos += step; 3571 continue; 3572 } 3573 3574 cell = textureVal(unitPos); 3575 value = cell.a; // current voxel value 3576 3577 if (uJumpLength > 0.0 && value < 0.01) { 3578 nextPos = pos + rayDir * uJumpLength; 3579 nextValue = textureVal(v3m4(nextPos / uModelScale, cartnToUnit)).a; 3580 if (nextValue < 0.01) { 3581 prevValue = nextValue; 3582 pos = nextPos; 3583 continue; 3584 } 3585 } 3586 3587 vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0); 3588 if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) 3589 break; 3590 3591 #if defined(dClipVariant_pixel) && dClipObjectCount != 0 3592 vec3 modelPosition = v3m4(unitPos * uGridDim, modelTransform); 3593 if (clipTest(modelPosition)) { 3594 prevValue = value; 3595 pos += step; 3596 continue; 3597 } 3598 #endif 3599 3600 vec3 vViewPosition = mvPosition.xyz; 3601 material.a = transferFunction(value); 3602 3603 #ifdef dPackedGroup 3604 float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb); 3605 #else 3606 vec3 g = floor(unitPos * uGridDim + 0.5); 3607 // note that we swap x and z because the texture is flipped around y 3608 #if defined(dAxisOrder_012) 3609 float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210 3610 #elif defined(dAxisOrder_021) 3611 float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120 3612 #elif defined(dAxisOrder_102) 3613 float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201 3614 #elif defined(dAxisOrder_120) 3615 float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021 3616 #elif defined(dAxisOrder_201) 3617 float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102 3618 #elif defined(dAxisOrder_210) 3619 float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012 3620 #endif 3621 #endif 3622 3623 #if defined(dColorType_direct) && defined(dUsePalette) 3624 float paletteValue = (value - uPaletteDomain[0]) / (uPaletteDomain[1] - uPaletteDomain[0]); 3625 material.rgb = texture2D(tPalette, vec2(clamp(paletteValue, 0.0, 1.0), 0.0)).rgb; 3626 #elif defined(dColorType_uniform) 3627 material.rgb = uColor; 3628 #elif defined(dColorType_instance) 3629 material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb; 3630 #elif defined(dColorType_group) 3631 material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; 3632 #elif defined(dColorType_groupInstance) 3633 material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb; 3634 #elif defined(dColorType_vertex) 3635 material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb; 3636 #elif defined(dColorType_vertexInstance) 3637 material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb; 3638 #endif 3639 3640 #ifdef dOverpaint 3641 #if defined(dOverpaintType_groupInstance) 3642 overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim); 3643 #elif defined(dOverpaintType_vertexInstance) 3644 overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount)); 3645 #endif 3646 3647 material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a); 3648 #endif 3649 3650 #if defined(dIgnoreLight) 3651 gl_FragColor.rgb = material.rgb; 3652 #else 3653 if (material.a >= 0.01) { 3654 #ifdef dPackedGroup 3655 // compute gradient by central differences 3656 gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a; 3657 gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a; 3658 gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a; 3659 #else 3660 gradient = cell.xyz * 2.0 - 1.0; 3661 #endif 3662 vec3 normal = -normalize(normalMatrix * normalize(gradient)); 3663 #include apply_light_color 3664 } else { 3665 gl_FragColor.rgb = material.rgb; 3666 } 3667 #endif 3668 3669 gl_FragColor.a = material.a * uAlpha * uTransferScale; 3670 3671 #if defined(dColorMarker) 3672 float marker = uMarker; 3673 if (uMarker == -1.0) { 3674 marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a; 3675 marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win 3676 } 3677 #endif 3678 #include apply_marker_color 3679 3680 preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended; 3681 fragmentDepth = calcDepth(mvPosition.xyz); 3682 #include apply_fog 3683 3684 src = gl_FragColor; 3685 3686 if (!uTransparentBackground || !uFog) { 3687 // done in 'apply_fog' otherwise 3688 src.rgb *= src.a; 3689 } 3690 dst = (1.0 - dst.a) * src + dst; // standard blending 3691 3692 // break if the color is opaque enough 3693 if (dst.a > 0.95) 3694 break; 3695 3696 pos += step; 3697 } 3698 3699 return dst; 3700} 3701 3702// TODO: support float texture for higher precision values??? 3703// TODO: support clipping exclusion texture support 3704 3705void main() { 3706 #if defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 3707 discard; 3708 #else 3709 if (gl_FrontFacing) 3710 discard; 3711 3712 vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho); 3713 vec3 step = rayDir * uStepScale * uModelScale; 3714 3715 float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w; 3716 float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vModelPosition, uCameraPosition), uIsOrtho); 3717 vec3 start = mix(uCameraPosition, vModelPosition, uIsOrtho) + (d * rayDir); 3718 gl_FragColor = raymarch(start, step, rayDir); 3719 3720 float fragmentDepth = calcDepth((uView * vec4(start, 1.0)).xyz); 3721 float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0); 3722 #include wboit_write 3723 #endif 3724} 3725`
3725),Jy}var e1={},iU;function Ine(){return iU||(iU=1,Object.defineProperty(e1,"__esModule",{value:!0}),e1.image_vert=void 0,e1.image_vert=` 3726precision highp float; 3727precision highp int; 3728 3729#include common 3730#include common_vert_params 3731 3732attribute vec3 aPosition; 3733attribute vec2 aUv; 3734attribute mat4 aTransform; 3735attribute float aInstance; 3736 3737varying vec2 vUv; 3738varying float vInstance; 3739varying vec3 vPosition; 3740 3741void main() { 3742 int vertexId = VertexID; 3743 3744 #include assign_position 3745 3746 vUv = aUv; 3747 vInstance = aInstance; 3748 vPosition = aPosition; 3749} 3750`),e1}var t1={},aU;function wne(){return aU||(aU=1,Object.defineProperty(t1,"__esModule",{value:!0}),t1.image_frag=void 0,t1.image_frag=` 3751precision highp float; 3752precision highp int; 3753 3754#include common 3755#include read_from_texture 3756#include common_frag_params 3757#include common_clip 3758 3759uniform float uEmissive; 3760 3761// Density value to estimate object thickness 3762uniform float uDensity; 3763 3764#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 3765 #ifdef dOverpaint 3766 #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance) 3767 varying vec4 vOverpaint; 3768 uniform vec2 uOverpaintTexDim; 3769 uniform sampler2D tOverpaint; 3770 #endif 3771 uniform float uOverpaintStrength; 3772 #endif 3773#endif 3774 3775#if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 3776 #ifdef dEmissive 3777 #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) 3778 varying float vEmissive; 3779 uniform vec2 uEmissiveTexDim; 3780 uniform sampler2D tEmissive; 3781 #endif 3782 uniform float uEmissiveStrength; 3783 #endif 3784#endif 3785 3786#ifdef dTransparency 3787 #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance) 3788 varying float vTransparency; 3789 uniform vec2 uTransparencyTexDim; 3790 uniform sampler2D tTransparency; 3791 #endif 3792 uniform float uTransparencyStrength; 3793#endif 3794 3795uniform vec2 uImageTexDim; 3796uniform sampler2D tImageTex; 3797uniform sampler2D tGroupTex; 3798uniform sampler2D tValueTex; 3799 3800uniform vec2 uMarkerTexDim; 3801uniform sampler2D tMarker; 3802 3803varying vec2 vUv; 3804varying float vInstance; 3805varying vec3 vPosition; 3806 3807#ifdef dUsePalette 3808 uniform sampler2D tPalette; 3809 uniform vec3 uPaletteDefault; 3810#endif 3811 3812uniform int uTrimType; 3813uniform vec3 uTrimCenter; 3814uniform vec4 uTrimRotation; 3815uniform vec3 uTrimScale; 3816uniform mat4 uTrimTransform; 3817 3818uniform float uIsoLevel; 3819 3820#if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) || defined(dInterpolation_bspline) 3821 #define dInterpolation_cubic 3822#endif 3823 3824#if defined(dInterpolation_cubic) 3825 #if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) 3826 #if defined(dInterpolation_catmulrom) 3827 const float B = 0.0; 3828 const float C = 0.5; 3829 #elif defined(dInterpolation_mitchell) 3830 const float B = 0.333; 3831 const float C = 0.333; 3832 #endif 3833 3834 float cubicFilter(float x){ 3835 float f = x; 3836 if (f < 0.0) { 3837 f = -f; 3838 } 3839 if (f < 1.0) { 3840 return ((12.0 - 9.0 * B - 6.0 * C) * (f * f * f) + 3841 (-18.0 + 12.0 * B + 6.0 * C) * (f * f) + 3842 (6.0 - 2.0 * B)) / 6.0; 3843 }else if (f >= 1.0 && f < 2.0){ 3844 return ((-B - 6.0 * C) * ( f * f * f) 3845 + (6.0 * B + 30.0 * C) * (f * f) + 3846 (-(12.0 * B) - 48.0 * C) * f + 3847 8.0 * B + 24.0 * C) / 6.0; 3848 }else{ 3849 return 0.0; 3850 } 3851 } 3852 #elif defined(dInterpolation_bspline) 3853 float cubicFilter(float x) { 3854 float f = x; 3855 if (f < 0.0) { 3856 f = -f; 3857 } 3858 if (f >= 0.0 && f <= 1.0){ 3859 return (2.0 / 3.0) + (0.5) * (f * f * f) - (f * f); 3860 } else if (f > 1.0 && f <= 2.0) { 3861 return 1.0 / 6.0 * pow((2.0 - f), 3.0); 3862 } 3863 return 1.0; 3864 } 3865 #endif 3866 3867 vec4 biCubic(sampler2D tex, vec2 texCoord) { 3868 vec2 texelSize = 1.0 / uImageTexDim; 3869 texCoord -= texelSize / 2.0; 3870 vec4 nSum = vec4(0.0); 3871 float nDenom = 0.0; 3872 vec2 cell = fract(texCoord * uImageTexDim); 3873 for (float m = -1.0; m <= 2.0; ++m) { 3874 for (float n = -1.0; n <= 2.0; ++n) { 3875 vec4 vecData = texture2D(tex, texCoord + texelSize * vec2(m, n)); 3876 float c = abs(cubicFilter(m - cell.x) * cubicFilter(-n + cell.y)); 3877 nSum += vecData * c; 3878 nDenom += c; 3879 } 3880 } 3881 return nSum / nDenom; 3882 } 3883#endif 3884 3885void main() { 3886 if (uTrimType != 0 && getSignedDistance(vPosition, uTrimType, uTrimCenter, uTrimRotation, uTrimScale, uTrimTransform) > 0.0) discard; 3887 3888 #include fade_lod 3889 #include clip_pixel 3890 3891 #if defined(dInterpolation_cubic) 3892 #ifdef dUsePalette 3893 vec4 material = texture2D(tImageTex, vUv); 3894 if (material.rgb != vec3(1.0)) { 3895 material = biCubic(tImageTex, vUv); 3896 } 3897 #else 3898 vec4 material = biCubic(tImageTex, vUv); 3899 #endif 3900 #else 3901 vec4 material = texture2D(tImageTex, vUv); 3902 #endif 3903 3904 if (uIsoLevel >= 0.0) { 3905 if (texture2D(tValueTex, vUv).r < uIsoLevel) discard; 3906 3907 material.a = uAlpha; 3908 } else { 3909 if (material.a == 0.0) discard; 3910 3911 material.a *= uAlpha; 3912 } 3913 3914 float fragmentDepth = gl_FragCoord.z; 3915 3916 vec3 packedGroup = texture2D(tGroupTex, vUv).rgb; 3917 float group = packedGroup == vec3(0.0) ? -1.0 : unpackRGBToInt(packedGroup); 3918 3919 // apply per-group transparency 3920 #if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive) || defined(dRenderVariant_tracing)) 3921 float transparency = 0.0; 3922 #if defined(dTransparencyType_instance)
3923 transparency = readFromTexture(tTransparency, vInstance, uTransparencyTexDim).a; 3924 #elif defined(dTransparencyType_groupInstance) 3925 transparency = readFromTexture(tTransparency, vInstance * float(uGroupCount) + group, uTransparencyTexDim).a; 3926 #endif 3927 transparency *= uTransparencyStrength; 3928 3929 float ta = 1.0 - transparency; 3930 if (transparency < 0.09) ta = 1.0; // hard cutoff looks better 3931 3932 #if defined(dRenderVariant_pick) 3933 if (ta * uAlpha < uPickingAlphaThreshold) 3934 discard; // ignore so the element below can be picked 3935 #elif defined(dRenderVariant_emissive) 3936 if (ta < 1.0) 3937 discard; // emissive not supported with transparency 3938 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 3939 material.a *= ta; 3940 #endif 3941 #endif 3942 3943 if ((uRenderMask == MaskOpaque && material.a < 1.0) || 3944 (uRenderMask == MaskTransparent && material.a == 1.0) 3945 ) { 3946 discard; 3947 } 3948 3949 #if defined(dNeedsMarker) 3950 float marker = uMarker; 3951 if (group == -1.0) { 3952 marker = 0.0; 3953 } else if (uMarker == -1.0) { 3954 marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a; 3955 marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win 3956 } 3957 #endif 3958 3959 #if defined(dRenderVariant_color) || defined(dRenderVariant_tracing) || defined(dRenderVariant_emissive) 3960 float emissive = uEmissive; 3961 if (group == -1.0) { 3962 emissive = 0.0; 3963 } else { 3964 #ifdef dEmissive 3965 #if defined(dEmissiveType_instance) 3966 emissive += readFromTexture(tEmissive, vInstance, uEmissiveTexDim).a * uEmissiveStrength; 3967 #elif defined(dEmissiveType_groupInstance) 3968 emissive += readFromTexture(tEmissive, vInstance * float(uGroupCount) + group, uEmissiveTexDim).a * uEmissiveStrength; 3969 #endif 3970 #endif 3971 } 3972 #endif 3973 3974 #if defined(dRenderVariant_pick) 3975 if (group == -1.0) discard; 3976 3977 #include check_picking_alpha 3978 #ifdef requiredDrawBuffers 3979 gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0); 3980 gl_FragData[1] = vec4(packIntToRGB(vInstance), 1.0); 3981 gl_FragData[2] = vec4(packIntToRGB(group), 1.0); 3982 gl_FragData[3] = packDepthToRGBA(fragmentDepth); 3983 #else 3984 gl_FragColor = vColor; 3985 if (uPickType == 1) { 3986 gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0); 3987 } else if (uPickType == 2) { 3988 gl_FragColor = vec4(packIntToRGB(vInstance), 1.0); 3989 } else { 3990 gl_FragColor = vec4(packIntToRGB(group), 1.0); 3991 } 3992 #endif 3993 #elif defined(dRenderVariant_depth) 3994 if (uRenderMask == MaskOpaque) { 3995 gl_FragColor = packDepthToRGBA(fragmentDepth); 3996 } else if (uRenderMask == MaskTransparent) { 3997 gl_FragColor = packDepthWithAlphaToRGBA(fragmentDepth, material.a); 3998 } 3999 #elif defined(dRenderVariant_marking) 4000 if (uMarkingType == 1) { 4001 if (marker > 0.0) 4002 discard; 4003 gl_FragColor = packDepthToRGBA(fragmentDepth); 4004 } else { 4005 if (marker == 0.0) 4006 discard; 4007 float depthTest = 1.0; 4008 if (uMarkingDepthTest) { 4009 depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0; 4010 } 4011 bool isHighlight = intMod(marker, 2.0) > 0.1; 4012 float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); 4013 float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ)); 4014 if (fogFactor == 1.0) 4015 discard; 4016 gl_FragColor = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor); 4017 } 4018 #elif defined(dRenderVariant_emissive) 4019 gl_FragColor = vec4(emissive); 4020 #elif defined(dRenderVariant_color) || defined(dRenderVariant_tracing) 4021 #ifdef dUsePalette 4022 if (material.rgb == vec3(1.0)) { 4023 material.rgb = uPaletteDefault; 4024 } else { 4025 float v = ((material.r * 256.0 * 256.0 * 255.0 + material.g * 256.0 * 255.0 + material.b * 255.0) - 1.0) / PALETTE_SCALE; 4026 material.rgb = texture2D(tPalette, vec2(v, 0.0)).rgb; 4027 } 4028 #endif 4029 4030 // mix material with overpaint 4031 #if defined(dOverpaint) 4032 vec4 overpaint = vec4(0.0); 4033 if (group != -1.0) { 4034 #if defined(dOverpaintType_instance) 4035 overpaint = readFromTexture(tOverpaint, vInstance, uOverpaintTexDim); 4036 #elif defined(dOverpaintType_groupInstance) 4037 overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim); 4038 #endif 4039 overpaint *= uOverpaintStrength; 4040 } 4041 material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a); 4042 #endif 4043 4044 gl_FragColor = material; 4045 #include apply_marker_color 4046 4047 #if defined(dRenderVariant_color) 4048 #include apply_fog 4049 #include wboit_write 4050 #include dpoit_write 4051 #elif defined(dRenderVariant_tracing) 4052 gl_FragData[1] = vec4(normalize(vViewPosition), emissive); 4053 gl_FragData[2] = vec4(material.rgb, uDensity); 4054 #endif 4055 #endif 4056} 4057`),t1}var oU;function Kt(){if(oU)return qr;
4057oU=1,Object.defineProperty(qr,"__esModule",{value:!0}),qr.ImageShaderCode=qr.DirectVolumeShaderCode=qr.MeshShaderCode=qr.LinesShaderCode=qr.TextShaderCode=qr.CylindersShaderCode=qr.SpheresShaderCode=qr.PointsShaderCode=void 0,qr.ShaderCode=K,qr.addShaderDefines=_e;const e=Yn(),t=on(),r=Gt(),n=(0,e.idFactory)(),i=Ore(),c=kre(),o=Fre(),s=Lre(),h=Nre(),f=qre(),y=Ure(),_=jre(),g=Gre(),a=zre(),d=Hre(),p=Wre(),u=$re(),m=Xre(),v=Kre(),b=Yre(),P=Qre(),C=Zre(),l=Jre(),S=ene(),T=tne(),A=rne(),x=nne(),M=ine(),D=ane(),V=one(),R=sne(),E=cne(),I=une(),B=lne(),w=dne(),O=fne(),F=mne(),L=pne(),U={apply_fog:i.apply_fog,apply_interior_color:c.apply_interior_color,apply_light_color:o.apply_light_color,apply_marker_color:s.apply_marker_color,assign_clipping_varying:h.assign_clipping_varying,assign_color_varying:f.assign_color_varying,assign_group:y.assign_group,assign_marker_varying:_.assign_marker_varying,assign_material_color:g.assign_material_color,assign_position:a.assign_position,assign_size:d.assign_size,check_picking_alpha:p.check_picking_alpha,check_transparency:u.check_transparency,clip_instance:m.clip_instance,clip_pixel:v.clip_pixel,color_frag_params:b.color_frag_params,color_vert_params:P.color_vert_params,common_animation:C.common_animation,common_clip:l.common_clip,common_frag_params:S.common_frag_params,common_vert_params:T.common_vert_params,common:A.common,fade_lod:x.fade_lod,float_to_rgba:M.float_to_rgba,light_frag_params:D.light_frag_params,normal_frag_params:V.normal_frag_params,read_from_texture:R.read_from_texture,rgba_to_float:E.rgba_to_float,size_vert_params:I.size_vert_params,texture3d_from_1d_trilinear:B.texture3d_from_1d_trilinear,texture3d_from_2d_linear:w.texture3d_from_2d_linear,texture3d_from_2d_nearest:O.texture3d_from_2d_nearest,wboit_write:F.wboit_write,dpoit_write:L.dpoit_write},q=/^(?!\/\/)\s*#include\s+(\S+)/gm,N=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*\+\+i\s*\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g,k=/[ \t]*\/\/.*\n/g,j=/[ \t]*\/\*[\s\S]*?\*\//g,H=/\n{2,}/g;function G(be){return be.replace(q,(xe,we)=>{const Be=U[we];if(!Be)throw new Error(`empty chunk, '${we}'`);return Be}).trim().replace(k,` 4058`).replace(j,` 4059`).replace(H,` 4060`)}function z(be){return be.replace(N,W)}function W(be,xe,we,Be){let Me="";for(let Re=parseInt(xe);Re<parseInt(we);++Re)Me+=Be.replace(/\[\s*i\s*\]/g,`[${Re}]`).replace(/UNROLLED_LOOP_INDEX/g,`${Re}`);return Me}function X(be,xe){return xe.dLightCount&&(be=be.replace(/dLightCount/g,`${xe.dLightCount.ref.value}`)),xe.dClipObjectCount&&(be=be.replace(/dClipObjectCount/g,`${xe.dClipObjectCount.ref.value}`)),be}function Y(be,xe){return z(X(be,xe))}function K(be,xe,we,Be={},Me={},Re){return{id:n(),name:be,vert:G(xe),frag:G(we),extensions:Be,outTypes:Me,ignoreDefine:Re}}function Q(be,xe,we){var Be;if(xe.startsWith("color")||xe==="tracing"){if(be==="dLightCount")return!!(!((Be=we.dIgnoreLight)===null||Be===void 0)&&Be.ref.value)}else{const Me=["dSubstanceType","dSubstance","dColorMarker","dCelShaded","dLightCount"];return xe!=="depth"&&!xe.startsWith("pick")&&Me.push("dXrayShaded"),xe!=="emissive"&&Me.push("dColorType","dUsePalette","dOverpaintType","dOverpaint","dEmissiveType","dEmissive"),Me.includes(be)}return!1}function J(be,xe,we){return be==="dLightCount"?!0:Q(be,xe,we)}const ae=hne(),te=gne();qr.PointsShaderCode=K("points",ae.points_vert,te.points_frag,{drawBuffers:"optional"},{},J);const ne=yne(),$=vne();qr.SpheresShaderCode=K("spheres",ne.spheres_vert,$.spheres_frag,{fragDepth:"required",drawBuffers:"optional"},{},Q);const ie=bne(),Z=_ne();qr.CylindersShaderCode=K("cylinders",ie.cylinders_vert,Z.cylinders_frag,{fragDepth:"required",drawBuffers:"optional"},{},Q);const re=Sne(),oe=Cne();qr.TextShaderCode=K("text",re.text_vert,oe.text_frag,{fragDepth:"optional",drawBuffers:"optional"},{},J);const ce=Pne(),ue=Tne();qr.LinesShaderCode=K("lines",ce.lines_vert,ue.lines_frag,{drawBuffers:"optional"},{},J);const pe=xne(),he=Ane();qr.MeshShaderCode=K("mesh",pe.mesh_vert,he.mesh_frag,{drawBuffers:"optional"},{},Q);const fe=Mne(),de=Dne();qr.DirectVolumeShaderCode=K("direct-volume",fe.directVolume_vert,de.directVolume_frag,{fragDepth:"optional",drawBuffers:"optional"},{},Q);const ge=Ine(),Ce=wne();qr.ImageShaderCode=K("image",ge.image_vert,Ce.image_frag,{drawBuffers:"optional"},{},J);function ve(be,xe){var we;if(be===void 0)return"";const Be=((we=be.dRenderVariant)===null||we===void 0?void 0:we.ref.value)||"",Me=[];for(const Re in be){if(xe?.(Re,Be,be))continue;const Ve=be[Re].ref.value;Ve!==void 0&&(typeof Ve=="string"?Me.push(`#define ${Re}_${Ve}`):typeof Ve=="number"?Me.push(`#define ${Re} ${Ve}`):typeof Ve=="boolean"?Ve&&Me.push(`#define ${Re}`):(0,r.assertUnreachable)(Ve))}return Me.join(` 4061`)+` 4062`}function le(be,xe){const we=[];if(xe.drawBuffers){if(be.drawBuffers)we.push("#define requiredDrawBuffers");else if(xe.drawBuffers==="required")throw new Error("required 'GL_EXT_draw_buffers' extension not available")}if(xe.multiDraw){if(be.multiDraw)we.push("#extension GL_ANGLE_multi_draw : require"),we.push("#define enabledMultiDraw");else if(xe.multiDraw==="required")throw new Error("required 'GL_ANGLE_multi_draw' extension not available")}return we.join(` 4063`)+` 4064`}function me(be,xe){const we=["#extension GL_OES_standard_derivatives : enable"];
4064if(xe.fragDepth){if(be.fragDepth)we.push("#extension GL_EXT_frag_depth : enable"),we.push("#define enabledFragDepth");else if(xe.fragDepth==="required")throw new Error("required 'GL_EXT_frag_depth' extension not available")}if(xe.drawBuffers){if(be.drawBuffers)we.push("#extension GL_EXT_draw_buffers : require"),we.push("#define requiredDrawBuffers"),we.push("#define gl_FragColor gl_FragData[0]");else if(xe.drawBuffers==="required")throw new Error("required 'GL_EXT_draw_buffers' extension not available")}if(xe.shaderTextureLod){if(be.shaderTextureLod)we.push("#extension GL_EXT_shader_texture_lod : enable"),we.push("#define enabledShaderTextureLod");else if(xe.shaderTextureLod==="required")throw new Error("required 'GL_EXT_shader_texture_lod' extension not available")}return be.depthTexture&&we.push("#define depthTextureSupport"),we.join(` 4065`)+` 4066`}const ee=` 4067#define attribute in 4068#define varying out 4069#define texture2D texture 4070`,se=` 4071#define varying in 4072#define texture2D texture 4073#define textureCube texture 4074#define texture2DLodEXT textureLod 4075#define textureCubeLodEXT textureLod 4076 4077#define gl_FragColor out_FragData0 4078#define gl_FragDepthEXT gl_FragDepth 4079`;function ye(be,xe){const we=["#version 300 es"];if(xe.drawBuffers&&be.drawBuffers&&we.push("#define requiredDrawBuffers"),xe.multiDraw){if(be.multiDraw)we.push("#extension GL_ANGLE_multi_draw : require"),we.push("#define enabledMultiDraw");else if(xe.multiDraw==="required")throw new Error("required 'GL_ANGLE_multi_draw' extension not available")}if(xe.clipCullDistance){if(be.clipCullDistance)we.push("#extension GL_ANGLE_clip_cull_distance : enable"),we.push("#define enabledClipCullDistance");else if(xe.clipCullDistance==="required")throw new Error("required 'GL_ANGLE_clip_cull_distance' extension not available")}if(xe.conservativeDepth){if(be.conservativeDepth)we.push("#extension GL_EXT_conservative_depth : enable"),we.push("#define enabledConservativeDepth");else if(xe.conservativeDepth==="required")throw new Error("required 'GL_EXT_conservative_depth' extension not available")}if(xe.multiview2){if(be.multiview2)we.push("#extension GL_OVR_multiview2 : require"),we.push("#define enabledMultiview2");else if(xe.multiview2==="required")throw new Error("required 'GL_OVR_multiview2' extension not available")}return be.noNonInstancedActiveAttribs&&we.push("#define noNonInstancedActiveAttribs"),we.push(ee),we.join(` 4080`)+` 4081`}function Se(be,xe,we,Be){const Me=["#version 300 es",`layout(location = 0) out highp ${Be[0]||"vec4"} out_FragData0;`];if(we.fragDepth&&be.fragDepth&&Me.push("#define enabledFragDepth"),we.drawBuffers&&be.drawBuffers){Me.push("#define requiredDrawBuffers");for(let Re=1,Te=xe.maxDrawBuffers;Re<Te;++Re)Me.push(`layout(location = ${Re}) out highp ${Be[Re]||"vec4"} out_FragData${Re};`)}return we.shaderTextureLod&&be.shaderTextureLod&&Me.push("#define enabledShaderTextureLod"),be.depthTexture&&Me.push("#define depthTextureSupport"),Me.push(se),Me.join(` 4082`)+` 4083`}function Ae(be){return be.replace(/gl_FragData\[([0-9]+)\]/g,"out_FragData$1")}function _e(be,xe,we,Be,Me){const Re=ve(Be,Me.ignoreDefine),Te=ve(Be,Me.ignoreDefine),Ve=(0,t.isWebGL2)(be)?ye(xe,Me.extensions):le(xe,Me.extensions),qe=(0,t.isWebGL2)(be)?Se(xe,we,Me.extensions,Me.outTypes):me(xe,Me.extensions),ke=(0,t.isWebGL2)(be)?Ae(Me.frag):Me.frag;return{id:n(),name:Me.name,vert:`${Ve}${Re}${Y(Me.vert,Be)}`,frag:`${qe}${Te}${Y(ke,Be)}`,extensions:Me.extensions,outTypes:Me.outTypes}}return qr}var Uo={},sU;function sQ(){if(sU)return Uo;sU=1,Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.getUniformType=r,Uo.isArrayUniform=n,Uo.getUniformSetters=m,Uo.getUniformGlslType=v,Uo.isUniformValueScalar=b,Uo.cloneUniformValues=P;const e=et(),t=vr();function r(C,l){switch(l){case"b":case"b[]":return C.BOOL;case"f":case"f[]":return C.FLOAT;case"i":case"i[]":return C.INT;case"v2":case"v2[]":return C.FLOAT_VEC2;case"v3":case"v3[]":return C.FLOAT_VEC3;case"v4":case"v4[]":return C.FLOAT_VEC4;case"q":case"q[]":return C.FLOAT_VEC4;case"iv2":case"iv2[]":return C.INT_VEC2;
4083case"iv3":case"iv3[]":return C.INT_VEC3;case"iv4":case"iv4[]":return C.INT_VEC4;case"m3":case"m3[]":return C.FLOAT_MAT3;case"m4":case"m4[]":return C.FLOAT_MAT4;default:console.error(`unknown uniform kind '${l}'`)}}function n(C){return C.endsWith("[]")}function i(C,l,S){C.uniform1f(l,S)}function c(C,l,S){C.uniform1fv(l,S)}function o(C,l,S){C.uniform1i(l,S)}function s(C,l,S){C.uniform1iv(l,S)}function h(C,l,S){C.uniform2fv(l,S)}function f(C,l,S){C.uniform3fv(l,S)}function y(C,l,S){C.uniform4fv(l,S)}function _(C,l,S){C.uniform2iv(l,S)}function g(C,l,S){C.uniform3iv(l,S)}function a(C,l,S){C.uniform4iv(l,S)}function d(C,l,S){C.uniformMatrix3fv(l,!1,S)}function p(C,l,S){C.uniformMatrix4fv(l,!1,S)}function u(C){switch(C){case"f":return i;case"f[]":return c;case"i":case"t":case"b":return o;case"i[]":case"t[]":case"b[]":return s;case"v2":case"v2[]":return h;case"v3":case"v3[]":return f;case"v4":case"v4[]":return y;case"q":case"q[]":return y;case"iv2":case"iv2[]":return _;case"iv3":case"iv3[]":return g;case"iv4":case"iv4[]":return a;case"m3":case"m3[]":return d;case"m4":case"m4[]":return p}}function m(C){const l={};return Object.keys(C).forEach(S=>{const T=C[S];T.type==="uniform"?l[S]=u(T.kind):T.type==="texture"&&(l[S]=u("t"))}),l}function v(C){switch(C){case"f":return"float";case"i":return"int";case"t":return"sampler2D";case"b":return"bool";case"v2":return"vec2";case"v3":return"vec3";case"v4":return"vec4";case"q":return"vec4";case"m3":return"mat3";case"m4":return"mat4"}throw new Error(`${C} has no primitive GLSL type.`)}function b(C){switch(C){case"f":case"i":case"b":return!0;default:return!1}}function P(C){const l={};return Object.keys(C).forEach(S=>{l[S]=e.ValueCell.create((0,t.deepClone)(C[S].ref.value))}),l}return Uo}var Li={},gn={},cU;function bn(){if(cU)return gn;cU=1,Object.defineProperty(gn,"__esModule",{value:!0}),gn.getTarget=s,gn.getFormat=h,gn.getInternalFormat=f,gn.getBytesPerElement=_,gn.getType=d,gn.getFilter=p,gn.getAttachment=u,gn.createTexture=C,gn.createTextures=l,gn.loadImageTexture=S,gn.getCubeTarget=T,gn.createCubeTexture=A,gn.isNullTexture=M,gn.createNullTexture=D;const e=et(),t=Yn(),r=on(),n=Gt(),i=vr(),c=er(),o=(0,t.idFactory)();function s(V,R){switch(R){case"image-uint8":return V.TEXTURE_2D;case"image-float32":return V.TEXTURE_2D;case"image-float16":return V.TEXTURE_2D;case"image-depth":return V.TEXTURE_2D}if((0,r.isWebGL2)(V))switch(R){case"image-int32":return V.TEXTURE_2D;case"volume-uint8":return V.TEXTURE_3D;case"volume-float32":return V.TEXTURE_3D;case"volume-float16":return V.TEXTURE_3D}throw new Error(`unknown texture kind '${R}'`)}function h(V,R,E){switch(R){case"alpha":return(0,r.isWebGL2)(V)&&(E==="float"||E==="fp16")?V.RED:(0,r.isWebGL2)(V)&&E==="int"?V.RED_INTEGER:V.ALPHA;case"rgb":return(0,r.isWebGL2)(V)&&E==="int"?V.RGB_INTEGER:V.RGB;case"rg":if((0,r.isWebGL2)(V)&&(E==="float"||E==="fp16"))return V.RG;if((0,r.isWebGL2)(V)&&E==="int")return V.RG_INTEGER;throw new Error('texture format "rg" requires webgl2 and type "float" or int"');case"rgba":return(0,r.isWebGL2)(V)&&E==="int"?V.RGBA_INTEGER:V.RGBA;case"depth":return V.DEPTH_COMPONENT}}function f(V,R,E){if((0,r.isWebGL2)(V))switch(R){case"alpha":switch(E){case"ubyte":return V.ALPHA;case"float":return V.R32F;case"fp16":return V.R16F;case"int":return V.R32I}case"rg":switch(E){case"ubyte":return V.RG;case"float":return V.RG32F;case"fp16":return V.RG16F;case"int":return V.RG32I}case"rgb":switch(E){case"ubyte":return V.RGB;case"float":return V.RGB32F;case"fp16":return V.RGB16F;case"int":return V.RGB32I}case"rgba":switch(E){case"ubyte":return V.RGBA;case"float":return V.RGBA32F;case"fp16":return V.RGBA16F;case"int":return V.RGBA32I}case"depth":switch(E){case"ushort":return V.DEPTH_COMPONENT16;case"float":return V.DEPTH_COMPONENT32F}}return h(V,R,E)}function y(V,R,E,I,B){return _(V,R)*E*I*(B||1)}function _(V,R){return g(V)*a(R)}function g(V){switch(V){case"alpha":return 1;case"rg":return 2;case"rgb":return 3;case"rgba":return 4;case"depth":return 4}}function a(V){switch(V){case"ubyte":return 1;case"ushort":return 2;case"float":return 4;case"fp16":return 2;case"int":return 4}}function d(V,R,E){switch(E){case"ubyte":return V.UNSIGNED_BYTE;case"ushort":return V.UNSIGNED_SHORT;case"float":return V.FLOAT;case"fp16":if(R.textureHalfFloat)return R.textureHalfFloat.HALF_FLOAT;throw new Error('extension "texture_half_float" unavailable');case"int":if((0,r.isWebGL2)(V))return V.INT;throw new Error('texture type "int" requires webgl2')}}function p(V,R){switch(R){case"nearest":return V.NEAREST;case"linear":return V.LINEAR}}function u(V,R,E){switch(E){case"depth":return V.DEPTH_ATTACHMENT;case"stencil":return V.STENCIL_ATTACHMENT;case"color0":case 0:return V.COLOR_ATTACHMENT0}if(R.drawBuffers)switch(E){case"color1":case 1:return R.drawBuffers.COLOR_ATTACHMENT1;case"color2":case 2:return R.drawBuffers.COLOR_ATTACHMENT2;case"color3":case 3:return R.drawBuffers.COLOR_ATTACHMENT3;case"color4":case 4:return R.drawBuffers.COLOR_ATTACHMENT4;case"color5":case 5:return R.drawBuffers.COLOR_ATTACHMENT5;case"color6":case 6:return R.drawBuffers.COLOR_ATTACHMENT6;case"color7":case 7:return R.drawBuffers.COLOR_ATTACHMENT7}throw new Error("unknown texture attachment")}function m(V){return typeof HTMLImageElement<"u"&&V instanceof HTMLImageElement}function v(V,R,E){return R===E.TEXTURE_2D}function b(V,R,E){return R===E.TEXTURE_3D}function P(V){const R=V.createTexture();if(R===null)throw new Error("Could not create WebGL texture");return R}function C(V,R,E,I,B,w){const O=o();let F=P(V);if(E.endsWith("float32")&&B!=="float"||E.endsWith("float16")&&B!=="fp16"||E.endsWith("uint8")&&B!=="ubyte"||E.endsWith("int32")&&B!=="int"||E.endsWith("depth")&&B!=="ushort"&&B!=="float")throw new Error(`texture kind '${E}' and type '${B}' are incompatible`);
4083if(!R.depthTexture&&I==="depth")throw new Error("extension 'WEBGL_depth_texture' needed for 'depth' texture format");const L=s(V,E),U=p(V,w),q=h(V,I,B),N=f(V,I,B),k=d(V,R,B);function j(){V.bindTexture(L,F),V.texParameteri(L,V.TEXTURE_MAG_FILTER,U),V.texParameteri(L,V.TEXTURE_MIN_FILTER,U),V.texParameteri(L,V.TEXTURE_WRAP_S,V.CLAMP_TO_EDGE),V.texParameteri(L,V.TEXTURE_WRAP_T,V.CLAMP_TO_EDGE),V.bindTexture(L,null)}j();let H=0,G=0,z=0,W,X=!1,Y=!1;function K(te,ne,$){if(te===0||ne===0||(0,r.isWebGL2)(V)&&L===V.TEXTURE_3D&&$===0)throw new Error("empty textures are not allowed");if(!(H===te&&G===ne&&z===($||0)))if(H=te,G=ne,z=$||0,V.bindTexture(L,F),L===V.TEXTURE_2D)V.texImage2D(L,0,N,H,G,0,q,k,null);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D&&z!==void 0)V.texImage3D(L,0,N,H,G,z,0,q,k,null);else throw new Error("unknown texture target")}K(1,1,(0,r.isWebGL2)(V)&&L===V.TEXTURE_3D?1:0);function Q(te,ne=!1){if(te.width===0||te.height===0||!m(te)&&(0,r.isWebGL2)(V)&&b(te,L,V)&&te.depth===0)throw new Error("empty textures are not allowed");if(V.bindTexture(L,F),V.pixelStorei(V.UNPACK_ALIGNMENT,1),V.pixelStorei(V.UNPACK_COLORSPACE_CONVERSION_WEBGL,V.NONE),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),m(te))H=te.width,G=te.height,V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),V.bindTexture(V.TEXTURE_2D,F),V.texImage2D(V.TEXTURE_2D,0,N,q,k,te);else if(v(te,L,V)){const $=te.filter?p(V,te.filter):U;V.texParameteri(L,V.TEXTURE_MAG_FILTER,$),V.texParameteri(L,V.TEXTURE_MIN_FILTER,$),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!!te.flipY),ne?V.texSubImage2D(L,0,0,0,te.width,te.height,q,k,te.array):(H=te.width,G=te.height,V.texImage2D(L,0,N,H,G,0,q,k,te.array))}else if((0,r.isWebGL2)(V)&&b(te,L,V))V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),ne?V.texSubImage3D(L,0,0,0,0,te.width,te.height,te.depth,q,k,te.array):(H=te.width,G=te.height,z=te.depth,V.texImage3D(L,0,N,H,G,z,0,q,k,te.array));else throw new Error("unknown texture target");V.bindTexture(L,null),W=te}function J(){if(L!==V.TEXTURE_2D)throw new Error("mipmap only supported for 2d textures");if((0,r.isWebGL2)(V)||(0,c.isPowerOfTwo)(H)&&(0,c.isPowerOfTwo)(G))V.bindTexture(L,F),V.texParameteri(L,V.TEXTURE_MIN_FILTER,V.LINEAR_MIPMAP_LINEAR),V.generateMipmap(L),V.bindTexture(L,null),X=!0;else throw new Error("mipmap unsupported for non-power-of-two textures and webgl1")}function ae(te,ne,$){if(te.bind(),L===V.TEXTURE_2D)V.framebufferTexture2D(V.FRAMEBUFFER,u(V,R,ne),V.TEXTURE_2D,F,0);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D){if($===void 0)throw new Error("need `layer` to attach 3D texture");V.framebufferTextureLayer(V.FRAMEBUFFER,u(V,R,ne),F,0,$)}else throw new Error("unknown/unsupported texture target")}return{id:O,target:L,format:q,internalFormat:N,type:k,filter:U,getWidth:()=>H,getHeight:()=>G,getDepth:()=>z,getByteCount:()=>y(I,B,H,G,z),define:K,load:Q,mipmap:J,bind:te=>{V.activeTexture(V.TEXTURE0+te),V.bindTexture(L,F)},unbind:te=>{V.activeTexture(V.TEXTURE0+te),V.bindTexture(L,null)},attachFramebuffer:ae,detachFramebuffer:(te,ne)=>{if(te.bind(),L===V.TEXTURE_2D)V.framebufferTexture2D(V.FRAMEBUFFER,u(V,R,ne),V.TEXTURE_2D,null,0);else if((0,r.isWebGL2)(V)&&L===V.TEXTURE_3D)V.framebufferTextureLayer(V.FRAMEBUFFER,u(V,R,ne),null,0,0);else throw new Error("unknown texture target")},reset:()=>{F=P(V),j();const[te,ne,$]=[H,G,z];H=0,G=0,z=0,K(te,ne,$),W&&Q(W),X&&J()},destroy:()=>{Y||(V.deleteTexture(F),Y=!0)}}}function l(V,R,E){const{resources:I}=V,B=[];return Object.keys(R).forEach(w=>{const O=R[w];if(O.type==="texture"){const F=E[w];if(F)if(O.kind==="texture")B[B.length]=[w,F.ref.value];else{const L=I.texture(O.kind,O.format,O.dataType,O.filter);L.load(F.ref.value),B[B.length]=[w,L]}}}),B}function S(V,R,E){const I=new Image;I.onload=function(){E.load(I),e.ValueCell.update(R,E)},I.src=V}function T(V,R){switch(R){case"nx":return V.TEXTURE_CUBE_MAP_NEGATIVE_X;case"ny":return V.TEXTURE_CUBE_MAP_NEGATIVE_Y;case"nz":return V.TEXTURE_CUBE_MAP_NEGATIVE_Z;case"px":return V.TEXTURE_CUBE_MAP_POSITIVE_X;case"py":return V.TEXTURE_CUBE_MAP_POSITIVE_Y;case"pz":return V.TEXTURE_CUBE_MAP_POSITIVE_Z}}function A(V,R,E,I){const B=V.TEXTURE_CUBE_MAP,w=V.LINEAR,O=V.RGBA,F=V.RGBA,L=V.UNSIGNED_BYTE;let U=0,q=V.createTexture();V.bindTexture(B,q);function N(G,z,W,X){U===0&&(U=W.width),V.bindTexture(B,q),V.texImage2D(G,z,O,U,U,0,F,L,null),V.pixelStorei(V.UNPACK_ALIGNMENT,4),
4083V.pixelStorei(V.UNPACK_COLORSPACE_CONVERSION_WEBGL,V.NONE),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,!1),V.bindTexture(B,q),V.texImage2D(G,z,O,F,L,W),j+=1,j===6&&(H||(E?(V.texParameteri(B,V.TEXTURE_MIN_FILTER,V.LINEAR_MIPMAP_LINEAR),V.generateMipmap(B)):V.texParameteri(B,V.TEXTURE_MIN_FILTER,w),V.texParameteri(B,V.TEXTURE_MAG_FILTER,w)),X||I?.(H))}const k=[];let j=0;(0,i.objectForEach)(R,(G,z)=>{if(!G)return;const W=0,X=T(V,z),Y=new Image;G instanceof File?Y.src=URL.createObjectURL(G):(0,n.isPromiseLike)(G)?G.then(K=>{Y.src=URL.createObjectURL(K)}):Y.src=G,k.push({cubeTarget:X,level:W,image:Y}),Y.addEventListener("load",()=>{N(X,W,Y,!1)}),Y.addEventListener("error",()=>{I?.(!0)})});let H=!1;return{id:o(),target:B,format:F,internalFormat:O,type:L,filter:w,getWidth:()=>U,getHeight:()=>U,getDepth:()=>0,getByteCount:()=>y("rgba","ubyte",U,U,0)*6*(E?2:1),define:()=>{},load:()=>{},mipmap:()=>{},bind:G=>{V.activeTexture(V.TEXTURE0+G),V.bindTexture(B,q)},unbind:G=>{V.activeTexture(V.TEXTURE0+G),V.bindTexture(B,null)},attachFramebuffer:()=>{},detachFramebuffer:()=>{},reset:()=>{q=P(V),V.bindTexture(B,q),j=0;for(const{cubeTarget:G,level:z,image:W}of k)N(G,z,W,!0)},destroy:()=>{H||(V.deleteTexture(q),H=!0)}}}const x=-1;function M(V){return V.format===x}function D(V){var R;const E=(R=V?.TEXTURE_2D)!==null&&R!==void 0?R:3553;return{id:o(),target:E,format:x,internalFormat:0,type:0,filter:0,getWidth:()=>0,getHeight:()=>0,getDepth:()=>0,getByteCount:()=>0,define:()=>{},load:()=>{},mipmap:()=>{},bind:I=>{V&&(V.activeTexture(V.TEXTURE0+I),V.bindTexture(E,null))},unbind:I=>{V&&(V.activeTexture(V.TEXTURE0+I),V.bindTexture(E,null))},attachFramebuffer:()=>{throw new Error("cannot attach null-texture to a framebuffer")},detachFramebuffer:()=>{throw new Error("cannot detach null-texture from a framebuffer")},reset:()=>{},destroy:()=>{}}}return gn}var uU;function _w(){if(uU)return Li;uU=1,Object.defineProperty(Li,"__esModule",{value:!0}),Li.getUsageHint=c,Li.getDataType=o,Li.getBufferType=h,Li.getBuffer=f,Li.getAttribType=_,Li.createAttributeBuffer=g,Li.createAttributeBuffers=a,Li.createElementsBuffer=d,Li.createPixelPackBuffer=p;const e=Yn(),t=Gt(),r=on(),n=bn(),i=(0,e.idFactory)();function c(u,m){switch(m){case"static":return u.STATIC_DRAW;case"dynamic":return u.DYNAMIC_DRAW;case"stream":return u.STREAM_DRAW;default:(0,t.assertUnreachable)(m)}}function o(u,m){switch(m){case"uint8":return u.UNSIGNED_BYTE;case"int8":return u.BYTE;case"uint16":return u.UNSIGNED_SHORT;case"int16":return u.SHORT;case"uint32":return u.UNSIGNED_INT;case"int32":return u.INT;case"float32":return u.FLOAT;default:(0,t.assertUnreachable)(m)}}function s(u,m){if(m instanceof Uint8Array)return u.UNSIGNED_BYTE;if(m instanceof Int8Array)return u.BYTE;if(m instanceof Uint16Array)return u.UNSIGNED_SHORT;if(m instanceof Int16Array)return u.SHORT;if(m instanceof Uint32Array)return u.UNSIGNED_INT;if(m instanceof Int32Array)return u.INT;if(m instanceof Float32Array)return u.FLOAT;(0,t.assertUnreachable)(m)}function h(u,m){switch(m){case"attribute":return u.ARRAY_BUFFER;case"elements":return u.ELEMENT_ARRAY_BUFFER;case"uniform":if((0,r.isWebGL2)(u))return u.UNIFORM_BUFFER;throw new Error("WebGL2 is required for uniform buffers");case"pixel-pack":if((0,r.isWebGL2)(u))return u.PIXEL_PACK_BUFFER;throw new Error("WebGL2 is required for pixel-pack buffers")}}function f(u){const m=u.createBuffer();if(m===null)throw new Error("Could not create WebGL buffer");return m}function y(u,m,v,b){let P=f(u);const C=c(u,v),l=h(u,b),S=s(u,m),T=m.BYTES_PER_ELEMENT,A=m.length;function x(D){u.bindBuffer(l,P),u.bufferData(l,D,C)}x(m);let M=!1;return{id:i(),_usageHint:C,_bufferType:l,_dataType:S,_bpe:T,length:A,getByteCount:()=>T*A,getBuffer:()=>P,updateData:x,updateSubData:(D,V,R)=>{u.bindBuffer(l,P),R-V===D.length?u.bufferSubData(l,0,D):u.bufferSubData(l,V*T,D.subarray(V,V+R))},reset:()=>{P=f(u),x(m)},destroy:()=>{M||(u.deleteBuffer(P),M=!0)}}}function _(u,m,v){switch(m){case"float32":switch(v){case 1:return u.FLOAT;case 2:return u.FLOAT_VEC2;case 3:return u.FLOAT_VEC3;case 4:return u.FLOAT_VEC4;case 16:return u.FLOAT_MAT4}default:(0,t.assertUnreachable)(m)}}function g(u,m,v,b,P,C,l="static"){const{instancedArrays:S}=v,T=y(u,b,l,"attribute"),{_bufferType:A,_dataType:x,_bpe:M}=T;return{...T,divisor:C,bind:D=>{if(u.bindBuffer(A,T.getBuffer()),P===16)for(let V=0;V<4;++V)m.enableVertexAttrib(D+V),u.vertexAttribPointer(D+V,4,x,!1,16*M,V*4*M),S.vertexAttribDivisor(D+V,C);else m.enableVertexAttrib(D),u.vertexAttribPointer(D,P,x,!1,0,0),S.vertexAttribDivisor(D,C)},changeOffset:(D,V)=>{const R=V*M*P;if(u.bindBuffer(A,T.getBuffer()),P===16)for(let E=0;E<4;++E)u.vertexAttribPointer(D+E,4,x,!1,16*M,E*4*M+R);else u.vertexAttribPointer(D,P,x,!1,0,R)}}}function a(u,m,v){const b=[];return Object.keys(m).forEach(P=>{const C=m[P];C.type==="attribute"&&(b[b.length]=[P,u.resources.attribute(v[P].ref.value,C.itemSize,C.divisor)])}),b}function d(u,m,v="static"){const b=y(u,m,v,"elements");return{...b,bind:()=>{u.bindBuffer(u.ELEMENT_ARRAY_BUFFER,b.getBuffer())}}}function p(u,m,v,b){let P=f(u);const C=(0,n.getType)(u,m,b),l=(0,n.getFormat)(u,v,b),S=(0,n.getBytesPerElement)(v,b);let T=0,A=0;function x(V,R,E,I){T=E,A=I,u.bindBuffer(u.PIXEL_PACK_BUFFER,P),u.bufferData(u.PIXEL_PACK_BUFFER,E*I*S,u.STREAM_READ),u.readPixels(V,R,E,I,l,C,0),u.bindBuffer(u.PIXEL_PACK_BUFFER,null)}function M(V){u.bindBuffer(u.PIXEL_PACK_BUFFER,P),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,V),u.bindBuffer(u.PIXEL_PACK_BUFFER,null)}let D=!1;return{id:i(),_type:C,_format:l,_bpe:S,getByteCount:()=>S*T*A,read:x,getSubData:M,reset:()=>{P=f(u)},destroy:()=>{D||(u.deleteBuffer(P),D=!0)}}}return Li}
4083var lU;function cQ(){if(lU)return ay;lU=1,Object.defineProperty(ay,"__esModule",{value:!0}),ay.getProgram=_,ay.createProgram=a;const e=Kt(),t=sQ(),r=_w(),n=Yn(),i=Ct(),c=on(),o=(0,n.idFactory)();function s(d,p,u){const m={};return Object.keys(u).forEach(v=>{const b=u[v];if(b.type==="attribute"){const P=d.getAttribLocation(p,v);m[v]=P}else if(b.type==="uniform"){let P=d.getUniformLocation(p,v);P===null&&(0,t.isArrayUniform)(b.kind)&&(P=d.getUniformLocation(p,v+"[0]")),m[v]=P}else if(b.type==="texture"){const P=d.getUniformLocation(p,v);m[v]=P}}),m}function h(d,p,u){const m=d.getProgramParameter(p,d.ACTIVE_ATTRIBUTES);for(let v=0;v<m;++v){const b=d.getActiveAttrib(p,v);if(b){const{name:P,type:C}=b;if(P.startsWith("__activeAttribute")||P==="gl_InstanceID"||P==="gl_VertexID"||P==="gl_DrawID"||P==="gl_ViewID_OVR")continue;const l=u[P];if(l===void 0)throw new Error(`missing 'uniform' or 'texture' with name '${P}' in schema`);if(l.type!=="attribute")throw new Error(`'${P}' must be of type 'attribute' but is '${l.type}'`);const S=(0,r.getAttribType)(d,l.kind,l.itemSize);if(S!==C)throw new Error(`unexpected attribute type '${S}' for ${P}, expected '${C}'`)}}}function f(d,p,u){const m=d.getProgramParameter(p,d.ACTIVE_UNIFORMS);for(let v=0;v<m;++v){const b=d.getActiveUniform(p,v);if(b){const{name:P,type:C}=b;if(P.startsWith("__activeUniform")||P==="gl_InstanceID"||P==="gl_VertexID"||P==="gl_DrawID"||P==="gl_ViewID_OVR")continue;const l=P.replace(/[[0-9]+\]$/,""),S=u[l];if(S===void 0)throw new Error(`missing 'uniform' or 'texture' with name '${P}' in schema`);if(S.type==="uniform"){if((0,t.getUniformType)(d,S.kind)!==C)throw new Error(`unexpected uniform type for ${P}`)}else if(S.type==="texture"){if(S.kind==="image-float32"||S.kind==="image-uint8"){if(C!==d.SAMPLER_2D)throw new Error(`unexpected sampler type for '${P}'`)}else if(S.kind==="volume-float32"||S.kind==="volume-uint8")if((0,c.isWebGL2)(d)){if(C!==d.SAMPLER_3D)throw new Error(`unexpected sampler type for '${P}'`)}else throw new Error("WebGL2 is required to use SAMPLER_3D")}else throw new Error(`'${P}' must be of type 'uniform' or 'texture' but is '${S.type}'`)}}}function y(d,p){if(!d.getProgramParameter(p,d.LINK_STATUS))throw new Error(`Could not compile WebGL program. 4084 4085${d.getProgramInfoLog(p)}`)}function _(d){const p=d.createProgram();if(p===null)throw new Error("Could not create WebGL program");return p}function g(d){if(typeof d!="string")throw new Error(`unknown program variant: ${d}`);return d.startsWith("color")?"color":d.startsWith("pick")?"pick":d}function a(d,p,u,m,v,b){const{defineValues:P,shaderCode:C,schema:l}=b;let S=_(d);const T=o(),A=g(P.dRenderVariant.ref.value),x=(0,e.addShaderDefines)(d,u,m,P,C),M=v("vert",x.vert),D=v("frag",x.frag);let V,R,E=!1,I=!1,B=!1;function w(){M.attach(S),D.attach(S),d.linkProgram(S),i.isDebugMode&&y(d,S),E=!0}A==="compute"&&w();function O(){V=s(d,S,l),R=(0,t.getUniformSetters)(l),i.isDebugMode&&(h(d,S,l),f(d,S,l)),I=!0}return{id:T,variant:A,isReady:()=>I,link:()=>{E||w()},finalize(F){return E||w(),!I&&(F||!u.parallelShaderCompile||d.getProgramParameter(S,u.parallelShaderCompile.COMPLETION_STATUS))&&O(),I},use:()=>{if(i.isDebugMode&&!I)throw new Error(`program not finalized: ${A}`);p.currentProgramId=T,d.useProgram(S)},setUniforms:F=>{for(let L=0,U=F.length;L<U;++L){const[q,N]=F[L];if(N){const k=V[q];k!==null&&R[q](d,k,N.ref.value)}}},uniform:(F,L)=>{const U=V[F];U!==null&&R[F](d,U,L)},bindAttributes:F=>{p.clearVertexAttribsState();for(let L=0,U=F.length;L<U;++L){const[q,N]=F[L],k=V[q];k!==-1&&N.bind(k)}p.disableUnusedVertexAttribs()},offsetAttributes:(F,L)=>{for(let U=0,q=F.length;U<q;++U){const[N,k]=F[U],j=V[N];j!==-1&&k.changeOffset(j,L)}},bindTextures:(F,L)=>{for(let U=0,q=F.length;U<q;++U){const[N,k]=F[U],j=V[N];j!=null&&(k.bind(U+L),R[N](d,j,U+L))}},reset:()=>{S=_(d),E&&w(),I&&O()},destroy:()=>{B||(M.destroy(),D.destroy(),d.deleteProgram(S),B=!0)}}}return ay}var r1={},dU;function uQ(){if(dU)return r1;dU=1,Object.defineProperty(r1,"__esModule",{value:!0}),r1.getShader=i,r1.createShader=c;const e=Yn(),t=Ct(),r=(0,e.idFactory)();function n(o){const s=o.split(` 4086`);for(let h=0;h<s.length;++h)s[h]=h+1+": "+s[h];return s.join(` 4087`)}function i(o,s){const{type:h,source:f}=s,y=o.createShader(h==="vert"?o.VERTEX_SHADER:o.FRAGMENT_SHADER);if(y===null)throw new Error(`Error creating ${h} shader`);if(o.shaderSource(y,f),o.compileShader(y),t.isDebugMode&&o.getShaderParameter(y,o.COMPILE_STATUS)===!1)throw console.warn(`'${h}' shader info log '${o.getShaderInfoLog(y)}' 4088${n(f)}
4088`),new Error(`Error compiling ${h} shader`);return y}function c(o,s){let h=i(o,s);return{id:r(),attach:f=>{o.attachShader(f,h)},reset:()=>{h=i(o,s)},destroy:()=>{o.deleteShader(h)}}}return r1}var fU;function on(){if(fU)return qt;fU=1,Object.defineProperty(qt,"__esModule",{value:!0}),qt.isWebGL=i,qt.isWebGL2=c,qt.getInstancedArrays=o,qt.getStandardDerivatives=s,qt.getElementIndexUint=h,qt.getVertexArrayObject=f,qt.getTextureFloat=y,qt.getTextureFloatLinear=_,qt.getTextureHalfFloat=g,qt.getTextureHalfFloatLinear=a,qt.getBlendMinMax=d,qt.getFragDepth=p,qt.getColorBufferFloat=u,qt.getColorBufferHalfFloat=m,qt.getDrawBuffers=v,qt.getDrawBuffersIndexed=b,qt.getShaderTextureLod=P,qt.getDepthTexture=C,qt.getSRGB=l,qt.getDisjointTimerQuery=S,qt.getMultiDraw=T,qt.getDrawInstancedBaseVertexBaseInstance=A,qt.getMultiDrawInstancedBaseVertexBaseInstance=x,qt.getParallelShaderCompile=M,qt.getFboRenderMipmap=D,qt.getProvokingVertex=V,qt.getClipCullDistance=R,qt.getConservativeDepth=E,qt.getStencilTexturing=I,qt.getClipControl=B,qt.getRenderSnorm=w,qt.getRenderSharedExponent=O,qt.getTextureNorm16=F,qt.getDepthClamp=L,qt.getMultiview2=U,qt.getNoNonInstancedActiveAttribs=q,qt.testColorBuffer=H;const e=Ct(),t=lQ(),r=cQ(),n=uQ();function i(G){return typeof WebGLRenderingContext<"u"&&G instanceof WebGLRenderingContext}function c(G){return typeof WebGL2RenderingContext<"u"&&G instanceof WebGL2RenderingContext}function o(G){if(c(G))return{drawArraysInstanced:G.drawArraysInstanced.bind(G),drawElementsInstanced:G.drawElementsInstanced.bind(G),vertexAttribDivisor:G.vertexAttribDivisor.bind(G),VERTEX_ATTRIB_ARRAY_DIVISOR:G.VERTEX_ATTRIB_ARRAY_DIVISOR};{const z=G.getExtension("ANGLE_instanced_arrays");return z===null?null:{drawArraysInstanced:z.drawArraysInstancedANGLE.bind(z),drawElementsInstanced:z.drawElementsInstancedANGLE.bind(z),vertexAttribDivisor:z.vertexAttribDivisorANGLE.bind(z),VERTEX_ATTRIB_ARRAY_DIVISOR:z.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE}}}function s(G){if(c(G))return{FRAGMENT_SHADER_DERIVATIVE_HINT:G.FRAGMENT_SHADER_DERIVATIVE_HINT};{const z=G.getExtension("OES_standard_derivatives");return z===null?null:{FRAGMENT_SHADER_DERIVATIVE_HINT:z.FRAGMENT_SHADER_DERIVATIVE_HINT_OES}}}function h(G){return c(G)?{}:G.getExtension("OES_element_index_uint")}function f(G){if(c(G))return{VERTEX_ARRAY_BINDING:G.VERTEX_ARRAY_BINDING,bindVertexArray:G.bindVertexArray.bind(G),createVertexArray:G.createVertexArray.bind(G),deleteVertexArray:G.deleteVertexArray.bind(G),isVertexArray:G.isVertexArray.bind(G)};{const z=G.getExtension("OES_vertex_array_object");return z===null?null:{VERTEX_ARRAY_BINDING:z.VERTEX_ARRAY_BINDING_OES,bindVertexArray:z.bindVertexArrayOES.bind(z),createVertexArray:z.createVertexArrayOES.bind(z),deleteVertexArray:z.deleteVertexArrayOES.bind(z),isVertexArray:z.isVertexArrayOES.bind(z)}}}function y(G){return c(G)?{}:G.getExtension("OES_texture_float")}function _(G){return G.getExtension("OES_texture_float_linear")}function g(G){if(c(G))return{HALF_FLOAT:G.HALF_FLOAT};{const z=G.getExtension("OES_texture_half_float");return z===null?null:{HALF_FLOAT:z.HALF_FLOAT_OES}}}function a(G){return G.getExtension("OES_texture_half_float_linear")}function d(G){if(c(G))return{MIN:G.MIN,MAX:G.MAX};{const z=G.getExtension("EXT_blend_minmax");return z===null?null:{MIN:z.MIN_EXT,MAX:z.MAX_EXT}}}function p(G){return c(G)?{}:G.getExtension("EXT_frag_depth")}function u(G){if(c(G))return G.getExtension("EXT_color_buffer_float")===null?null:(G.getExtension("EXT_float_blend"),{RGBA32F:G.RGBA32F});{const z=G.getExtension("WEBGL_color_buffer_float");return z===null?(G.getExtension("OES_texture_float"),H(G,G.FLOAT)?{RGBA32F:34836}:null):(G.getExtension("EXT_float_blend"),{RGBA32F:z.RGBA32F_EXT})}}function m(G){if(c(G))return G.getExtension("EXT_color_buffer_half_float")===null?null:(G.getExtension("EXT_float_blend"),{RGBA16F:G.RGBA16F});{const z=G.getExtension("EXT_color_buffer_half_float");return z===null?(G.getExtension("OES_texture_half_float"),H(G,36193)?{RGBA16F:34842}:null):(G.getExtension("EXT_float_blend"),{RGBA16F:z.RGBA16F_EXT})}}function v(G){if(c(G))return{drawBuffers:G.drawBuffers.bind(G),COLOR_ATTACHMENT0:G.COLOR_ATTACHMENT0,COLOR_ATTACHMENT1:G.COLOR_ATTACHMENT1,COLOR_ATTACHMENT2:G.COLOR_ATTACHMENT2,COLOR_ATTACHMENT3:G.COLOR_ATTACHMENT3,COLOR_ATTACHMENT4:G.COLOR_ATTACHMENT4,COLOR_ATTACHMENT5:G.COLOR_ATTACHMENT5,COLOR_ATTACHMENT6:G.COLOR_ATTACHMENT6,COLOR_ATTACHMENT7:G.COLOR_ATTACHMENT7,DRAW_BUFFER0:G.DRAW_BUFFER0,DRAW_BUFFER1:G.DRAW_BUFFER1,DRAW_BUFFER2:G.DRAW_BUFFER2,DRAW_BUFFER3:G.DRAW_BUFFER3,DRAW_BUFFER4:G.DRAW_BUFFER4,DRAW_BUFFER5:G.DRAW_BUFFER5,DRAW_BUFFER6:G.DRAW_BUFFER6,DRAW_BUFFER7:G.DRAW_BUFFER7,MAX_COLOR_ATTACHMENTS:G.MAX_COLOR_ATTACHMENTS,MAX_DRAW_BUFFERS:G.MAX_DRAW_BUFFERS};{const z=G.getExtension("WEBGL_draw_buffers");return z===null?null:{drawBuffers:z.drawBuffersWEBGL.bind(z),COLOR_ATTACHMENT0:z.COLOR_ATTACHMENT0_WEBGL,COLOR_ATTACHMENT1:z.COLOR_ATTACHMENT1_WEBGL,COLOR_ATTACHMENT2:z.COLOR_ATTACHMENT2_WEBGL,COLOR_ATTACHMENT3:z.COLOR_ATTACHMENT3_WEBGL,COLOR_ATTACHMENT4:z.COLOR_ATTACHMENT4_WEBGL,COLOR_ATTACHMENT5:z.COLOR_ATTACHMENT5_WEBGL,COLOR_ATTACHMENT6:z.COLOR_ATTACHMENT6_WEBGL,COLOR_ATTACHMENT7:z.COLOR_ATTACHMENT7_WEBGL,DRAW_BUFFER0:z.DRAW_BUFFER0_WEBGL,DRAW_BUFFER1:z.DRAW_BUFFER1_WEBGL,DRAW_BUFFER2:z.DRAW_BUFFER2_WEBGL,DRAW_BUFFER3:z.DRAW_BUFFER3_WEBGL,DRAW_BUFFER4:z.DRAW_BUFFER4_WEBGL,DRAW_BUFFER5:z.DRAW_BUFFER5_WEBGL,DRAW_BUFFER6:z.DRAW_BUFFER6_WEBGL,DRAW_BUFFER7:z.DRAW_BUFFER7_WEBGL,MAX_COLOR_ATTACHMENTS:z.MAX_COLOR_ATTACHMENTS_WEBGL,MAX_DRAW_BUFFERS:z.MAX_DRAW_BUFFERS_WEBGL}}}function b(G){const z=G.getExtension("OES_draw_buffers_indexed");return z===null?null:{enablei:z.enableiOES.bind(z),disablei:z.disableiOES.bind(z),blendEquationi:z.blendEquationiOES.bind(z),blendEquationSeparatei:z.blendEquationSeparateiOES.bind(z),blendFunci:z.blendFunciOES.bind(z),blendFuncSeparatei:z.blendFuncSeparateiOES.bind(z),colorMaski:z.colorMaskiOES.bind(z)}}function P(G){return c(G)?{}:G.getExtension("EXT_shader_texture_lod")}function C(G){if(c(G))return{UNSIGNED_INT_24_8:G.UNSIGNED_INT_24_8};{const z=G.getExtension("WEBGL_depth_texture");return z===null?null:{UNSIGNED_INT_24_8:z.UNSIGNED_INT_24_8_WEBGL}}}function l(G){if(c(G))return{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:G.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,SRGB8_ALPHA8:G.SRGB8_ALPHA8,SRGB8:G.SRGB8,SRGB:G.SRGB};{const z=G.getExtension("EXT_sRGB");return z===null?null:{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:z.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT,S
4088RGB8_ALPHA8:z.SRGB8_ALPHA8_EXT,SRGB8:z.SRGB_ALPHA_EXT,SRGB:z.SRGB_EXT}}}function S(G){if(c(G)){const z=G.getExtension("EXT_disjoint_timer_query_webgl2")||G.getExtension("EXT_disjoint_timer_query");return z===null?null:{QUERY_COUNTER_BITS:z.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:G.CURRENT_QUERY,QUERY_RESULT:G.QUERY_RESULT,QUERY_RESULT_AVAILABLE:G.QUERY_RESULT_AVAILABLE,TIME_ELAPSED:z.TIME_ELAPSED_EXT,TIMESTAMP:z.TIMESTAMP_EXT,GPU_DISJOINT:z.GPU_DISJOINT_EXT,createQuery:G.createQuery.bind(G),deleteQuery:G.deleteQuery.bind(G),isQuery:G.isQuery.bind(G),beginQuery:G.beginQuery.bind(G),endQuery:G.endQuery.bind(G),queryCounter:z.queryCounterEXT.bind(z),getQuery:G.getQuery.bind(G),getQueryParameter:G.getQueryParameter.bind(G)}}else{const z=G.getExtension("EXT_disjoint_timer_query");return z===null?null:{QUERY_COUNTER_BITS:z.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:z.CURRENT_QUERY_EXT,QUERY_RESULT:z.QUERY_RESULT_EXT,QUERY_RESULT_AVAILABLE:z.QUERY_RESULT_AVAILABLE_EXT,TIME_ELAPSED:z.TIME_ELAPSED_EXT,TIMESTAMP:z.TIMESTAMP_EXT,GPU_DISJOINT:z.GPU_DISJOINT_EXT,createQuery:z.createQueryEXT.bind(z),deleteQuery:z.deleteQueryEXT.bind(z),isQuery:z.isQueryEXT.bind(z),beginQuery:z.beginQueryEXT.bind(z),endQuery:z.endQueryEXT.bind(z),queryCounter:z.queryCounterEXT.bind(z),getQuery:z.getQueryEXT.bind(z),getQueryParameter:z.getQueryObjectEXT.bind(z)}}}function T(G){const z=G.getExtension("WEBGL_multi_draw");return z?{multiDrawArrays:z.multiDrawArraysWEBGL.bind(z),multiDrawElements:z.multiDrawElementsWEBGL.bind(z),multiDrawArraysInstanced:z.multiDrawArraysInstancedWE
4088BGL.bind(z),multiDrawElementsInstanced:z.multiDrawElementsInstancedWEBGL.bind(z)}:null}function A(G){const z=G.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");return z?{drawArraysInstancedBaseInstance:z.drawArraysInstancedBaseInstanceWEBGL.bind(z),drawElementsInstancedBaseVertexBaseInstance:z.drawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(z)}:null}function x(G){const z=G.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");return z?{multiDrawArraysInstancedBaseInstance:z.multiDrawArraysInstancedBaseInstanceWEBGL.bind(z),multiDrawElementsInstancedBaseVertexBaseInstance:z.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(z)}:null}function M(G){const z=G.getExtension("KHR_parallel_shader_compile");return z===null?null:{COMPLETION_STATUS:z.COMPLETION_STATUS_KHR}}function D(G){return c(G)?{}:G.getExtension("OES_fbo_render_mipmap")}function V(G){if(c(G)){const z=G.getExtension("WEBGL_provoking_vertex");if(z)return{FIRST_VERTEX_CONVENTION:z.FIRST_VERTEX_CONVENTION_WEBGL,LAST_VERTEX_CONVENTION:z.LAST_VERTEX_CONVENTION_WEBGL,PROVOKING_VERTEX:z.PROVOKING_VERTEX_WEBGL,provokingVertex:z.provokingVertexWEBGL.bind(z)}}return null}function R(G){if(c(G)){const z=G.getExtension("WEBGL_clip_cull_distance");if(z)return{MAX_CLIP_DISTANCES:z.MAX_CLIP_DISTANCES_WEBGL,MAX_CULL_DISTANCES:z.MAX_CULL_DISTANCES_WEBGL,MAX_COMBINED_CLIP_AND_CULL_DISTANCES:z.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL,CLIP_DISTANCE0:z.CLIP_DISTANCE0_WEBGL,CLIP_DISTANCE1:z.CLIP_DISTANCE1_WEBGL,CLIP_DISTANCE2:z.CLIP_DISTANCE2_WEBGL,CLIP_DISTANCE3:z.CLIP_DISTANCE3_WEBGL,CLIP_DISTANCE4:z.CLIP_DISTANCE4_WEBGL,CLIP_DISTANCE5:z.CLIP_DISTANCE5_WEBGL,CLIP_DISTANCE6:z.CLIP_DISTANCE6_WEBGL,CLIP_DISTANCE7:z.CLIP_DISTANCE7_WEBGL}}return null}function E(G){return c(G)&&G.getExtension("EXT_conservative_depth")?{}:null}function I(G){if(c(G)){const z=G.getExtension("WEBGL_stencil_texturing");if(z)return{DEPTH_STENCIL_TEXTURE_MODE:z.DEPTH_STENCIL_TEXTURE_MODE_WEBGL,STENCIL_INDEX:z.STENCIL_INDEX_WEBGL}}return null}function B(G){const z=G.getExtension("EXT_clip_control");return z?{LOWER_LEFT:z.LOWER_LEFT_EXT,UPPER_LEFT:z.UPPER_LEFT_EXT,NEGATIVE_ONE_TO_ONE:z.NEGATIVE_ONE_TO_ONE_EXT,ZERO_TO_ONE:z.ZERO_TO_ONE_EXT,CLIP_ORIGIN:z.CLIP_ORIGIN_EXT,CLIP_DEPTH_MODE:z.CLIP_DEPTH_MODE_EXT,clipControl:z.clipControlEXT.bind(z)}:null}function w(G){return c(G)&&G.getExtension("EXT_render_snorm")?{}:null}function O(G){return c(G)&&G.getExtension("WEBGL_render_shared_exponent")?{}:null}function F(G){const z=G.getExtension("EXT_texture_norm16");return z?{R16:z.R16_EXT,RG16:z.RG16_EXT,RGB16:z.RGB16_EXT,RGBA16:z.RGBA16_EXT,R16_SNORM:z.R16_SNORM_EXT,RG16_SNORM:z.RG16_SNORM_EXT,RGB16_SNORM:z.RGB16_SNORM_EXT,RGBA16_SNORM:z.RGBA16_SNORM_EXT}:null}function L(G){const z=G.getExtension("EXT_depth_clamp");return z?{DEPTH_CLAMP:z.DEPTH_CLAMP_EXT}:null}function U(G){if(c(G)){const z=G.getExtension("OVR_multiview2");if(z)return{FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS:z.FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR,FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX:z.FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR,MAX_VIEWS:z.MAX_VIEWS_OVR,FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS:z.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR,framebufferTextureMultiview:z.framebufferTextureMultiviewOVR.bind(z)}}return null}function q(G){if(!c(G))return!1;if(typeof navigator<"u"){const z=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);return z?parseInt(z[1])>=85:!0}return!1}const N=` 4089attribute vec4 aPosition; 4090 4091void main() { 4092 gl_Position = aPosition; 4093}`,k=` 4094precision mediump float; 4095uniform vec4 uColor; 4096uniform sampler2D uTexture; 4097 4098void main() { 4099 gl_FragColor = texture2D(uTexture, vec2(0.5, 0.5)) * uColor; 4100}`,j=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function H(G,z){const W=(0,n.getShader)(G,{type:"vert",source:N}),X=(0,n.getShader)(G,{type:"frag",source:k}
4100);if(!W||!X)return!1;const Y=(0,r.getProgram)(G);G.attachShader(Y,W),G.attachShader(Y,X),G.linkProgram(Y),G.useProgram(Y);const K=G.getAttribLocation(Y,"aPosition"),Q=G.getUniformLocation(Y,"uColor");if(!Q)return e.isDebugMode&&console.log("error getting 'uColor' uniform location"),!1;const J=G.createBuffer();G.bindBuffer(G.ARRAY_BUFFER,J),G.bufferData(G.ARRAY_BUFFER,j,G.STATIC_DRAW),G.enableVertexAttribArray(K),G.vertexAttribPointer(K,2,G.FLOAT,!1,0,0);const ae=G.createTexture(),te=new Uint8Array([255,255,255,255]);G.bindTexture(G.TEXTURE_2D,ae),G.texImage2D(G.TEXTURE_2D,0,G.RGBA,1,1,0,G.RGBA,G.UNSIGNED_BYTE,te);const ne=G.createTexture();G.bindTexture(G.TEXTURE_2D,ne),G.texImage2D(G.TEXTURE_2D,0,G.RGBA,1,1,0,G.RGBA,z,null),G.texParameteri(G.TEXTURE_2D,G.TEXTURE_MIN_FILTER,G.NEAREST),G.texParameteri(G.TEXTURE_2D,G.TEXTURE_MAG_FILTER,G.NEAREST);const $=G.createFramebuffer();if(G.bindFramebuffer(G.FRAMEBUFFER,$),G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,ne,0),G.checkFramebufferStatus(G.FRAMEBUFFER)!==G.FRAMEBUFFER_COMPLETE)return e.isDebugMode&&console.log(`error creating framebuffer for '${z}'`),!1;G.bindTexture(G.TEXTURE_2D,ae),G.uniform4fv(Q,[0,10,20,1]),G.drawArrays(G.TRIANGLES,0,6),G.bindTexture(G.TEXTURE_2D,ne),G.bindFramebuffer(G.FRAMEBUFFER,null),G.clearColor(1,0,0,1),G.clear(G.COLOR_BUFFER_BIT),G.uniform4fv(Q,[0,1/10,1/20,1]),G.drawArrays(G.TRIANGLES,0,6);const Z=new Uint8Array(4);if(G.readPixels(0,0,1,1,G.RGBA,G.UNSIGNED_BYTE,Z),Z[0]!==0||Z[1]<248||Z[2]<248||Z[3]<254)return e.isDebugMode&&console.log(`not able to actually render to '${z}' texture`),!1;if(z===G.FLOAT){G.bindFramebuffer(G.FRAMEBUFFER,$);const re=new Float32Array(4);G.readPixels(0,0,1,1,G.RGBA,G.FLOAT,re);const oe=G.getError();if(oe)return e.isDebugMode&&console.log(`error reading float pixels: '${(0,t.getErrorDescription)(G,oe)}'`),!1}return!0}return qt}var fd={},mU;function Sw(){if(mU)return fd;mU=1,Object.defineProperty(fd,"__esModule",{value:!0}),fd.checkFramebufferStatus=i,fd.createFramebuffer=o,fd.createNullFramebuffer=s;const e=Yn(),t=on(),r=(0,e.idFactory)();function n(h,f){switch(f){case h.FRAMEBUFFER_COMPLETE:return"complete";case h.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"incomplete attachment";case h.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"incomplete missing attachment";case h.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"incomplete dimensions";case h.FRAMEBUFFER_UNSUPPORTED:return"unsupported"}if((0,t.isWebGL2)(h))switch(f){case h.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:return"incomplete multisample";case h.RENDERBUFFER_SAMPLES:return"renderbuffer samples"}return"unknown error"}function i(h,f){const y=h.checkFramebufferStatus(h.FRAMEBUFFER);if(y!==h.FRAMEBUFFER_COMPLETE){const _=n(h,y);throw new Error(`Framebuffer status: ${_}${f?` (${f})`:""}`)}}function c(h){const f=h.createFramebuffer();if(f===null)throw new Error("Could not create WebGL framebuffer");return f}function o(h){let f=c(h),y=!1;return{id:r(),bind:()=>h.bindFramebuffer(h.FRAMEBUFFER,f),reset:()=>{f=c(h)},destroy:()=>{y||(h.deleteFramebuffer(f),y=!0)}}}function s(){return{id:r(),bind:()=>{},reset:()=>{},destroy:()=>{}}}return fd}var n1={},pU;function Vne(){if(pU)return n1;pU=1,Object.defineProperty(n1,"__esModule",{value:!0}),n1.createExtensions=n,n1.resetExtensions=i;const e=on(),t=Ct(),r=vr();function n(c){const o=(0,e.getInstancedArrays)(c);if(o===null)throw new Error('Could not find support for "instanced_arrays"');const s=(0,e.getElementIndexUint)(c);if(s===null)throw new Error('Could not find support for "element_index_uint"');const h=(0,e.getStandardDerivatives)(c);if(h===null)throw new Error('Could not find support for "standard_derivatives"');const f=(0,e.getTextureFloat)(c);t.isDebugMode&&f===null&&console.log('Could not find support for "texture_float"');const y=(0,e.getTextureFloatLinear)(c);t.isDebugMode&&y===null&&console.log('Could not find support for "texture_float_linear"');const _=(0,e.getTextureHalfFloat)(c);t.isDebugMode&&_===null&&console.log('Could not find support for "texture_half_float"');const g=(0,e.getTextureHalfFloatLinear)(c);t.isDebugMode&&g===null&&console.log('Could not find support for "texture_half_float_linear"');const a=(0,e.getDepthTexture)(c);t.isDebugMode&&a===null&&console.log('Could not find support for "depth_texture"');const d=(0,e.getBlendMinMax)(c);t.isDebugMode&&d===null&&console.log('Could not find support for "blend_minmax"');const p=(0,e.getVertexArrayObject)(c);t.isDebugMode&&p===null&&console.log('Could not find support for "vertex_array_object"');const u=(0,e.getFragDepth)(c);t.isDebugMode&&u===null&&console.log('Could not find support for "frag_depth"');const m=(0,e.getColorBufferFloat)(c);t.isDebugMode&&m===null&&console.log('Could not find support for "color_buffer_float"');const v=(0,e.getColorBufferHalfFloat)(c);t.isDebugMode&&v===null&&console.log('Could not find support for "color_buffer_half_float"');const b=(0,e.getDrawBuffers)(c);t.isDebugMode&&b===null&&console.log('Could not find support for "draw_buffers"');const P=(0,e.getDrawBuffersIndexed)(c);t.isDebugMode&&P===null&&console.log('Could not find support for "draw_buffers_indexed"');const C=(0,e.getShaderTextureLod)(c);t.isDebugMode&&C===null&&console.log('Could not find support for "shader_texture_lod"');const l=(0,e.getSRGB)(c);t.isDebugMode&&l===null&&console.log('Could not find support for "sRGB"');const S=(0,e.getDisjointTimerQuery)(c);t.isDebugMode&&S===null&&console.log('Could not find support for "disjoint_timer_query"');const T=(0,e.getMultiDraw)(c);t.isDebugMode&&T===null&&console.log('Could not find support for "multi_draw"');const A=(0,e.getDrawInstancedBaseVertexBaseInstance)(c);t.isDebugMode&&A===null&&console.log('Could not find support for "draw_instanced_base_vertex_base_instance"');const x=(0,e.getMultiDrawInstancedBaseVertexBaseInstance)(c);t.isDebugMode&&x===null&&console.log('Could not find support for "multi_draw_instanced_base_vertex_base_instance"');const M=(0,e.getParallelShaderCompile)(c);t.isDebugMode&&M===null&&console.log('Could not find support for "parallel_shader_compile"');const D=(0,e.getFboRenderMipmap)(c);t.isDebugMode&&D===null&&console.log('Could not find support for "fbo_render_mipmap"');const V=(0,e.getProvokingVertex)(c);t.isDebugMode&&V===null&&console.log('Could not find support for "provoking_vertex"');const R=(0,e.getClipCullDistance)(c);t.isDebugMode&&R===null&&console.log('Could not find support for "clip_cull_distance"');const E=(0,e.getConservativeDepth)(c);t.isDebugMode&&E===null&&console.log('Could not find support for "conservative_depth"');const I=(0,e.getStencilTexturing)(c);t.isDebugMode&&I===null&&console.log('Could not find support for "stencil_texturing"');const B=(0,e.getClipControl)(c);t.isDebugMode&&B===null&&console.log('Could not find support for "clip_control"');const w=(0,e.getRenderSnorm)(c);t.isDebugMode&&w===null&&console.log('Could not find support for "render_snorm"');const O=(0,e.getRenderSharedExponent)(c);t.isDebugMode&&O===null&&console.log('Could not find support for "render_shared_exponent"');const F=(0,e.getTextureNorm16)(c);t.isDebugMode&&F===null&&console.log('Could not find support for "texture_norm16"');const L=(0,e.getDepthClamp)(c);t.isDebugMode&&L===null&&console.log('Could not find support for "depth_clamp"');const U=(0,e.getMultiview2)(c);t.isDebugMode&&U===null&&console.log('Could not find support for "multiview2"');const q=(0,e.getNoNonInstancedActiveAttribs)(c);return{instancedArrays:o,standardDerivatives:h,elementIndexUint:s,textureFloat:f,textureFloatLinear:y,textureHalfFloat:_,textureHalfFloatLinear:g,depthTexture:a,blendMinMax:d,vertexArrayObject:p,fragDepth:u,colorBufferFloat:m,colorBufferHalfFloat:v,drawBuffers:b,drawBuffersIndexed:P,shaderTextureLod:C,sRGB:l,disjointTimerQuery:S,multiDraw:T,drawInstancedBaseVertexBaseInstance:A,multiDrawInstancedBaseVertexBaseInstance:x,parallelShaderCompile:M,fboRenderMipmap:D,provokingVertex:V,clipCullDistance:R,conservativeDepth:E,stencilTexturing:I,clipControl:B,renderSnorm:w,renderSharedExponent:O,textureNorm16:F,depthClamp:L,multiview2:U,noNonInstancedActiveAttribs:q}}function i(c,o){const s=n(c);(0,r.objectForEach)(o,(h,f)=>{f==="noNonInstancedActiveAttribs"?o.noNonInstancedActiveAttribs=s.noNonInstancedActiveAttribs:h!==null&&(s[f]===null?o[f]=null:Object.assign(h,s[f]))})}return n1}var tP={},hU;function Ene(){if(hU)return tP;
vendor: 4,245 bytes, line 4100
4100hU=1,Object.defineProperty(tP,"__esModule",{value:!0}),tP.createState=e;function e(t,r){let n={},i=t.getParameter(t.FRONT_FACE),c=t.getParameter(t.CULL_FACE_MODE),o=t.getParameter(t.DEPTH_WRITEMASK),s=t.getParameter(t.DEPTH_CLEAR_VALUE),h=t.getParameter(t.DEPTH_FUNC),f=t.getParameter(t.COLOR_WRITEMASK),y=t.getParameter(t.COLOR_CLEAR_VALUE),_=t.getParameter(t.BLEND_SRC_RGB),g=t.getParameter(t.BLEND_DST_RGB),a=t.getParameter(t.BLEND_SRC_ALPHA),d=t.getParameter(t.BLEND_DST_ALPHA),p=t.getParameter(t.BLEND_COLOR),u=t.getParameter(t.BLEND_EQUATION_RGB),m=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),b=t.getParameter(t.STENCIL_VALUE_MASK),P=t.getParameter(t.STENCIL_REF),C=t.getParameter(t.STENCIL_BACK_FUNC),l=t.getParameter(t.STENCIL_BACK_VALUE_MASK),S=t.getParameter(t.STENCIL_BACK_REF),T=t.getParameter(t.STENCIL_WRITEMASK),A=t.getParameter(t.STENCIL_BACK_WRITEMASK),x=t.getParameter(t.STENCIL_FAIL),M=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),D=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),V=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),E=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),I=t.getParameter(t.MAX_VERTEX_ATTRIBS);const B=[];let w=t.getParameter(t.VIEWPORT),O=t.getParameter(t.SCISSOR_BOX),F=r.clipControl?t.getParameter(r.clipControl.CLIP_ORIGIN):-1,L=r.clipControl?t.getParameter(r.clipControl.CLIP_DEPTH_MODE):-1;const U=()=>{for(let q=0;q<I;++q)B[q]=0};return U(),{currentProgramId:-1,currentMaterialId:-1,currentRenderItemId:-1,enable:q=>{n[q]!==!0&&(t.enable(q),n[q]=!0)},disable:q=>{n[q]!==!1&&(t.disable(q),n[q]=!1)},frontFace:q=>{q!==i&&(t.frontFace(q),i=q)},cullFace:q=>{q!==c&&(t.cullFace(q),c=q)},depthMask:q=>{q!==o&&(t.depthMask(q),o=q)},clearDepth:q=>{q!==s&&(t.clearDepth(q),s=q)},depthFunc:q=>{q!==h&&(t.depthFunc(q),h=q)},colorMask:(q,N,k,j)=>{(q!==f[0]||N!==f[1]||k!==f[2]||j!==f[3])&&(t.colorMask(q,N,k,j),f[0]=q,f[1]=N,f[2]=k,f[3]=j)},clearColor:(q,N,k,j)=>{(q!==y[0]||N!==y[1]||k!==y[2]||j!==y[3])&&(t.clearColor(q,N,k,j),y[0]=q,y[1]=N,y[2]=k,y[3]=j)},blendFunc:(q,N)=>{(q!==_||N!==g||q!==a||N!==d)&&(t.blendFunc(q,N),_=q,g=N,a=q,d=N)},blendFuncSeparate:(q,N,k,j)=>{(q!==_||N!==g||k!==a||j!==d)&&(t.blendFuncSeparate(q,N,k,j),_=q,g=N,a=k,d=j)},blendEquation:q=>{(q!==u||q!==m)&&(t.blendEquation(q),u=q,m=q)},blendEquationSeparate:(q,N)=>{(q!==u||N!==m)&&(t.blendEquationSeparate(q,N),u=q,m=N)},blendColor:(q,N,k,j)=>{(q!==p[0]||N!==p[1]||k!==p[2]||j!==p[3])&&(t.blendColor(q,N,k,j),p[0]=q,p[1]=N,p[2]=k,p[3]=j)},stencilFunc:(q,N,k)=>{(q!==v||N!==P||k!==b||q!==C||N!==S||k!==l)&&(t.stencilFunc(q,N,k),v=q,P=N,b=k,C=q,S=N,l=k)},stencilFuncSeparate:(q,N,k,j)=>{q===t.FRONT?(N!==v||k!==P||j!==b)&&(t.stencilFuncSeparate(q,N,k,j),v=N,P=k,b=j):q===t.BACK?(N!==C||k!==S||j!==l)&&(t.stencilFuncSeparate(q,N,k,j),C=N,S=k,l=j):q===t.FRONT_AND_BACK&&(N!==v||k!==P||j!==b||N!==C||k!==S||j!==l)&&(t.stencilFuncSeparate(q,N,k,j),v=N,P=k,b=j,C=N,S=k,l=j)},stencilMask:q=>{(q!==T||q!==A)&&(t.stencilMask(q),T=q,A=q)},stencilMaskSeparate:(q,N)=>{q===t.FRONT?N!==T&&(t.stencilMaskSeparate(q,N),T=N):q===t.BACK?N!==A&&(t.stencilMaskSeparate(q,N),A=N):q===t.FRONT_AND_BACK&&(N!==T||N!==A)&&(t.stencilMaskSeparate(q,N),T=N,A=N)},stencilOp:(q,N,k)=>{(q!==x||N!==D||k!==M||q!==V||N!==E||k!==R)&&(t.stencilOp(q,N,k),x=q,D=N,M=k,V=q,E=N,R=k)},stencilOpSeparate:(q,N,k,j)=>{q===t.FRONT?(N!==x||k!==D||j!==M)&&(t.stencilOpSeparate(q,N,k,j),x=N,D=k,M=j):q===t.BACK?(N!==V||k!==E||j!==R)&&(t.stencilOpSeparate(q,N,k,j),V=N,E=k,R=j):q===t.FRONT_AND_BACK&&(N!==x||k!==D||j!==M||N!==V||k!==E||j!==R)&&(t.stencilOpSeparate(q,N,k,j),x=N,D=k,M=j,V=N,E=k,R=j)},enableVertexAttrib:q=>{t.enableVertexAttribArray(q),B[q]=1},clearVertexAttribsState:U,disableUnusedVertexAttribs:()=>{for(let q=0;q<I;++q)B[q]===0&&t.disableVertexAttribArray(q)},viewport:(q,N,k,j)=>{(q!==w[0]||N!==w[1]||k!==w[2]||j!==w[3])&&(t.viewport(q,N,k,j),w[0]=q,w[1]=N,w[2]=k,w[3]=j)},scissor:(q,N,k,j)=>{(q!==O[0]||N!==O[1]||k!==O[2]||j!==O[3])&&(t.scissor(q,N,k,j),O[0]=q,O[1]=N,O[2]=k,O[3]=j)},clipControl:r.clipControl?(q,N)=>{(q!==F||N!==L)&&(r.clipControl.clipControl(q,N),F=q,L=N)}:void 0,reset:()=>{n={},i=t.getParameter(t.FRONT_FACE),c=t.getParameter(t.CULL_FACE_MODE),o=t.getParameter(t.DEPTH_WRITEMA
4100SK),s=t.getParameter(t.DEPTH_CLEAR_VALUE),h=t.getParameter(t.DEPTH_FUNC),f=t.getParameter(t.COLOR_WRITEMASK),y=t.getParameter(t.COLOR_CLEAR_VALUE),_=t.getParameter(t.BLEND_SRC_RGB),g=t.getParameter(t.BLEND_DST_RGB),a=t.getParameter(t.BLEND_SRC_ALPHA),d=t.getParameter(t.BLEND_DST_ALPHA),p=t.getParameter(t.BLEND_COLOR),u=t.getParameter(t.BLEND_EQUATION_RGB),m=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),b=t.getParameter(t.STENCIL_VALUE_MASK),P=t.getParameter(t.STENCIL_REF),C=t.getParameter(t.STENCIL_BACK_FUNC),l=t.getParameter(t.STENCIL_BACK_VALUE_MASK),S=t.getParameter(t.STENCIL_BACK_REF),T=t.getParameter(t.STENCIL_WRITEMASK),A=t.getParameter(t.STENCIL_BACK_WRITEMASK),x=t.getParameter(t.STENCIL_FAIL),M=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),D=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),V=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),E=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),I=t.getParameter(t.MAX_VERTEX_ATTRIBS),B.length=0;for(let q=0;q<I;++q)B[q]=0;w=t.getParameter(t.VIEWPORT),O=t.getParameter(t.SCISSOR_BOX),F=r.clipControl?t.getParameter(r.clipControl.CLIP_ORIGIN):-1,L=r.clipControl?t.getParameter(r.clipControl.CLIP_DEPTH_MODE):-1}}}return tP}var rP={},md={},gU;function Bne(){if(gU)return md;gU=1,Object.defineProperty(md,"__esModule",{value:!0}),md.createReference=t,md.createReferenceItem=r,md.createReferenceCache=n;const e=Vt();function t(i,c=0){return{value:i,usageCount:c}}function r(i){return{free:()=>{i.usageCount-=1},value:i.value}}function n(i,c,o){const s=new Map,h=[];return{get:f=>{const y=i(f);let _=s.get(y);return _||(_=t(c(f)),s.set(y,_),h.push(_.value)),_.usageCount+=1,r(_)},clear:()=>{s.forEach((f,y)=>{f.usageCount<=0&&(f.usageCount<0&&console.warn("Reference usageCount below zero."),o(f.value),s.delete(y),(0,e.arrayRemoveInPlace)(h,f.value))})},get count(){return s.size},values:h,dispose:()=>{s.forEach(f=>o(f.value)),s.clear(),h.length=0}}}return md}var pd={},yU;function Rne(){if(yU)return pd;yU=1,Object.defineProperty(pd,"__esModule",{value:!0}),pd.getFormat=c,pd.getAttachment=s,pd.createRenderbuffer=f;const e=Yn(),t=on(),r=Sw(),n=Ct(),i=(0,e.idFactory)();function c(y,_){switch(_){case"depth16":return y.DEPTH_COMPONENT16;case"stencil8":return y.STENCIL_INDEX8;case"rgba4":return y.RGBA4;case"depth-stencil":return y.DEPTH_STENCIL;case"depth24":if((0,t.isWebGL2)(y))return y.DEPTH_COMPONENT24;throw new Error("WebGL2 needed for `depth24` renderbuffer format");case"depth32f":if((0,t.isWebGL2)(y))return y.DEPTH_COMPONENT32F;throw new Error("WebGL2 needed for `depth32f` renderbuffer format");case"depth24-stencil8":if((0,t.isWebGL2)(y))return y.DEPTH24_STENCIL8;throw new Error("WebGL2 needed for `depth24-stencil8` renderbuffer format");case"depth32f-stencil8":if((0,t.isWebGL2)(y))return y.DEPTH32F_STENCIL8;throw new Error("WebGL2 needed for `depth32f-stencil8` renderbuffer format")}}function o(y){switch(y){case"depth16":return 4;case"stencil8":return 2;case"rgba4":return 4;case"depth-stencil":return 4;case"depth24":return 3;case"depth32f":return 4;case"depth24-stencil8":return 4;case"depth32f-stencil8":return 5}}function s(y,_){switch(_){case"depth":return y.DEPTH_ATTACHMENT;case"stencil":return y.STENCIL_ATTACHMENT;case"depth-stencil":return y.DEPTH_STENCIL_ATTACHMENT;case"color0":return y.COLOR_ATTACHMENT0}}function h(y){const _=y.createRenderbuffer();if(_===null)throw new Error("Could not create WebGL renderbuffer");return _}function f(y,_,g,a,d){let p=h(y);const u=()=>y.bindRenderbuffer(y.RENDERBUFFER,p),m=c(y,_),v=s(y,g);function b(){u(),y.renderbufferStorage(y.RENDERBUFFER,m,a,d)}b();let P=!1;return{id:i(),getByteCount:()=>o(_)*a*d,bind:u,attachFramebuffer:C=>{C.bind(),u(),y.framebufferRenderbuffer(y.FRAMEBUFFER,v,y.RENDERBUFFER,p),n.isDebugMode&&(0,r.checkFramebufferStatus)(y)},detachFramebuffer:C=>{C.bind(),u(),y.framebufferRenderbuffer(y.FRAMEBUFFER,v,y.RENDERBUFFER,null),n.isDebugMode&&(0,r.checkFramebufferStatus)(y)},setSize:(C,l)=>{a=C,d=l,b()},reset:()=>{p=h(y),b()},destroy:()=>{P||(y.deleteRenderbuffer(p),P=!0)}}}return pd}var nP={},vU;function One(){if(vU)return nP;
4100vU=1,Object.defineProperty(nP,"__esModule",{value:!0}),nP.createVertexArray=i;const t=(0,Yn().idFactory)();function r(c){const{vertexArrayObject:o}=c;if(!o)throw new Error("VertexArrayObject not supported");const s=o.createVertexArray();if(!s)throw new Error("Could not create WebGL vertex array");return s}function n(c){const{vertexArrayObject:o}=c;if(o===null)throw new Error("VertexArrayObject not supported");return o}function i(c,o,s,h,f){const y=t();let _=r(o),g=n(o);function a(){g.bindVertexArray(_),f&&f.bind(),s.bindAttributes(h),g.bindVertexArray(null),d=!0}let d=!1,p=!1;return{id:y,bind:()=>{d||a(),g.bindVertexArray(_)},update:a,reset:()=>{_=r(o),g=n(o),d=!1},destroy:()=>{p||(f&&(g.bindVertexArray(_),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,null)),g.deleteVertexArray(_),p=!0)}}}return nP}var bU;function kne(){if(bU)return rP;bU=1,Object.defineProperty(rP,"__esModule",{value:!0}),rP.createResources=d;const e=cQ(),t=uQ(),r=on(),n=Sw(),i=_w(),c=Bne(),o=_t(),s=Rne(),h=bn(),f=One(),y=ci(),_=Ct();function g(p){return typeof p=="boolean"?p?1:0:typeof p=="number"?p*1e4:(0,o.hashString)(p)}function a(p){return{...p.value,destroy:()=>{p.free()}}}function d(p,u,m,v,b){const P={attribute:new Set,elements:new Set,pixelPack:new Set,framebuffer:new Set,program:new Set,renderbuffer:new Set,shader:new Set,texture:new Set,cubeTexture:new Set,vertexArray:new Set};function C(x,M){return P[x].add(M),m.resourceCounts[x]+=1,{...M,destroy:()=>{M.destroy(),P[x].delete(M),m.resourceCounts[x]-=1}}}const l=(0,c.createReferenceCache)(x=>JSON.stringify(x),x=>C("shader",(0,t.createShader)(p,x)),x=>{x.destroy()});function S(x,M){return a(l.get({type:x,source:M}))}const T=new Set,A=(0,c.createReferenceCache)(x=>{var M;const D=[x.shaderCode.id],V=((M=x.defineValues.dRenderVariant)===null||M===void 0?void 0:M.ref.value)||"";return Object.keys(x.defineValues).forEach(R=>{var E,I;!((I=(E=x.shaderCode).ignoreDefine)===null||I===void 0)&&I.call(E,R,V,x.defineValues)||D.push((0,o.hashString)(R),g(x.defineValues[R].ref.value))}),(0,o.hashFnv32a)(D).toString()},x=>{const M=(0,e.createProgram)(p,u,v,b,S,x);return M.variant!=="compute"&&T.add(M),C("program",M)},x=>{T.delete(x),x.destroy()});return{attribute:(x,M,D,V)=>C("attribute",(0,i.createAttributeBuffer)(p,u,v,x,M,D,V)),elements:(x,M)=>C("elements",(0,i.createElementsBuffer)(p,x,M)),pixelPack:(x,M)=>{if(!(0,r.isWebGL2)(p))throw new Error("WebGL2 is required for pixel-pack buffers");return C("pixelPack",(0,i.createPixelPackBuffer)(p,v,x,M))},framebuffer:()=>C("framebuffer",(0,n.createFramebuffer)(p)),program:(x,M,D)=>a(A.get({defineValues:x,shaderCode:M,schema:D})),renderbuffer:(x,M,D,V)=>C("renderbuffer",(0,s.createRenderbuffer)(p,x,M,D,V)),shader:S,texture:(x,M,D,V)=>C("texture",(0,h.createTexture)(p,v,x,M,D,V)),cubeTexture:(x,M,D)=>C("cubeTexture",(0,h.createCubeTexture)(p,x,M,D)),vertexArray:(x,M,D)=>C("vertexArray",(0,f.createVertexArray)(p,v,x,M,D)),getByteCounts:()=>{let x=0;P.texture.forEach(I=>{x+=I.getByteCount()});let M=0;P.cubeTexture.forEach(I=>{M+=I.getByteCount()});let D=0;P.attribute.forEach(I=>{D+=I.getByteCount()});let V=0;P.elements.forEach(I=>{V+=I.getByteCount()});let R=0;P.pixelPack.forEach(I=>{R+=I.getByteCount()});let E=0;return P.renderbuffer.forEach(I=>{E+=I.getByteCount()}),{texture:x,cubeTexture:M,attribute:D,elements:V,pixelPack:R,renderbuffer:E}},linkPrograms:x=>{for(const M of T)x&&!x.includes(M.variant)||M.link()},finalizePrograms:(x,M)=>{let D=!0,V=0;for(const B of T)B.isReady()&&T.delete(B),(!x||x.includes(B.variant))&&(D=!1,V+=1);if(D)return!0;let R=!0,E=0;const I=(0,y.now)();for(const B of T)if(!(x&&!x.includes(B.variant))&&(B.finalize(M)?(T.delete(B),E+=1):R=!1,!M&&(0,y.now)()-I>16)){R=!1;break}return _.isTimingMode&&console.log(`Finalized ${E} of ${V} programs (${x?x.join(", "):"all"}) in ${((0,y.now)()-I).toFixed(2)} ms`),R},reset:()=>{P.attribute.forEach(x=>x.reset()),P.elements.forEach(x=>x.reset()),P.pixelPack.forEach(x=>x.reset()),P.framebuffer.forEach(x=>x.reset()),P.renderbuffer.forEach(x=>x.reset()),P.shader.forEach(x=>x.reset()),P.program.forEach(x=>x.reset()),P.vertexArray.forEach(x=>x.reset()),P.texture.forEach(x=>x.reset()),P.cubeTexture.forEach(x=>x.reset())},destroy:()=>{P.attribute.forEach(x=>
4100x.destroy()),P.elements.forEach(x=>x.destroy()),P.pixelPack.forEach(x=>x.destroy()),P.framebuffer.forEach(x=>x.destroy()),P.renderbuffer.forEach(x=>x.destroy()),P.shader.forEach(x=>x.destroy()),P.program.forEach(x=>x.destroy()),P.vertexArray.forEach(x=>x.destroy()),P.texture.forEach(x=>x.destroy()),P.cubeTexture.forEach(x=>x.destroy()),l.clear(),A.clear(),T.clear()}}}return rP}var iP={},_U;function Fne(){if(_U)return iP;_U=1,Object.defineProperty(iP,"__esModule",{value:!0}),iP.createRenderTarget=n;const e=Yn(),t=on(),r=(0,e.idFactory)();function n(i,c,o,s,h=!0,f="uint8",y="nearest",_="rgba"){if(_==="alpha"&&!(0,t.isWebGL2)(i))throw new Error("cannot render to alpha format in webgl1");const g=c.framebuffer(),a=f==="fp16"?c.texture("image-float16",_,"fp16",y):f==="float32"?c.texture("image-float32",_,"float",y):c.texture("image-uint8",_,"ubyte",y),d=h?(0,t.isWebGL2)(i)?c.renderbuffer("depth32f","depth",o,s):c.renderbuffer("depth16","depth",o,s):null;function p(){a.define(o,s),a.attachFramebuffer(g,"color0"),d&&d.attachFramebuffer(g)}p();let u=!1;return{id:r(),texture:a,framebuffer:g,depthRenderbuffer:d,getByteCount:()=>a.getByteCount()+(d?d.getByteCount():0),getWidth:()=>o,getHeight:()=>s,bind:()=>{g.bind()},setSize:(m,v)=>{o===m&&s===v||(o=m,s=v,a.define(o,s),d&&d.setSize(o,s))},reset:()=>{p()},destroy:()=>{u||(a.destroy(),g.destroy(),d&&d.destroy(),u=!0)}}}return iP}var i1={},SU;function Cw(){if(SU)return i1;SU=1,Object.defineProperty(i1,"__esModule",{value:!0}),i1.createTimer=c,i1.printTimerResults=s;const e=ci();function t(h,f,y){return h-=h/y,h+=f/y,h}class r{add(f,y){let _=this.avgs.get(f)||y;return _=t(_,y,this.count),this.avgs.set(f,_),_}get(f){return this.avgs.get(f)}stats(){return Object.fromEntries(this.avgs.entries())}clear(){this.avgs.clear()}constructor(f){this.count=f,this.avgs=new Map}}function n(h){h.calls.drawInstanced=0,h.calls.drawInstancedBase=0,h.calls.multiDrawInstancedBase=0,h.calls.counts=0,h.culled.lod=0,h.culled.frustum=0,h.culled.occlusion=0}function i(h){return h.disjointTimerQuery?h.disjointTimerQuery.createQuery():null}function c(h,f,y,_){var g;const a=f.disjointTimerQuery,d=(g=_?.avgCount)!==null&&g!==void 0?g:30,p=new Map,u=new Map,m=[],v=new r(d),b=new r(d);let P=[],C=null,l=!1;const S=()=>{u.clear(),m.length=0,v.clear(),b.clear(),P=[],C=null,l=!1,a&&p.forEach((A,x)=>{a.deleteQuery(x)}),p.clear()},T=()=>{if(!a)return;const A=i(f);A&&(a.beginQuery(a.TIME_ELAPSED,A),u.forEach((x,M)=>{x.queries.push(A)}),p.set(A,{refCount:u.size}),C=A)};return{resolve:()=>{const A=[];if(!a||!P.length||l)return A;p.forEach((M,D)=>{if(M.timeElapsed!==void 0)return;const V=a.getQueryParameter(D,a.QUERY_RESULT_AVAILABLE),R=h.getParameter(a.GPU_DISJOINT);if(V&&!R){const E=a.getQueryParameter(D,a.QUERY_RESULT);M.timeElapsed=E}(V||R)&&a.deleteQuery(D)});const x=[];for(const M of P)if(M.queries.every(D=>{var V;return((V=p.get(D))===null||V===void 0?void 0:V.timeElapsed)!==void 0})){let D=0;for(const V of M.queries){const R=p.get(V);D+=R.timeElapsed,R.refCount-=1}if(M.timeElapsed=D,M.root){const V=[],R=(I,B)=>{for(const w of I){const O=w.timeElapsed,F=w.cpu.end-w.cpu.start,L={label:w.label,gpuElapsed:O,gpuAvg:v.add(w.label,O),cpuElapsed:F,cpuAvg:b.add(w.label,F),children:[],calls:w.calls,note:w.note};B.push(L),R(w.children,L.children)}};R(M.children,V);const E=M.cpu.end-M.cpu.start;A.push({label:M.label,gpuElapsed:D,gpuAvg:v.add(M.label,D),cpuElapsed:E,cpuAvg:b.add(M.label,E),children:V,calls:M.calls,note:M.note})}}else x.push(M);return P=x,p.forEach((M,D)=>{M.refCount===0&&p.delete(D)}),A},mark:(A,x)=>{var M;if(!a)return;if(u.has(A))throw new Error(`Timer mark for '${A}' already exists`);const D=(M=x?.captureStats)!==null&&M!==void 0?M:!1;C!==null&&a.endQuery(a.TIME_ELAPSED);const V={label:A,queries:[],children:[],root:C===null,cpu:{start:(0,e.now)(),end:-1},captureStats:D};if(x?.note&&(V.note=x.note),u.set(A,V),m.length&&m[m.length-1].children.push(V),m.push(V),D){if(l)throw new Error("Already capturing stats");n(y),l=!0}T()},markEnd:A=>{var x;if(!a)return;const M=u.get(A);if(!M)throw new Error(`Timer mark for '${A}' does not exist`);if(((x=m.pop())===null||x===void 0?void 0:x.label)!==A)throw new Error(`Timer mark for '${A}' has pending nested mark`);a.endQuery(a.TIME_ELAPSED),u.delete(A),M.cpu.end=(0,e.now)(),M.captureStats&&(M.calls={...y.calls},l=!1),P.push(M),u.size>0?T():C=null},stats:()=>({gpu:v.stats(),cpu:b.stats()}),formatedStats:()=>{const A={},x=v.stats(),M=b.stats();for(const D of Object.keys(x)){const V=`${(x[D]/1e3/1e3).toFixed(2)}`,R=`${M[D].toFixed(2)}`;A[D]=`${V} ms | CPU: ${R} ms`}return A},clear:S,destroy:()=>{S()}}}function o(h){const f=`${(h.gpuElapsed/1e3/1e3).toFixed(2)}`,y=`${(h.gpuAvg/1e3/1e3).toFixed(2)}`,_=`${h.cpuElapsed.toFixed(2)}`,g=`${h.cpuAvg.toFixed(2)}`;return`${h.label} ${f} ms (avg. ${y} ms) | CPU: ${_} ms (avg. ${g} ms)`}function s(h){h.map(f=>{const y=o(f);f.children.length||f.calls||f.note?(console.groupCollapsed(y),f.calls&&console.log(f.calls),f.note&&console.log(f.note),s(f.children),console.groupEnd()):console.log(y)})}return i1}var CU;function lQ(){if(CU)return qo;CU=1,Object.defineProperty(qo,"__esModule",{value:!0}),qo.getGLContext=g,qo.getErrorDescription=a,qo.checkError=d,qo.glEnumToString=p,qo.readPixels=S,qo.createContext=R;const e=on(),t=Sw(),r=nt(),n=Ct(),i=Vne(),c=Ene(),o=kne(),s=Fne(),h=Rn(),f=ci(),y=bn(),_=Cw();function g(E,I){function B(O){try{return E.getContext(O,I)}catch{return null}}const w=(I?.preferWebGl1?null:B("webgl2"))||B("webgl")||B("experimental-webgl");return n.isDebugMode&&console.log(`isWebgl2: ${(0,e.isWebGL2)(w)}`),w}function a(E,I){switch(I){case E.NO_ERROR:return"no error";case E.INVALID_ENUM:return"invalid enum";case E.INVALID_VALUE:return"invalid value";case E.INVALID_OPERATION:return"invalid operation";case E.INVALID_FRAMEBUFFER_OPERATION:return"invalid framebuffer operation";case E.OUT_OF_MEMORY:return"out of memory";case E.CONTEXT_LOST_WEBGL:return"context lost"}return"unknown error"}function d(E,I){const B=E.getError();B!==E.NO_ERROR&&console.log(`WebGL error: '${a(E,B)}'${I?` (${I})`:""}`)}function p(E,I){const B=[];for(const w in E)E[w]===I&&B.push(w);return B.length?B.join(" | "):`0x${I.toString(16)}`}function u(E){const I=E.getParameter(E.MAX_TEXTURE_IMAGE_UNITS);for(let O=0;O<I;++O)E.activeTexture(E.TEXTURE0+O),E.bindTexture(E.TEXTURE_2D,null),E.bindTexture(E.TEXTURE_CUBE_MAP,null),(0,e.isWebGL2)(E)&&(E.bindTexture(E.TEXTURE_2D_ARRAY,null),E.bindTexture(E.TEXTURE_3D,null));const B=E.createBuffer();E.bindBuffer(E.ARRAY_BUFFER,B);const w=E.getParameter(E.MAX_VERTEX_ATTRIBS);for(let O=0;O<w;++O)E.vertexAttribPointer(O,1,E.FLOAT,!1,0,0);E.bindBuffer(E.ARRAY_BUFFER,null),E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,null),E.bindRenderbuffer(E.RENDERBUFFER,null),E.bindFramebuffer(E.FRAMEBUFFER,null),(0,e.isWebGL2)(E)&&(E.bindBuffer(E.UNIFORM_BUFFER,null),E.bindBuffer(E.PIXEL_PACK_BUFFER,null))}const m=new Uint8Array(4);function v(E,I,B){E.getSyncParameter(I,E.SYNC_STATUS)===E.SIGNALED?(E.deleteSync(I),B()):r.Scheduler.setImmediate(v,E,I,B)}function b(E,I){const B=E.fenceSync(E.SYNC_GPU_COMMANDS_COMPLETE,0);B?r.Scheduler.setImmediate(v,E,B,I):(console.warn("Could not create a WebGLSync object"),E.readPixels(0,0,1,1,E.RGBA,E.UNSIGNED_BYTE,m),I())}let P=!1;function C(E){return new Promise(I=>{(0,e.isWebGL2)(E)?b(E,I):(P||(console.info("Sync object not supported in WebGL"),P=!0),l(E),I())})}function l(E){E.bindFramebuffer(E.FRAMEBUFFER,null),E.readPixels(0,0,1,1,E.RGBA,E.UNSIGNED_BYTE,m)}function S(E,I,B,w,O,F){if(n.isDebugMode&&(0,t.checkFramebufferStatus)(E),F instanceof Uint8Array)E.readPixels(I,B,w,O,E.RGBA,E.UNSIGNED_BYTE,F);else if(F instanceof Float32Array)E.readPixels(I,B,w,O,E.RGBA,E.FLOAT,F);else if(F instanceof Int32Array&&(0,e.isWebGL2)(E))E.readPixels(I,B,w,O,E.RGBA_INTEGER,E.INT,F);else throw new Error("unsupported readPixels buffer type");
4100n.isDebugMode&&d(E)}function T(E,I){I?E.bindFramebuffer(E.FRAMEBUFFER,I.framebuffer):E.bindFramebuffer(E.FRAMEBUFFER,null)}function A(E,I,B){var w,O;let F=(w=I?.framebufferWidth)!==null&&w!==void 0?w:E.drawingBufferWidth;B==="screen-space"&&(F*=2);const L=(O=I?.framebufferHeight)!==null&&O!==void 0?O:E.drawingBufferHeight;return{width:F,height:L}}function x(E,I,B,w){const O=I==="vertex"?E.VERTEX_SHADER:E.FRAGMENT_SHADER,F=E[`${B.toUpperCase()}_${w.toUpperCase()}`];return E.getShaderPrecisionFormat(O,F)}function M(E,I){return{lowFloat:x(E,I,"low","float"),mediumFloat:x(E,I,"medium","float"),highFloat:x(E,I,"high","float"),lowInt:x(E,I,"low","int"),mediumInt:x(E,I,"medium","int"),highInt:x(E,I,"high","int")}}function D(){return{resourceCounts:{attribute:0,elements:0,pixelPack:0,framebuffer:0,program:0,renderbuffer:0,shader:0,texture:0,cubeTexture:0,vertexArray:0},drawCount:0,instanceCount:0,instancedDrawCount:0,calls:{drawInstanced:0,drawInstancedBase:0,multiDrawInstancedBase:0,counts:0},culled:{lod:0,frustum:0,occlusion:0}}}function V(E,I){return{maxTextureSize:E.getParameter(E.MAX_TEXTURE_SIZE),max3dTextureSize:(0,e.isWebGL2)(E)?E.getParameter(E.MAX_3D_TEXTURE_SIZE):0,maxRenderbufferSize:E.getParameter(E.MAX_RENDERBUFFER_SIZE),maxDrawBuffers:I.drawBuffers?E.getParameter(I.drawBuffers.MAX_DRAW_BUFFERS):0,maxTextureImageUnits:E.getParameter(E.MAX_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:E.getParameter(E.MAX_VERTEX_TEXTURE_IMAGE_UNITS)}}function R(E,I={}){const B=(0,i.createExtensions)(E),w=(0,c.createState)(E,B),O=D(),F=V(E,B),L=(0,o.createResources)(E,w,O,B,F),U=(0,_.createTimer)(E,B,O);if(F.maxVertexTextureImageUnits<8)throw new Error('Need "MAX_VERTEX_TEXTURE_IMAGE_UNITS" >= 8');const q={vertex:M(E,"vertex"),fragment:M(E,"fragment")};n.isDebugMode&&console.log({parameters:F,shaderPrecisionFormats:q});const N=B.provokingVertex;N?.provokingVertex(N.FIRST_VERTEX_CONVENTION);let k=!1;const j=new h.Subject;let H=I.pixelScale||1;const G={session:void 0,layer:void 0,changed:new h.Subject,clear:()=>{G.layer=void 0,G.session=void 0,G.changed.next()}},z=new Set;return{gl:E,isWebGL2:(0,e.isWebGL2)(E),get pixelRatio(){return(typeof window<"u"&&window.devicePixelRatio||1)*(H||1)},extensions:B,state:w,stats:O,resources:L,timer:U,get maxTextureSize(){return F.maxTextureSize},get max3dTextureSize(){return F.max3dTextureSize},get maxRenderbufferSize(){return F.maxRenderbufferSize},get maxDrawBuffers(){return F.maxDrawBuffers},get maxTextureImageUnits(){return F.maxTextureImageUnits},get shaderPrecisionFormats(){return q},namedComputeRenderables:Object.create(null),namedFramebuffers:Object.create(null),namedTextures:Object.create(null),get isContextLost(){return k||E.isContextLost()},contextRestored:j,setContextLost:()=>{k=!0,U.clear()},handleContextRestored:W=>{(0,i.resetExtensions)(E,B),w.reset(),w.currentMaterialId=-1,w.currentProgramId=-1,w.currentRenderItemId=-1,L.reset(),z.forEach(X=>X.reset()),W?.(),k=!1,j.next((0,f.now)())},xr:{get session(){return G.session},changed:G.changed,set:async(W,X)=>{var Y,K;if(G.session!==W&&(await((Y=G.session)===null||Y===void 0?void 0:Y.end()),W!==void 0))try{await E.makeXRCompatible(),G.session=W,G.layer=new XRWebGLLayer(G.session,E,{antialias:!0,alpha:!0,depth:!0,framebufferScaleFactor:H*((K=X?.resolutionScale)!==null&&K!==void 0?K:1)}),await G.session.updateRenderState({baseLayer:G.layer}),G.session.addEventListener("end",G.clear),G.changed.next()}catch(Q){throw W?await W.end():(G.layer=void 0,G.session=void 0),Q}},end:async()=>{var W;return(W=G.session)===null||W===void 0?void 0:W.end()}},setPixelScale:W=>{H=W},createRenderTarget:(W,X,Y,K,Q,J)=>{const ae=(0,s.createRenderTarget)(E,L,W,X,Y,K,Q,J);return z.add(ae),{...ae,destroy:()=>{ae.destroy(),z.delete(ae)}}},createDrawTarget:()=>({id:-1,texture:(0,y.createNullTexture)(E),framebuffer:(0,t.createNullFramebuffer)(),depthRenderbuffer:null,getByteCount:()=>0,getWidth:()=>{var W;return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode).width},getHeight:()=>{var W;return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode).height},bind:()=>{T(E,G.layer)},setSize:()=>{},reset:()=>{},destroy:()=>{}}),bindDrawingBuffer:()=>T(E,G.layer),getDrawingBufferSize:()=>{var W;
4100return A(E,G.layer,(W=G.session)===null||W===void 0?void 0:W.interactionMode)},readPixels:(W,X,Y,K,Q)=>{S(E,W,X,Y,K,Q)},waitForGpuCommandsComplete:()=>C(E),waitForGpuCommandsCompleteSync:()=>l(E),getFenceSync:()=>(0,e.isWebGL2)(E)?E.fenceSync(E.SYNC_GPU_COMMANDS_COMPLETE,0):null,checkSyncStatus:W=>(0,e.isWebGL2)(E)?E.getSyncParameter(W,E.SYNC_STATUS)===E.SIGNALED?(E.deleteSync(W),!0):!1:!0,deleteSync:W=>{(0,e.isWebGL2)(E)&&E.deleteSync(W)},clear:(W,X,Y,K)=>{const Q=A(E,G.layer);T(E,G.layer),w.enable(E.SCISSOR_TEST),w.depthMask(!0),w.colorMask(!0,!0,!0,!0),w.clearColor(W,X,Y,K),w.viewport(0,0,Q.width,Q.height),w.scissor(0,0,Q.width,Q.height),E.clear(E.COLOR_BUFFER_BIT|E.DEPTH_BUFFER_BIT)},checkError:W=>{d(E,W)},checkFramebufferStatus:W=>{(0,t.checkFramebufferStatus)(E,W)},destroy:W=>{var X,Y,K,Q;L.destroy(),u(E),(X=G.session)===null||X===void 0||X.removeEventListener("end",G.clear),(Y=G.session)===null||Y===void 0||Y.end(),j.complete(),G.changed.complete(),W?.doNotForceWebGLContextLoss||((K=E.getExtension("WEBGL_lose_context"))===null||K===void 0||K.loseContext(),(Q=E.getExtension("STACKGL_destroy_context"))===null||Q===void 0||Q.destroy())}}}return qo}var Wx={},gu={},hd={},$x={},a1={},PU;function Ut(){return PU||(PU=1,Object.defineProperty(a1,"__esModule",{value:!0}),a1.ColorThemeCategory=void 0,a1.ColorThemeCategory={Atom:"Atom Property",Chain:"Chain Property",Residue:"Residue Property",Symmetry:"Symmetry",Validation:"Validation",Misc:"Miscellaneous"}),a1}var TU;function Lne(){return TU||(TU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateSymbolColorThemeProvider=e.CarbohydrateSymbolColorThemeParams=void 0,e.getCarbohydrateSymbolColorThemeParams=f,e.CarbohydrateSymbolColorTheme=y;const t=Ke(),r=xf(),n=vt(),i=Ne(),c=qa(),o=Ut(),s=(0,n.Color)(13421772),h="Assigns colors according to the Symbol Nomenclature for Glycans (SNFG).";e.CarbohydrateSymbolColorThemeParams={};function f(_){return e.CarbohydrateSymbolColorThemeParams}function y(_,g){let a;if(_.structure){const{elements:d,getElementIndices:p}=_.structure.carbohydrates,u=(m,v)=>{if(!t.Unit.isAtomic(m))return s;const b=p(m,v);return b.length>0?d[b[0]].component.color:s};a=(m,v)=>v?r.SaccharideColors.Secondary:t.StructureElement.Location.is(m)?u(m.unit,m.element):t.Bond.isLocation(m)?u(m.aUnit,m.aUnit.elements[m.aIndex]):s}else a=()=>s;return{factory:y,granularity:"group",color:a,props:g,description:h,legend:(0,c.TableLegend)(r.MonosaccharidesColorTable)}}e.CarbohydrateSymbolColorThemeProvider={name:"carbohydrate-symbol",label:"Carbohydrate Symbol",category:o.ColorThemeCategory.Residue,factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.CarbohydrateSymbolColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>t.Model.hasCarbohydrate(g))}})($x)),$x}var Xx={},xU;function wS(){return xU||(xU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UniformColorThemeProvider=e.UniformColorThemeParams=void 0,e.getUniformColorThemeParams=h,e.UniformColorTheme=f;const t=vt(),r=Ne(),n=qa(),i=et(),c=Ut(),o=(0,t.Color)(13421772),s="Gives everything the same, uniform color.";e.UniformColorThemeParams={value:r.ParamDefinition.Color(o),saturation:r.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:r.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1})};function h(y){return e.UniformColorThemeParams}function f(y,_){let g=(0,i.defaults)(_.value,o);return g=t.Color.saturate(g,_.saturation),g=t.Color.lighten(g,_.lightness),{factory:f,granularity:"uniform",color:()=>g,props:_,description:s,legend:(0,n.TableLegend)([["uniform",g]])}}e.UniformColorThemeProvider={name:"uniform",label:"Uniform",category:c.ColorThemeCategory.Misc,factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.UniformColorThemeParams),isApplicable:y=>!0}})(Xx)),Xx}var Kx={},o1={},Yx={},Qx={},AU;function Vr(){return AU||(AU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorNamesValueMap=e.ColorNames=void 0;const t=wn();e.ColorNames=(0,t.ColorMap)({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflower:6591981,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,laserlemon:16777044,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrod:16448210,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,maroon2:8323
4100072,maroon3:11546720,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,purple2:8323199,purple3:10494192,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074}),e.ColorNamesValueMap=(function(){const r=new Map;return Object.keys(e.ColorNames).forEach(n=>{r.set(e.ColorNames[n],n)}),r})()})(Qx)),Qx}var MU;function dQ(){return MU||(MU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DistinctColorsParams=void 0,e.distinctColors=d;const t=FD(),r=LD(),n=vr(),i=et(),c=Ne(),o=Vr();e.DistinctColorsParams={hue:c.ParamDefinition.Interval([1,360],{min:0,max:360,step:1}),chroma:c.ParamDefinition.Interval([40,70],{min:0,max:100,step:1}),luminance:c.ParamDefinition.Interval([15,85],{min:0,max:100,step:1}),sort:c.ParamDefinition.Select("contrast",c.ParamDefinition.arrayToOptions(["none","contrast"]),{description:"no sorting leaves colors approximately ordered by hue"}),clusteringStepCount:c.ParamDefinition.Numeric(50,{min:10,max:200,step:1},{isHidden:!0}),minSampleCount:c.ParamDefinition.Numeric(800,{min:100,max:5e3,step:100},{isHidden:!0}),sampleCountFactor:c.ParamDefinition.Numeric(5,{min:1,max:100,step:1},{isHidden:!0})};const s=2,h=[0,0,0],f=[0,0,0];function y(p,u){return t.Lab.toHcl(h,p),t.Lab.fromColor(f,t.Lab.toColor(p)),h[0]>=u.hue[0]&&h[0]<=u.hue[1]&&h[1]>=u.chroma[0]&&h[1]<=u.chroma[1]&&h[2]>=u.luminance[0]&&h[2]<=u.luminance[1]&&f[0]>=p[0]-s&&f[0]<=p[0]+s&&f[1]>=p[1]-s&&f[1]<=p[1]+s&&f[2]>=p[2]-s&&f[2]<=p[2]+s}function _(p){const u=p.slice(0),m=[u.shift()];for(;u.length>0;){const v=m[m.length-1];let b=0,P=Number.NEGATIVE_INFINITY;for(let C=0;C<u.length;++C){const l=t.Lab.distance(v,u[C]);l>P&&(P=l,b=C)}m.push(u.splice(b,1)[0])}return m}function g(p,u){const m=new Map,v=Math.ceil(Math.cbrt(p)),b=(0,r.Hcl)(),P=Math.max((u.hue[1]-u.hue[0])/v,1),C=Math.max((u.chroma[1]-u.chroma[0])/v,1),l=Math.max((u.luminance[1]-u.luminance[0])/v,1);for(let S=u.hue[0]+P/2;S<=u.hue[1];S+=P)for(let T=u.chroma[0]+C/2;T<=u.chroma[1];T+=C)for(let A=u.luminance[0]+l/2;A<=u.luminance[1];A+=l){const x=t.Lab.fromHcl((0,t.Lab)(),r.Hcl.set(b,S,T,A));y(x,u)&&m.set(t.Lab.toColor(x),x)}return Array.from(m.values())}function a(p,u){let m=1/0,v=0;for(let b=0;b<p.length;b++){const P=t.Lab.distance(u,p[b]);P<m&&(m=P,v=b)}return v}function d(p,u={}){const m={...c.ParamDefinition.getDefaultValues(e.DistinctColorsParams),...u};if(p<=0)return[];const v=g(Math.max(m.minSampleCount,p*m.sampleCountFactor),m);if(v.length<p)return console.warn("Not enough samples to generate distinct colors, increase sample count."),new Array(p).fill(o.ColorNames.lightgrey);const b=[],P=[],C=Math.floor(v.length/p);for(let S=0;S<v.length&&(b.push(v[S]),P.push([]),!(b.length>=p));S+=C);for(let S=1;S<=m.clusteringStepCount;++S){const T=(0,n.deepClone)(P),A=(0,n.deepClone)(v);for(let M=0;M<b.length;++M){const D=a(A,b[M]);T[M].push(v[D]),A.splice(D,1)}for(let M=0;M<A.length;++M){const D=a(b,v[M]);T[D].push(v[M])}const x=(0,n.deepClone)(b);for(let M=0;M<T.length;++M){const D=T[M],V=D.length;if(V===0)continue;let R=0,E=0,I=0;for(const F of D)R+=F[0],E+=F[1],I+=F[2];const B=R/V,w=E/V,O=I/V;b[M]=[B,w,O]}if((0,i.deepEqual)(x,b))break}return(m.sort==="contrast"?_(b):b).map(S=>t.Lab.toColor(S))}})(Yx)),Yx}var DU;function On(){if(DU)return o1;DU=1,Object.defineProperty(o1,"__esModule",{value:!0}
4100),o1.getPaletteParams=o,o1.getPalette=h;const e=qa(),t=Ne(),r=dQ(),n=pa(),i=ND(),c={type:"generate",colorList:"red-yellow-blue"};function o(f={}){const y={...c,...f};return{palette:t.ParamDefinition.MappedStatic(y.type,{colors:t.ParamDefinition.Group({list:t.ParamDefinition.ColorList(y.colorList)},{isFlat:!0}),generate:t.ParamDefinition.Group({...r.DistinctColorsParams,maxCount:t.ParamDefinition.Numeric(75,{min:1,max:250,step:1})},{isFlat:!0})},{options:[["colors","Color List"],["generate","Generate Distinct"]]})}}t.ParamDefinition.getDefaultValues(o());const s={valueLabel:f=>`${f+1}`,minLabel:"Start",maxLabel:"End"};function h(f,y,_={}){var g;let a,d;if(y.palette.name==="colors"&&y.palette.params.list.kind==="interpolate"){const{list:p}=y.palette.params,u=[0,f-1],{minLabel:m,maxLabel:v}={...s,..._};let b=p.colors;b.length===0&&(b=(0,n.getColorListFromName)(c.colorList).list);const P=i.ColorScale.create({listOrName:b,domain:u,minLabel:m,maxLabel:v});d=P.legend,a=P.color}else{let p;y.palette.name==="colors"?(p=y.palette.params.list.colors.map(b=>Array.isArray(b)?b[0]:b),p.length===0&&(p=(0,n.getColorListFromName)("dark-2").list.map(b=>Array.isArray(b)?b[0]:b))):(f=Math.min(f,y.palette.params.maxCount),p=(0,r.distinctColors)(f,y.palette.params));const u=(g=_.valueLabel)!==null&&g!==void 0?g:s.valueLabel,m=p.length,v=[];for(let b=0;b<f;++b){const P=b%m;v[P]===void 0?v[P]=[u(b),p[P]]:v[P][0]+=`, ${u(b)}`}d=(0,e.TableLegend)(v),a=b=>p[b%m]}return{color:a,legend:d}}return o1}var IU;function Uf(){return IU||(IU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ChainIdColorThemeProvider=e.ChainIdColorThemeParams=void 0,e.getChainIdColorThemeParams=f,e.ChainIdColorTheme=d;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h="Gives every chain a color based on its `asym_id` value.";e.ChainIdColorThemeParams={asymId:n.ParamDefinition.Select("auth",n.ParamDefinition.arrayToOptions(["auth","label"])),...(0,i.getPaletteParam
4100s)({type:"colors",colorList:o})};function f(p){var u;const m=n.ParamDefinition.clone(e.ChainIdColorThemeParams);return!((u=p.structure)===null||u===void 0)&&u.models.some(v=>v.coarseHierarchy.isDefined)&&(m.asymId.defaultValue="label"),m}function y(p,u){switch(p.kind){case t.Unit.Kind.Atomic:return u==="auth"?t.StructureProperties.chain.auth_asym_id:t.StructureProperties.chain.label_asym_id;case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.asym_id}}function _(p,u){const m=y(p.unit,u)(p);return p.structure.root.models.length>1?g(p.unit.model,m):m}function g(p,u){return`${u}|${(t.Model.Index.get(p).value||0)+1}`}function a(p,u){const m=new Map;for(const v of p.models){const b=t.Model.AsymIdOffset.get(v).value,P=(u==="auth"?b?.auth:b?.label)||0;let C=0;v.properties.structAsymMap.forEach(({auth_id:l},S)=>{const T=u==="auth"?l:S,A=p.models.length>1?g(v,T):T;m.has(A)||(m.set(A,C+P),++C)})}return m}function d(p,u){let m,v;if(p.structure){const b=t.StructureElement.Location.create(p.structure.root),P=a(p.structure.root,u.asymId),C=Array.from(P.keys()),l=T=>C[T],S=(0,i.getPalette)(P.size,u,{valueLabel:l});v=S.legend,m=T=>{let A;if(t.StructureElement.Location.is(T)){const x=_(T,u.asymId);A=P.get(x)}else if(t.Bond.isLocation(T)){b.unit=T.aUnit,b.element=T.aUnit.elements[T.aIndex];const x=_(b,u.asymId);A=P.get(x)}return A===void 0?s:S.color(A)}}else m=()=>s;return{factory:d,granularity:"group",color:m,props:u,description:h,legend:v}}e.ChainIdColorThemeProvider={name:"chain-id",label:"Chain Id",category:c.ColorThemeCategory.Chain,factory:d,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.ChainIdColorThemeParams),isApplicable:p=>!!p.structure}})(Kx)),Kx}var Zx={},wU;function Nne(){return wU||(wU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ElementIndexColorThemeProvider=e.ElementIndexColorThemeParams=void 0,e.getElementIndexColorThemeParams=f,e.ElementIndexColorTheme=y;const t=vt(),r=Ke(),n=nn(),i=Ne(),c=On(),o=Ut(),s=(0,t.Color)(13421772),h="Gives every element (atom or coarse sphere/gaussian) a unique color based on the position (index) of the element in the list of elements in the structure.";
4100e.ElementIndexColorThemeParams={...(0,c.getPaletteParams)({type:"colors",colorList:"red-yellow-blue"})};function f(_){return e.ElementIndexColorThemeParams}function y(_,g){let a,d;if(_.structure){const{units:p}=_.structure.root,u=p.length,m=new Map,v=new Map;let b=0;for(let C=0;C<u;++C)m.set(C,b),b+=p[C].elements.length,v.set(p[C].id,C);const P=(0,c.getPalette)(b,g);d=P.legend,a=C=>{if(r.StructureElement.Location.is(C)){const l=v.get(C.unit.id),S=n.OrderedSet.findPredecessorIndex(p[l].elements,C.element);return P.color(m.get(l)+S)}else if(r.Bond.isLocation(C)){const l=v.get(C.aUnit.id),S=n.OrderedSet.findPredecessorIndex(p[l].elements,C.aUnit.elements[C.aIndex]);return P.color(m.get(l)+S)}return s}}else a=()=>s;return{factory:y,granularity:"groupInstance",preferSmoothing:!0,color:a,props:g,description:h,legend:d}}e.ElementIndexColorThemeProvider={name:"element-index",label:"Element Index",category:o.ColorThemeCategory.Atom,factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.ElementIndexColorThemeParams),isApplicable:_=>!!_.structure}})(Zx)),Zx}var Jx={},aP={},VU;function VS(){if(VU)return aP;VU=1,Object.defineProperty(aP,"__esModule",{value:!0}),aP.getColorMapParams=r;const e=Ne(),t=vr();function r(n){const i={};return(0,t.objectForEach)(n,(c,o)=>{i[o]=e.ParamDefinition.Color(n[o])}),i}return aP}var e3={},EU;function a2(){return EU||(EU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OperatorNameColorThemeProvider=e.OperatorNameColorThemeParams=void 0,e.getOperatorNameColorThemeParams=f,e.OperatorNameColorTheme=_;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,t.Color)(13421772),h="Assigns a color based on the operator name of a transformed chain.";
4100e.OperatorNameColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o})};function f(g){return n.ParamDefinition.clone(e.OperatorNameColorThemeParams)}function y(g){const a=new Map;for(let d=0,p=g.units.length;d<p;++d){const u=g.units[d].conformation.operator.name;a.has(u)||a.set(u,a.size)}return a}function _(g,a){let d,p;if(g.structure){const u=y(g.structure.root),m=Array.from(u.keys()),v=P=>m[P],b=(0,i.getPalette)(u.size,a,{valueLabel:v});p=b.legend,d=P=>{let C;if(r.StructureElement.Location.is(P)){const l=P.unit.conformation.operator.name;C=u.get(l)}else if(r.Bond.isLocation(P)){const l=P.aUnit.conformation.operator.name;C=u.get(l)}return C===void 0?s:b.color(C)}}else d=()=>s;return{factory:_,granularity:"instance",color:d,props:a,description:h,legend:p}}e.OperatorNameColorThemeProvider={name:"operator-name",label:"Operator Name",category:c.ColorThemeCategory.Symmetry,factory:_,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.OperatorNameColorThemeParams),isApplicable:g=>!!g.structure}})(e3)),e3}var t3={},BU;function ES(){return BU||(BU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EntityIdColorThemeProvider=e.EntityIdColorThemeParams=void 0,e.getEntityIdColorThemeParams=y,e.EntityIdColorTheme=p;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h=(0,r.Color)(16715021),f="Gives every chain a color based on its `label_entity_id` value.";
4100e.EntityIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o}),overrideWater:n.ParamDefinition.Boolean(!1,{description:"Override the color for water molecules."}),waterColor:n.ParamDefinition.Color(h,{hideIf:u=>!u.overrideWater,description:"Color for water molecules (if overrideWater is true)."})};function y(u){return n.ParamDefinition.clone(e.EntityIdColorThemeParams)}function _(u,m){return`${u}|${m}`}function g(u){const m=new WeakMap;let v=0;for(let b=0,P=u.models.length;b<P;++b){const C=u.models[b].sourceData;m.has(C)||m.set(C,v++)}return m}function a(u,m){var v;const b=new Map;for(let P=0,C=u.models.length;P<C;++P){const l=(v=m.get(u.models[P].sourceData))!==null&&v!==void 0?v:-1,{label_entity_id:S}=u.models[P].atomicHierarchy.chains;for(let A=0,x=S.rowCount;A<x;++A){const M=_(S.value(A),l);b.has(M)||b.set(M,b.size)}const{coarseHierarchy:T}=u.models[P];if(T.isDefined){const{entity_id:A}=T.spheres;for(let M=0,D=A.rowCount;M<D;++M){const V=_(A.value(M),l);b.has(V)||b.set(V,b.size)}const{entity_id:x}=T.gaussians;for(let M=0,D=x.rowCount;M<D;++M){const V=_(x.value(M),l);b.has(V)||b.set(V,b.size)}}}return b}function d(u){switch(u.unit.kind){case t.Unit.Kind.Atomic:return t.StructureProperties.chain.label_entity_id(u);case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.entity_id(u)}}function p(u,m){let v,b;if(u.structure){const P=t.StructureElement.Location.create(u.structure.root),C=g(u.structure),l=a(u.structure.root,C),S=Array.from(l.keys()),T=x=>S[x],A=(0,i.getPalette)(l.size,m,{valueLabel:T});b=A.legend,v=x=>{var M;let D;if(t.StructureElement.Location.is(x))D=x;else if(t.Bond.isLocation(x))P.unit=x.aUnit,P.element=x.aUnit.elements[x.aIndex],D=P;else return s;const V=d(D),R=(M=C.get(D.unit.model.sourceData))!==null&&M!==void 0?M:-1;if(m.overrideWater){const B=D.unit.model.entities;if(B.data.type.value(B.getEntityIndex(V))==="water")return m.waterColor}const E=_(V,R),I=l.get(E);return I===void 0?s:A.color(I)}}else v=()=>s;return{factory:p,granularity:"group",color:v,props:m,description:f,legend:b}}e.EntityIdColorThemeProvider={name:"entity-id",label:"Entity Id",category:c.ColorThemeCategory.Chain,factory:p,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.EntityIdColorThemeParams),isApplicable:u=>!!u.structure}})(t3)),t3}var r3={},RU;function BS(){return RU||(RU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EntitySourceColorThemeProvider=e.EntitySourceColorThemeParams=void 0,e.getEntitySourceColorThemeParams=a,e.EntitySourceColorTheme=b;const t=Ke(),r=vt(),n=Ne(),i=Z_(),c=On(),o=Df(),s=pa(),h=Mi(),f=Ut(),y="dark-2",_=(0,r.Color)(16448250),g="Gives ranges of a polymer chain a color based on the entity source it originates from (e.g. gene, plasmid, organism).";
4100e.EntitySourceColorThemeParams={...(0,c.getPaletteParams)({type:"colors",colorList:y})};function a(P){const C=n.ParamDefinition.clone(e.EntitySourceColorThemeParams);return P.structure&&m(P.structure.root.models).srcKeySerialMap.size>s.ColorLists[y].list.length&&(C.palette.defaultValue.name="colors",C.palette.defaultValue.params={...C.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,s.getColorListFromName)(y).list}}),C}function d(P,C){return`${P}|${C}`}function p(P,C,l,S,T,A){return`${P}|${C}|${l}|${A||T||S}`}function u(P,C,l,S,T,A,x,M){const{entity_id:D,pdbx_src_id:V,pdbx_beg_seq_num:R,pdbx_end_seq_num:E}=T;for(let I=0,B=T._rowCount;I<B;++I){const w=D.value(I),O=d(l,w);let F;if(P.has(O))F=P.get(O);else{const H=S.entities.getEntityIndex(w),G=S.sequence.sequences[H].sequence;F=new Int16Array(G.length),P.set(O,F)}const L=x?x.value(I):"",U=M?M.value(I)[0]:"",q=p(l,w,A.value(I),V.value(I),L,U),N=R.valueKind(I)===i.Column.ValueKinds.Present?R.value(I):1,k=E.valueKind(I)===i.Column.ValueKinds.Present?E.value(I):F.length;let j;C.has(q)?j=C.get(q):(j=C.size+1,C.set(q,j));for(let H=N,G=k;H<=G;++H)F[H-1]=j}}function m(P){const C=new Map,l=new Map;for(let S=0,T=P.length;S<T;++S){const A=P[S];if(!h.MmcifFormat.is(A.sourceData))continue;const{entity_src_gen:x,entity_src_nat:M,pdbx_entity_src_syn:D}=A.sourceData.data.db;u(C,l,S,A,x,x.pdbx_gene_src_scientific_name,x.plasmid_name,x.pdbx_gene_src_gene),u(C,l,S,A,M,M.pdbx_organism_scientific,M.pdbx_plasmid_name),u(C,l,S,A,D,D.organism_scientific)}return{seqToSrcByModelEntity:C,srcKeySerialMap:l}}function v(P){let C=0;return Array.from(P.keys()).map(l=>{const S=l.split("|"),T=S[2];return`${(0,o.isInteger)(S[3])?`Unnamed ${++C}`:S[3]}${T?` (${T})`:""}`})}function b(P,C){let l,S;if(P.structure){const T=t.StructureElement.Location.create(P.structure),{models:A}=P.structure.root,{seqToSrcByModelEntity:x,srcKeySerialMap:M}=m(A),D=v(M),V=I=>D[I],R=(0,c.getPalette)(M.size,C,{valueLabel:V});S=R.legend;const E=I=>{const B=A.indexOf(I.unit.model),w=t.StructureProperties.entity.id(I),O=d(B,w),F=x.get(O);if(F){const L=F[t.StructureProperties.residue.label_seq_id(I)-1]-1;return L===-1?_:R.color(L)}else return _};l=I=>t.StructureElement.Location.is(I)?E(I):t.Bond.isLocation(I)?(T.unit=I.aUnit,T.element=I.aUnit.elements[I.aIndex],E(T)):_}else l=()=>_;return{factory:b,granularity:"group",color:l,props:C,description:g,legend:S}}e.EntitySourceColorThemeProvider={name:"entity-source",label:"Entity Source",category:f.ColorThemeCategory.Chain,factory:b,getParams:a,defaultValues:n.ParamDefinition.getDefaultValues(e.EntitySourceColorThemeParams),isApplicable:P=>!!P.structure}})(r3)),r3}var n3={},OU;function RS(){return OU||(OU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ModelIndexColorThemeProvider=e.ModelIndexColorThemeParams=void 0,e.getModelIndexColorThemeParams=h,e.ModelIndexColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every model a unique color based on its index.";
4100e.ModelIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return n.ParamDefinition.clone(e.ModelIndexColorThemeParams)}function f(y,_){var g;let a,d,p=-1;if(y.structure){const u=((g=r.Model.MaxIndex.get(y.structure.models[0]).value)!==null&&g!==void 0?g:-1)+1;p=u;const m=(0,i.getPalette)(u,_);d=m.legend,a=v=>r.StructureElement.Location.is(v)?m.color(r.Model.Index.get(v.unit.model).value||0):r.Bond.isLocation(v)?m.color(r.Model.Index.get(v.aUnit.model).value||0):o}else a=()=>o;return{factory:f,granularity:"instance",color:a,props:_,contextHash:p,description:s,legend:d}}e.ModelIndexColorThemeProvider={name:"model-index",label:"Model Index",category:c.ColorThemeCategory.Chain,factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.ModelIndexColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.elementCount>0}})(n3)),n3}var i3={},kU;function OS(){return kU||(kU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIndexColorThemeProvider=e.StructureIndexColorThemeParams=void 0,e.getStructureIndexColorThemeParams=h,e.StructureIndexColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every structure a unique color based on its index.";
4100e.StructureIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return n.ParamDefinition.clone(e.StructureIndexColorThemeParams)}function f(y,_){var g;let a,d,p=-1;if(y.structure){const u=((g=r.Structure.MaxIndex.get(y.structure).value)!==null&&g!==void 0?g:-1)+1;p=u;const m=(0,i.getPalette)(u,_);d=m.legend,a=v=>r.StructureElement.Location.is(v)?m.color(r.Structure.Index.get(v.structure).value||0):r.Bond.isLocation(v)?m.color(r.Structure.Index.get(v.aStructure).value||0):o}else a=()=>o;return{factory:f,granularity:"instance",color:a,props:_,contextHash:p,description:s,legend:d}}e.StructureIndexColorThemeProvider={name:"structure-index",label:"Structure Index",category:c.ColorThemeCategory.Chain,factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.StructureIndexColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.elementCount>0}})(i3)),i3}var a3={},FU;function fQ(){return FU||(FU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitIndexColorThemeProvider=e.UnitIndexColorThemeParams=void 0,e.getUnitIndexColorThemeParams=y,e.UnitIndexColorTheme=_;const t=vt(),r=Ke(),n=Ne(),i=On(),c=pa(),o=Ut(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every chain instance (single chain or collection of single elements) a unique color based on the position (index) of the chain in the list of chains in the structure.";
4100e.UnitIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:s})};function y(g){const a=n.ParamDefinition.clone(e.UnitIndexColorThemeParams);return g.structure&&g.structure.root.units.length>c.ColorLists[s].list.length&&(a.palette.defaultValue.name="colors",a.palette.defaultValue.params={...a.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,c.getColorListFromName)(s).list}}),a}function _(g,a){let d,p;if(g.structure){const{units:u}=g.structure.root,m=(0,i.getPalette)(u.length,a);p=m.legend;const v=new Map;for(let b=0,P=u.length;b<P;++b)v.set(u[b].id,m.color(b));d=b=>r.StructureElement.Location.is(b)?v.get(b.unit.id):r.Bond.isLocation(b)?v.get(b.aUnit.id):h}else d=()=>h;return{factory:_,granularity:"instance",color:d,props:a,description:f,legend:p}}e.UnitIndexColorThemeProvider={name:"unit-index",label:"Chain Instance",category:o.ColorThemeCategory.Chain,factory:_,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.UnitIndexColorThemeParams),isApplicable:g=>!!g.structure}})(a3)),a3}var o3={},LU;function o2(){return LU||(LU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TrajectoryIndexColorThemeProvider=e.TrajectoryIndexColorThemeParams=void 0,e.getTrajectoryIndexColorThemeParams=f,e.TrajectoryIndexColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ut(),o=Dn(),s=(0,t.Color)(13421772),h="Gives every model (frame) a unique color based on the index in its trajectory.";
4100e.TrajectoryIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"purples"})};function f(_){return n.ParamDefinition.clone(e.TrajectoryIndexColorThemeParams)}function y(_,g){var a,d;let p,u,m=-1;if(_.structure){const{models:v}=_.structure.root;let b=0;for(const S of v)b=Math.max(b,((a=r.Model.TrajectoryInfo.get(S))===null||a===void 0?void 0:a.size)||0);const P=[b],C=(0,i.getPalette)(b,g);u=C.legend;const l=new Map;for(let S=0,T=v.length;S<T;++S){const A=((d=r.Model.TrajectoryInfo.get(v[S]))===null||d===void 0?void 0:d.index)||0;l.set(A,C.color(A)),P.push(A)}m=(0,o.hashFnv32a)(P),p=S=>r.StructureElement.Location.is(S)?l.get(r.Model.TrajectoryInfo.get(S.unit.model).index):r.Bond.isLocation(S)?l.get(r.Model.TrajectoryInfo.get(S.aUnit.model).index):s}else p=()=>s;return{factory:y,granularity:"instance",color:p,props:g,contextHash:m,description:h,legend:u}}e.TrajectoryIndexColorThemeProvider={name:"trajectory-index",label:"Trajectory Index",category:c.ColorThemeCategory.Chain,factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.TrajectoryIndexColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.elementCount>0&&r.Model.TrajectoryInfo.get(_.structure.models[0]).size>1}})(o3)),o3}var NU;function mQ(){return NU||(NU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ElementSymbolColorThemeProvider=e.ElementSymbolColorThemeParams=e.ElementSymbolColors=void 0,e.getElementSymbolColorThemeParams=P,e.elementSymbolColor=C,e.ElementSymbolColorTheme=S;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Uf(),h=a2(),f=ES(),y=Gt(),_=BS(),g=RS(),a=OS(),d=Ut(),p=fQ(),u=wS(),m=o2();e.ElementSymbolColors=(0,t.ColorMap)({H:16777215,D:16777152,T:16777120,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215});const v=(0,t.Color)(16777215),b="Assigns a color to every atom according to its chemical element.";e.ElementSymbolColorThemeParams={carbonColor:n.ParamDefinition.MappedStatic("chain-id",{"chain-id":n.ParamDefinition.Group(s.ChainIdColorThemeParams),"unit-index":n.ParamDefinition.Group(p.UnitIndexColorThemeParams,{label:"Chain Instance"}),"entity-id":n.ParamDefinition.Group(f.EntityIdColorThemeParams),"entity-source":n.ParamDefinition.Group(_.EntitySourceColorThemeParams),"operator-name":n.ParamDefinition.Group(h.OperatorNameColorThemeParams),"model-index":n.ParamDefinition.Group(g.ModelIndexColorThemeParams),"structure-index":n.ParamDefinition.Group(a.StructureIndexColorThemeParams),"trajectory-index":n.ParamDefinition.Group(m.TrajectoryIndexColorThemeParams),uniform:n.ParamDefinition.Group(u.UniformColorThemeParams),"element-symbol":n.ParamDefinition.EmptyGroup()},{description:"Use chain-id coloring for carbon atoms."}),saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(.2,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ElementSymbolColors))})};function P(T){return n.ParamDefinition.clone(e.ElementSymbolColorThemeParams)}function C(T,A){const x=T[A];return x===void 0?v:x}function l(T,A){switch(A.name){case"chain-id":return(0,s.ChainIdColorTheme)(T,A.params);case"unit-index":return(0,p.UnitIndexColorTheme)(T,A.params);case"entity-id":return(0,f.EntityIdColorTheme)(T,A.params);case"entity-source":return(0,_.EntitySourceColorTheme)(T,A.params);case"operator-name":return(0,h.OperatorNameColorTheme)(T,A.params);case"model-index":return(0,g.ModelIndexColorTheme)(T,A.params);case"structure-index":return(0,a.StructureIndexColorTheme)(T,A.params);case"trajectory-index":return(0,m.TrajectoryIndexColorTheme)(T,A.params);case"uniform":return(0,u.UniformColorTheme)(T,A.params);case"element-symbol":return;default:(0,y.assertUnreachable)(A)}}function S(T,A){var x;const M=(0,c.getAdjustedColorMap)(A.colors.name==="default"?e.ElementSymbolColors:A.colors.params,A.saturation,A.lightness),D=l(T,A.carbonColor),V=D?.color,R=(x=D?.contextHash)!==null&&x!==void 0?x:-1;function E(w,O){return V&&w==="C"?V(O,!1):C(M,w)}function I(w){if(r.StructureElement.Location.is(w)){if(r.Unit.isAtomic(w.unit)){const{type_symbol:O}=w.unit.model.atomicHierarchy.atoms;return E(O.value(w.element),w)}}else if(r.Bond.isLocation(w)&&r.Unit.isAtomic(w.aUnit)){const{type_symbol:O}=w.aUnit.model.atomicHierarchy.atoms,F=O.value(w.aUnit.elements[w.aIndex]);return E(F,w)}return v}const B=A.carbonColor.name==="operator-name"||A.carbonColor.name==="unit-index"?"groupInstance":"group";return{factory:S,granularity:B,preferSmoothing:!0,color:I,props:A,contextHash:R,description:b,legend:(0,i.TableLegend)(Object.keys(M).map(w=>[w,M[w]]))}}e.ElementSymbolColorThemeProvider={name:"element-symbol",label:"Element Symbol",category:d.ColorThemeCategory.Atom,factory:S,getParams:P,defaultValues:n.ParamDefinition.getDefaultValues(e.ElementSymbolColorThemeParams),isApplicable:T=>!!T.structure}})(Jx)),Jx}var s3={},qU;function s2(){return qU||(qU=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.MoleculeTypeColorThemeProvider=e.MoleculeTypeColorThemeParams=e.MoleculeTypeColors=void 0,e.getMoleculeTypeColorThemeParams=g,e.moleculeTypeColor=a,e.MoleculeTypeColorTheme=d;const t=vt(),r=Ke(),n=dt(),i=Sl(),c=Ne(),o=qa(),s=wn(),h=VS(),f=Ut();e.MoleculeTypeColors=(0,t.ColorMap)({water:3697840,ion:15729279,protein:12496596,RNA:16629894,DNA:12540695,PNA:4367514,saccharide:8374655});const y=(0,t.Color)(16777113),_="Assigns a color based on the molecule type of a residue.";e.MoleculeTypeColorThemeParams={saturation:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:c.ParamDefinition.MappedStatic("default",{default:c.ParamDefinition.EmptyGroup(),custom:c.ParamDefinition.Group((0,h.getColorMapParams)(e.MoleculeTypeColors))})};function g(p){return e.MoleculeTypeColorThemeParams}function a(p,u,m){switch((0,i.getElementMoleculeType)(u,m)){case n.MoleculeType.Water:return p.water;case n.MoleculeType.Ion:return p.ion;case n.MoleculeType.Protein:return p.protein;case n.MoleculeType.RNA:return p.RNA;case n.MoleculeType.DNA:return p.DNA;case n.MoleculeType.PNA:return p.PNA;case n.MoleculeType.Saccharide:return p.saccharide}return y}function d(p,u){const m=(0,s.getAdjustedColorMap)(u.colors.name==="default"?e.MoleculeTypeColors:u.colors.params,u.saturation,u.lightness);function v(b){return r.StructureElement.Location.is(b)?a(m,b.unit,b.element):r.Bond.isLocation(b)?a(m,b.aUnit,b.aUnit.elements[b.aIndex]):y}return{factory:d,granularity:"group",color:v,props:u,description:_,legend:(0,o.TableLegend)(Object.keys(m).map(b=>[b,m[b]]).concat([["Other/unknown",y]]))}}e.MoleculeTypeColorThemeProvider={name:"molecule-type",label:"Molecule Type",category:f.ColorThemeCategory.Residue,factory:d,getParams:g,defaultValues:c.ParamDefinition.getDefaultValues(e.MoleculeTypeColorThemeParams),isApplicable:p=>!!p.structure}})(s3)),s3}var c3={},UU;function qne(){return UU||(UU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerIdColorThemeProvider=e.PolymerIdColorThemeParams=void 0,e.getPolymerIdColorThemeParams=_,e.PolymerIdColorTheme=d;const t=Ke(),r=vt(),n=Ne(),i=On(),c=J_(),o=pa(),s=Ut(),h="dark-2",f=(0,r.Color)(16448250),y="Gives every polymer chain a color based on its `asym_id` value.";
4100e.PolymerIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:h})};function _(p){const u=n.ParamDefinition.clone(e.PolymerIdColorThemeParams);return p.structure&&a(p.structure.root).size>o.ColorLists[h].list.length&&(u.palette.defaultValue.name="colors",u.palette.defaultValue.params={...u.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,o.getColorListFromName)(h).list}}),u}function g(p){switch(p.kind){case t.Unit.Kind.Atomic:return t.StructureProperties.chain.label_asym_id;case t.Unit.Kind.Spheres:case t.Unit.Kind.Gaussians:return t.StructureProperties.coarse.asym_id}}function a(p){const u=new Map;for(let m=0,v=p.unitSymmetryGroups.length;m<v;++m){const b=p.unitSymmetryGroups[m].units[0],{model:P}=b;if(t.Unit.isAtomic(b)){const{chainAtomSegments:C,chains:l}=P.atomicHierarchy,S=c.Segmentation.transientSegments(C,b.elements);for(;S.hasNext;){const{index:T}=S.move(),A=l.label_entity_id.value(T),x=P.entities.getEntityIndex(A);if(P.entities.data.type.value(x)==="polymer"){const M=l.label_asym_id.value(T);u.has(M)||u.set(M,u.size)}}}else if(t.Unit.isCoarse(b)){const{chainElementSegments:C,asym_id:l,entity_id:S}=t.Unit.isSpheres(b)?P.coarseHierarchy.spheres:P.coarseHierarchy.gaussians,T=c.Segmentation.transientSegments(C,b.elements);for(;T.hasNext;){const{index:A}=T.move(),x=C.offsets[A],M=S.value(x),D=P.entities.getEntityIndex(M);if(P.entities.data.type.value(D)==="polymer"){const V=l.value(x);u.has(V)||u.set(V,u.size)}}}}return u}function d(p,u){let m,v;if(p.structure){const b=t.StructureElement.Location.create(p.structure),P=a(p.structure.root),C=Array.from(P.keys()),l=T=>C[T],S=(0,i.getPalette)(P.size,u,{valueLabel:l});v=S.legend,m=T=>{let A;if(t.StructureElement.Location.is(T)){const x=g(T.unit);A=P.get(x(T))}else if(t.Bond.isLocation(T)){const x=g(T.aUnit);b.unit=T.aUnit,b.element=T.aUnit.elements[T.aIndex],A=P.get(x(b))}return A===void 0?f:S.color(A)}}else m=()=>f;return{factory:d,granularity:"group",color:m,props:u,description:y,legend:v}}e.PolymerIdColorThemeProvider={name:"polymer-id",label:"Polymer Chain Id",category:s.ColorThemeCategory.Chain,factory:d,getParams:_,defaultValues:n.ParamDefinition.getDefaultValues(e.PolymerIdColorThemeParams),isApplicable:p=>!!p.structure}})(c3)),c3}var u3={},jU;function Une(){return jU||(jU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerIndexColorThemeProvider=e.PolymerIndexColorThemeParams=void 0,e.getPolymerIndexColorThemeParams=y,e.PolymerIndexColorTheme=g;const t=vt(),r=Ke(),n=Ne(),i=On(),c=pa(),o=Ut(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every polymer chain instance a unique color based on the position (index) of the polymer in the list of polymers in the structure.";
4100e.PolymerIndexColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:s})};function y(a){const d=n.ParamDefinition.clone(e.PolymerIndexColorThemeParams);return a.structure&&_(a.structure.root)>c.ColorLists[s].list.length&&(d.palette.defaultValue.name="colors",d.palette.defaultValue.params={...d.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,c.getColorListFromName)(s).list}}),d}function _(a){let d=0;const{units:p}=a;for(let u=0,m=p.length;u<m;++u)p[u].polymerElements.length>0&&++d;return d}function g(a,d){let p,u;if(a.structure){const m=(0,i.getPalette)(_(a.structure.root),d);u=m.legend;const{units:v}=a.structure.root,b=new Map;for(let P=0,C=0,l=v.length;P<l;++P)v[P].polymerElements.length>0&&(b.set(v[P].id,m.color(C)),++C);p=P=>{let C;return r.StructureElement.Location.is(P)?C=b.get(P.unit.id):r.Bond.isLocation(P)&&(C=b.get(P.aUnit.id)),C!==void 0?C:h}}else p=()=>h;return{factory:g,granularity:"instance",color:p,props:d,description:f,legend:u}}e.PolymerIndexColorThemeProvider={name:"polymer-index",label:"Polymer Chain Instance",category:o.ColorThemeCategory.Chain,factory:g,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.PolymerIndexColorThemeParams),isApplicable:a=>!!a.structure}})(u3)),u3}var l3={},GU;function pQ(){return GU||(GU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ResidueNameColorThemeProvider=e.ResidueNameColorThemeParams=e.ResidueNameColors=void 0,e.getResidueNameColorThemeParams=y,e.residueNameColor=a,e.ResidueNameColorTheme=d;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Ut();e.ResidueNameColors=(0,t.ColorMap)({ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:15658734,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,A:14423100,G:3329330,I:10145074,C:16766720,T:4286945,U:4251856,DA:14423100,DG:3329330,DI:10145074,DC:16766720,DT:4286945,DU:4251856,APN:14423100,GPN:3329330,CPN:16766720,TPN:4286945});const h=(0,t.Color)(16711935),f="Assigns a color to every residue according to its name.";e.ResidueNameColorThemeParams={saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(1,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ResidueNameColors))})};function y(p){return e.ResidueNameColorThemeParams}function _(p,u){return p.model.atomicHierarchy.atoms.label_comp_id.value(u)}function g(p,u){const m=p.coarseElements.seq_id_begin.value(u),v=p.coarseElements.seq_id_end.value(u);if(m===v){const b=p.coarseElements.entityKey[u];return p.model.sequence.byEntityKey[b].sequence.compId.value(m-1)}}function a(p,u){const m=p[u];return m===void 0?h:m}function d(p,u){const m=(0,c.getAdjustedColorMap)(u.colors.name==="default"?e.ResidueNameColors:u.colors.params,u.saturation,u.lightness);function v(b){if(r.StructureElement.Location.is(b))if(r.Unit.isAtomic(b.unit)){const P=_(b.unit,b.element);return a(m,P)}else{const P=g(b.unit,b.element);if(P)return a(m,P)}else if(r.Bond.isLocation(b))if(r.Unit.isAtomic(b.aUnit)){const P=_(b.aUnit,b.aUnit.elements[b.aIndex]);return a(m,P)}else{const P=g(b.aUnit,b.aUnit.elements[b.aIndex]);if(P)return a(m,P)}return h}return{factory:d,granularity:"group",preferSmoothing:!0,color:v,props:u,description:f,legend:(0,i.TableLegend)(Object.keys(m).map(b=>[b,m[b]]).concat([["Unknown",h]]))}}e.ResidueNameColorThemeProvider={name:"residue-name",label:"Residue Name",category:s.ColorThemeCategory.Residue,factory:d,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.ResidueNameColorThemeParams),isApplicable:p=>!!p.structure}})(l3)),l3}var d3={},zU;function jne(){return zU||(zU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ResidueChargeColorThemeProvider=e.ResidueChargeColorThemeParams=e.ChargedResidueColors=void 0,e.getResidueChargeColorThemeParams=y,e.residueChargeColor=a,e.ResidueChargeColorTheme=d;const t=vt(),r=Ke(),n=Ne(),i=qa(),c=wn(),o=VS(),s=Ut();e.ChargedResidueColors=(0,t.ColorMap)({ARG:255,ASP:16711680,GLU:16711680,HIS:3392505,LYS:255,ALA:16777215,ASN:16777215,CYS:16777215,GLN:16777215,GLY:16777215,ILE:16777215,LEU:16777215,MET:16777215,PHE:16777215,PRO:16777215,SER:16777215,THR:16777215,TRP:16777215,TYR:16777215,VAL:16777215,MSE:16777215,SEP:16777215,TPO:16777215,PTR:16777215,PCA:16777215,HYP:16777215,HSD:16777215,HSE:16777215,HSP:255,LSN:16777215,ASPP:16777215,GLUP:16777215,HID:16777215,HIE:16777215,HIP:255,LYN:16777215,ASH:16777215,GLH:16777215,A:16777215,G:16777215,I:16777215,C:16777215,T:16777215,U:16777215,DA:16777215,DG:16777215,DI:16777215,DC:16777215,DT:16777215,DU:16777215,APN:16777215,GPN:16777215,CPN:16777215,TPN:16777215});const h=(0,t.Color)(16711935),f="Assigns a color to every residue based on its charge state.";e.ResidueChargeColorThemeParams={method:n.ParamDefinition.MappedStatic("by-name",{"by-name":n.ParamDefinition.Group({saturation:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:n.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:n.ParamDefinition.MappedStatic("default",{default:n.ParamDefinition.EmptyGroup(),custom:n.ParamDefinition.Group((0,o.getColorMapParams)(e.ChargedResidueColors))})},{isFlat:!0})})};function y(p){return n.ParamDefinition.clone(e.ResidueChargeColorThemeParams)}function _(p,u){return p.model.atomicHierarchy.atoms.label_comp_id.value(u)}function g(p,u){const m=p.coarseElements.seq_id_begin.value(u),v=p.coarseElements.seq_id_end.value(u);if(m===v){const b=p.coarseElements.entityKey[u];return p.model.sequence.byEntityKey[b].sequence.compId.value(m-1)}}function a(p,u){const m=p[u];return m===void 0?h:m}function d(p,u){const{saturation:m,lightness:v,colors:b}=u.method.params,P=(0,c.getAdjustedColorMap)(u.method.params.colors.name==="default"?e.ChargedResidueColors:b.params,m,v);function C(l){if(r.StructureElement.Location.is(l))if(r.Unit.isAtomic(l.unit)){const S=_(l.unit,l.element);return a(P,S)}else{const S=g(l.unit,l.element);if(S)return a(P,S)}else if(r.Bond.isLocation(l))if(r.Unit.isAtomic(l.aUnit)){const S=_(l.aUnit,l.aUnit.elements[l.aIndex]);return a(P,S)}else{const S=g(l.aUnit,l.aUnit.elements[l.aIndex]);if(S)return a(P,S)}return h}return{factory:d,granularity:"group",preferSmoothing:!0,color:C,props:u,description:f,legend:(0,i.TableLegend)(Object.keys(P).map(l=>[l,P[l]]).concat([["Unknown",h]]))}}e.ResidueChargeColorThemeProvider={name:"residue-charge",label:"Residue Charge",category:s.ColorThemeCategory.Residue,factory:d,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.ResidueChargeColorThemeParams),isApplicable:p=>!!p.structure}})(d3)),d3}var f3={},HU;function hQ(){return HU||(HU=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.SecondaryStructureColorThemeProvider=e.SecondaryStructureColorThemeParams=e.SecondaryStructureColors=void 0,e.getSecondaryStructureColorThemeParams=d,e.secondaryStructureColor=p,e.SecondaryStructureColorTheme=u;const t=vt(),r=Ke(),n=dt(),i=Sl(),c=Ne(),o=qa(),s=Pl(),h=wn(),f=VS(),y=Dn(),_=Ut();e.SecondaryStructureColors=(0,t.ColorMap)({alphaHelix:16711808,threeTenHelix:10485888,piHelix:6291584,betaTurn:6324479,betaStrand:16762880,coil:16777215,bend:6740169,turn:45670,dna:11403518,rna:16580962,carbohydrate:10921722});const g=(0,t.Color)(8421504),a="Assigns a color based on the type of secondary structure and basic molecule type.";e.SecondaryStructureColorThemeParams={saturation:c.ParamDefinition.Numeric(-1,{min:-6,max:6,step:.1}),lightness:c.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),colors:c.ParamDefinition.MappedStatic("default",{default:c.ParamDefinition.EmptyGroup(),custom:c.ParamDefinition.Group((0,f.getColorMapParams)(e.SecondaryStructureColors))})};function d(m){return e.SecondaryStructureColorThemeParams}function p(m,v,b,P){let C=n.SecondaryStructureType.create(n.SecondaryStructureType.Flag.None);if(P&&r.Unit.isAtomic(v)){const l=P.get(v.invariantId);l&&(C=l.type[l.getIndex(v.residueIndex[b])])}if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Helix))return n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Helix3Ten)?m.threeTenHelix:n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.HelixPi)?m.piHelix:m.alphaHelix;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Beta))return m.betaStrand;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Bend))return m.bend;if(n.SecondaryStructureType.is(C,n.SecondaryStructureType.Flag.Turn))return m.turn;{const l=(0,i.getElementMoleculeType)(v,b);if(l===n.MoleculeType.DNA)return m.dna;if(l===n.MoleculeType.RNA)return m.rna;if(l===n.MoleculeType.Saccharide)return m.carbohydrate;if(l===n.MoleculeType.Protein)return m.coil}return g}function u(m,v){const b=m.structure&&s.SecondaryStructureProvider.get(m.structure),P=b?(0,y.hash2)(b.id,b.version):-1,C=(0,h.getAdjustedColorMap)(v.colors.name==="default"?e.SecondaryStructureColors:v.colors.params,v.saturation,v.lightness);function l(S){return r.StructureElement.Location.is(S)?p(C,S.unit,S.element,b?.value):r.Bond.isLocation(S)?p(C,S.aUnit,S.aUnit.elements[S.aIndex],b?.value):g}return{factory:u,granularity:"group",preferSmoothing:!0,color:l,props:v,contextHash:P,description:a,legend:(0,o.TableLegend)(Object.keys(C).map(S=>[S,C[S]]).concat([["Other",g]]))}}e.SecondaryStructureColorThemeProvider={name:"secondary-structure",label:"Secondary Structure",category:_.ColorThemeCategory.Residue,factory:u,getParams:d,defaultValues:c.ParamDefinition.getDefaultValues(e.SecondaryStructureColorThemeParams),isApplicable:m=>!!m.structure,ensureCustomProperties:{attach:(m,v)=>v.structure?s.SecondaryStructureProvider.attach(m,v.structure,void 0,!0):Promise.resolve(),detach:m=>m.structure&&s.SecondaryStructureProvider.ref(m.structure,!1)}}})(f3)),f3}var m3={},WU;function gQ(){return WU||(WU=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SequenceIdColorThemeProvider=e.SequenceIdColorThemeParams=void 0,e.getSequenceIdColorThemeParams=s,e.SequenceIdColorTheme=y;const t=Ke(),r=vt(),n=Ne(),i=Ut(),c=(0,r.Color)(13421772),o="Gives every polymer residue a color based on its `seq_id` value.";e.SequenceIdColorThemeParams={list:n.ParamDefinition.ColorList("turbo-no-black",{presetKind:"scale"})};function s(_){return e.SequenceIdColorThemeParams}function h(_,g){const{model:a}=_;switch(_.kind){case t.Unit.Kind.Atomic:const d=a.atomicHierarchy.residueAtomSegments.index[g];return a.atomicHierarchy.residues.label_seq_id.value(d);case t.Unit.Kind.Spheres:return Math.round((a.coarseHierarchy.spheres.seq_id_begin.value(g)+a.coarseHierarchy.spheres.seq_id_end.value(g))/2);case t.Unit.Kind.Gaussians:return Math.round((a.coarseHierarchy.gaussians.seq_id_begin.value(g)+a.coarseHierarchy.gaussians.seq_id_end.value(g))/2)}}function f(_,g){const{model:a}=_;let d="";switch(_.kind){case t.Unit.Kind.Atomic:const m=a.atomicHierarchy.chainAtomSegments.index[g];d=a.atomicHierarchy.chains.label_entity_id.value(m);break;case t.Unit.Kind.Spheres:d=a.coarseHierarchy.spheres.entity_id.value(g);break;case t.Unit.Kind.Gaussians:d=a.coarseHierarchy.gaussians.entity_id.value(g);break}if(d==="")return 0;const p=a.entities.getEntityIndex(d);if(p===-1)return 0;const u=a.sequence.byEntityKey[p];return u===void 0?0:u.sequence.length}function y(_,g){const a=r.ColorScale.create({listOrName:g.list.colors,minLabel:"Start",maxLabel:"End"});return{factory:y,granularity:"group",preferSmoothing:!0,color:p=>{if(t.StructureElement.Location.is(p)){const{unit:u,element:m}=p,v=h(u,m);if(v>0){const b=f(u,m);
4100if(b)return a.setDomain(0,b-1),a.color(v)}}else if(t.Bond.isLocation(p)){const{aUnit:u,aIndex:m}=p,v=h(u,u.elements[m]);if(v>0){const b=f(u,u.elements[m]);if(b)return a.setDomain(0,b-1),a.color(v)}}return c},props:g,description:o,legend:a?a.legend:void 0}}e.SequenceIdColorThemeProvider={name:"sequence-id",label:"Sequence Id",category:i.ColorThemeCategory.Residue,factory:y,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.SequenceIdColorThemeParams),isApplicable:_=>!!_.structure}})(m3)),m3}var p3={},h3={},yu={},s1={},c1={},Ma={},$U;function us(){if($U)return Ma;$U=1,Object.defineProperty(Ma,"__esModule",{value:!0}),Ma.normalizeVec3Array=r,Ma.transformPositionArray=i,Ma.transformDirectionArray=c,Ma.appplyRadius=o,Ma.computeIndexedVertexNormals=g,Ma.computeVertexNormals=a,Ma.createGroupMapping=d;const e=Ge(),t=Vt();function r(p,u){for(let m=0,v=u*3;m<v;m+=3){const b=p[m],P=p[m+1],C=p[m+2],l=1/Math.sqrt(b*b+P*P+C*C);p[m]=b*l,p[m+1]=P*l,p[m+2]=C*l}return p}const n=(0,e.Vec3)();function i(p,u,m,v){for(let b=0,P=v*3;b<P;b+=3)e.Vec3.fromArray(n,u,m+b),e.Vec3.transformMat4(n,n,p),e.Vec3.toArray(n,u,m+b)}function c(p,u,m,v){for(let b=0,P=v*3;b<P;b+=3)e.Vec3.fromArray(n,u,m+b),e.Vec3.transformMat3(n,n,p),e.Vec3.toArray(n,u,m+b)}function o(p,u){for(let m=0,v=p.length;m<v;m+=3)e.Vec3.fromArray(n,p,m),e.Vec3.normalize(n,n),e.Vec3.scale(n,n,u),e.Vec3.toArray(n,p,m)}const s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)();function g(p,u,m,v,b){for(let P=0,C=b*3;P<C;P+=3){const l=u[P]*3,S=u[P+1]*3,T=u[P+2]*3;e.Vec3.fromArray(s,p,l),e.Vec3.fromArray(h,p,S),e.Vec3.fromArray(f,p,T),e.Vec3.sub(y,f,h),e.Vec3.sub(_,s,h),e.Vec3.cross(y,y,_),m[l]+=y[0],m[l+1]+=y[1],m[l+2]+=y[2],m[S]+=y[0],m[S+1]+=y[1],m[S+2]+=y[2],m[T]+=y[0],m[T+1]+=y[1],m[T+2]+=y[2]}return r(m,v)}function a(p,u,m){for(let v=0,b=m*3;v<b;v+=9)e.Vec3.fromArray(s,p,v),e.Vec3.fromArray(h,p,v+3),e.Vec3.fromArray(f,p,v+6),e.Vec3.sub(y,f,h),e.Vec3.sub(_,s,h),e.Vec3.cross(y,y,_),u[v]=y[0],u[v+1]=y[1],u[v+2]=y[2],u[v+3]=y[0],u[v+4]=y[1],u[v+5]=y[2],u[v+6]=y[0],u[v+7]=y[1],u[v+8]=y[2];return r(u,m)}function d(p,u,m=1){const v=(0,t.arrayMax)(p),b=new Int32Array(v+2),P=new Int32Array(u),C=new Int32Array(u);for(let T=0,A=u*m;T<A;T+=m)++C[p[T]];let l=0;for(let T=0;T<u;T++)b[T]=l,l+=C[T];b[u]=l;const S=new Int32Array(l);for(let T=0,A=u*m;T<A;T+=m){const x=p[T],M=b[x]+P[x];S[M]=T,++P[x]}return{indices:S,offsets:b}}return Ma}var gd={},Da={},XU;function kr(){if(XU)return Da;XU=1,Object.defineProperty(Da,"__esModule",{value:!0}),Da.calculateTextureInfo=o,Da.createTextureImage=s,Da.printTextureImage=f,Da.printImageData=a,Da.calculateInvariantBoundingSphere=v,Da.calculateTransformBoundingSphere=P,Da.calculateBoundingSphere=C;const e=rt(),t=Ge(),r=Ki(),n=Vt(),i=t.Vec3.fromArray,c=t.Vec3.transformMat4Offset;function o(l,S){l=Math.max(l,2);const T=Math.sqrt(l);let A=Math.ceil(T);A=A+(S-A%S)%S;const x=A>0?Math.ceil(l/A):0;return{width:A,height:x,length:A*x*S}}function s(l,S,T,A){const{length:x,width:M,height:D}=o(l,S);return A=A&&A.length>=x?A:new T(x),{array:A,width:M,height:D}}const h={scale:1,pixelated:!1,id:"molstar.debug.image",normalize:!1,useCanvas:!1,flipY:!1};function f(l,S={}){const{array:T,width:A,height:x}=l,M=T.length/(A*x),D=new Uint8ClampedArray(A*x*4),[V,R]=(0,n.arrayMinMax)(T);if(M===1){D.fill(255);for(let E=0;E<x;++E)for(let I=0;I<A;++I){const B=E*A+I;S.normalize?D[B*4+0]=(T[B]-V)/(R-V)*255:D[B*4+0]=T[B]*255}}else if(M===4)if(S.normalize)for(let E=0,I=A*x*4;E<I;E+=4)D[E]=(T[E]-V)/(R-V)*255,D[E+1]=(T[E+1]-V)/(R-V)*255,D[E+2]=(T[E+2]-V)/(R-V)*255,D[E+3]=255;else D.set(T);else if(M===3)for(let E=0,I=A*x;E<I;++E)D[E*4]=T[E*3],D[E*4+1]=T[E*3+1],D[E*4+2]=T[E*3+2],D[E*4+3]=255;else console.warn(`itemSize '${M}' not supported`);return a(new ImageData(D,A,x),S)}let y,_,g;function a(l,S={}){const T={...h,...S};if(g||(g=document.createElement("div"),g.style.position="absolute",g.style.bottom="0px",g.style.right="0px",g.style.border="solid orange",g.style.pointerEvents="none",S.flipY&&(g.style.transform="scaleY(-1)"),document.body.appendChild(g)),T.useCanvas){const A=document.getElementById(T.id),x=A||document.createElement("canvas");x.width=l.width,x.height=l.height;const M=x.getContext("2d");if(!M)throw new Error("Could not create canvas 2d context");M.putImageData(l,0,0),x.id=T.id,x.style.width=l.width*T.scale+"px",x.style.height=l.height*T.scale+"px",T.pixelated&&(x.style.imageRendering="pixelated"),x.style.position="relative",x.style.border="solid grey",x.style.pointerEvents="none",A||g.appendChild(x)}else{const A=y||document.createElement("canvas");y=A,A.width=l.width,A.height=l.height;const x=_||A.getContext("2d");if(_=x,!x)throw new Error("Could not create canvas 2d context");x.putImageData(l,0,0),A.toBlob(M=>{const D=URL.createObjectURL(M),V=document.getElementById(T.id),R=V||document.createElement("img");R.id=T.id,R.src=D,R.style.width=l.width*T.scale+"px",R.style.height=l.height*T.scale+"px",T.pixelated&&(R.style.imageRendering="pixelated"),R.style.position="relative",R.style.border="solid grey",R.style.pointerEvents="none",V||g.appendChild(R)},"image/png")}}const d=(0,t.Vec3)(),p=new r.BoundaryHelper("14"),u=new r.BoundaryHelper("98");function m(l){return l>1e5?p:u}function v(l,S,T){const A=T*3,x=m(S);x.reset();for(let D=0,V=S*3;D<V;D+=A)i(d,l,D),x.includePosition(d);x.finishedIncludeStep();for(let D=0,V=S*3;D<V;D+=A)i(d,l,D),x.radiusPosition(d);const M=x.getSphere();if(S<=14){const D=[];for(let V=0,R=S*3;V<R;V+=A)D.push(i((0,t.Vec3)(),l,V));e.Sphere3D.setExtrema(M,D)}return M}const b=(0,t.Mat4)();function P(l,S,T,A){if(T===1){t.Mat4.fromArray(b,S,A);const R=e.Sphere3D.clone(l);return t.Mat4.isIdentity(b)?R:e.Sphere3D.transform(R,R,b)}const x=m(T);x.reset();const{center:M,radius:D,extrema:V}=l;if(V&&T<=14){for(let R=0,E=T;R<E;++R)for(const I of V)c(d,I,S,0,0,R*16+A),x.includePosition(d);x.finishedIncludeStep();for(let R=0,E=T;R<E;++R)for(const I of V)c(d,I,S,0,0,R*16+A),x.radiusPosition(d)}else{for(let R=0,E=T;R<E;++R)c(d,M,S,0,0,R*16+A),x.includePositionRadius(d,D);x.finishedIncludeStep();for(let R=0,E=T;R<E;++R)c(d,M,S,0,0,R*16+A),x.radiusPositionRadius(d,D)}
4100return x.getSphere()}function C(l,S,T,A,x=0,M=1){const D=v(l,S,M),V=P(D,T,A,0);return e.Sphere3D.expand(V,V,x),e.Sphere3D.expand(D,D,x),{boundingSphere:V,invariantBoundingSphere:D}}return Da}var KU;function li(){if(KU)return gd;KU=1,Object.defineProperty(gd,"__esModule",{value:!0}),gd.getMarkersAverage=i,gd.createMarkers=c,gd.createEmptyMarkers=s;const e=Kr(),t=Ge(),r=kr(),n=new Uint8Array(772);n[1]=1,n[2]=1,n[3]=1,n[256]=1,n[512]=1,n[768]=1,n[257]=2,n[513]=2,n[769]=2,n[258]=2,n[514]=2,n[770]=2,n[259]=2,n[515]=2,n[771]=2;function i(h,f){if(f===0)return 0;const y=new Uint32Array(h.buffer,0,h.buffer.byteLength>>2),_=f-4>>2,g=4*_;let a=0;if(_<0)for(let d=0;d<f;++d)a+=h[d]&&1;else{for(let d=0;d<_;++d){const p=y[d];a+=n[p&65535]+n[p>>16]}for(let d=g;d<f;++d)a+=h[d]&&1}return a/f}function c(h,f,y){if(y){const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array,y.tMarker.ref.value.array);return _.array.fill(0,0,h),e.ValueCell.updateIfChanged(y.uMarker,0),e.ValueCell.update(y.tMarker,_),e.ValueCell.update(y.uMarkerTexDim,t.Vec2.create(_.width,_.height)),e.ValueCell.updateIfChanged(y.markerAverage,0),e.ValueCell.updateIfChanged(y.markerStatus,0),e.ValueCell.updateIfChanged(y.dMarkerType,f),y}else{const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array);return{uMarker:e.ValueCell.create(0),tMarker:e.ValueCell.create(_),uMarkerTexDim:e.ValueCell.create(t.Vec2.create(_.width,_.height)),markerAverage:e.ValueCell.create(0),markerStatus:e.ValueCell.create(0),dMarkerType:e.ValueCell.create(f)}}}const o={array:new Uint8Array(1),width:1,height:1};function s(h){return h?(e.ValueCell.updateIfChanged(h.uMarker,0),e.ValueCell.update(h.tMarker,o),e.ValueCell.update(h.uMarkerTexDim,t.Vec2.create(1,1)),e.ValueCell.updateIfChanged(h.markerAverage,0),e.ValueCell.updateIfChanged(h.markerStatus,0),h):{uMarker:e.ValueCell.create(0),tMarker:e.ValueCell.create(o),uMarkerTexDim:e.ValueCell.create(t.Vec2.create(1,1)),markerAverage:e.ValueCell.create(0),markerStatus:e.ValueCell.create(0),dMarkerType:e.ValueCell.create("groupInstance")}}return gd}var Is={},la={},YU;function Xa(){if(YU)return la;YU=1,Object.defineProperty(la,"__esModule",{value:!0}),la.DirectLocation=la.NullLocation=void 0,la.isNullLocation=e,la.DataLocation=t,la.isDataLocation=r,la.isDirectLocation=n,la.NullLocation={kind:"null-location"};function e(i){return!!i&&i.kind==="null-location"}function t(i,c,o){return{kind:"data-location",tag:i,data:c,element:o}}function r(i){return!!i&&i.kind==="data-location"}la.DirectLocation={kind:"direct-location"};function n(i){return!!i&&i.kind==="direct-location"}return la}var QU;function zt(){if(QU)return Is;QU=1,Object.defineProperty(Is,"__esModule",{value:!0}),Is.EmptyLocationIterator=void 0,Is.LocationIterator=r,Is.PositionLocation=n,Is.isPositionLocation=i;const e=Ge(),t=Xa();function r(c,o,s,h,f=!1,y=()=>!1,_){if(c%s!==0)throw new Error("incompatible groupCount and stride");const g={location:t.NullLocation,location2:t.NullLocation,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1};let a=g.groupIndex<c,d=!1,p=0,u=0,m=!1;const v=!!_;return{get hasNext(){return a},get isNextNewInstance(){return d},groupCount:c,instanceCount:o,count:c*o,stride:s,nonInstanceable:f,hasLocation2:v,move(){return a&&(g.groupIndex=p,g.instanceIndex=u,g.index=u*c+p,g.location=h(p,m?-1:u),v&&(g.location2=_(p,m?-1:u)),g.isSecondary=y(p,m?-1:u),p+=s,p===c?(++u,d=!0,u<o&&(p=0)):d=!1,a=p<c),g},reset(){g.location=t.NullLocation,g.location2=t.NullLocation,g.index=0,g.groupIndex=0,g.instanceIndex=0,g.isSecondary=!1,a=g.groupIndex<c,d=!1,p=0,u=0,m=!1},skipInstance(){a&&g.instanceIndex===u&&(++u,p=0,a=u<o)},voidInstances(){m=!0}}}Is.EmptyLocationIterator={get hasNext(){return!1},get isNextNewInstance(){return!1},groupCount:0,instanceCount:0,count:0,stride:0,nonInstanceable:!1,hasLocation2:!1,move(){return{location:t.NullLocation,location2:t.NullLocation,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1}},reset(){},skipInstance(){},voidInstances(){}};function n(c,o){return{kind:"position-location",position:c?e.Vec3.clone(c):(0,e.Vec3)(),normal:o?e.Vec3.clone(o):(0,e.Vec3)()}}function i(c){return!!c&&c.kind==="position-location"}return Is}var vu={},ZU;function wi(){if(ZU)return vu;
4100ZU=1,Object.defineProperty(vu,"__esModule",{value:!0}),vu.createColors=o,vu.createValueColor=f,vu.createTextureColor=_,vu.createGridColor=m;const e=et(),t=kr(),r=vt(),n=Ge(),i=Xa(),c=bn();function o(b,P,C,l){var S;const T=s(b,P,C,l);if(C.palette){e.ValueCell.updateIfChanged(T.dUsePalette,!0);const[A,x]=C.palette.domain||[0,1];e.ValueCell.update(T.uPaletteDomain,n.Vec2.set(T.uPaletteDomain.ref.value,A,x)),e.ValueCell.update(T.uPaletteDefault,r.Color.toVec3Normalized(T.uPaletteDefault.ref.value,(S=C.palette.defaultColor)!==null&&S!==void 0?S:(0,r.Color)(13421772))),h(C.palette,T.tPalette)}else e.ValueCell.updateIfChanged(T.dUsePalette,!1);return T}function s(b,P,C,l){switch(C.granularity){case"uniform":return y(b,C.color,l);case"instance":return b.nonInstanceable?a(b,C.color,l):g(b,C.color,l);case"group":return a(b,C.color,l);case"groupInstance":return d(b,C.color,l);case"vertex":return p(P,C.color,l);case"vertexInstance":return u(P,C.color,l);case"volume":return m(C.grid,"volume",l);case"volumeInstance":return m(C.grid,"volumeInstance",l);case"direct":return v(l)}}function h(b,P){let C=!0;const l=P.ref.value;if(b.colors.length!==l.width||l.filter!==b.filter)C=!1;else{const A=l.array;let x=0;for(const M of b.colors){const[D,V,R]=r.Color.toRgb(M);if(A[x++]!==D||A[x++]!==V||A[x++]!==R){C=!1;break}}}if(C)return;const S=new Uint8Array(b.colors.length*3);let T=0;for(const A of b.colors){const[x,M,D]=r.Color.toRgb(A);S[T++]=x,S[T++]=M,S[T++]=D}e.ValueCell.update(P,{array:S,height:1,width:b.colors.length,filter:b.filter})}function f(b,P){return P?(e.ValueCell.update(P.uColor,r.Color.toVec3Normalized(P.uColor.ref.value,b)),e.ValueCell.updateIfChanged(P.dColorType,"uniform"),P):{uColor:e.ValueCell.create(r.Color.toVec3Normalized((0,n.Vec3)(),b)),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(1,1)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create("uniform"),dUsePalette:e.ValueCell.create(!1)}}function y(b,P,C){b.reset();const l=b.hasNext?b.move():{location:i.NullLocation,isSecondary:!1};return f(P(l.location,l.isSecondary),C)}function _(b,P,C){return C?(e.ValueCell.update(C.tColor,b),e.ValueCell.update(C.uColorTexDim,n.Vec2.create(b.width,b.height)),e.ValueCell.updateIfChanged(C.dColorType,P),C):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create(b),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(b.width,b.height)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create(P),dUsePalette:e.ValueCell.create(!1)}}function g(b,P,C){const{instanceCount:l}=b,S=(0,t.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset();b.hasNext;){const{location:T,isSecondary:A,instanceIndex:x}=b.move();r.Color.toArray(P(T,A),S.array,x*3),b.skipInstance()}return _(S,"instance",C)}function a(b,P,C){const{groupCount:l,hasLocation2:S}=b,T=(0,t.createTextureImage)(Math.max(1,l*(S?2:1)),3,Uint8Array,C&&C.tColor.ref.value.array);b.reset();const A=S?6:3;for(;b.hasNext&&!b.isNextNewInstance;){const{location:x,location2:M,isSecondary:D,groupIndex:V}=b.move();r.Color.toArray(P(x,D),T.array,V*A),S&&r.Color.toArray(P(M,D),T.array,V*A+3)}return _(T,"group",C)}function d(b,P,C){const{groupCount:l,instanceCount:S,hasLocation2:T}=b,A=S*l*(T?2:1),x=(0,t.createTextureImage)(Math.max(1,A),3,Uint8Array,C&&C.tColor.ref.value.array);b.reset();const M=T?6:3;for(;b.hasNext;){const{location:D,location2:V,isSecondary:R,index:E}=b.move();r.Color.toArray(P(D,R),x.array,E*M),T&&r.Color.toArray(P(V,R),x.array,E*M+3)}return _(x,"groupInstance",C)}function p(b,P,C){const{groupCount:l,stride:S}=b,T=(0,t.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset(),b.voidInstances();b.hasNext&&!b.isNextNewInstance;){const{location:A,isSecondary:x,groupIndex:M}=b.move(),D=P(A,x);for(let V=0;V<S;++V)r.Color.toArray(D,T.array,(M+V)*3)}return _(T,"vertex",C)}function u(b,P,C){const{groupCount:l,instanceCount:S,stride:T}=b,A=S*l,x=(0,t.createTextureImage)(Math.max(1,A),3,Uint8Array,C&&C.tColor.ref.value.array);for(b.reset();b.hasNext;){const{location:M,isSecondary:D,index:V}=b.move(),R=P(M,D);for(let E=0;E<T;++E)r.Color.toArray(R,x.array,(V+E)*3)}return _(x,"vertexInstance",C)}function m(b,P,C){const{colors:l,dimension:S,transform:T}=b,A=l.getWidth(),x=l.getHeight();return C?(e.ValueCell.update(C.tColorGrid,l),e.ValueCell.update(C.uColorTexDim,n.Vec2.create(A,x)),e.ValueCell.update(C.uColorGridDim,n.Vec3.clone(S)),e.ValueCell.update(C.uColorGridTransform,n.Vec4.clone(T)),e.ValueCell.updateIfChanged(C.dColorType,P),C):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create(l),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(A,x)),uColorGridDim:e.ValueCell.create(n.Vec3.clone(S)),uColorGridTransform:e.ValueCell.create(n.Vec4.clone(T)),dColorType:e.ValueCell.create(P),dUsePalette:e.ValueCell.create(!1)}}function v(b){return b?(e.ValueCell.updateIfChanged(b.dColorType,"direct"),b):{uColor:e.ValueCell.create((0,n.Vec3)()),tColor:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.ValueCell.create((0,c.createNullTexture)()),uPaletteDomain:e.ValueCell.create(n.Vec2.create(0,1)),uPaletteDefault:e.ValueCell.create((0,n.Vec3)()),tPalette:e.ValueCell.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.ValueCell.create(n.Vec2.create(1,1)),uColorGridDim:e.ValueCell.create(n.Vec3.create(1,1,1)),uColorGridTransform:e.ValueCell.create(n.Vec4.create(0,0,0,1)),dColorType:e.ValueCell.create("direct"),dUsePalette:e.ValueCell.create(!1)}}return vu}var g3={},bu={},u1={},JU;function Gne(){if(JU)return u1;JU=1,Object.defineProperty(u1,"__esModule",{value:!0}),u1.createEmptyInstanceGrid=f,u1.calcInstanceGrid=y;const e=nn(),t=Vt(),r=os(),n=wt(),i=jD(),c=ja(),o=n.Vec3.transformMat4Offset,s=n.Vec3.fromArray,h=r.Box3D.add;function f(){return{cellSize:0,cellCount:0,cellOffsets:new Uint32Array,cellSpheres:new Float32Array,cellTransform:new Float32Array,cellInstance:new Float32Array,batchSize:0,batchCount:0,batchOffsets:new Uint32Array,batchSpheres:new Float32Array,batchCell:new Uint32Array}}function y(a,d,p){const u=_(a,d),m=g(u,p),v=new Uint32Array(u.cellOffsets.length),b=new Float32Array(u.cellSpheres.length),P=new Float32Array(u.cellInstance.length);let C=0;for(let S=0,T=m.batchCell.length;S<T;++S){const A=m.batchCell[S],x=u.cellOffsets[A],D=u.cellOffsets[A+1]-x;v[S+1]=v[S]+D;for(let V=0;V<4;++V)b[S*4+V]=u.cellSpheres[A*4+V];for(let V=0;V<D;++V){const R=x+V,E=u.cellInstance[R];for(let I=0;I<16;++I)u.cellTransform[C*16+I]=a.transform[E*16+I];P[C]=E,C+=1}}return{cellSize:u.cellSize,cellCount:u.cellCount,cellOffsets:v,cellSpheres:b,cellTransform:u.cellTransform,cellInstance:P,batchSize:m.batchSize,batchCount:m.batchCount,batchOffsets:m.batchOffsets,batchSpheres:m.batchSpheres,batchCell:(0,t.fillSerial)(m.batchCell)}}function _(a,d){const{instanceCount:p,instance:u,transform:m,invariantBoundingSphere:v}=a,b=new Float32Array(p),P=new Float32Array(p),C=new Float32Array(p),l=e.OrderedSet.ofBounds(0,p),S=r.Box3D.setEmpty((0,r.Box3D)()),{center:T,radius:A}=v,x=n.Vec3.create(A,A,A),M=(0,n.Vec3)();for(let j=0;j<p;++j)o(M,T,m,0,0,j*16),b[j]=M[0],P[j]=M[1],C[j]=M[2],h(S,M);r.Box3D.expand(S,S,x);const D={x:b,y:P,z:C,indices:l}
4100,V={box:S,sphere:c.Sphere3D.fromBox3D((0,c.Sphere3D)(),S)},R=(0,i.GridLookup3D)(D,V,n.Vec3.create(d,d,d)),{array:E,offset:I,count:B}=R.buckets,w=I.length,O=new Uint32Array(w+1),F=new Float32Array(w*4),L=new Float32Array(p*16),U=new Float32Array(p),q=(0,r.Box3D)(),N=(0,c.Sphere3D)();let k=0;for(let j=0;j<w;++j){const H=I[j],G=B[j];O[j]=H;const z=k;for(let W=H,X=H+G;W<X;++W){const Y=E[W];U[k]=u[Y];for(let K=0;K<16;++K)L[k*16+K]=m[Y*16+K];k+=1}if(G===1)o(F,T,L,j*4,0,z*16),F[j*4+3]=A;else{r.Box3D.setEmpty(q);const W=z*16;for(let X=0;X<G;++X)o(M,T,L,0,0,X*16+W),h(q,M);r.Box3D.expand(q,q,x),c.Sphere3D.fromBox3D(N,q),c.Sphere3D.toArray(N,F,j*4)}}return O[w]=I[w-1]+B[w-1],{cellSize:d,cellCount:w,cellOffsets:O,cellSpheres:F,cellTransform:L,cellInstance:U}}function g(a,d){const{cellCount:p,cellSpheres:u}=a,m=new Float32Array(p),v=new Float32Array(p),b=new Float32Array(p),P=e.OrderedSet.ofBounds(0,p),C=r.Box3D.setEmpty((0,r.Box3D)()),l=(0,n.Vec3)();let S=0;for(let U=0;U<p;++U){const q=U*4;s(l,u,q),m[U]=l[0],v[U]=l[1],b[U]=l[2],h(C,l),S=Math.max(S,u[q+3])}const T=n.Vec3.create(S,S,S);r.Box3D.expand(C,C,T);const A={x:m,y:v,z:b,indices:P},x={box:C,sphere:c.Sphere3D.fromBox3D((0,c.Sphere3D)(),C)},M=(0,i.GridLookup3D)(A,x,n.Vec3.create(d,d,d)),{array:D,offset:V,count:R}=M.buckets,E=V.length,I=new Uint32Array(E+1),B=new Float32Array(E*4),w=new Uint32Array(p),O=(0,r.Box3D)(),F=(0,c.Sphere3D)();let L=0;for(let U=0;U<E;++U){const q=V[U],N=R[U];I[U]=q;for(let k=q,j=q+N;k<j;++k)w[L]=D[k],L+=1;if(N===1){const k=D[q];B[U*4]=u[k*4],B[U*4+1]=u[k*4+1],B[U*4+2]=u[k*4+2],B[U*4+3]=u[k*4+3]}else{r.Box3D.setEmpty(O),S=0;for(let k=q,j=q+N;k<j;++k){const H=D[k];l[0]=u[H*4],l[1]=u[H*4+1],l[2]=u[H*4+2],h(O,l),S=Math.max(S,u[H*4+3])}n.Vec3.set(T,S,S,S),r.Box3D.expand(O,O,T),c.Sphere3D.fromBox3D(F,O),c.Sphere3D.toArray(F,B,U*4)}}return I[E]=V[E-1]+R[E-1],{batchSize:d,batchCount:E,batchOffsets:I,batchSpheres:B,batchCell:w}}return u1}var ej;function kl(){if(ej)return bu;ej=1,Object.defineProperty(bu,"__esModule",{value:!0}),bu.createTransform=s,bu.createIdentityTransform=f,bu.fillIdentityTransform=y,bu.updateTransformData=_;const e=et(),t=Ge(),r=Vt(),n=Gne(),i=(0,t.Mat3)(),c=(0,t.Mat4)();function o(g,a){for(let d=0;d<a;d++)if(t.Mat3.fromMat4(i,t.Mat4.fromArray(c,g,d*16)),t.Mat3.determinant(i)<0)return!0;return!1}function s(g,a,d,p,u,m){const v=o(g,a);if(m){e.ValueCell.update(m.matrix,m.matrix.ref.value);const b=m.transform.ref.value.length>=a*16?m.transform.ref.value:new Float32Array(a*16);b.set(g),e.ValueCell.update(m.transform,b),e.ValueCell.updateIfChanged(m.uInstanceCount,a),e.ValueCell.updateIfChanged(m.instanceCount,a);const P=m.aTransform.ref.value.length>=a*16?m.aTransform.ref.value:new Float32Array(a*16);e.ValueCell.update(m.aTransform,P);const C=m.extraTransform.ref.value.length>=a*16?m.extraTransform.ref.value:new Float32Array(a*16);e.ValueCell.update(m.extraTransform,C),e.ValueCell.updateIfChanged(m.hasExtraTransform,!1);const l=m.aInstance.ref.value.length>=a?m.aInstance.ref.value:new Float32Array(a);e.ValueCell.update(m.aInstance,(0,r.fillSerial)(l,a)),e.ValueCell.update(m.hasReflection,v)}else m={aTransform:e.ValueCell.create(new Float32Array(a*16)),matrix:e.ValueCell.create(t.Mat4.identity()),transform:e.ValueCell.create(new Float32Array(g)),extraTransform:e.ValueCell.create(new Float32Array(a*16)),hasExtraTransform:e.ValueCell.create(!1),uInstanceCount:e.ValueCell.create(a),instanceCount:e.ValueCell.create(a),aInstance:e.ValueCell.create((0,r.fillSerial)(new Float32Array(a))),hasReflection:e.ValueCell.create(v),instanceGrid:e.ValueCell.create((0,n.createEmptyInstanceGrid)())};return _(m,d,p,u),m}const h=new Float32Array(16);t.Mat4.toArray(t.Mat4.identity(),h,0);function f(g){return s(new Float32Array(h),1,void 0,0,0,g)}function y(g,a){for(let d=0;d<a;d++)g.set(h,d*16);return g}function _(g,a,d,p){const u=g.aTransform.ref.value,m=g.aInstance.ref.value,v=g.instanceCount.ref.value,b=g.matrix.ref.value,P=g.transform.ref.value,C=g.extraTransform.ref.value,l=g.hasExtraTransform.ref.value,S=t.Mat4.isIdentity(b);if(!l&&S)for(let T=0,A=v*16;T<A;T++)u[T]=P[T];else if(!l&&!S)for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,b,P,A,0,A)}else if(l&&S)for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,C,P,A,A,A)}else for(let T=0;T<v;T++){const A=T*16;t.Mat4.mulOffset(u,C,P,A,A,A),t.Mat4.mulOffset(u,b,u,A,0,A)}for(let T=0;T<v;T++)m[T]=T;if(a&&v>0){const T=(0,n.calcInstanceGrid)({instanceCount:v,instance:m,transform:u,invariantBoundingSphere:a},d,p);e.ValueCell.update(g.instanceGrid,T),e.ValueCell.update(g.aInstance,T.cellInstance),e.ValueCell.update(g.aTransform,T.cellTransform)}else e.ValueCell.update(g.aInstance,m),e.ValueCell.update(g.aTransform,u)}return bu}var y3={},tj;function yQ(){return tj||(tj=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.UniformSizeThemeProvider=e.UniformSizeThemeParams=void 0,e.getUniformSizeThemeParams=n,e.UniformSizeTheme=i;const t=Ne(),r="Gives everything the same, uniform size.";e.UniformSizeThemeParams={value:t.ParamDefinition.Numeric(1,{min:0,max:20,step:.1})};function n(c){return e.UniformSizeThemeParams}function i(c,o){const s=o.value;return{factory:i,granularity:"uniform",size:()=>s,props:o,description:r}}e.UniformSizeThemeProvider={name:"uniform",label:"Uniform",category:"",factory:i,getParams:n,defaultValues:t.ParamDefinition.getDefaultValues(e.UniformSizeThemeParams),isApplicable:c=>!0}})(y3)),y3}var l1={},rj;function tc(){if(rj)return l1;rj=1,Object.defineProperty(l1,"__esModule",{value:!0}),l1.Material=t;const e=Ne();function t(r){return{...t.Zero,...r}}return(function(r){r.Zero={metalness:0,roughness:0,bumpiness:0};function n(h,f,y){return f[y]=h.metalness*255,f[y+1]=h.roughness*255,f[y+2]=h.bumpiness*255,f}r.toArray=n;function i(h,f,y){return f[y]=h.metalness,f[y+1]=h.roughness,f[y+2]=h.bumpiness,f}r.toArrayNormalized=i;function c(h,f){return h.metalness===f.metalness&&h.roughness===f.roughness&&h.bumpiness===f.bumpiness}r.areEqual=c;function o({metalness:h,roughness:f,bumpiness:y}){return`M ${h.toFixed(2)} | R ${f.toFixed(2)} | B ${y.toFixed(2)}`}r.toString=o;function s(h){return e.ParamDefinition.Group({metalness:e.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),roughness:e.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),bumpiness:e.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})},{...h,presets:[[{metalness:0,roughness:1,bumpiness:0},"Matte"],[{metalness:0,roughness:.2,bumpiness:0},"Plastic"],[{metalness:0,roughness:.6,bumpiness:0},"Glossy"],[{metalness:1,roughness:.6,bumpiness:0},"Metallic"]]})}r.getParam=s})(t||(l1.Material=t={})),l1}var d1={},nj;function Pw(){if(nj)return d1;nj=1,Object.defineProperty(d1,"__esModule",{value:!0}),d1.Clip=s;const e=rn(),t=Xr(),r=rs(),n=wt(),i=er(),c=Ne(),o=ui();function s(){}return(function(h){h.Type={none:0,plane:1,sphere:2,cube:3,cylinder:4,infiniteCone:5},h.Params={variant:c.ParamDefinition.Select("pixel",c.ParamDefinition.arrayToOptions(["instance","pixel"])),objects:c.ParamDefinition.ObjectList({type:c.ParamDefinition.Select("plane",c.ParamDefinition.objectToOptions(h.Type,v=>(0,o.stringToWords)(v))),invert:c.ParamDefinition.Boolean(!1),position:c.ParamDefinition.Vec3((0,n.Vec3)()),rotation:c.ParamDefinition.Group({axis:c.ParamDefinition.Vec3(n.Vec3.create(1,0,0)),angle:c.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{description:"Angle in Degrees"})},{isExpanded:!0}),scale:c.ParamDefinition.Vec3(n.Vec3.create(1,1,1)),transform:c.ParamDefinition.Mat4(t.Mat4.identity())},v=>(0,o.stringToWords)(v.type))};function f(v){return{count:0,type:new Array(v).fill(1),invert:new Array(v).fill(!1),position:new Array(v*3).fill(0),rotation:new Array(v*4).fill(0),scale:new Array(v*3).fill(1),transform:new Array(v*16).fill(0)}}const y=(0,r.Quat)(),_=(0,r.Quat)(),g=(0,n.Vec3)(),a=(0,n.Vec3)(),d=(0,t.Mat4)(),p=(0,t.Mat4)();function u(v,b){const P=v.objects.length,{type:C,invert:l,position:S,rotation:T,scale:A,transform:x}=b?.objects||f(P);for(let M=0;M<P;++M){const D=v.objects[M];C[M]=h.Type[D.type],l[M]=D.invert,n.Vec3.toArray(D.position,S,M*3),n.Vec3.normalize(g,D.rotation.axis),r.Quat.toArray(r.Quat.setAxisAngle(y,g,(0,i.degToRad)(D.rotation.angle)),T,M*4),n.Vec3.toArray(D.scale,A,M*3),t.Mat4.toArray(D.transform,x,M*16)}return{variant:v.variant,objects:{count:P,type:C,invert:l,position:S,rotation:T,scale:A,transform:x}}}h.getClip=u;function m(v,b){if(v.variant!==b.variant||v.objects.count!==b.objects.count)return!1;const P=v.objects,C=b.objects;for(let l=0,S=P.count;l<S;++l)if(P.invert[l]!==C.invert[l]||P.type[l]!==C.type[l]||(n.Vec3.fromArray(g,P.position,l*3),n.Vec3.fromArray(a,C.position,l*3),!n.Vec3.equals(g,a))||(n.Vec3.fromArray(g,P.scale,l*3),n.Vec3.fromArray(a,C.scale,l*3),!n.Vec3.equals(g,a))||(r.Quat.fromArray(y,P.rotation,l*4),r.Quat.fromArray(_,C.rotation,l*4),!r.Quat.equals(y,_))||(t.Mat4.fromArray(d,P.transform,l*16),t.Mat4.fromArray(p,C.transform,l*16),!t.Mat4.areEqual(d,p,e.EPSILON)))return!1;return!0}h.areEqual=m})(s||(d1.Clip=s={})),d1}var ij;function Tt(){return ij||(ij=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.BaseGeometry=e.AutoInstanceGranularityThreshold=e.InstanceGranularityOptions=e.ColorSmoothingParams=e.VisualQualityOptions=e.VisualQualityNames=e.VisualQualityInfo=void 0,e.hasColorSmoothingProp=d,e.getColorSmoothingProps=p,e.resolveInstanceGranularity=u;const t=et(),r=zt(),n=Ne(),i=kl(),c=Vr(),o=Xa(),s=wS(),h=yQ(),f=ir(),y=tc(),_=Pw(),g=wt(),a=Fa();e.VisualQualityInfo={custom:{},auto:{},highest:{},higher:{},high:{},medium:{},low:{},lower:{},lowest:{}},e.VisualQualityNames=Object.keys(e.VisualQualityInfo),e.VisualQualityOptions=n.ParamDefinition.arrayToOptions(e.VisualQualityNames),e.ColorSmoothingParams={smoothColors:n.ParamDefinition.MappedStatic("auto",{auto:n.ParamDefinition.Group({}),on:n.ParamDefinition.Group({resolutionFactor:n.ParamDefinition.Numeric(2,{min:.5,max:6,step:.1}),sampleStride:n.ParamDefinition.Numeric(3,{min:1,max:12,step:1})}),off:n.ParamDefinition.Group({})})};function d(v){return!!v.smoothColors}function p(v,b,P){if((v.name==="on"||v.name==="auto"&&b)&&P&&P<3){let C=3;return v.name==="on"?(P*=v.params.resolutionFactor,C=v.params.sampleStride):(P*=2-(0,f.smoothstep)(0,1.1,P),P=Math.max(.5,P),P>1.2&&(C=2)),{resolution:P,stride:C}}}e.InstanceGranularityOptions=[[!0,"On"],[!1,"Off"],["auto","Auto"]],e.AutoInstanceGranularityThreshold=5e7;function u(v,b,P){return v==="auto"?b*P>e.AutoInstanceGranularityThreshold:v}var m;(function(v){v.MaterialCategory={category:"Material"},v.ShadingCategory={category:"Shading"},v.CullingLodCategory={category:"Culling & LOD"},v.CustomQualityParamInfo={category:"Custom Quality",hideIf:T=>typeof T.quality<"u"&&T.quality!=="custom"},v.Params={alpha:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01},{label:"Opacity",isEssential:!0,description:"How opaque/transparent the representation is rendered."}),quality:n.ParamDefinition.Select("auto",e.VisualQualityOptions,{isEssential:!0,description:"Visual/rendering quality of the representation."}),material:y.Material.getParam(),clip:n.ParamDefinition.Group(_.Clip.Params),emissive:n.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),density:n.ParamDefinition.Numeric(.2,{min:0,max:1,step:.01},{description:"Density value to estimate object thickness."}),instanceGranularity:n.ParamDefinition.Select("auto",e.InstanceGranularityOptions,{description:"Use instance granularity for marker, transparency, clipping, overpaint, substance data to save memory. When set to `auto`, granularity is enabled if `groupCount * instanceCount` exceeds `AutoInstanceGranularityThreshold`."}),lod:n.ParamDefinition.Vec3((0,g.Vec3)(),void 0,{...v.CullingLodCategory,description:"Level of detail.",fieldLabels:{x:"Min Distance",y:"Max Distance",z:"Overlap (Shader)"}}),cellSize:n.ParamDefinition.Numeric(200,{min:0,max:5e3,step:100},{...v.CullingLodCategory,description:"Instance grid cell size."}),batchSize:n.ParamDefinition.Numeric(2e3,{min:0,max:5e4,step:500},{...v.CullingLodCategory,description:"Instance grid batch size."})};function b(T=c.ColorNames.grey,A=1,x){x||(x=(0,i.createIdentityTransform)());const M=(0,r.LocationIterator)(1,x.instanceCount.ref.value,1,()=>o.NullLocation,!1,()=>!1),D={color:(0,s.UniformColorTheme)({},{value:T,lightness:0,saturation:0}),size:(0,h.UniformSizeTheme)({},{value:A})};return{transform:x,locationIterator:M,theme:D}}v.createSimple=b;function P(T,A){const x=_.Clip.getClip(T.clip);return{alpha:t.ValueCell.create(T.alpha),uAlpha:t.ValueCell.create(T.alpha),uVertexCount:t.ValueCell.create(A.vertexCount),uGroupCount:t.ValueCell.create(A.groupCount),drawCount:t.ValueCell.create(A.drawCount),uMetalness:t.ValueCell.create(T.material.metalness),uRoughness:t.ValueCell.create(T.material.roughness),uBumpiness:t.ValueCell.create(T.material.bumpiness),uEmissive:t.ValueCell.create(T.emissive),uDensity:t.ValueCell.create(T.density),dClipObjectCount:t.ValueCell.create(x.objects.count),dClipVariant:t.ValueCell.create(x.variant),uClipObjectType:t.ValueCell.create(x.objects.type),uClipObjectInvert:t.ValueCell.create(x.objects.invert),uClipObjectPosition:t.ValueCell.create(x.objects.position),uClipObjectRotation:t.ValueCell.create(x.objects.rotation),uClipObjectScale:t.ValueCell.create(x.objects.scale),uClipObjectTransform:t.ValueCell.create(x.objects.transform),instanceGranularity:t.ValueCell.create(u(T.instanceGranularity,A.groupCount,A.instanceCount)),uLod:t.ValueCell.create(a.Vec4.create(T.lod[0],T.lod[1],T.lod[2],0))}}v.createValues=P;function C(T,A){t.ValueCell.updateIfChanged(T.alpha,A.alpha),t.ValueCell.updateIfChanged(T.uMetalness,A.material.metalness),t.ValueCell.updateIfChanged(T.uRoughness,A.material.roughness),t.ValueCell.updateIfChanged(T.uBumpiness,A.material.bumpiness),t.ValueCell.updateIfChanged(T.uEmissive,A.emissive),t.ValueCell.updateIfChanged(T.uDensity,A.density);const x=_.Clip.getClip(A.clip);
4100t.ValueCell.updateIfChanged(T.dClipObjectCount,x.objects.count),t.ValueCell.updateIfChanged(T.dClipVariant,x.variant),t.ValueCell.update(T.uClipObjectType,x.objects.type),t.ValueCell.update(T.uClipObjectInvert,x.objects.invert),t.ValueCell.update(T.uClipObjectPosition,x.objects.position),t.ValueCell.update(T.uClipObjectRotation,x.objects.rotation),t.ValueCell.update(T.uClipObjectScale,x.objects.scale),t.ValueCell.update(T.uClipObjectTransform,x.objects.transform),t.ValueCell.updateIfChanged(T.instanceGranularity,u(A.instanceGranularity,T.uGroupCount.ref.value,T.instanceCount.ref.value)),t.ValueCell.update(T.uLod,a.Vec4.set(T.uLod.ref.value,A.lod[0],A.lod[1],A.lod[2],0))}v.updateValues=C;function l(T={}){const A=T.alpha===void 0?!0:T.alpha===1;return{disposed:!1,visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,opaque:A,writeDepth:A}}v.createRenderableState=l;function S(T,A){T.opaque=A.alpha*T.alphaFactor>=1,T.writeDepth=T.opaque}v.updateRenderableState=S})(m||(e.BaseGeometry=m={}))})(g3)),g3}var _u={},aj;function Ka(){if(aj)return _u;aj=1,Object.defineProperty(_u,"__esModule",{value:!0}),_u.applyOverpaintColor=c,_u.clearOverpaint=o,_u.createOverpaint=s,_u.createEmptyOverpaint=f;const e=Kr(),t=Ge(),r=kr(),n=vt(),i=bn();function c(y,_,g,a){for(let d=_;d<g;++d)n.Color.toArray(a,y,d*4),y[d*4+3]=255;return!0}function o(y,_,g){return y.fill(0,_*4,g*4),!0}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),4,Uint8Array,g&&g.tOverpaint.ref.value.array);return g?(e.ValueCell.update(g.tOverpaint,a),e.ValueCell.update(g.uOverpaintTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dOverpaint,y>0),e.ValueCell.updateIfChanged(g.dOverpaintType,_),g):{tOverpaint:e.ValueCell.create(a),uOverpaintTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dOverpaint:e.ValueCell.create(y>0),tOverpaintGrid:e.ValueCell.create((0,i.createNullTexture)()),uOverpaintGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uOverpaintGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dOverpaintType:e.ValueCell.create(_),uOverpaintStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(4),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tOverpaint,h),e.ValueCell.update(y.uOverpaintTexDim,t.Vec2.create(1,1)),y):{tOverpaint:e.ValueCell.create(h),uOverpaintTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dOverpaint:e.ValueCell.create(!1),tOverpaintGrid:e.ValueCell.create((0,i.createNullTexture)()),uOverpaintGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uOverpaintGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dOverpaintType:e.ValueCell.create("groupInstance"),uOverpaintStrength:e.ValueCell.create(1)}}return _u}var jo={},oj;function Ya(){if(oj)return jo;oj=1,Object.defineProperty(jo,"__esModule",{value:!0}),jo.applyTransparencyValue=i,jo.getTransparencyAverage=c,jo.getTransparencyMin=o,jo.clearTransparency=s,jo.createTransparency=h,jo.createEmptyTransparency=y;const e=Kr(),t=Ge(),r=kr(),n=bn();function i(_,g,a,d){for(let p=g;p<a;++p)_[p]=d*255;return!0}function c(_,g){if(g===0||_.length<g)return 0;let a=0;for(let d=0;d<g;++d)a+=_[d];return a/(255*g)}function o(_,g){if(g===0||_.length<g)return 1;let a=255;for(let d=0;d<g;++d)_[d]>0&&_[d]<a&&(a=_[d]);return a/255}function s(_,g,a){_.fill(0,g,a)}function h(_,g,a){const d=(0,r.createTextureImage)(Math.max(1,_),1,Uint8Array,a&&a.tTransparency.ref.value.array);return a?(e.ValueCell.update(a.tTransparency,d),e.ValueCell.update(a.uTransparencyTexDim,t.Vec2.create(d.width,d.height)),e.ValueCell.updateIfChanged(a.dTransparency,_>0),e.ValueCell.updateIfChanged(a.transparencyAverage,c(d.array,_)),e.ValueCell.updateIfChanged(a.transparencyMin,o(d.array,_)),e.ValueCell.updateIfChanged(a.dTransparencyType,g),a):{tTransparency:e.ValueCell.create(d),uTransparencyTexDim:e.ValueCell.create(t.Vec2.create(d.width,d.height)),dTransparency:e.ValueCell.create(_>0),transparencyAverage:e.ValueCell.create(0),transparencyMin:e.ValueCell.create(1),tTransparencyGrid:e.ValueCell.create((0,n.createNullTexture)()),uTransparencyGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uTransparencyGri
4100dTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dTransparencyType:e.ValueCell.create(g),uTransparencyStrength:e.ValueCell.create(1)}}const f={array:new Uint8Array(1),width:1,height:1};function y(_){return _?(e.ValueCell.update(_.tTransparency,f),e.ValueCell.update(_.uTransparencyTexDim,t.Vec2.create(1,1)),_):{tTransparency:e.ValueCell.create(f),uTransparencyTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dTransparency:e.ValueCell.create(!1),transparencyAverage:e.ValueCell.create(0),transparencyMin:e.ValueCell.create(1),tTransparencyGrid:e.ValueCell.create((0,n.createNullTexture)()),uTransparencyGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uTransparencyGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dTransparencyType:e.ValueCell.create("groupInstance"),uTransparencyStrength:e.ValueCell.create(1)}}return jo}var Su={},sj;function Qa(){if(sj)return Su;sj=1,Object.defineProperty(Su,"__esModule",{value:!0}),Su.applyClippingGroups=n,Su.clearClipping=i,Su.createClipping=c,Su.createEmptyClipping=s;const e=Kr(),t=Ge(),r=kr();function n(h,f,y,_){return h.fill(_,f,y),!0}function i(h,f,y){h.fill(0,f,y)}function c(h,f,y){const _=(0,r.createTextureImage)(Math.max(1,h),1,Uint8Array,y&&y.tClipping.ref.value.array);return y?(e.ValueCell.update(y.tClipping,_),e.ValueCell.update(y.uClippingTexDim,t.Vec2.create(_.width,_.height)),e.ValueCell.updateIfChanged(y.dClipping,h>0),e.ValueCell.updateIfChanged(y.dClippingType,f),y):{tClipping:e.ValueCell.create(_),uClippingTexDim:e.ValueCell.create(t.Vec2.create(_.width,_.height)),dClipping:e.ValueCell.create(h>0),dClippingType:e.ValueCell.create(f)}}const o={array:new Uint8Array(1),width:1,height:1};function s(h){return h?(e.ValueCell.update(h.tClipping,o),e.ValueCell.update(h.uClippingTexDim,t.Vec2.create(1,1)),e.ValueCell.updateIfChanged(h.dClipping,!1),h):{tClipping:e.ValueCell.create(o),uClippingTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dClipping:e.ValueCell.create(!1),dClippingType:e.ValueCell.create("groupInstance")}}return Su}var Cu={},cj;function Za(){if(cj)return Cu;cj=1,Object.defineProperty(Cu,"__esModule",{value:!0}),Cu.applySubstanceMaterial=c,Cu.clearSubstance=o,Cu.createSubstance=s,Cu.createEmptySubstance=f;const e=Kr(),t=Ge(),r=kr(),n=bn(),i=tc();function c(y,_,g,a){for(let d=_;d<g;++d)i.Material.toArray(a,y,d*4),y[d*4+3]=255;return!0}function o(y,_,g){return y.fill(0,_*4,g*4),!0}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),4,Uint8Array,g&&g.tSubstance.ref.value.array);return g?(e.ValueCell.update(g.tSubstance,a),e.ValueCell.update(g.uSubstanceTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dSubstance,y>0),e.ValueCell.updateIfChanged(g.dSubstanceType,_),g):{tSubstance:e.ValueCell.create(a),uSubstanceTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dSubstance:e.ValueCell.create(y>0),tSubstanceGrid:e.ValueCell.create((0,n.createNullTexture)()),uSubstanceGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uSubstanceGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dSubstanceType:e.ValueCell.create(_),uSubstanceStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(4),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tSubstance,h),e.ValueCell.update(y.uSubstanceTexDim,t.Vec2.create(1,1)),y):{tSubstance:e.ValueCell.create(h),uSubstanceTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dSubstance:e.ValueCell.create(!1),tSubstanceGrid:e.ValueCell.create((0,n.createNullTexture)()),uSubstanceGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uSubstanceGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dSubstanceType:e.ValueCell.create("groupInstance"),uSubstanceStrength:e.ValueCell.create(1)}}return Cu}var ws={},uj;function Ja(){if(uj)return ws;uj=1,Object.defineProperty(ws,"__esModule",{value:!0}),ws.applyEmissiveValue=i,ws.getEmissiveAverage=c,ws.clearEmissive=o,ws.createEmissive=s,ws.createEmptyEmissive=f;const e=Kr(),t=Ge(),r=kr(),n=bn();function i(y,_,g,a){for(let d=_;d<g;++d)y[d]=a*255;return!0}function c(y,_){if(_===0||y.length<_)return 0;let g=0;for(let a=0;a<_;++a)g+=y[a];return g/(255*_)}function o(y,_,g){y.fill(0,_,g)}function s(y,_,g){const a=(0,r.createTextureImage)(Math.max(1,y),1,Uint8Array,g&&g.tEmissive.ref.value.array);return g?(e.ValueCell.update(g.tEmissive,a),e.ValueCell.update(g.uEmissiveTexDim,t.Vec2.create(a.width,a.height)),e.ValueCell.updateIfChanged(g.dEmissive,y>0),e.ValueCell.updateIfChanged(g.emissiveAverage,c(a.array,y)),e.ValueCell.updateIfChanged(g.dEmissiveType,_),g):{tEmissive:e.ValueCell.create(a),uEmissiveTexDim:e.ValueCell.create(t.Vec2.create(a.width,a.height)),dEmissive:e.ValueCell.create(y>0),emissiveAverage:e.ValueCell.create(0),tEmissiveGrid:e.ValueCell.create((0,n.createNullTexture)()),uEmissiveGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uEmissiveGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dEmissiveType:e.ValueCell.create(_),uEmissiveStrength:e.ValueCell.create(1)}}const h={array:new Uint8Array(1),width:1,height:1};function f(y){return y?(e.ValueCell.update(y.tEmissive,h),e.ValueCell.update(y.uEmissiveTexDim,t.Vec2.create(1,1)),y):{tEmissive:e.ValueCell.create(h),uEmissiveTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dEmissive:e.ValueCell.create(!1),emissiveAverage:e.ValueCell.create(0),tEmissiveGrid:e.ValueCell.create((0,n.createNullTexture)()),uEmissiveGridDim:e.ValueCell.create(t.Vec3.create(1,1,1)),uEmissiveGridTransform:e.ValueCell.create(t.Vec4.create(0,0,0,1)),dEmissiveType:e.ValueCell.create("groupInstance"),uEmissiveStrength:e.ValueCell.create(1)}}return ws}var Vs={},lj;function eo(){if(lj)return Vs;lj=1,Object.defineProperty(Vs,"__esModule",{value:!0}),Vs.applyWiggleValue=n,Vs.getWiggleAverage=i,Vs.clearWiggle=c,Vs.createWiggle=o,Vs.createEmptyWiggle=h;const e=Kr(),t=Ge(),r=kr();function n(f,y,_,g){for(let a=y;a<_;++a)f[a]=g*255;return!0}
4100function i(f,y){if(y===0||f.length<y)return 0;let _=0;for(let g=0;g<y;++g)_+=f[g];return _/(255*y)}function c(f,y,_){f.fill(0,y,_)}function o(f,y,_){const g=(0,r.createTextureImage)(Math.max(1,f),1,Uint8Array,_&&_.tWiggle.ref.value.array);return _?(e.ValueCell.update(_.tWiggle,g),e.ValueCell.update(_.uWiggleTexDim,t.Vec2.create(g.width,g.height)),e.ValueCell.updateIfChanged(_.dWiggle,f>0),e.ValueCell.updateIfChanged(_.wiggleAverage,i(g.array,f)),e.ValueCell.updateIfChanged(_.dWiggleType,y),_):{tWiggle:e.ValueCell.create(g),uWiggleTexDim:e.ValueCell.create(t.Vec2.create(g.width,g.height)),dWiggle:e.ValueCell.create(f>0),wiggleAverage:e.ValueCell.create(0),dWiggleType:e.ValueCell.create(y),uWiggleStrength:e.ValueCell.create(1)}}const s={array:new Uint8Array(1),width:1,height:1};function h(f){return f?(e.ValueCell.update(f.tWiggle,s),e.ValueCell.update(f.uWiggleTexDim,t.Vec2.create(1,1)),f):{tWiggle:e.ValueCell.create(s),uWiggleTexDim:e.ValueCell.create(t.Vec2.create(1,1)),dWiggle:e.ValueCell.create(!1),wiggleAverage:e.ValueCell.create(0),dWiggleType:e.ValueCell.create("groupInstance"),uWiggleStrength:e.ValueCell.create(1)}}return Vs}var Go={},dj;function jf(){if(dj)return Go;dj=1,Object.defineProperty(Go,"__esModule",{value:!0}),Go.getInteriorParam=c,Go.areInteriorPropsEquals=o,Go.getInteriorColor=s,Go.getInteriorSubstance=h,Go.createInteriorValues=f,Go.updateInteriorValues=y;const e=Fa(),t=wn(),r=tc(),n=Ne(),i=Kr();function c(){return n.ParamDefinition.Group({color:n.ParamDefinition.Color(t.Color.fromRgb(76,76,76)),colorStrength:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),substance:r.Material.getParam(),substanceStrength:n.ParamDefinition.Numeric(1,{min:0,max:1,step:.01})})}function o(_,g){return _.color===g.color&&_.colorStrength===g.colorStrength&&r.Material.areEqual(_.substance,g.substance)&&_.substanceStrength===g.substanceStrength}function s(_,g){return t.Color.toArrayNormalized(_.color,g,0),g[3]=_.colorStrength,g}function h(_,g){return r.Material.toArrayNormalized(_.substance,g,0),g[3]=_.substanceStrength,g}function f(_){return{uInteriorColor:i.ValueCell.create(s(_,(0,e.Vec4)())),uInteriorSubstance:i.ValueCell.create(h(_,(0,e.Vec4)()))}}function y(_,g){i.ValueCell.update(_.uInteriorColor,s(g,_.uInteriorColor.ref.value)),i.ValueCell.update(_.uInteriorSubstance,h(g,_.uInteriorSubstance.ref.value))}return Go}var Pu={},fj;function rc(){if(fj)return Pu;fj=1,Object.defineProperty(Pu,"__esModule",{value:!0}),Pu.getAnimationParam=r,Pu.areAnimationPropsEqual=n,Pu.createAnimationValues=i,Pu.updateAnimationValues=c;const e=et(),t=Ne();function r(){return t.ParamDefinition.Group({wiggleMode:t.ParamDefinition.Select("position",[["position","Position"],["group","Group"]],{description:"Noise seeding mode. Position: spatially correlated (nearby atoms move together). Group: per-group independent noise."}),wiggleSpeed:t.ParamDefinition.Numeric(7,{min:0,max:10,step:.1},{description:"Speed of vertex wiggle animation."}),wiggleAmplitude:t.ParamDefinition.Numeric(0,{min:0,max:5,step:.01},{description:"Amplitude of vertex wiggle animation."}),wiggleFrequency:t.ParamDefinition.Numeric(.2,{min:.01,max:2,step:.01},{description:"Spatial frequency of vertex wiggle noise (position mode). Lower values correlate nearby atoms more."}),tumbleSpeed:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},{description:"Speed of instance tumble animation."}),tumbleAmplitude:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},{description:"Amplitude of instance tumble animation. In Ã
ngströms of implied surface displacement."}),tumbleFrequency:t.ParamDefinition.Numeric(.2,{min:0,max:2,step:.01},{description:"Spatial frequency multiplier for tumble noise."})})}function n(o,s){return o.wiggleMode===s.wiggleMode&&o.wiggleSpeed===s.wiggleSpeed&&o.wiggleAmplitude===s.wiggleAmplitude&&o.wiggleFrequency===s.wiggleFrequency&&o.tumbleSpeed===s.tumbleSpeed&&o.tumbleAmplitude===s.tumbleAmplitude&&o.tumbleFrequency===s.tumbleFrequency}function i(o){return{uWiggleSpeed:e.ValueCell.create(o.wiggleSpeed),uWiggleAmplitude:e.ValueCell.create(o.wiggleAmplitude),uWiggleFrequency:e.ValueCell.create(o.wiggleFrequency),uWiggleMode:e.ValueCell.create(o.wiggleMode==="position"?0:1),uTumbleSpeed:e.ValueCell.create(o.tumbleSpeed),uTumbleAmplitude:e.ValueCell.create(o.tumbleAmplitude),uTumbleFrequency:e.ValueCell.create(o.tumbleFrequency)}}function c(o,s){e.ValueCell.updateIfChanged(o.uWiggleSpeed,s.wiggleSpeed),e.ValueCell.updateIfChanged(o.uWiggleAmplitude,s.wiggleAmplitude),e.ValueCell.updateIfChanged(o.uWiggleFrequency,s.wiggleFrequency),e.ValueCell.updateIfChanged(o.uWiggleMode,s.wiggleMode==="position"?0:1),e.ValueCell.updateIfChanged(o.uTumbleSpeed,s.tumbleSpeed),e.ValueCell.updateIfChanged(o.uTumbleAmplitude,s.tumbleAmplitude),e.ValueCell.updateIfChanged(o.uTumbleFrequency,s.tumbleFrequency)}return Pu}var mj;function Rt(){if(mj)return c1;mj=1,Object.defineProperty(c1,"__esModule",{value:!0}),c1.Mesh=void 0;const e=et(),t=Ge(),r=rt(),n=us(),i=li(),c=zt(),o=wi(),s=_t(),h=Ne(),f=kr(),y=Tt(),_=Ka(),g=Ya(),a=Qa(),d=Vt(),p=er(),u=Za(),m=Ja(),v=eo(),b=jf(),P=rc();
4100var C;return(function(l){function S(K,Q,J,ae,te,ne,$){return $?M(K,Q,J,ae,te,ne,$):x(K,Q,J,ae,te,ne)}l.create=S;function T(K){const Q=K?K.vertexBuffer.ref.value:new Float32Array(0),J=K?K.indexBuffer.ref.value:new Uint32Array(0),ae=K?K.normalBuffer.ref.value:new Float32Array(0),te=K?K.groupBuffer.ref.value:new Float32Array(0);return S(Q,J,ae,te,0,0,K)}l.createEmpty=T;function A(K){return(0,s.hashFnv32a)([K.vertexCount,K.triangleCount,K.vertexBuffer.ref.version,K.indexBuffer.ref.version,K.normalBuffer.ref.version,K.groupBuffer.ref.version])}function x(K,Q,J,ae,te,ne){const $=(0,r.Sphere3D)();let ie,Z=-1,re=-1;const oe={kind:"mesh",vertexCount:te,triangleCount:ne,vertexBuffer:e.ValueCell.create(K),indexBuffer:e.ValueCell.create(Q),normalBuffer:e.ValueCell.create(J),groupBuffer:e.ValueCell.create(ae),varyingGroup:e.ValueCell.create(!1),get boundingSphere(){const ce=A(oe);if(ce!==Z){const ue=(0,f.calculateInvariantBoundingSphere)(oe.vertexBuffer.ref.value,oe.vertexCount,1);r.Sphere3D.copy($,ue),Z=ce}return $},get groupMapping(){return oe.groupBuffer.ref.version!==re&&(ie=(0,n.createGroupMapping)(oe.groupBuffer.ref.value,oe.vertexCount),re=oe.groupBuffer.ref.version),ie},setBoundingSphere(ce){r.Sphere3D.copy($,ce),Z=A(oe)},hasBoundingSphere(){return Z===A(oe)},meta:{}};return oe}function M(K,Q,J,ae,te,ne,$){return $.vertexCount=te,$.triangleCount=ne,e.ValueCell.update($.vertexBuffer,K),e.ValueCell.update($.indexBuffer,Q),e.ValueCell.update($.normalBuffer,J),e.ValueCell.update($.groupBuffer,ae),$}function D(K){const{vertexCount:Q,triangleCount:J}=K,ae=K.vertexBuffer.ref.value,te=K.indexBuffer.ref.value,ne=K.normalBuffer.ref.value.length>=Q*3?K.normalBuffer.ref.value:new Float32Array(Q*3);ne===K.normalBuffer.ref.value&&ne.fill(0,0,Q*3),(0,n.computeIndexedVertexNormals)(ae,te,ne,Q,J),e.ValueCell.update(K.normalBuffer,ne)}l.computeNormals=D;function V(K,Q=3){const J=K.vertexBuffer.ref.value,ae=new Map,te=(ie,Z)=>`${ie[0].toFixed(Z)}|${ie[1].toFixed(Z)}|${ie[2].toFixed(Z)}`;let ne=0;const $=(0,t.Vec3)();for(let ie=0,Z=K.vertexCount;ie<Z;++ie){t.Vec3.fromArray($,J,ie*3);const re=te($,Q),oe=ae.get(re);oe!==void 0?(ne+=1,ae.set(re,oe+1)):ae.set(re,1)}return ne}l.checkForDuplicateVertices=V;const R=(0,t.Mat3)();function E(K,Q){const J=K.vertexBuffer.ref.value;if((0,n.transformPositionArray)(Q,J,0,K.vertexCount),!t.Mat4.isTranslationAndUniformScaling(Q)){const ae=t.Mat3.directionTransform(R,Q);(0,n.transformDirectionArray)(ae,K.normalBuffer.ref.value,0,K.vertexCount)}e.ValueCell.update(K.vertexBuffer,J)}l.transform=E;function I(K){const{originalData:Q}="kind"in K?K.meta:K.meta.ref.value;return Q}l.getOriginalData=I;function B(K,Q=!0){const{indexBuffer:J,vertexBuffer:ae,groupBuffer:te,normalBuffer:ne,triangleCount:$,vertexCount:ie}=K,Z=J.ref.value,re=ae.ref.value,oe=te.ref.value,ce=ne.ref.value,ue=s.ChunkedArray.create(Uint32Array,3,1024,$),pe=s.ChunkedArray.create(Float32Array,3,1024,re);pe.currentIndex=ie*3,pe.elementCount=ie;const he=s.ChunkedArray.create(Float32Array,3,1024,ce);he.currentIndex=ie*3,he.elementCount=ie;const fe=s.ChunkedArray.create(Float32Array,1,1024,oe);fe.currentIndex=ie,fe.elementCount=ie;const de=(0,t.Vec3)(),ge=(0,t.Vec3)(),Ce=(0,t.Vec3)(),ve=(0,t.Vec3)(),le=(0,t.Vec3)(),me=(0,t.Vec3)();function ee(Me){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ve,ce,Me*3),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function se(Me,Re){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ge,re,Re*3),t.Vec3.scale(de,t.Vec3.add(de,de,ge),.5),t.Vec3.fromArray(ve,ce,Me*3),t.Vec3.fromArray(le,ce,Re*3),t.Vec3.scale(ve,t.Vec3.add(ve,ve,le),.5),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function ye(Me,Re,Te){t.Vec3.fromArray(de,re,Me*3),t.Vec3.fromArray(ge,re,Re*3),t.Vec3.fromArray(Ce,re,Te*3),t.Vec3.scale(de,t.Vec3.add(de,t.Vec3.add(de,de,ge),Ce),1/3),t.Vec3.fromArray(ve,ce,Me*3),t.Vec3.fromArray(le,ce,Re*3),t.Vec3.fromArray(me,ce,Te*3),t.Vec3.scale(ve,t.Vec3.add(ve,t.Vec3.add(ve,ve,le),me),1/3),s.ChunkedArray.add3(pe,de[0],de[1],de[2]),s.ChunkedArray.add3(he,ve[0],ve[1],ve[2])}function Se(Me,Re,Te,Ve,qe){++_e,ee(Me),se(Me,Re),se(Me,Te),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+2);for(let ke=0;ke<3;++ke)s.ChunkedArray.add(fe,Ve);Ae+=3,_e+=2,ee(Re),ee(Te),se(Me,Re),se(Me,Te),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let ke=0;ke<4;++ke)s.ChunkedArray.add(fe,qe);Ae+=4}let Ae=ie,_e=0;if(Q)for(let Me=0,Re=$;Me<Re;
4100++Me){const Te=Z[Me*3],Ve=Z[Me*3+1],qe=Z[Me*3+2],ke=oe[Te],ze=oe[Ve],We=oe[qe];if(ke===ze&&ke===We)++_e,s.ChunkedArray.add3(ue,Te,Ve,qe);else if(ke===ze)Se(qe,Te,Ve,We,ke);else if(ke===We)Se(Ve,qe,Te,ze,We);else if(ze===We)Se(Te,Ve,qe,ke,ze);else{_e+=2,ee(Te),se(Te,Ve),se(Te,qe),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,ke);Ae+=4,_e+=2,ee(Ve),se(Ve,qe),se(Ve,Te),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+3),s.ChunkedArray.add3(ue,Ae,Ae+3,Ae+2);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,ze);Ae+=4,_e+=2,ee(qe),se(qe,Ve),se(qe,Te),ye(Te,Ve,qe),s.ChunkedArray.add3(ue,Ae+3,Ae+1,Ae),s.ChunkedArray.add3(ue,Ae+2,Ae+3,Ae);for(let Je=0;Je<4;++Je)s.ChunkedArray.add(fe,We);Ae+=4}}else for(let Me=0,Re=$;Me<Re;++Me){const Te=Z[Me*3],Ve=Z[Me*3+1],qe=Z[Me*3+2],ke=oe[Te],ze=oe[Ve],We=oe[qe];if(ke!==ze||ke!==We){++_e,ee(Te),ee(Ve),ee(qe),s.ChunkedArray.add3(ue,Ae,Ae+1,Ae+2);const Je=ze===We?ze:ke;for(let De=0;De<3;++De)s.ChunkedArray.add(fe,Je);Ae+=3}else++_e,s.ChunkedArray.add3(ue,Te,Ve,qe)}const be=s.ChunkedArray.compact(ue),xe=s.ChunkedArray.compact(pe),we=s.ChunkedArray.compact(he),Be=s.ChunkedArray.compact(fe);return K.vertexCount=Ae,K.triangleCount=_e,e.ValueCell.update(ae,xe),e.ValueCell.update(te,Be),e.ValueCell.update(J,be),e.ValueCell.update(ne,we),K.meta.originalData={indexBuffer:Z,vertexCount:ie,triangleCount:$},K}l.uniformTriangleGroup=B;function w(K){const{vertexCount:Q,triangleCount:J}=K,ae=K.indexBuffer.ref.value,te=[];for(let ne=0;ne<Q;++ne)te[ne]=[];for(let ne=0;ne<J;++ne){const $=ae[ne*3],ie=ae[ne*3+1],Z=ae[ne*3+2];(0,d.arraySetAdd)(te[$],ie),(0,d.arraySetAdd)(te[$],Z),(0,d.arraySetAdd)(te[ie],$),(0,d.arraySetAdd)(te[ie],Z),(0,d.arraySetAdd)(te[Z],$),(0,d.arraySetAdd)(te[Z],ie)}return te}function O(K){const{triangleCount:Q}=K,J=K.indexBuffer.ref.value,ae=new Map,te=(ne,$)=>{const ie=(0,s.sortedCantorPairing)(ne,$),Z=ae.get(ie)||0;ae.set(ie,Z+1)};for(let ne=0;ne<Q;++ne){const $=J[ne*3],ie=J[ne*3+1],Z=J[ne*3+2];te($,ie),te($,Z),te(ie,Z)}return ae}function F(K){const Q=new Set,J=[0,0];return K.forEach((ae,te)=>{ae===1&&((0,s.invertCantorPairing)(J,te),Q.add(J[0]),Q.add(J[1]))}),Q}function L(K,Q,J){const ae=new Map,te=(ne,$)=>{ae.has(ne)?(0,d.arraySetAdd)(ae.get(ne),$):ae.set(ne,[$])};return Q.forEach(ne=>{const $=K[ne];for(const ie of $)Q.has(ie)&&J.get((0,s.sortedCantorPairing)(ne,ie))===1&&te(ne,ie)}),ae}function U(K,Q){const{indexBuffer:J,triangleCount:ae}=K,te=J.ref.value,ne=s.ChunkedArray.create(Uint32Array,3,1024,ae);let $=0;for(let Z=0;Z<ae;++Z){const re=te[Z*3],oe=te[Z*3+1],ce=te[Z*3+2];Q[re].length===2||Q[oe].length===2||Q[ce].length===2||(s.ChunkedArray.add3(ne,re,oe,ce),$+=1)}const ie=s.ChunkedArray.compact(ne);return K.triangleCount=$,e.ValueCell.update(J,ie),K}function q(K,Q,J,ae){var te;const{vertexBuffer:ne,indexBuffer:$,normalBuffer:ie,triangleCount:Z}=K,re=ne.ref.value,oe=$.ref.value,ce=ie.ref.value,ue=s.ChunkedArray.create(Uint32Array,3,1024,Z);let pe=0;for(let be=0;be<Z;++be)s.ChunkedArray.add3(ue,oe[be*3],oe[be*3+1],oe[be*3+2]),pe+=1;const he=(0,t.Vec3)(),fe=(0,t.Vec3)(),de=(0,t.Vec3)(),ge=(0,t.Vec3)(),Ce=(0,t.Vec3)(),ve=(0,t.Vec3)(),le=(0,t.Vec3)(),me=(0,t.Vec3)(),ee=(0,t.Vec3)(),se=(0,t.Vec3)(),ye=(0,p.degToRad)(120),Se=new Set,Ae=Array.from(J.keys()).filter(be=>J.get(be).length<2).map(be=>{const xe=J.get(be);return t.Vec3.fromArray(he,re,be*3),t.Vec3.fromArray(fe,re,xe[0]*3),t.Vec3.fromArray(de,re,xe[1]*3),t.Vec3.sub(Ce,fe,he),t.Vec3.sub(ve,de,he),[be,t.Vec3.angle(Ce,ve)]});Ae.sort(([,be],[,xe])=>be-xe);for(const[be,xe]of Ae){if(Se.has(be)||xe>ye)continue;const we=J.get(be);if(Q[we[0]].includes(we[1])&&!(!((te=J.get(we[0]))===null||te===void 0)&&te.includes(we[1]))||(t.Vec3.fromArray(he,re,be*3),t.Vec3.fromArray(fe,re,we[0]*3),t.Vec3.fromArray(de,re,we[1]*3),t.Vec3.sub(Ce,fe,he),t.Vec3.sub(ve,de,he),t.Vec3.add(me,Ce,ve),t.Vec3.squaredDistance(he,fe)>=ae))continue;let Be=!1;for(const Me of Q[be])if(!we.includes(Me)&&(t.Vec3.fromArray(ge,re,Me*3),t.Vec3.sub(le,ge,he),t.Vec3.dot(me,le)<0)){Be=!0;break}Be&&(t.Vec3.fromArray(ee,ce,be*3),t.Vec3.triangleNormal(se,he,fe,de),t.Vec3.dot(se,ee)>0?s.ChunkedArray.add3(ue,be,we[0],we[1]):s.ChunkedArray.add3(ue,we[1],we[0],be),Se.add(be),Se.add(we[0]),Se.add(we[1]),pe+=1)}const _e=s.ChunkedArray.compact(ue);return K.triangleCount=pe,e.ValueCell.update($,_e),K}function N(K,Q,J){const{iterations:ae,lambda:te}=J,ne=(0,t.Vec3)(),$=(0,t.Vec3)(),ie=(0,t.Vec3)(),Z=(0,t.Vec3)(),re=-te;let oe=new Float32Array(K.vertexBuffer.ref.value.length);const ce=ue=>{const pe=K.vertexBuffer.ref.value;oe.set(pe),Q.forEach((fe,de)=>{if(fe.length!==2)return;t.Vec3.fromArray(ne,pe,de*3),t.Vec3.fromArray($,pe,fe[0]*3),t.Vec3.fromArray(ie,pe,fe[1]*3);const ge=1/t.Vec3.distance(ne,$),Ce=1/t.Vec3.distance(ne,ie);t.Vec3.scale($,$,ge),t.Vec3.scale(ie,ie,Ce),t.Vec3.add(Z,$,ie),t.Vec3.scale(Z,Z,1/(ge+Ce)),t.Vec3.sub(Z,Z,ne),t.Vec3.scale(Z,Z,ue),t.Vec3.add(Z,ne,Z),t.Vec3.toArray(Z,oe,de*3)});const he=K.vertexBuffer.ref.value;e.ValueCell.update(K.vertexBuffer,oe),oe=he};for(let ue=0;ue<ae;++ue)ce(te),ce(re)}function k(K,Q){U(K,w(K));for(let $=0;$<10;++$){const ie=K.triangleCount,Z=O(K),re=w(K),oe=F(Z),ce=L(re,oe,Z);if(q(K,re,ce,Q.maxNewEdgeLength*Q.maxNewEdgeLength),K.triangleCount===ie)break}const J=O(K),ae=w(K),te=F(J),ne=L(ae,te,J);return N(K,ne,{iterations:Q.iterations,lambda:.5}),K}l.smoothEdges=k,l.Params={...y.BaseGeometry.Params,doubleSided:h.ParamDefinition.Boolean(!1,y.BaseGeometry.CustomQualityParamInfo),flipSided:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),flatShaded:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),ignoreLight:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),celShaded:h.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),xrayShaded:h.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],y.BaseGeometry.ShadingCategory),transparentBackfaces:h.ParamDefinition.Select("off",h.ParamDefinition.arrayToOptions(["off","on","opaque"]),y.BaseGeometry.ShadingCategory),bumpFrequency:h.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory),bumpAmplitude:h.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},y.BaseGeometry.ShadingCategory),interior:(0,b.getInteriorParam)(),animation:(0,P.getAnimationParam)()},l.Utils={Params:l.Params,createEmpty:T,createValues:H,createValuesSimple:G,updateValues:z,updateBoundingSphere:W,createRenderableState:X,updateRenderableState:Y,createPositionIterator:j};function j(K,Q){const J=K.vertexCount,ae=Q.instanceCount.ref.value,te=(0,c.PositionLocation)(),ne=te.position,$=te.normal,ie=K.vertexBuffer.ref.value,Z=K.normalBuffer.ref.value,re=Q.aTransform.ref.value,oe=(ce,ue)=>(ue<0?(t.Vec3.fromArray(ne,ie,ce*3),t.Vec3.fromArray($,Z,ce*3)):(t.Vec3.transformMat4Offset(ne,ie,re,0,ce*3,ue*16),t.Vec3.transformDirectionOffset($,Z,re,0,ce*3,ue*16)),te);return(0,c.LocationIterator)(J,ae,1,oe)}function H(K,Q,J,ae,te){const{instanceCount:ne,groupCount:$}=J,ie=j(K,Q),Z=(0,o.createColors)(J,ie,ae.color),re=(0,y.resolveInstanceGranularity)(te.instanceGranularity,$,ne)?(0,i.createMarkers)(ne,"instance"):(0,i.createMarkers)(ne*$,"groupInstance"),oe=(0,_.createEmptyOverpaint)(),ce=(0,g.createEmptyTransparency)(),ue=(0,m.createEmptyEmissive)(),pe=(0,u.createEmptySubstance)(),he=(0,a.createEmptyClipping)(),fe=(0,v.createEmptyWiggle)(),de={drawCount:K.triangleCount*3,vertexCount:K.vertexCount,groupCount:$,instanceCount:ne},ge=r.Sphere3D.clone(K.boundingSphere),Ce=(0,f.calculateTransformBoundingSphere)(ge,Q.aTransform.ref.value,ne,0);return{dGeometryType:e.ValueCell.create("mesh"),aPosition:K.vertexBuffer,aNormal:K.normalBuffer,aGroup:K.groupBuffer,elements:K.indexBuffer,dVaryingGroup:K.varyingGroup,boundingSphere:e.ValueCell.create(Ce),invariantBoundingSphere:e.ValueCell.create(ge),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ge)),...Z,...re,...oe,...ce,...ue,...pe,...he,...fe,...Q,...y.BaseGeometry.createValues(te,de),uDoubleSided:e.ValueCell.create(te.doubleSided),dFlatShaded:e.ValueCell.create(te.flatShaded),dFlipSided:e.ValueCell.create(te.flipSided),dIgnoreLight:e.ValueCell.create(te.ignoreLight),dCelShaded:e.ValueCell.create(te.celShaded),dXrayShaded:e.ValueCell.create(te.xraySha
4100ded==="inverted"?"inverted":te.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(te.transparentBackfaces),uBumpFrequency:e.ValueCell.create(te.bumpFrequency),uBumpAmplitude:e.ValueCell.create(te.bumpAmplitude),meta:e.ValueCell.create(K.meta),...(0,b.createInteriorValues)(te.interior),...(0,P.createAnimationValues)(te.animation)}}function G(K,Q,J,ae,te){const ne=y.BaseGeometry.createSimple(J,ae,te),$={...h.ParamDefinition.getDefaultValues(l.Params),...Q};return H(K,ne.transform,ne.locationIterator,ne.theme,$)}function z(K,Q){y.BaseGeometry.updateValues(K,Q),e.ValueCell.updateIfChanged(K.uDoubleSided,Q.doubleSided),e.ValueCell.updateIfChanged(K.dFlatShaded,Q.flatShaded),e.ValueCell.updateIfChanged(K.dFlipSided,Q.flipSided),e.ValueCell.updateIfChanged(K.dIgnoreLight,Q.ignoreLight),e.ValueCell.updateIfChanged(K.dCelShaded,Q.celShaded),e.ValueCell.updateIfChanged(K.dXrayShaded,Q.xrayShaded==="inverted"?"inverted":Q.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(K.dTransparentBackfaces,Q.transparentBackfaces),e.ValueCell.updateIfChanged(K.uBumpFrequency,Q.bumpFrequency),e.ValueCell.updateIfChanged(K.uBumpAmplitude,Q.bumpAmplitude),(0,b.updateInteriorValues)(K,Q.interior),(0,P.updateAnimationValues)(K,Q.animation)}function W(K,Q){const J=r.Sphere3D.clone(Q.boundingSphere),ae=(0,f.calculateTransformBoundingSphere)(J,K.aTransform.ref.value,K.instanceCount.ref.value,0);r.Sphere3D.equals(ae,K.boundingSphere.ref.value)||e.ValueCell.update(K.boundingSphere,ae),r.Sphere3D.equals(J,K.invariantBoundingSphere.ref.value)||(e.ValueCell.update(K.invariantBoundingSphere,J),e.ValueCell.update(K.uInvariantBoundingSphere,t.Vec4.fromSphere(K.uInvariantBoundingSphere.ref.value,J)))}function X(K){const Q=y.BaseGeometry.createRenderableState(K);return Y(Q,K),Q}function Y(K,Q){y.BaseGeometry.updateRenderableState(K,Q),K.opaque=K.opaque&&!Q.xrayShaded,K.writeDepth=K.opaque}})(C||(c1.Mesh=C={})),c1}var f1={},v3={},Tu={},pj;function nc(){if(pj)return Tu;pj=1,Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.packIntToRGBArray=n,Tu.unpackRGBToInt=i,Tu.unpackRGBAToDepth=f,Tu.arrayMaxPackedIntToRGB=y;const e=ir(),t=wt(),r=Fa();function n(_,g,a){return _=(0,e.clamp)(Math.round(_),0,16777215)+1,g[a+2]=_%256,_=Math.floor(_/256),g[a+1]=_%256,_=Math.floor(_/256),g[a]=_%256,g}function i(_,g,a){return Math.floor(_)*256*256+Math.floor(g)*256+Math.floor(a)-1}const c=255/256,o=t.Vec3.create(256*256*256,256*256,256),s=r.Vec4.create(c/o[0],c/o[1],c/o[2],c/1),h=(0,r.Vec4)();function f(_,g,a,d){return r.Vec4.set(h,_/255,g/255,a/255,d/255),r.Vec4.dot(h,s)}function y(_,g){let a=-1/0;for(let d=0,p=_.length;d<p;d+=g){const u=i(_[d],_[d+1],_[d+2]);u>a&&(a=u)}return a}return Tu}var hj;function ls(){return hj||(hj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.sizeDataFactor=void 0,e.createSizes=s,e.getMaxSize=h,e.createValueSize=_,e.createUniformSize=g,e.createTextureSize=a,e.createInstanceSize=d,e.createGroupSize=p,e.createGroupInstanceSize=u,e.createVertexSize=m,e.createVertexInstanceSize=v;const t=et(),r=Ge(),n=kr(),i=Xa(),c=Ll(),o=nc();function s(b,P,C,l){switch(c.Geometry.getGranularity(b,C.granularity)){case"uniform":return g(b,C.size,l);case"instance":return d(b,C.size,l);case"group":return p(b,C.size,l);case"groupInstance":return u(b,C.size,l);case"vertex":return m(P,C.size,l);case"vertexInstance":return v(P,C.size,l)}}e.sizeDataFactor=100;function h(b){switch(b.dSizeType.ref.value){case"uniform":return b.uSize.ref.value;case"instance":case"group":case"groupInstance":case"vertex":case"vertexInstance":let C=0;const l=b.tSize.ref.value.array;for(let S=0,T=l.length;S<T;S+=3){const A=(0,o.unpackRGBToInt)(l[S],l[S+1],l[S+2]);C<A&&(C=A)}return C/e.sizeDataFactor}}const f={array:new Uint8Array(3),width:1,height:1};function y(){return{tSize:t.ValueCell.create(f),uSizeTexDim:t.ValueCell.create(r.Vec2.create(1,1))}}function _(b,P){return P?(t.ValueCell.update(P.uSize,b),t.ValueCell.updateIfChanged(P.dSizeType,"uniform"),P):{uSize:t.ValueCell.create(b),...y(),dSizeType:t.ValueCell.create("uniform")}}function g(b,P,C){b.reset();const l=b.hasNext?b.move().location:i.NullLocation;return _(P(l),C)}function a(b,P,C){return C?(t.ValueCell.update(C.tSize,b),t.ValueCell.update(C.uSizeTexDim,r.Vec2.create(b.width,b.height)),t.ValueCell.updateIfChanged(C.dSizeType,P),C):{uSize:t.ValueCell.create(0),tSize:t.ValueCell.create(b),uSizeTexDim:t.ValueCell.create(r.Vec2.create(b.width,b.height)),dSizeType:t.ValueCell.create(P)}}function d(b,P,C){const{instanceCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext&&!b.isNextNewInstance;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.instanceIndex*3),b.skipInstance()}return a(S,"instance",C)}function p(b,P,C){const{groupCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext&&!b.isNextNewInstance;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.groupIndex*3)}return a(S,"group",C)}function u(b,P,C){const{groupCount:l,instanceCount:S}=b,T=S*l,A=(0,n.createTextureImage)(Math.max(1,T),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const x=b.move();(0,o.packIntToRGBArray)(P(x.location)*e.sizeDataFactor,A.array,x.index*3)}return a(A,"groupInstance",C)}function m(b,P,C){const{groupCount:l}=b,S=(0,n.createTextureImage)(Math.max(1,l),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const T=b.move();(0,o.packIntToRGBArray)(P(T.location)*e.sizeDataFactor,S.array,T.index*3)}return a(S,"vertex",C)}function v(b,P,C){const{groupCount:l,instanceCount:S}=b,T=S*l,A=(0,n.createTextureImage)(Math.max(1,T),3,Uint8Array,C&&C.tSize.ref.value.array);for(b.reset();b.hasNext;){const x=b.move();(0,o.packIntToRGBArray)(P(x.location)*e.sizeDataFactor,A.array,x.index*3)}return a(A,"vertexInstance",C)}})(v3)),v3}var gj;function ic(){if(gj)return f1;gj=1,Object.defineProperty(f1,"__esModule",{value:!0}),f1.Points=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=Ne(),h=kr(),f=rt(),y=Tt(),_=Ka(),g=Ya(),a=_t(),d=Qa(),p=Za(),u=Ja(),m=eo(),v=rc();var b;return(function(P){function C(w,O,F,L){return L?A(w,O,F,L):T(w,O,F)}P.create=C;function l(w){const O=w?w.centerBuffer.ref.value:new Float32Array(0),F=w?w.groupBuffer.ref.value:new Float32Array(0);return C(O,F,0,w)}P.createEmpty=l;function S(w){return(0,a.hashFnv32a)([w.pointCount,w.centerBuffer.ref.version,w.groupBuffer.ref.version]
4100)}function T(w,O,F){const L=(0,f.Sphere3D)();let U,q=-1,N=-1;const k={kind:"points",pointCount:F,centerBuffer:e.ValueCell.create(w),groupBuffer:e.ValueCell.create(O),get boundingSphere(){const j=S(k);if(j!==q){const H=(0,h.calculateInvariantBoundingSphere)(k.centerBuffer.ref.value,k.pointCount,1);f.Sphere3D.copy(L,H),q=j}return L},get groupMapping(){return k.groupBuffer.ref.version!==N&&(U=(0,r.createGroupMapping)(k.groupBuffer.ref.value,k.pointCount),N=k.groupBuffer.ref.version),U},setBoundingSphere(j){f.Sphere3D.copy(L,j),q=S(k)},hasBoundingSphere(){return q===S(k)}};return k}function A(w,O,F,L){return L.pointCount=F,e.ValueCell.update(L.centerBuffer,w),e.ValueCell.update(L.groupBuffer,O),L}function x(w,O){const F=w.centerBuffer.ref.value;(0,r.transformPositionArray)(O,F,0,w.pointCount),e.ValueCell.update(w.centerBuffer,F)}P.transform=x,P.StyleTypes={square:"Square",circle:"Circle",fuzzy:"Fuzzy"},P.StyleTypeNames=Object.keys(P.StyleTypes),P.Params={...y.BaseGeometry.Params,sizeFactor:s.ParamDefinition.Numeric(3,{min:0,max:10,step:.1}),pointSizeAttenuation:s.ParamDefinition.Boolean(!1),pointStyle:s.ParamDefinition.Select("square",s.ParamDefinition.objectToOptions(P.StyleTypes)),animation:(0,v.getAnimationParam)()},P.Utils={Params:P.Params,createEmpty:l,createValues:D,createValuesSimple:V,updateValues:R,updateBoundingSphere:E,createRenderableState:I,updateRenderableState:B,createPositionIterator:M};function M(w,O){const F=w.pointCount,L=O.instanceCount.ref.value,U=(0,o.PositionLocation)(),q=U.position,N=w.centerBuffer.ref.value,k=O.aTransform.ref.value,j=(H,G)=>(G<0?t.Vec3.fromArray(q,N,H*3):t.Vec3.transformMat4Offset(q,N,k,0,H*3,G*16),U);return(0,o.LocationIterator)(F,L,1,j)}function D(w,O,F,L,U){const{instanceCount:q,groupCount:N}=F,k=M(w,O),j=(0,n.createColors)(F,k,L.color),H=(0,c.createSizes)(F,k,L.size),G=(0,y.resolveInstanceGranularity)(U.instanceGranularity,N,q)?(0,i.createMarkers)(q,"instance"):(0,i.createMarkers)(q*N,"groupInstance"),z=(0,_.createEmptyOverpaint)(),W=(0,g.createEmptyTransparency)(),X=(0,u.createEmptyEmissive)(),Y=(0,p.createEmptySubstance)(),K=(0,d.createEmptyClipping)(),Q=(0,m.createEmptyWiggle)(),J={drawCount:w.pointCount,vertexCount:w.pointCount,groupCount:N,instanceCount:q},ae=f.Sphere3D.clone(w.boundingSphere),te=(0,h.calculateTransformBoundingSphere)(ae,O.aTransform.ref.value,q,0);return{dGeometryType:e.ValueCell.create("points"),aPosition:w.centerBuffer,aGroup:w.groupBuffer,boundingSphere:e.ValueCell.create(te),invariantBoundingSphere:e.ValueCell.create(ae),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ae)),...j,...H,...G,...z,...W,...X,...Y,...K,...Q,...O,...y.BaseGeometry.createValues(U,J),uSizeFactor:e.ValueCell.create(U.sizeFactor),dPointSizeAttenuation:e.ValueCell.create(U.pointSizeAttenuation),dPointStyle:e.ValueCell.create(U.pointStyle),...(0,v.createAnimationValues)(U.animation)}}function V(w,O,F,L,U){const q=y.BaseGeometry.createSimple(F,L,U),N={...s.ParamDefinition.getDefaultValues(P.Params),...O};return D(w,q.transform,q.locationIterator,q.theme,N)}function R(w,O){y.BaseGeometry.updateValues(w,O),e.ValueCell.updateIfChanged(w.uSizeFactor,O.sizeFactor),e.ValueCell.updateIfChanged(w.dPointSizeAttenuation,O.pointSizeAttenuation),e.ValueCell.updateIfChanged(w.dPointStyle,O.pointStyle),(0,v.updateAnimationValues)(w,O.animation)}function E(w,O){const F=f.Sphere3D.clone(O.boundingSphere),L=(0,h.calculateTransformBoundingSphere)(F,w.aTransform.ref.value,w.instanceCount.ref.value,0);f.Sphere3D.equals(L,w.boundingSphere.ref.value)||e.ValueCell.update(w.boundingSphere,L),f.Sphere3D.equals(F,w.invariantBoundingSphere.ref.value)||(e.ValueCell.update(w.invariantBoundingSphere,F),e.ValueCell.update(w.uInvariantBoundingSphere,t.Vec4.fromSphere(w.uInvariantBoundingSphere.ref.value,F)))}function I(w){const O=y.BaseGeometry.createRenderableState(w);return B(O,w),O}function B(w,O){y.BaseGeometry.updateRenderableState(w,O),w.opaque=w.opaque&&O.pointStyle!=="fuzzy",w.writeDepth=w.opaque}})(b||(f1.Points=b={})),f1}var m1={},b3={},oP={},yj;function zne(){if(yj)return oP;
4100yj=1,Object.defineProperty(oP,"__esModule",{value:!0}),oP.edt=e;function e(r,n,i,c,o,s,h){for(let f=0;f<n;f++){for(let y=0;y<i;y++)c[y]=r[y*n+f];t(c,o,s,h,i);for(let y=0;y<i;y++)r[y*n+f]=o[y]}for(let f=0;f<i;f++){for(let y=0;y<n;y++)c[y]=r[f*n+y];t(c,o,s,h,n);for(let y=0;y<n;y++)r[f*n+y]=Math.sqrt(o[y])}}function t(r,n,i,c,o){i[0]=0,c[0]=Number.MIN_SAFE_INTEGER,c[1]=Number.MAX_SAFE_INTEGER;for(let s=1,h=0;s<o;s++){let f=(r[s]+s*s-(r[i[h]]+i[h]*i[h]))/(2*s-2*i[h]);for(;f<=c[h];)h--,f=(r[s]+s*s-(r[i[h]]+i[h]*i[h]))/(2*s-2*i[h]);h++,i[h]=s,c[h]=f,c[h+1]=Number.MAX_SAFE_INTEGER}for(let s=0,h=0;s<o;s++){for(;c[h+1]<s;)h++;n[s]=(s-i[h])*(s-i[h])+r[i[h]]}}return oP}var vj;function vQ(){return vj||(vj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FontAtlas=e.FontAtlasParams=void 0,e.getFontAtlas=o,e.setCanvasModule=y;const t=Ne(),r=zne(),n=kr(),i=oI(),c={};function o(g){const a=JSON.stringify(g);return c[a]===void 0&&(c[a]=new s(g)),c[a]}e.FontAtlasParams={fontFamily:t.ParamDefinition.Select("sans-serif",[["sans-serif","Sans Serif"],["monospace","Monospace"],["serif","Serif"],["cursive","Cursive"]]),fontQuality:t.ParamDefinition.Select(3,[[0,"lower"],[1,"low"],[2,"medium"],[3,"high"],[4,"higher"]]),fontStyle:t.ParamDefinition.Select("normal",[["normal","Normal"],["italic","Italic"],["oblique","Oblique"]]),fontVariant:t.ParamDefinition.Select("normal",[["normal","Normal"],["small-caps","Small Caps"]]),fontWeight:t.ParamDefinition.Select("normal",[["normal","Normal"],["bold","Bold"]])};class s{constructor(a={}){this.mapped={},this.scratchW=0,this.scratchH=0,this.currentX=0,this.currentY=0,this.cutoff=.5;const d={...t.ParamDefinition.getDefaultValues(e.FontAtlasParams),...a};this.props=d;const p=64*(d.fontQuality+1);this.buffer=p/8,this.radius=p/3,this.lineHeight=Math.round(p+2*this.buffer+this.radius),this.maxWidth=Math.round(this.lineHeight*.75),this.texture=(0,n.createTextureImage)(350*this.lineHeight*this.maxWidth,1,Uint8Array),this.scratchContext=_(this.maxWidth,this.lineHeight,{willReadFrequently:!0}),this.scratchContext.font=`${d.fontStyle} ${d.fontVariant} ${d.fontWeight} ${p}px ${d.fontFamily}`,this.scratchContext.fillStyle="black",this.scratchContext.textBaseline="middle",this.scratchData=new Uint8Array(this.lineHeight*this.maxWidth),this.gridOuter=new Float64Array(this.lineHeight*this.maxWidth),this.gridInner=new Float64Array(this.lineHeight*this.maxWidth),this.f=new Float64Array(Math.max(this.lineHeight,this.maxWidth)),this.d=new Float64Array(Math.max(this.lineHeight,this.maxWidth)),this.z=new Float64Array(Math.max(this.lineHeight,this.maxWidth)+1),this.v=new Int16Array(Math.max(this.lineHeight,this.maxWidth)),this.middle=Math.ceil(this.lineHeight/2),this.placeholder=this.get("�")}get(a){if(this.mapped[a]===void 0){this.draw(a);const{array:d,width:p,height:u}=this.texture,m=this.scratchData;if(this.currentX+this.scratchW>p&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>u)return console.warn("canvas to small"),this.placeholder;this.mapped[a]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH,nw:this.scratchW/this.lineHeight,nh:this.scratchH/this.lineHeight};for(let v=0;v<this.scratchH;++v)for(let b=0;b<this.scratchW;++b)d[p*(this.currentY+v)+this.currentX+b]=m[v*this.scratchW+b];this.currentX+=this.scratchW}return this.mapped[a]}draw(a){const d=this.lineHeight,p=this.scratchContext,u=this.scratchData,m=p.measureText(a),v=Math.min(this.maxWidth,Math.ceil(m.width+2*this.buffer)),b=v*d;p.clearRect(0,0,v,d),p.fillText(a,this.buffer,this.middle);const P=p.getImageData(0,0,v,d);for(let C=0;C<b;C++){const l=P.data[C*4+3]/255;this.gridOuter[C]=l===1?0:l===0?Number.MAX_SAFE_INTEGER:Math.pow(Math.max(0,.5-l),2),this.gridInner[C]=l===1?Number.MAX_SAFE_INTEGER:l===0?0:Math.pow(Math.max(0,l-.5),2)}(0,r.edt)(this.gridOuter,v,d,this.f,this.d,this.v,this.z),(0,r.edt)(this.gridInner,v,d,this.f,this.d,this.v,this.z);for(let C=0;C<b;C++){const l=this.gridOuter[C]-this.gridInner[C];u[C]=Math.max(0,Math.min(255,Math.round(255-255*(l/this.radius+this.cutoff))))}this.scratchW=v,this.scratchH=d}}e.FontAtlas=s;let h;function f(){if(!h)throw new Error("When running in Node.js and wanting to use Canvas API, call mol-util/data-source's setCanvasModule function first and pass imported `canvas` module to it.");return h}function y(g){h=g}function _(g,a,d){if(i.RUNNING_IN_NODEJS)return f().createCanvas(g,a).getContext("2d",d);{const p=document.createElement("canvas");return p.width=g,p.height=a,p.getContext("2d",d)}}})(b3)),b3}var bj;function ya(){if(bj)return m1;bj=1,Object.defineProperty(m1,"__esModule",{value:!0}),m1.Text=void 0;const e=Ne(),t=et(),r=zt(),n=wi(),i=ls(),c=li(),o=Vr(),s=rt(),h=kr(),f=vt(),y=Ge(),_=vQ(),g=ir(),a=Tt(),d=Ka(),p=Ya(),u=_t(),m=us(),v=Qa(),b=Za(),P=Ja(),C=eo();var l;(function(T){function A(L,U,q,N,k,j,H,G,z){return z?V(L,U,q,N,k,j,H,G,z):D(L,U,q,N,k,j,H,G)}T.create=A;function x(L){const U=L?L.fontTexture.ref.value:(0,h.createTextureImage)(0,1,Uint8Array),q=L?L.centerBuffer.ref.value:new Float32Array(0),N=L?L.mappingBuffer.ref.value:new Float32Array(0),k=L?L.depthBuffer.ref.value:new Float32Array(0),j=L?L.indexBuffer.ref.value:new Uint32Array(0),H=L?L.groupBuffer.ref.value:new Float32Array(0),G=L?L.tcoordBuffer.ref.value:new Float32Array(0);return A(U,q,N,k,j,H,G,0,L)}T.createEmpty=x;function M(L){return(0,u.hashFnv32a)([L.charCount,L.fontTexture.ref.version,L.centerBuffer.ref.version,L.mappingBuffer.ref.version,L.depthBuffer.ref.version,L.indexBuffer.ref.version,L.groupBuffer.ref.version,L.tco
4100ordBuffer.ref.version])}function D(L,U,q,N,k,j,H,G){const z=(0,s.Sphere3D)();let W,X=-1,Y=-1;const K={kind:"text",charCount:G,fontTexture:t.ValueCell.create(L),centerBuffer:t.ValueCell.create(U),mappingBuffer:t.ValueCell.create(q),depthBuffer:t.ValueCell.create(N),indexBuffer:t.ValueCell.create(k),groupBuffer:t.ValueCell.create(j),tcoordBuffer:t.ValueCell.create(H),get boundingSphere(){const Q=M(K);if(Q!==X){const J=(0,h.calculateInvariantBoundingSphere)(K.centerBuffer.ref.value,K.charCount*4,4);s.Sphere3D.copy(z,J),X=Q}return z},get groupMapping(){return K.groupBuffer.ref.version!==Y&&(W=(0,m.createGroupMapping)(K.groupBuffer.ref.value,K.charCount,4),Y=K.groupBuffer.ref.version),W},setBoundingSphere(Q){s.Sphere3D.copy(z,Q),X=M(K)},hasBoundingSphere(){return X===M(K)}};return K}function V(L,U,q,N,k,j,H,G,z){return z.charCount=G,t.ValueCell.update(z.fontTexture,L),t.ValueCell.update(z.centerBuffer,U),t.ValueCell.update(z.mappingBuffer,q),t.ValueCell.update(z.depthBuffer,N),t.ValueCell.update(z.indexBuffer,k),t.ValueCell.update(z.groupBuffer,j),t.ValueCell.update(z.tcoordBuffer,H),z}T.Params={...a.BaseGeometry.Params,..._.FontAtlasParams,sizeFactor:e.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),borderWidth:e.ParamDefinition.Numeric(0,{min:0,max:.5,step:.01}),borderColor:e.ParamDefinition.Color(o.ColorNames.grey),offsetX:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),offsetY:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),offsetZ:e.ParamDefinition.Numeric(0,{min:0,max:10,step:.1}),background:e.ParamDefinition.Boolean(!1),backgroundMargin:e.ParamDefinition.Numeric(.2,{min:0,max:1,step:.01}),backgroundColor:e.ParamDefinition.Color(o.ColorNames.grey),backgroundOpacity:e.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),tether:e.ParamDefinition.Boolean(!1),tetherLength:e.ParamDefinition.Numeric(1,{min:0,max:5,step:.1}),tetherBaseWidth:e.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01}),attachment:e.ParamDefinition.Select("middle-center",[["bottom-left","bottom-left"],["bottom-center","bottom-center"],["bottom-right","bottom-right"],["middle-left","middle-left"],["middle-center","middle-center"],["middle-right","middle-right"],["top-left","top-left"],["top-center","top-center"],["top-right","top-right"]])},T.Utils={Params:T.Params,createEmpty:x,createValues:E,createValuesSimple:I,updateValues:B,updateBoundingSphere:w,createRenderableState:O,updateRenderableState:F,createPositionIterator:R};function R(L,U){const q=L.charCount*4,N=U.instanceCount.ref.value,k=(0,r.PositionLocation)(),j=k.position,H=L.centerBuffer.ref.value,G=U.aTransform.ref.value,z=(W,X)=>(X<0?y.Vec3.fromArray(j,H,W*3):y.Vec3.transformMat4Offset(j,H,G,0,W*3,X*16),k);return(0,r.LocationIterator)(q,N,4,z)}function E(L,U,q,N,k){const{instanceCount:j,groupCount:H}=q,G=R(L,U),z=(0,n.createColors)(q,G,N.color),W=(0,i.createSizes)(q,G,N.size),X=(0,a.resolveInstanceGranularity)(k.instanceGranularity,H,j)?(0,c.createMarkers)(j,"instance"):(0,c.createMarkers)(j*H,"groupInstance"),Y=(0,d.createEmptyOverpaint)(),K=(0,p.createEmptyTransparency)(),Q=(0,P.createEmptyEmissive)(),J=(0,b.createEmptySubstance)(),ae=(0,v.createEmptyClipping)(),te=(0,C.createEmptyWiggle)(),ne={drawCount:L.charCount*2*3,vertexCount:L.charCount*4,groupCount:H,instanceCount:j},$=(0,i.getMaxSize)(W)*k.sizeFactor,ie=S(L.mappingBuffer.ref.value,L.depthBuffer.ref.value,L.charCount,$),Z=s.Sphere3D.expand((0,s.Sphere3D)(),L.boundingSphere,ie),re=(0,h.calculateTransformBoundingSphere)(Z,U.aTransform.ref.value,j,0);return{dGeometryType:t.ValueCell.create("text"),aPosition:L.centerBuffer,aMapping:L.mappingBuffer,aDepth:L.depthBuffer,aGroup:L.groupBuffer,elements:L.indexBuffer,boundingSphere:t.ValueCell.create(re),invariantBoundingSphere:t.ValueCell.create(Z),uInvariantBoundingSphere:t.ValueCell.create(y.Vec4.ofSphere(Z)),...z,...W,...X,...Y,...K,...Q,...J,...ae,...te,...U,aTexCoord:L.tcoordBuffer,tFont:L.fontTexture,padding:t.ValueCell.create(ie),...a.BaseGeometry.createValues(k,ne),uSizeFactor:t.ValueCell.create(k.sizeFactor),uBorderWidth:t.ValueCell.create((0,g.clamp)(k.borderWidth,0,.5)),uBorderColor:t.ValueCell.create(f.Color.toArrayNormalized(k.borderColor,y.Vec3.zero(),0)),uOffsetX:t.ValueCell.create(k.offsetX),uOffsetY:t.ValueCell.create(k.offsetY),uOffsetZ:t.ValueCell.create(k.offsetZ),uBackgroun
4100dColor:t.ValueCell.create(f.Color.toArrayNormalized(k.backgroundColor,y.Vec3.zero(),0)),uBackgroundOpacity:t.ValueCell.create(k.backgroundOpacity)}}function I(L,U,q,N,k){const j=a.BaseGeometry.createSimple(q,N,k),H={...e.ParamDefinition.getDefaultValues(T.Params),...U};return E(L,j.transform,j.locationIterator,j.theme,H)}function B(L,U){a.BaseGeometry.updateValues(L,U),t.ValueCell.updateIfChanged(L.uSizeFactor,U.sizeFactor),t.ValueCell.updateIfChanged(L.uBorderWidth,U.borderWidth),f.Color.fromNormalizedArray(L.uBorderColor.ref.value,0)!==U.borderColor&&(f.Color.toArrayNormalized(U.borderColor,L.uBorderColor.ref.value,0),t.ValueCell.update(L.uBorderColor,L.uBorderColor.ref.value)),t.ValueCell.updateIfChanged(L.uOffsetX,U.offsetX),t.ValueCell.updateIfChanged(L.uOffsetY,U.offsetY),t.ValueCell.updateIfChanged(L.uOffsetZ,U.offsetZ),f.Color.fromNormalizedArray(L.uBackgroundColor.ref.value,0)!==U.backgroundColor&&(f.Color.toArrayNormalized(U.backgroundColor,L.uBackgroundColor.ref.value,0),t.ValueCell.update(L.uBackgroundColor,L.uBackgroun
4100dColor.ref.value)),t.ValueCell.updateIfChanged(L.uBackgroundOpacity,U.backgroundOpacity)}function w(L,U){const q=(0,i.getMaxSize)(L)*L.uSizeFactor.ref.value,N=S(L.aMapping.ref.value,L.aDepth.ref.value,U.charCount,q),k=s.Sphere3D.expand((0,s.Sphere3D)(),U.boundingSphere,N),j=(0,h.calculateTransformBoundingSphere)(k,L.aTransform.ref.value,L.instanceCount.ref.value,0);s.Sphere3D.equals(j,L.boundingSphere.ref.value)||t.ValueCell.update(L.boundingSphere,j),s.Sphere3D.equals(k,L.invariantBoundingSphere.ref.value)||(t.ValueCell.update(L.invariantBoundingSphere,k),t.ValueCell.update(L.uInvariantBoundingSphere,y.Vec4.fromSphere(L.uInvariantBoundingSphere.ref.value,k))),t.ValueCell.update(L.padding,N)}function O(L){const U=a.BaseGeometry.createRenderableState(L);return F(U,L),U}function F(L,U){a.BaseGeometry.updateRenderableState(L,U),L.pickable=!1,L.opaque=!1,L.writeDepth=!0}})(l||(m1.Text=l={}));function S(T,A,x,M){let D=0,V=0,R=0;for(let E=0,I=x*4;E<I;++E){const B=2*E,w=Math.abs(T[B]);w>D&&(D=w);const O=Math.abs(T[B+1]);O>V&&(V=O);const F=Math.abs(A[E]);F>R&&(R=F)}return Math.max(R,M*Math.sqrt(D*D+V*V))}return m1}var p1={},xu={},_j;function ac(){if(_j)return xu;_j=1,Object.defineProperty(xu,"__esModule",{value:!0}),xu.StripLinesBuilder=xu.LinesBuilder=void 0;const e=_t(),t=kn(),r=Ge(),n=e.ChunkedArray.add,i=e.ChunkedArray.add2,c=e.ChunkedArray.add3,o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,r.Vec3)();var f;(function(g){function a(d=2048,p=1024,u){const m=e.ChunkedArray.create(Float32Array,1,p,u?u.groupBuffer.ref.value:d),v=e.ChunkedArray.create(Float32Array,3,p,u?u.startBuffer.ref.value:d),b=e.ChunkedArray.create(Float32Array,3,p,u?u.endBuffer.ref.value:d),P=(S,T,A,x,M,D,V)=>{for(let R=0;R<4;++R)c(v,S,T,A),c(b,x,M,D),n(m,V)},C=(S,T,A)=>{for(let x=0;x<4;++x)c(v,S[0],S[1],S[2]),c(b,T[0],T[1],T[2]),n(m,A)},l=(S,T,A,x)=>{const M=r.Vec3.distance(S,T),D=A%2!==0,V=Math.floor((A+1)/2),R=M/(A+.5);r.Vec3.setMagnitude(h,r.Vec3.sub(h,T,S),R),r.Vec3.copy(o,S);for(let E=0;E<V;++E)r.Vec3.add(o,o,h),D&&E===V-1?r.Vec3.copy(s,T):r.Vec3.add(s,o,h),P(o[0],o[1],o[2],s[0],s[1],s[2],x),r.Vec3.add(o,o,h)};return{add:P,addVec:C,addFixedCountDashes:l,addFixedLengthDashes:(S,T,A,x)=>{const M=r.Vec3.distance(S,T);l(S,T,M/A,x)},addCage:(S,T,A)=>{const{vertices:x,edges:M}=T;for(let D=0,V=M.length;D<V;D+=2)r.Vec3.fromArray(o,x,M[D]*3),r.Vec3.fromArray(s,x,M[D+1]*3),r.Vec3.transformMat4(o,o,S),r.Vec3.transformMat4(s,s,S),P(o[0],o[1],o[2],s[0],s[1],s[2],A)},getLines:()=>{const S=m.elementCount/4,T=m.elementCount,A=e.ChunkedArray.compact(m,!0),x=e.ChunkedArray.compact(v,!0),M=e.ChunkedArray.compact(b,!0),D=u&&S<=u.lineCount&&u.stripCount.ref.value===0?u.mappingBuffer.ref.value:new Float32Array(S*8),V=u&&S<=u.lineCount&&u.stripCount.ref.value===0?u.indexBuffer.ref.value:new Uint32Array(S*6),R=u?u.stripBuffer.ref.value:new Uint32Array(0);return(!u||S>u.lineCount||u.stripCount.ref.value>0)&&y(S,D,V),t.Lines.create(D,V,A,x,M,R,S,T,0,u)}}}g.create=a})(f||(xu.LinesBuilder=f={}));function y(g,a,d){for(let p=0;p<g;++p){const u=p*8;a[u]=-1,a[u+1]=-1,a[u+2]=1,a[u+3]=-1,a[u+4]=-1,a[u+5]=1,a[u+6]=1,a[u+7]=1}for(let p=0;p<g;++p){const u=p*4,m=p*6;d[m]=u,d[m+1]=u+1,d[m+2]=u+2,d[m+3]=u+1,d[m+4]=u+3,d[m+5]=u+2}}var _;return(function(g){function a(d=2048,p=1024,u){const m=e.ChunkedArray.create(Float32Array,1,p,u?u.groupBuffer.ref.value:d),v=e.ChunkedArray.create(Float32Array,3,p,u?u.startBuffer.ref.value:d),b=e.ChunkedArray.create(Float32Array,3,p,u?u.endBuffer.ref.value:d),P=e.ChunkedArray.create(Float32Array,2,p,u?u.mappingBuffer.ref.value:d),C=e.ChunkedArray.create(Uint32Array,3,p,u?u.indexBuffer.ref.value:d),l=e.ChunkedArray.create(Uint32Array,1,p,u?u.stripBuffer.ref.value:d);let S=0,T=0,A=0,x=0,M=0,D=0;const V=(R,E,I)=>{if(T===0){A=m.elementCount,x=R,M=E,D=I,T=1;return}const B=m.elementCount;T===1&&(c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,-1,-1),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,1,-1)),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,-1,1),c(v,x,M,D),c(b,R,E,I),n(m,S),i(P,1,1);const w=T===1?A:B-2,O=T===1?B+2:B;c(C,w,w+1,O),c(C,w+1,O+1,O),x=R,M=E,D=I,T++};return{start:R=>{S=R,T=0,l.elementCount===0&&n(l,0)},add:(R,E,I)=>{V(R,E,I)},addVec:R=>{V(R[0],R[1],R[2])},end:()=>{T=0,n(l,m.elementCount)}
4100,getLines:()=>{const R=C.elementCount/2,E=m.elementCount,I=l.elementCount-1,B=e.ChunkedArray.compact(m,!0),w=e.ChunkedArray.compact(v,!0),O=e.ChunkedArray.compact(b,!0),F=e.ChunkedArray.compact(P,!0),L=e.ChunkedArray.compact(C,!0),U=e.ChunkedArray.compact(l,!0);return t.Lines.create(F,L,B,w,O,U,R,E,I,u)}}}g.create=a})(_||(xu.StripLinesBuilder=_={})),xu}var Sj;function kn(){if(Sj)return p1;Sj=1,Object.defineProperty(p1,"__esModule",{value:!0}),p1.Lines=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=ac(),h=Ne(),f=kr(),y=rt(),_=Tt(),g=Ka(),a=Ya(),d=_t(),p=Qa(),u=Za(),m=Ja(),v=eo(),b=rc();var P;return(function(C){function l(w,O,F,L,U,q,N,k,j,H){return H?M(w,O,F,L,U,q,N,k,j,H):x(w,O,F,L,U,q,N,k,j)}C.create=l;function S(w){const O=w?w.mappingBuffer.ref.value:new Float32Array(0),F=w?w.indexBuffer.ref.value:new Uint32Array(0),L=w?w.groupBuffer.ref.value:new Float32Array(0),U=w?w.startBuffer.ref.value:new Float32Array(0),q=w?w.endBuffer.ref.value:new Float32Array(0),N=w?w.stripBuffer.ref.value:new Uint32Array(0);return l(O,F,L,U,q,N,0,0,0,w)}C.createEmpty=S;function T(w,O){const F=w.vertexBuffer.ref.value,L=w.indexBuffer.ref.value,U=w.groupBuffer.ref.value,q=s.LinesBuilder.create(w.triangleCount*3,w.triangleCount/10,O);for(let N=0,k=w.triangleCount*3;N<k;N+=3){const j=L[N],H=L[N+1],G=L[N+2],z=F[j*3],W=F[j*3+1],X=F[j*3+2],Y=F[H*3],K=F[H*3+1],Q=F[H*3+2],J=F[G*3],ae=F[G*3+1],te=F[G*3+2];q.add(z,W,X,Y,K,Q,U[j]),q.add(z,W,X,J,ae,te,U[j]),q.add(Y,K,Q,J,ae,te,U[H])}return q.getLines()}C.fromMesh=T;function A(w){return(0,d.hashFnv32a)([w.lineCount,w.vertexCount,w.mappingBuffer.ref.version,w.indexBuffer.ref.version,w.groupBuffer.ref.version,w.startBuffer.ref.version,w.endBuffer.ref.version,w.stripCount.ref.version,w.stripBuffer.ref.version])}function x(w,O,F,L,U,q,N,k,j){const H=(0,y.Sphere3D)();let G,z=-1,W=-1;const X={kind:"lines",lineCount:N,vertexCount:k,mappingBuffer:e.ValueCell.create(w),indexBuffer:e.ValueCell.create(O),groupBuffer:e.ValueCell.create(F),startBuffer:e.ValueCell.create(L),endBuffer:e.ValueCell.create(U),stripCount:e.ValueCell.create(j),stripBuffer:e.ValueCell.create(q),get boundingSphere(){const Y=A(X);if(Y!==z){const K=(0,f.calculateInvariantBoundingSphere)(X.startBuffer.ref.value,X.lineCount*4,4),Q=(0,f.calculateInvariantBoundingSphere)(X.endBuffer.ref.value,X.lineCount*4,4);y.Sphere3D.expandBySphere(H,K,Q),z=Y}return H},get groupMapping(){return X.groupBuffer.ref.version!==W&&(G=(0,r.createGroupMapping)(X.groupBuffer.ref.value,X.lineCount,4),W=X.groupBuffer.ref.version),G},setBoundingSphere(Y){y.Sphere3D.copy(H,Y),z=A(X)},hasBoundingSphere(){return z===A(X)}};return X}function M(w,O,F,L,U,q,N,k,j,H){return(N>H.lineCount||j!==H.stripCount.ref.value||j>0)&&(e.ValueCell.update(H.mappingBuffer,w),e.ValueCell.update(H.indexBuffer,O)),H.lineCount=N,H.vertexCount=k,e.ValueCell.update(H.groupBuffer,F),e.ValueCell.update(H.startBuffer,L),e.ValueCell.update(H.endBuffer,U),e.ValueCell.updateIfChanged(H.stripCount,j),e.ValueCell.update(H.stripBuffer,q),H}function D(w,O){const F=w.startBuffer.ref.value;(0,r.transformPositionArray)(O,F,0,w.vertexCount),e.ValueCell.update(w.startBuffer,F);const L=w.endBuffer.ref.value;(0,r.transformPositionArray)(O,L,0,w.vertexCount),e.ValueCell.update(w.endBuffer,L)}C.transform=D,C.Params={..._.BaseGeometry.Params,sizeFactor:h.ParamDefinition.Numeric(2,{min:0,max:10,step:.1}),lineSizeAttenuation:h.ParamDefinition.Boolean(!1),animation:(0,b.getAnimationParam)()},C.Utils={Params:C.Params,createEmpty:S,createValues:R,createValuesSimple:E,updateValues:I,updateBoundingSphere:B,createRenderableState:_.BaseGeometry.createRenderableState,updateRenderableState:_.BaseGeometry.updateRenderableState,createPositionIterator:V};function V(w,O){const F=w.lineCount*4,L=O.instanceCount.ref.value,U=(0,o.PositionLocation)(),q=U.position,N=w.startBuffer.ref.value,k=w.endBuffer.ref.value,j=O.aTransform.ref.value,H=(G,z)=>{const W=G%4===0?N:k;return z<0?t.Vec3.fromArray(q,W,G*3):t.Vec3.transformMat4Offset(q,W,j,0,G*3,z*16),U};return(0,o.LocationIterator)(F,L,2,H)}function R(w,O,F,L,U){const{instanceCount:q,groupCount:N}=F,k=V(w,O),j=(0,n.createColors)(F,k,L.color),H=(0,c.createSizes)(F,k,L.size),G=(0,_.resolveInstanceGranularity)(U.instanceGranularity,N,q)?(0,i.createMarkers)(q,"instance"):(0,i.createMarkers)(q*N,"groupInstance"),z=(0,g.createEmptyOverpaint)(),W=(0,a.createEmptyTransparency)(),X=(0,m.createEmptyEmissive)(),Y=(0,u.createEmptySubstance)(),K=(0,p.createEmptyClipping)(),Q=(0,v.createEmptyWiggle)(),J={drawCount:w.lineCount*2*3,vertexCount:w.vertexCount,groupCount:N,instanceCount:q},ae=y.Sphere3D.clone(w.boundingSphere),te=(0,f.calculateTransformBoundingSphere)(ae,O.aTransform.ref.value,q,0);return{dGeometryType:e.ValueCell.create("lines"),aMapping:w.mappingBuffer,aGroup:w.groupBuffer,aStart:w.startBuffer,aEnd:w.endBuffer,elements:w.indexBuffer,boundingSphere:e.ValueCell.create(te),invariantBoundingSphere:e.ValueCell.create(ae),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ae)),...j,...H,...G,...z,...W,...X,...Y,...K,...Q,...O,..._.BaseGeometry.createValues(U,J),uSizeFactor:e.ValueCell.create(U.sizeFactor),dLineSizeAttenuation:e.ValueCell.create(U.lineSizeAttenuation),uDoubleSided:e.ValueCell.create(!0),dFlipSided:e.ValueCell.create(!1),...(0,b.createAnimationValues)(U.animation),str
4100ipCount:w.stripCount,stripOffsets:w.stripBuffer}}function E(w,O,F,L,U){const q=_.BaseGeometry.createSimple(F,L,U),N={...h.ParamDefinition.getDefaultValues(C.Params),...O};return R(w,q.transform,q.locationIterator,q.theme,N)}function I(w,O){_.BaseGeometry.updateValues(w,O),e.ValueCell.updateIfChanged(w.uSizeFactor,O.sizeFactor),e.ValueCell.updateIfChanged(w.dLineSizeAttenuation,O.lineSizeAttenuation),(0,b.updateAnimationValues)(w,O.animation)}function B(w,O){const F=y.Sphere3D.clone(O.boundingSphere),L=(0,f.calculateTransformBoundingSphere)(F,w.aTransform.ref.value,w.instanceCount.ref.value,0);y.Sphere3D.equals(L,w.boundingSphere.ref.value)||e.ValueCell.update(w.boundingSphere,L),y.Sphere3D.equals(F,w.invariantBoundingSphere.ref.value)||(e.ValueCell.update(w.invariantBoundingSphere,F),e.ValueCell.update(w.uInvariantBoundingSphere,t.Vec4.fromSphere(w.uInvariantBoundingSphere.ref.value,F)))}})(P||(p1.Lines=P={})),p1}var h1={},yd={},Au={},Cj;function to(){if(Cj)return Au;Cj=1,Object.defineProperty(Au,"__esModule",{value:!0}),Au.createPrimitive=i,Au.copyPrimitive=c,Au.PrimitiveBuilder=s,Au.transformPrimitive=y;const e=Ge(),t=(0,e.Vec3)(),r=(0,e.Vec3)(),n=(0,e.Vec3)();function i(_,g){const a=g.length,d=s(a/3);for(let p=0;p<a;p+=3)e.Vec3.fromArray(t,_,g[p]*3),e.Vec3.fromArray(r,_,g[p+1]*3),e.Vec3.fromArray(n,_,g[p+2]*3),d.add(t,r,n);return d.getPrimitive()}function c(_){return{vertices:new Float32Array(_.vertices),normals:new Float32Array(_.normals),indices:new Uint32Array(_.indices)}}const o=(0,e.Vec3)();function s(_,g){g===void 0&&(g=_*3);const a=new Float32Array(g*3),d=new Float32Array(g*3),p=new Uint32Array(_*3);let u=0,m=0;return{add:(v,b,P)=>{e.Vec3.toArray(v,a,u),e.Vec3.toArray(b,a,u+3),e.Vec3.toArray(P,a,u+6),e.Vec3.triangleNormal(o,v,b,P);for(let C=0;C<3;++C)e.Vec3.toArray(o,d,u+3*C),p[m+C]=u/3+C;u+=9,m+=3},addQuad:(v,b,P,C)=>{e.Vec3.toArray(v,a,u),e.Vec3.toArray(b,a,u+3),e.Vec3.toArray(P,a,u+6),e.Vec3.toArray(C,a,u+9),e.Vec3.triangleNormal(o,v,b,P);for(let S=0;S<4;++S)e.Vec3.toArray(o,d,u+3*S);const l=u/3;p[m]=l,p[m+1]=l+1,p[m+2]=l+2,p[m+3]=l+2,p[m+4]=l+3,p[m+5]=l,u+=12,m+=6},getPrimitive:()=>({vertices:a,normals:d,indices:p})}}const h=(0,e.Vec3)(),f=(0,e.Mat3)();function y(_,g){const{vertices:a,normals:d}=_,p=e.Mat3.directionTransform(f,g);for(let u=0,m=a.length;u<m;u+=3)e.Vec3.transformMat4(h,e.Vec3.fromArray(h,a,u),g),e.Vec3.toArray(h,a,u),e.Vec3.transformMat3(h,e.Vec3.fromArray(h,d,u),p),e.Vec3.toArray(h,d,u);return _}return Au}var sP={},Pj;function kS(){if(Pj)return sP;Pj=1,Object.defineProperty(sP,"__esModule",{value:!0}),sP.polygon=e;function e(t,r,n=-1){const i=new Float32Array(t*3),c=n===-1?t<=4?Math.sqrt(2)/2:.6:n,o=r?1:0;for(let s=0,h=t;s<h;++s){const f=(s*2+o)/t*Math.PI;i[s*3]=Math.cos(f)*c,i[s*3+1]=Math.sin(f)*c,i[s*3+2]=0}return i}return sP}var vd={},Tj;function Gf(){if(Tj)return vd;Tj=1,Object.defineProperty(vd,"__esModule",{value:!0}),vd.createCage=t,vd.cloneCage=r,vd.transformCage=i;const e=Ge();function t(c,o){return{vertices:c,edges:o}}function r(c){return{vertices:new Float32Array(c.vertices),edges:new Uint32Array(c.edges)}}const n=e.Vec3.zero();function i(c,o){const{vertices:s}=c;for(let h=0,f=s.length;h<f;h+=3)e.Vec3.transformMat4(n,e.Vec3.fromArray(n,s,h),o),e.Vec3.toArray(n,s,h);return c}return vd}var xj;function FS(){if(xj)return yd;xj=1,Object.defineProperty(yd,"__esModule",{value:!0}),yd.Box=_,yd.PerforatedBox=a,yd.BoxCage=p;const e=Ge(),t=to(),r=kS(),n=Gf(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,r.polygon)(4,!0);function f(u){const v=u?36:24,b=(0,t.PrimitiveBuilder)(12,v);for(let P=0;P<4;++P){const C=(P+1)%4;e.Vec3.set(i,h[P*3],h[P*3+1],-.5),e.Vec3.set(c,h[C*3],h[C*3+1],-.5),e.Vec3.set(o,h[C*3],h[C*3+1],.5),e.Vec3.set(s,h[P*3],h[P*3+1],.5),u?b.add(i,c,o):b.addQuad(i,c,o,s)}return e.Vec3.set(i,h[0],h[1],-.5),e.Vec3.set(c,h[3],h[4],-.5),e.Vec3.set(o,h[6],h[7],-.5),e.Vec3.set(s,h[9],h[10],-.5),u?b.add(o,c,i):b.addQuad(s,o,c,i),e.Vec3.set(i,h[0],h[1],.5),e.Vec3.set(c,h[3],h[4],.5),e.Vec3.set(o,h[6],h[7],.5),e.Vec3.set(s,h[9],h[10],.5),u?b.add(i,c,o):b.addQuad(i,c,o,s),b.getPrimitive()}let y;function _(){return y||(y=f(!1)),y}let g;function a(){return g||(g=f(!0)),g}let d;function p(){return d||(d=(0,n.createCage)([.5,.5,-.5,-.5,.5,-.5,-.5,-.5,-.5,.5,-.5,-.5,.5,.5,.5,-.5,.5,.5,-.5,-.5,.5,.5,-.5,.5],[0,4,1,5,2,6,3,7,0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4])),d}return yd}var bd={},Aj;function Hne(){if(Aj)return bd;Aj=1,Object.defineProperty(bd,"__esModule",{value:!0}),bd.getControlPointsFromString=r,bd.getControlPointsFromVec2Array=n,bd.createTransferFunctionTexture=o;const e=ir(),t=et();function r(s){return s.split(/\s*,\s*/).map(h=>{const f=h.split(/\s*:\s*/);return{x:parseFloat(f[0]),alpha:parseFloat(f[1])}})}function n(s){return s.map(h=>({x:h[0],alpha:h[1]}))}const i=256;function c(s,h){const f=[{x:0,alpha:0},{x:0,alpha:0},...s,{x:1,alpha:0},{x:1,alpha:0}],y=h??new Uint8Array(i);h&&y.fill(0);let _=0,g,a,d,p,u,m;const v=s.length+1;for(let b=0;b<v;++b){g=f[b+1].x,a=f[b+2].x,d=f[b].alpha,p=f[b+1].alpha,u=f[b+2].alpha,m=f[b+3].alpha;const P=Math.round((a-g)*i);for(let C=0;C<P;++C){const l=C/P;_<i&&(y[_]=Math.max(0,(0,e.spline)(d,p,u,m,l,.5)*255),++_)}}return y}function o(s,h){const y=h&&h.ref.value.height===1&&h.ref.value.array.length===i?h.ref.value.array:new Uint8Array(i);c(s,y);const _={array:y,width:i,height:1};return h?(t.ValueCell.update(h,_),h):t.ValueCell.create(_)}return bd}var _3={},g1={},y1={},Mu={},Mj;function Wne(){if(Mj)return Mu;
4100Mj=1,Object.defineProperty(Mu,"__esModule",{value:!0}),Mu.calculateHistogram=t,Mu.histogramPercentile=n,Mu.histogramRobustStats=i,Mu.downsampleHistogram=c;const e=Vt();function t(o,s,h){if(h)return r(o,s,h.min,h.max);{const[f,y]=(0,e.arrayMinMax)(o);return r(o,s,f,y)}}function r(o,s,h,f){let y=(f-h)/s;y===0&&(y=1);const _=new Int32Array(s);for(let g=0,a=o.length;g<a;g++){let d=Math.floor((o[g]-h)/y);d>=s?d=s-1:d<0&&(d=0),_[d]++}return{min:h,max:f,binWidth:y,counts:_}}function n(o,s,h){const{counts:f,min:y,binWidth:_}=o,g=f.length;if(g===0)return y;let a=0;for(let u=0;u<g;++u)u!==h&&(a+=f[u]);if(a===0)return y;const d=Math.max(0,Math.min(1,s))*a;let p=0;for(let u=0;u<g;++u){if(u===h)continue;const m=f[u];if(m===0)continue;const v=p+m;if(v>=d){const b=m>0?(d-p)/m:0;return y+(u+b)*_}p=v}return y+g*_}function i(o,s){const{counts:h,min:f,binWidth:y}=o,_=h.length;let g;s?.ignoreZero&&y>0&&Math.floor((0-f)/y)===0&&(g=0);let a=0,d=0,p=0,u=-1,m=-1;for(let S=0;S<_;++S){if(S===g)continue;const T=h[S];if(T===0)continue;const A=f+(S+.5)*y;a+=T,d+=T*A,p+=T*A*A,u<0&&(u=S),m=S}
4100if(a===0)return{count:0,min:f,max:f,mean:f,sigma:0,p1:f,p50:f,p95:f,p99:f};const v=d/a,b=Math.max(0,p/a-v*v),P=Math.sqrt(b),C=f+u*y,l=f+(m+1)*y;return{count:a,min:C,max:l,mean:v,sigma:P,p1:n(o,.01,g),p50:n(o,.5,g),p95:n(o,.95,g),p99:n(o,.99,g)}}function c(o,s){const h=o.counts.length;if(s<=0||s>=h)return o;const f=new Int32Array(s);for(let _=0;_<h;++_){let g=Math.floor(_*s/h);g>=s&&(g=s-1),f[g]+=o.counts[_]}const y=(o.max-o.min)/s||1;return{min:o.min,max:o.max,binWidth:y,counts:f}}return Mu}var Dj;function zf(){if(Dj)return y1;Dj=1,Object.defineProperty(y1,"__esModule",{value:!0}),y1.Grid=void 0;const e=rt(),t=Ge(),r=Wne(),n=ir(),i=t.Vec3.transformMat4,c=t.Vec3.lerp;var o;return(function(s){s.One={transform:{kind:"matrix",matrix:t.Mat4.identity()},cells:t.Tensor.create(t.Tensor.Space([1,1,1],[0,1,2]),t.Tensor.Data1([0])),stats:{min:0,max:0,mean:0,sigma:0}};const h=(0,t.Mat4)(),f=(0,t.Mat4)();function y(I){if(I.transform.kind==="matrix")return t.Mat4.copy((0,t.Mat4)(),I.transform.matrix);if(I.transform.kind==="spacegroup"){const{cells:{space:B}}=I,w=t.Mat4.fromScaling(h,t.Vec3.div((0,t.Vec3)(),e.Box3D.size((0,t.Vec3)(),I.transform.fractionalBox),t.Vec3.ofArray(B.dimensions))),O=t.Mat4.fromTranslation(f,I.transform.fractionalBox.min);return t.Mat4.mul3((0,t.Mat4)(),I.transform.cell.fromFractional,O,w)}return t.Mat4.identity()}s.getGridToCartesianTransform=y;function _(I,B){return I===B}s.areEquivalent=_;function g(I){return I.cells.data.length===0}s.isEmpty=g;function a(I,B){B||(B=(0,e.Sphere3D)());const w=I.cells.space.dimensions,O=s.getGridToCartesianTransform(I);return e.Sphere3D.fromDimensionsAndTransform(B,w,O)}s.getBoundingSphere=a;const d=(0,e.Box3D)();function p(I,B,w){const O=B<0,F=[0,0,0],L=I.cells.space.getCoords,U=I.cells.data,[q,N,k]=I.cells.space.dimensions;let j=q-1,H=N-1,G=k-1,z=0,W=0,X=0;for(let K=0,Q=U.length;K<Q;++K)(O&&U[K]<=B||!O&&U[K]>=B)&&(L(K,F),F[0]<j&&(j=F[0]),F[1]<H&&(H=F[1]),F[2]<G&&(G=F[2]),F[0]>z&&(z=F[0]),F[1]>W&&(W=F[1]),F[2]>X&&(X=F[2]));t.Vec3.set(d.min,j-1,H-1,G-1),t.Vec3.set(d.max,z+1,W+1,X+1);const Y=s.getGridToCartesianTransform(I);return e.Box3D.transform(d,d,Y),e.Sphere3D.fromBox3D(w||(0,e.Sphere3D)(),d)}s.getIsosurfaceBoundingSphere=p;function u(I,B){let w=I._histograms;return w||(w=I._histograms={}),w[B]||(w[B]=(0,r.calculateHistogram)(I.cells.data,B,{min:I.stats.min,max:I.stats.max})),w[B]}s.getHistogram=u,s.RobustStatsBinCount=1024;function m(I,B){var w;const O=(w=B?.binCount)!==null&&w!==void 0?w:s.RobustStatsBinCount,F=!!B?.ignoreZero,L=`${O}|${F?1:0}`;let U=I._robustStats;return U||(U=I._robustStats={}),U[L]||(U[L]=(0,r.histogramRobustStats)(u(I,O),{ignoreZero:F})),U[L]}s.getRobustStats=m;function v(I,B){const w=s.getGridToCartesianTransform(I);t.Mat4.invert(w,w);const O=(0,t.Vec3)(),{stats:F}=I,{dimensions:L,get:U}=I.cells.space,q=I.cells.data,[N,k,j]=L,H=(z,W,X)=>U(q,z,W,X),G=I.periodicity==="xyz";return function(W){i(O,W,w);const X=b(O,N,k,j,G,H);return Number.isNaN(X)?X:B==="relative"?(X-F.mean)/F.sigma:X}}s.makeGetTrilinearlyInterpolated=v;function b(I,B,w,O,F,L){const U=Math.trunc(I[0]),q=Math.trunc(I[1]),N=Math.trunc(I[2]);if(!F&&(U<0||U>=B||q<0||q>=w||N<0||N>=O))return Number.NaN;const k=I[0]-U,j=I[1]-q,H=I[2]-N,G=Math.min(U+1,B-1),z=Math.min(q+1,w-1),W=Math.min(N+1,O-1);let X=L(U,q,N),Y=L(G,q,N),K=L(U,z,N),Q=L(G,z,N);const J=(0,n.lerp)((0,n.lerp)(X,Y,k),(0,n.lerp)(K,Q,k),j);X=L(U,q,W),Y=L(G,q,W),K=L(U,z,W),Q=L(G,z,W);const ae=(0,n.lerp)((0,n.lerp)(X,Y,k),(0,n.lerp)(K,Q,k),j);return(0,n.lerp)(J,ae,H)}s.trilinearlyInterpolate=b;const P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=(0,t.Vec3)(),S=(0,t.Vec3)(),T=(0,t.Vec3)(),A=(0,t.Vec3)(),x=(0,t.Vec3)(),M=(0,t.Vec3)();function D(I,B,w,O,F,L){const U=Math.trunc(I[0]),q=Math.trunc(I[1]),N=Math.trunc(I[2]);if(U<0||U>=B||q<0||q>=w||N<0||N>=O)return!1;const k=I[0]-U,j=I[1]-q,H=I[2]-N,G=Math.min(U+1,B-1),z=Math.min(q+1,w-1),W=Math.min(N+1,O-1);return F(U,q,N,P),F(G,q,N,C),F(U,z,N,l),F(G,z,N,S),c(T,P,C,k),c(A,l,S,k),c(x,T,A,j),F(U,q,W,P),F(G,q,W,C),F(U,z,W,l),F(G,z,W,S),c(T,P,C,k),c(A,l,S,k),c(M,T,A,j),c(L,x,M,H),!0}s.trilinearlyInterpolateVec3=D;
4100function V(I){if(I._gradients)return I._gradients;const B=R(I);return I._gradients=B,B}s.getGradients=V;function R(I){const{dimensions:B,get:w,dataOffset:O}=I.cells.space,F=I.cells.data,[L,U,q]=B,N=L*U*q,k=new Float32Array(N*3);let j=1/0,H=-1/0,G=0,z=0;for(let Y=0;Y<q;++Y)for(let K=0;K<U;++K)for(let Q=0;Q<L;++Q){const J=O(Q,K,Y)*3,ae=Math.max(0,Q-1),te=Math.min(L-1,Q+1),ne=Math.max(0,K-1),$=Math.min(U-1,K+1),ie=Math.max(0,Y-1),Z=Math.min(q-1,Y+1),re=(w(F,te,K,Y)-w(F,ae,K,Y))/(te-ae||1),oe=(w(F,Q,$,Y)-w(F,Q,ne,Y))/($-ne||1),ce=(w(F,Q,K,Z)-w(F,Q,K,ie))/(Z-ie||1);k[J]=re,k[J+1]=oe,k[J+2]=ce;const ue=re*re+oe*oe+ce*ce;ue<j&&(j=ue),ue>H&&(H=ue),G+=ue,z+=ue*ue}j===1/0&&(j=0),H===-1/0&&(H=1),j=Math.sqrt(j),H=Math.sqrt(H);const W=G/N,X=Math.sqrt(z/N);return{values:k,magnitude:{min:j,max:H,mean:W,sigma:X}}}function E(I){const{values:B}=V(I),{dimensions:w,dataOffset:O}=I.cells.space,[F,L,U]=w,q=(N,k,j,H)=>{const G=O(N,k,j)*3;H[0]=B[G],H[1]=B[G+1],H[2]=B[G+2]};return function(k,j){return D(k,F,L,U,q,j)}}s.makeGetInterpolatedGradient=E})(o||(y1.Grid=o={})),y1}var _d={},Ij;function bQ(){if(Ij)return _d;Ij=1,Object.defineProperty(_d,"__esModule",{value:!0}),_d.CubeFormat=void 0,_d.volumeFromCube=i;const e=Ge(),t=nt(),r=Vt(),n=Pr();function i(o,s){return t.Task.create("Create Volume",async()=>{const{header:h,values:f}=o,y=e.Tensor.Space(h.dim,[0,1,2],Float64Array);let _;if(h.dataSetIds.length===0)_=f;else{const[p,u,m]=h.dim,v=(s?.dataIndex||0)+1;let b=0,P=0;_=new Float64Array(p*u*m);for(let C=0;C<p;C++)for(let l=0;l<u;l++)for(let S=0;S<m;S++)_[b++]=f[P],P+=v}const g=e.Tensor.create(y,e.Tensor.Data1(_)),a=e.Mat4.fromTranslation((0,e.Mat4)(),h.origin),d=e.Mat4.fromBasis((0,e.Mat4)(),h.basisX,h.basisY,h.basisZ);return e.Mat4.mul(a,a,d),{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"matrix",matrix:a},cells:g,stats:{min:(0,r.arrayMin)(_),max:(0,r.arrayMax)(_),mean:(0,r.arrayMean)(_),sigma:(0,r.arrayRms)(_)}},instances:[{transform:e.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="cube"}o.is=s;function h(f){return{kind:"cube",name:f.name,data:f}}o.create=h})(c||(_d.CubeFormat=c={})),_d}var Sd={},wj;function Tw(){if(wj)return Sd;wj=1,Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.DscifFormat=void 0,Sd.volumeFromDensityServerData=i;const e=nt(),t=rt(),r=Ge(),n=Pr();function i(o,s){return e.Task.create("Create Volume",async h=>{const{volume_data_3d_info:f,volume_data_3d:y}=o,_=t.SpacegroupCell.create(f.spacegroup_number.value(0)||"P 1",r.Vec3.ofArray(f.spacegroup_cell_size.value(0)),r.Vec3.scale(r.Vec3.zero(),r.Vec3.ofArray(f.spacegroup_cell_angles.value(0)),Math.PI/180)),g=f.axis_order.value(0),a=r.Tensor.convertToCanonicalAxisIndicesFastToSlow(g),d=a(f.sample_count.value(0)),p=r.Tensor.Space(d,r.Tensor.invertAxisOrder(g),Float32Array),u=r.Tensor.create(p,r.Tensor.Data1(y.values.toArray({array:Float32Array}))),m=r.Vec3.ofArray(a(f.origin.value(0))),v=r.Vec3.ofArray(a(f.dimensions.value(0)));return{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"spacegroup",cell:_,fractionalBox:t.Box3D.create(m,r.Vec3.add(r.Vec3.zero(),m,v))},cells:u,stats:{min:f.min_sampled.value(0),max:f.max_sampled.value(0),mean:f.mean_sampled.value(0),sigma:f.sigma_sampled.value(0)},periodicity:r.Vec3.isInteger(v)?"xyz":"none"},instances:[{transform:r.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="dscif"}o.is=s;function h(f){return{kind:"dscif",name:f._name,data:f}}o.create=h})(c||(Sd.DscifFormat=c={})),Sd}var Vj;function oc(){if(Vj)return g1;Vj=1,Object.defineProperty(g1,"__esModule",{value:!0}),g1.Volume=void 0;const e=zf(),t=at(),r=rt(),n=Ge(),i=Ki(),c=bQ(),o=rn(),s=Pr(),h=Ne(),f=Df(),y=Tw(),_=Dn();var g;return(function(a){function d(I){var B,w,O,F;return((F=(O=(w=(B=I?.grid)===null||B===void 0?void 0:B.cells)===null||w===void 0?void 0:w.space)===null||O===void 0?void 0:O.dimensions)===null||F===void 0?void 0:F.length)&&I?.instances&&I?.sourceData&&I?.customProperties&&I?._propertyData&&I?._localPropertyData}a.is=d;let p;(function(I){function B(k,j,H){return(0,o.equalEps)(U(k,H).absoluteValue,U(j,H).absoluteValue,H.sigma/100)}I.areSame=B;function w(k){return{kind:"absolute",absoluteValue:k}}I.absolute=w;function O(k){return{kind:"relative",relativeValue:k}}I.relative=O;function F(k,j){return j*k.sigma+k.mean}I.calcAbsolute=F;function L(k,j){return k.sigma===0?0:(j-k.mean)/k.sigma}I.calcRelative=L;function U(k,j){return k.kind==="absolute"?k:{kind:"absolute",absoluteValue:I.calcAbsolute(j,k.relativeValue)}}I.toAbsolute=U;function q(k,j){return k.kind==="relative"?k:{kind:"relative",relativeValue:I.calcRelative(j,k.absoluteValue)}}I.toRelative=q;function N(k){return k.kind==="relative"?`${k.relativeValue.toFixed(2)} Ï`:`${k.absoluteValue.toPrecision(4)}`}I.toString=N})(p=a.IsoValue||(a.IsoValue={}));function u(I,B,w){if(w==="relative")return p.relative(B);const O=p.absolute(B);if(y.DscifFormat.is(I.sourceData)){const F={min:I.sourceData.data.volume_data_3d_info.min_source.value(0),max:I.sourceData.data.volume_data_3d_info.max_source.value(0),mean:I.sourceData.data.volume_data_3d_info.mean_source.value(0),sigma:I.sourceData.data.volume_data_3d_info.sigma_source.value(0)};return a.IsoValue.toRelative(O,F)}return O}
4100a.adjustedIsoValue=u;const m={min:-1,max:1,mean:0,sigma:.1};function v(I,B){const w=B||m,{min:O,max:F,mean:L,sigma:U}=w,q=(O-L)/U,N=(F-L)/U;let k=I;return I.kind==="absolute"?I.absoluteValue<O?k=a.IsoValue.absolute(O):I.absoluteValue>F&&(k=a.IsoValue.absolute(F)):I.relativeValue<q?k=a.IsoValue.relative(q):I.relativeValue>N&&(k=a.IsoValue.relative(N)),h.ParamDefinition.Conditioned(k,{absolute:h.ParamDefinition.Converted(j=>a.IsoValue.toAbsolute(j,e.Grid.One.stats).absoluteValue,j=>a.IsoValue.absolute(j),h.ParamDefinition.Numeric(L,{min:O,max:F,step:(0,f.toPrecision)(U/100,2)},{immediateUpdate:!0})),relative:h.ParamDefinition.Converted(j=>a.IsoValue.toRelative(j,e.Grid.One.stats).relativeValue,j=>a.IsoValue.relative(j),h.ParamDefinition.Numeric(Math.min(1,N),{min:q,max:N,step:(0,f.toPrecision)(Math.round((F-O)/U)/100,2)},{immediateUpdate:!0}))},j=>j.kind==="absolute"?"absolute":"relative",(j,H)=>H==="absolute"?a.IsoValue.toAbsolute(j,w):a.IsoValue.toRelative(j,w),{isEssential:!0})}a.createIsoValueParam=v,a.IsoValueParam=v(a.IsoValue.relative(2)),a.One={label:"",grid:e.Grid.One,instances:[],sourceData:{kind:"",name:"",data:{}},customProperties:new s.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)};function b(I,B){return e.Grid.areEquivalent(I.grid,B.grid)&&P(I,B)}a.areEquivalent=b;function P(I,B){if(I.instances.length!==B.instances.length)return!1;for(let w=0,O=I.instances.length;w<O;++w)if(!n.Mat4.areEqual(I.instances[w].transform,B.instances[w].transform,o.EPSILON))return!1;return!0}a.areInstanceTransformsEqual=P;function C(I){return e.Grid.isEmpty(I.grid)||I.instances.length===0}a.isEmpty=C;function l(I){return c.CubeFormat.is(I.sourceData)?I.sourceData.data.header.orbitals:!1}a.isOrbitals=l;function S(I,B){return{kind:"volume-loci",volume:I,instances:B}}a.Loci=S;function T(I){return!!I&&I.kind==="volume-loci"}a.isLoci=T;function A(I,B){return I.volume===B.volume&&t.OrderedSet.areEqual(I.instances,B.instances)}a.areLociEqual=A;function x(I){return C(I.volume)||t.OrderedSet.isEmpty(I.instances)}a.isLociEmpty=x;const M=new i.BoundaryHelper("98");function D(I,B,w){const O=e.Grid.getBoundingSphere(I.grid);if(w||(w=(0,r.Sphere3D)()),t.OrderedSet.isEmpty(B))return r.Sphere3D.copy(w,O);const F=[];for(let L=0,U=t.OrderedSet.size(B);L<U;++L){const{transform:q}=I.instances[t.OrderedSet.getAt(B,L)];F.push(r.Sphere3D.transform((0,r.Sphere3D)(),O,q))}M.reset();for(const L of F)M.includeSphere(L);M.finishedIncludeStep();for(const L of F)M.radiusSphere(L);return M.getSphere(w)}a.getBoundingSphere=D,(function(I){function B(q,N,k){return{kind:"isosurface-loci",volume:q,isoValue:N,instances:k}}I.Loci=B;function w(q){return!!q&&q.kind==="isosurface-loci"}I.isLoci=w;function O(q,N){return q.volume===N.volume&&a.IsoValue.areSame(q.isoValue,N.isoValue,q.volume.grid.stats)&&t.OrderedSet.areEqual(q.instances,N.instances)}I.areLociEqual=O;function F(q){return C(q.volume)||t.OrderedSet.isEmpty(q.instances)}I.isLociEmpty=F;const L=new i.BoundaryHelper("98");function U(q,N,k,j){const H=a.IsoValue.toAbsolute(N,q.grid.stats).absoluteValue,G=e.Grid.getIsosurfaceBoundingSphere(q.grid,H);if(t.OrderedSet.isEmpty(k))return r.Sphere3D.copy(j||(0,r.Sphere3D)(),G);const z=[];for(let W=0,X=t.OrderedSet.size(k);W<X;++W)z.push(r.Sphere3D.transform((0,r.Sphere3D)(),G,q.instances[t.OrderedSet.getAt(k,W)].transform));L.reset();for(const W of z)L.includeSphere(W);L.finishedIncludeStep();for(const W of z)L.radiusSphere(W);return L.getSphere(j)}I.getBoundingSphere=U})(a.Isosurface||(a.Isosurface={})),(function(I){function B(G,z){return{kind:"cell-loci",volume:G,elements:z}}I.Loci=B;function w(G){return!!G&&G.kind==="cell-loci"}I.isLoci=w;function O(G,z){if(G.volume!==z.volume||G.elements.length!==z.elements.length)return!1;for(let W=0,X=G.elements.length;W<X;++W){const Y=G.elements[W],K=z.elements[W];if(!t.OrderedSet.areEqual(Y.instances,K.instances)||!t.OrderedSet.areEqual(Y.indices,K.indices))return!1}return!0}I.areLociEqual=O;function F(G){for(const{indices:z,instances:W}of G.elements)if(!t.OrderedSet.isEmpty(W)||!t.OrderedSet.isEmpty(z))return!1;return!0}I.isLociEmpty=F;function L(G){let z=0;for(const{indices:W,instances:X}of G.elements)z+=t.OrderedSet.size(W)*t.OrderedSet.size(X);return z}I.getLociSize=L;function U(G,z,W){return{kind:"cell-location",volume:G,cell:z,instance:W}}I.Location=U;function q(G){return!!G&&G.kind==="cell-location"}I.isLocation=q;const N=new i.BoundaryHelper("98"),k=(0,n.Vec3)(),j=(0,n.Vec3)();function H(G,z,W){N.reset();const X=e.Grid.getGridToCartesianTransform(G.grid),{getCoords:Y}=G.grid.cells.space;for(const{indices:Q,instances:J}of z)for(let ae=0,te=t.OrderedSet.size(Q);ae<te;ae++){const ne=t.OrderedSet.getAt(Q,ae);Y(ne,k),n.Vec3.transformMat4(k,k,X);for(let $=0,ie=t.OrderedSet.size(J);$<ie;$++){const Z=G.instances[t.OrderedSet.getAt(J,$)];n.Vec3.transformMat4(j,k,Z.transform),N.includePosition(j)}}N.finishedIncludeStep();for(const{indices:Q,instances:J}of z)for(let ae=0,te=t.OrderedSet.size(Q);ae<te;ae++){const ne=t.OrderedSet.getAt(Q,ae);Y(ne,k),n.Vec3.transformMat4(k,k,X);for(let $=0,ie=t.OrderedSet.size(J);$<ie;$++){const Z=G.instances[t.OrderedSet.getAt(J,$)];n.Vec3.transformMat4(j,k,Z.transform),N.radiusPosition(j)}}
4100const K=N.getSphere(W);return r.Sphere3D.expand(K,K,n.Mat4.getMaxScaleOnAxis(X)*10)}I.getBoundingSphere=H})(a.Cell||(a.Cell={})),(function(I){function B(G,z){return{kind:"segment-loci",volume:G,elements:z}}I.Loci=B;function w(G){return!!G&&G.kind==="segment-loci"}I.isLoci=w;function O(G,z){if(G.volume!==z.volume||G.elements.length!==z.elements.length)return!1;for(let W=0,X=G.elements.length;W<X;++W){const Y=G.elements[W],K=z.elements[W];if(!t.OrderedSet.areEqual(Y.instances,K.instances)||!t.OrderedSet.areEqual(Y.segments,K.segments))return!1}return!0}I.areLociEqual=O;function F(G){for(const{segments:z,instances:W}of G.elements)if(!t.OrderedSet.isEmpty(W)||!t.OrderedSet.isEmpty(z))return!1;return!0}I.isLociEmpty=F;function L(G){let z=0;for(const{segments:W,instances:X}of G.elements)z+=t.OrderedSet.size(W)*t.OrderedSet.size(X);return z}I.getLociSize=L;const U=(0,r.Box3D)(),q=(0,r.Box3D)(),N=(0,r.Box3D)();function k(G,z,W){const X=a.Segmentation.get(G);if(X){r.Box3D.setEmpty(U);const Y=e.Grid.getGridToCartesianTransform(G.grid);for(const{segments:K,instances:Q}of z){r.Box3D.setEmpty(q);for(let J=0,ae=t.OrderedSet.size(K);J<ae;J++){const te=t.OrderedSet.getAt(K,J),ne=X.bounds[te];r.Box3D.add(q,ne.min),r.Box3D.add(q,ne.max)}r.Box3D.transform(q,q,Y);for(let J=0,ae=t.OrderedSet.size(Q);J<ae;J++){const te=G.instances[t.OrderedSet.getAt(Q,J)];r.Box3D.transform(N,q,te.transform),r.Box3D.addBox3D(U,N)}}return r.Sphere3D.fromBox3D(W||(0,r.Sphere3D)(),U)}else return a.getBoundingSphere(G,t.Interval.ofLength(G.instances.length),W)}I.getBoundingSphere=k;function j(G,z,W){return{kind:"segment-location",volume:G,segment:z,instance:W}}I.Location=j;function H(G){return!!G&&G.kind==="segment-location"}
4100I.isLocation=H})(a.Segment||(a.Segment={})),a.PickingGranularity={set(I,B){I._propertyData.__picking_granularity__=B},get(I){var B;return(B=I._propertyData.__picking_granularity__)!==null&&B!==void 0?B:"voxel"}},a.Segmentation={set(I,B){I._propertyData.__segmentation__=B},get(I){return I._propertyData.__segmentation__}};function V(I){if(!E(I))return;const B=I.parent||I;if(!B._localPropertyData.__periodicRange__){const w=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0),O=e.Grid.getGridToCartesianTransform(B.grid);n.Vec3.transformMat4(w,w,O);const F=n.Vec3.create(1/0,1/0,1/0),L=n.Vec3.create(-1/0,-1/0,-1/0),U=(0,n.Vec3)();for(const{transform:q}of B.instances)n.Mat4.getTranslation(U,q),n.Vec3.div(U,U,w),n.Vec3.round(U,U),n.Vec3.min(F,F,U),n.Vec3.max(L,L,U);n.Vec3.addScalar(L,L,1),B._localPropertyData.__periodicRange__={min:F,max:L}}return B._localPropertyData.__periodicRange__}a.getPeriodicRange=V;function R(I){if(!E(I))return;const B=I.parent||I;if(!B._localPropertyData.__periodicInstanceMapping__){const w=new Map,O=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0),F=e.Grid.getGridToCartesianTransform(B.grid);n.Vec3.transformMat4(O,O,F);const{min:L}=V(B),U=(0,n.Vec3)();for(let N=0,k=B.instances.length;N<k;N++){const{transform:j}=B.instances[N];n.Mat4.getTranslation(U,j),n.Vec3.div(U,U,O),n.Vec3.round(U,U),n.Vec3.sub(U,U,L),w.set((0,_.mortonOrder3d)(U[0],U[1],U[2]),N)}const q=n.Vec3.fromArray((0,n.Vec3)(),B.grid.cells.space.dimensions,0);B._localPropertyData.__periodicInstanceMapping__={get(N,k,j){n.Vec3.set(U,N,k,j),n.Vec3.div(U,U,q),n.Vec3.floor(U,U);const H=w.get((0,_.mortonOrder3d)(U[0],U[1],U[2]));if(H===void 0)return;n.Vec3.set(U,N,k,j),n.Vec3.mod(U,U,q);const G=B.grid.cells.space.dataOffset(U[0],U[1],U[2]);return{instance:H,cell:G}}}}return B._localPropertyData.__periodicInstanceMapping__}a.getPeriodicMapping=R;function E(I){return I.grid.periodicity==="xyz"}a.isPeriodic=E})(g||(g1.Volume=g={})),g1}var Ej;function sn(){return Ej||(Ej=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(oc(),e),t.__exportStar(zf(),e)})(_3)),_3}var Bj;function Hf(){if(Bj)return h1;Bj=1,Object.defineProperty(h1,"__esModule",{value:!0}),h1.DirectVolume=void 0;const e=_t(),t=zt(),r=kr(),n=bn(),i=rt(),c=Ge(),o=et(),s=Ne(),h=FS(),f=Tt(),y=wi(),_=li(),g=Ka(),a=Ya(),d=Hne(),p=Qa(),u=sn(),m=Za(),v=Ja(),b=eo(),P=(0,h.Box)();
4100var C;(function(S){function T(q,N,k,j,H,G,z,W,X,Y,K){return K?M(q,N,k,j,H,G,z,W,X,Y,K):x(q,N,k,j,H,G,z,W,X,Y)}S.create=T;function A(q){return(0,e.hashFnv32a)([q.bboxSize.ref.version,q.gridDimension.ref.version,q.gridTexture.ref.version,q.transform.ref.version,q.gridStats.ref.version])}function x(q,N,k,j,H,G,z,W,X,Y){const K=(0,i.Sphere3D)();let Q=-1;const J=G.getWidth(),ae=G.getHeight(),te=G.getDepth(),ne={kind:"direct-volume",gridDimension:o.ValueCell.create(N),gridTexture:o.ValueCell.create(G),gridTextureDim:o.ValueCell.create(c.Vec3.create(J,ae,te)),gridStats:o.ValueCell.create(c.Vec4.create(z.min,z.max,z.mean,z.sigma)),bboxMin:o.ValueCell.create(q.min),bboxMax:o.ValueCell.create(q.max),bboxSize:o.ValueCell.create(c.Vec3.sub((0,c.Vec3)(),q.max,q.min)),transform:o.ValueCell.create(k),cellDim:o.ValueCell.create(H),unitToCartn:o.ValueCell.create(j),cartnToUnit:o.ValueCell.create(c.Mat4.invert((0,c.Mat4)(),j)),get boundingSphere(){const $=A(ne);if($!==Q){const ie=l(ne.gridDimension.ref.value,ne.transform.ref.value);i.Sphere3D.copy(K,ie),Q=$}return K},packedGroup:o.ValueCell.create(W),axisOrder:o.ValueCell.create(X),dataType:o.ValueCell.create(Y),setBoundingSphere($){i.Sphere3D.copy(K,$),Q=A(ne)},hasBoundingSphere(){return Q===A(ne)},meta:{}};return ne}function M(q,N,k,j,H,G,z,W,X,Y,K){const Q=G.getWidth(),J=G.getHeight(),ae=G.getDepth();return o.ValueCell.update(K.gridDimension,N),o.ValueCell.update(K.gridTexture,G),o.ValueCell.update(K.gridTextureDim,c.Vec3.set(K.gridTextureDim.ref.value,Q,J,ae)),o.ValueCell.update(K.gridStats,c.Vec4.set(K.gridStats.ref.value,z.min,z.max,z.mean,z.sigma)),o.ValueCell.update(K.bboxMin,q.min),o.ValueCell.update(K.bboxMax,q.max),o.ValueCell.update(K.bboxSize,c.Vec3.sub(K.bboxSize.ref.value,q.max,q.min)),o.ValueCell.update(K.transform,k),o.ValueCell.update(K.cellDim,H),o.ValueCell.update(K.unitToCartn,j),o.ValueCell.update(K.cartnToUnit,c.Mat4.invert((0,c.Mat4)(),j)),o.ValueCell.updateIfChanged(K.packedGroup,W),o.ValueCell.updateIfChanged(K.axisOrder,c.Vec3.fromArray(K.axisOrder.ref.value,X,0)),o.ValueCell.updateIfChanged(K.dataType,Y),K}function D(q){const N=(0,i.Box3D)(),k=(0,c.Vec3)(),j=c.Mat4.identity(),H=c.Mat4.identity(),G=(0,c.Vec3)(),z=(0,n.createNullTexture)(),W=u.Grid.One.stats,X=!1,Y=c.Vec3.create(0,1,2);return T(N,k,j,H,G,z,W,X,Y,"byte",q)}S.createEmpty=D,S.Params={...f.BaseGeometry.Params,ignoreLight:s.ParamDefinition.Boolean(!1,f.BaseGeometry.ShadingCategory),celShaded:s.ParamDefinition.Boolean(!1,f.BaseGeometry.ShadingCategory),xrayShaded:s.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],f.BaseGeometry.ShadingCategory),controlPoints:s.ParamDefinition.LineGraph([c.Vec2.create(.19,0),c.Vec2.create(.2,.05),c.Vec2.create(.25,.05),c.Vec2.create(.26,0),c.Vec2.create(.79,0),c.Vec2.create(.8,.05),c.Vec2.create(.85,.05),c.Vec2.create(.86,0)],{isEssential:!0,yAxis:{scale:"log"}}),stepsPerCell:s.ParamDefinition.Numeric(3,{min:1,max:10,step:1}),jumpLength:s.ParamDefinition.Numeric(0,{min:0,max:20,step:.1})},S.Utils={Params:S.Params,createEmpty:D,createValues:B,createValuesSimple:w,updateValues:O,updateBoundingSphere:F,createRenderableState:L,updateRenderableState:U,createPositionIterator:V};function V(q,N){const k=q.transform.ref.value,[j,H,G]=q.gridDimension.ref.value,z=j*H*G,W=N.instanceCount.ref.value,X=(0,t.PositionLocation)(),Y=X.position,K=N.aTransform.ref.value,Q=(J,ae)=>{const te=Math.floor(J/G);return Y[0]=Math.floor(te/H),Y[1]=te%H,Y[2]=J%G,c.Vec3.transformMat4(Y,Y,k),ae>=0&&c.Vec3.transformMat4Offset(Y,Y,K,0,0,ae*16),X};return(0,t.LocationIterator)(z,W,1,Q)}function R(q,N){return Math.ceil(c.Vec3.magnitude(q)*N)}function E(q,N){return Math.min(...q)*(1/N)}function I(q){return 1/q}function B(q,N,k,j,H){const{gridTexture:G,gridTextureDim:z,gridStats:W}=q,{bboxSize:X,bboxMin:Y,bboxMax:K,gridDimension:Q,transform:J}=q,{instanceCount:ae,groupCount:te}=k,ne=V(q,N),$=(0,y.createColors)(k,ne,j.color),ie=(0,f.resolveInstanceGranularity)(H.instanceGranularity,te,ae)?(0,_.createMarkers)(ae,"instance"):(0,_.createMarkers)(ae*te,"groupInstance"),Z=(0,g.createEmptyOverpaint)(),re=(0,a.createEmptyTransparency)(),oe=(0,v.createEmptyEmissive)(),ce=(0,m.createEmptySubstance)(),ue=(0,p.createEmptyClipping)(),pe=(0,b.createEmptyWiggle)(),[he,fe,de]=Q.ref.value,ge={drawCount:P.indices.length,vertexCount:he*fe*de,groupCount:te,instanceCount:ae},Ce=i.Sphere3D.clone(q.boundingSphere),ve=(0,r.calculateTransformBoundingSphere)(Ce,N.aTransform.ref.value,ae,0),le=(0,d.getControlPointsFromVec2Array)(H.controlPoints),me=(0,d.createTransferFunctionTexture)(le);return{dGeometryType:o.ValueCell.create("directVolume"),...$,...ie,...Z,...re,...oe,...ce,...ue,...pe,...N,...f.BaseGeometry.createValues(H,ge),aPosition:o.ValueCell.create(P.vertices),elements:o.ValueCell.create(P.indices),boundingSphere:o.ValueCell.create(ve),invariantBoundingSphere:o.ValueCell.create(Ce),uInvariantBoundingSphere:o.ValueCell.create(c.Vec4.ofSphere(Ce)),uBboxMin:Y,uBboxMax:K,uBboxSize:X,uMaxSteps:o.V
4100alueCell.create(R(Q.ref.value,H.stepsPerCell)),uStepScale:o.ValueCell.create(E(q.cellDim.ref.value,H.stepsPerCell)),uJumpLength:o.ValueCell.create(H.jumpLength),uTransform:J,uGridDim:Q,tTransferTex:me,uTransferScale:o.ValueCell.create(I(H.stepsPerCell)),dGridTexType:o.ValueCell.create(G.ref.value.getDepth()>0?"3d":"2d"),uGridTexDim:z,tGridTex:G,uGridStats:W,uCellDim:q.cellDim,uCartnToUnit:q.cartnToUnit,uUnitToCartn:q.unitToCartn,dPackedGroup:q.packedGroup,dAxisOrder:o.ValueCell.create(q.axisOrder.ref.value.join("")),dIgnoreLight:o.ValueCell.create(H.ignoreLight),dCelShaded:o.ValueCell.create(H.celShaded),dXrayShaded:o.ValueCell.create(H.xrayShaded==="inverted"?"inverted":H.xrayShaded===!0?"on":"off"),meta:o.ValueCell.create(q.meta)}}function w(q,N,k,j,H){const G=f.BaseGeometry.createSimple(k,j,H),z={...s.ParamDefinition.getDefaultValues(S.Params),...N};return B(q,G.transform,G.locationIterator,G.theme,z)}function O(q,N){f.BaseGeometry.updateValues(q,N),o.ValueCell.updateIfChanged(q.dIgnoreLight,N.ignoreLight),o.ValueCell.updateIfChanged(q.dCelShaded,N.celShaded),o.ValueCell.updateIfChanged(q.dXrayShaded,N.xrayShaded==="inverted"?"inverted":N.xrayShaded===!0?"on":"off");const k=(0,d.getControlPointsFromVec2Array)(N.controlPoints);(0,d.createTransferFunctionTexture)(k,q.tTransferTex),o.ValueCell.updateIfChanged(q.uMaxSteps,R(q.uGridDim.ref.value,N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uStepScale,E(q.uCellDim.ref.value,N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uTransferScale,I(N.stepsPerCell)),o.ValueCell.updateIfChanged(q.uJumpLength,N.jumpLength)}function F(q,N){const k=i.Sphere3D.clone(N.boundingSphere),j=(0,r.calculateTransformBoundingSphere)(k,q.aTransform.ref.value,q.instanceCount.ref.value,0);i.Sphere3D.equals(j,q.boundingSphere.ref.value)||o.ValueCell.update(q.boundingSphere,j),i.Sphere3D.equals(k,q.invariantBoundingSphere.ref.value)||(o.ValueCell.update(q.invariantBoundingSphere,k),o.ValueCell.update(q.uInvariantBoundingSphere,c.Vec4.fromSphere(q.uInvariantBoundingSphere.ref.value,k)))}function L(q){const N=f.BaseGeometry.createRenderableState(q);return N.opaque=!1,N.writeDepth=!1,N}function U(q,N){f.BaseGeometry.updateRenderableState(q,N),q.opaque=!1,q.writeDepth=!1}})(C||(h1.DirectVolume=C={}));function l(S,T){return i.Sphere3D.fromDimensionsAndTransform((0,i.Sphere3D)(),S,T)}return h1}var v1={},Rj;function ro(){if(Rj)return v1;Rj=1,Object.defineProperty(v1,"__esModule",{value:!0}),v1.Spheres=void 0;const e=et(),t=Ne(),r=zt(),n=wi(),i=li(),c=kr(),o=rt(),s=ls(),h=Tt(),f=Ka(),y=Ya(),_=_t(),g=us(),a=Qa(),d=Ge(),p=Za(),u=Ja(),m=eo(),v=jf(),b=rc();var P;return(function(C){function l(N,k,j,H){return H?x(N,k,j,H):A(N,k,j)}C.create=l;function S(N){const k=N?N.centerBuffer.ref.value:new Float32Array(0),j=N?N.groupBuffer.ref.value:new Float32Array(0);return l(k,j,0,N)}C.createEmpty=S;function T(N){return(0,_.hashFnv32a)([N.sphereCount,N.centerBuffer.ref.version,N.groupBuffer.ref.version])}function A(N,k,j){const H=(0,o.Sphere3D)();let G,z=-1,W=-1;const X=e.ValueCell.create((0,c.createTextureImage)(1,4,Float32Array)),Y=e.ValueCell.create(d.Vec2.create(0,0)),K=e.ValueCell.create([]),Q=e.ValueCell.create(0),J={kind:"spheres",sphereCount:j,centerBuffer:e.ValueCell.create(N),groupBuffer:e.ValueCell.create(k),get boundingSphere(){const ae=T(J);if(ae!==z){const te=(0,c.calculateInvariantBoundingSphere)(J.centerBuffer.ref.value,J.sphereCount,1);o.Sphere3D.copy(H,te),z=ae}return H},get groupMapping(){return J.groupBuffer.ref.version!==W&&(G=(0,g.createGroupMapping)(J.groupBuffer.ref.value,J.sphereCount),W=J.groupBuffer.ref.version),G},setBoundingSphere(ae){o.Sphere3D.copy(H,ae),z=T(J)},hasBoundingSphere(){return z===T(J)},shaderData:{positionGroup:X,texDim:Y,lodLevels:K,sizeFactor:Q,update(ae){var te,ne;const $=(te=ae?.lodLevels)!==null&&te!==void 0?te:R(K.ref.value),ie=(ne=ae?.sizeFactor)!==null&&ne!==void 0?ne:Q.ref.value,Z=I($,ie),re=(0,c.createTextureImage)(J.sphereCount,4,Float32Array,X.ref.value.array),oe=M(re,J.centerBuffer.ref.value,J.groupBuffer.ref.value,J.sphereCount,Z),ce=oe?V($,ie,oe,J.sphereCount):[];e.ValueCell.update(X,re),e.ValueCell.update(Y,d.Vec2.set(Y.ref.value,re.width,re.height)),e.ValueCell.update(K,ce),e.ValueCell.update(Q,ie)}}};return J.shaderData.update(),J}function x(N,k,j,H){return H.sphereCount=j,e.ValueCell.update(H.centerBuffer,N),e.ValueCell.update(H.groupBuffer,k),H.shaderData.update(),H}function M(N,k,j,H,G){const{array:z}=N;
4100if(G.length===0){for(let Y=0;Y<H;++Y)z[Y*4+0]=k[Y*3+0],z[Y*4+1]=k[Y*3+1],z[Y*4+2]=k[Y*3+2],z[Y*4+3]=j[Y];return}const W=[0];let X=0;for(let Y=0,K=G.length;Y<K;++Y){const Q=G[Y];for(let J=0;J<H;++J){let ae=!1;for(let te=0;te<Y;++te)if(J%G[te]===0){ae=!0;break}!ae&&J%Q===0&&(z[X*4+0]=k[J*3+0],z[X*4+1]=k[J*3+1],z[X*4+2]=k[J*3+2],z[X*4+3]=j[J],X+=1)}W.push(X*6)}return W}function D(N,k){if(N.length!==k.length)return!1;for(let j=0,H=N.length;j<H;++j)if(N[j].maxDistance!==k[j].maxDistance||N[j].minDistance!==k[j].minDistance||N[j].overlap!==k[j].overlap||N[j].stride!==k[j].stride||N[j].scaleBias!==k[j].scaleBias)return!1;return!0}function V(N,k,j,H){return N.map((G,z)=>{const W=E(G,k);return[G.minDistance,G.maxDistance,G.overlap,j[j.length-1-z],Math.pow(Math.min(H,W),1/G.scaleBias),G.stride,G.scaleBias]})}function R(N){return N.map(k=>({minDistance:k[0],maxDistance:k[1],overlap:k[2],stride:k[5],scaleBias:k[6]}))}function E(N,k){return Math.max(1,Math.round(N.stride/Math.pow(k,N.scaleBias)))}function I(N,k){return N.map(j=>E(j,k)).reverse()}C.LodLevelsPresets={performance:[{minDistance:1,maxDistance:300,overlap:0,stride:1,scaleBias:1},{minDistance:300,maxDistance:2e3,overlap:0,stride:40,scaleBias:3},{minDistance:2e3,maxDistance:6e3,overlap:0,stride:150,scaleBias:3},{minDistance:6e3,maxDistance:1e7,overlap:0,stride:300,scaleBias:2.5}],balanced:[{minDistance:1,maxDistance:500,overlap:0,stride:1,scaleBias:1},{minDistance:500,maxDistance:2e3,overlap:0,stride:15,scaleBias:3},{minDistance:2e3,maxDistance:6e3,overlap:0,stride:70,scaleBias:2.7},{minDistance:6e3,maxDistance:1e7,overlap:0,stride:200,scaleBias:2.5}],quality:[{minDistance:1,maxDistance:1e3,overlap:0,stride:1,scaleBias:1},{minDistance:1e3,maxDistance:4e3,overlap:0,stride:10,scaleBias:3},{minDistance:4e3,maxDistance:1e4,overlap:0,stride:50,scaleBias:2.7},{minDistance:1e4,maxDistance:1e7,overlap:0,stride:200,scaleBias:2.3}],ultra:[{minDistance:1,maxDistance:5e3,overlap:0,stride:1,scaleBias:1},{minDistance:5e3,maxDistance:1e4,overlap:0,stride:10,scaleBias:3},{minDistance:1e4,maxDistance:3e4,overlap:0,stride:50,scaleBias:2.5},{minDistance:3e4,maxDistance:1e7,overlap:0,stride:200,scaleBias:2}]},C.Params={...h.BaseGeometry.Params,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),doubleSided:t.ParamDefinition.Boolean(!1,h.BaseGeometry.CustomQualityParamInfo),ignoreLight:t.ParamDefinition.Boolean(!1,h.BaseGeometry.ShadingCategory),celShaded:t.ParamDefinition.Boolean(!1,h.BaseGeometry.ShadingCategory),xrayShaded:t.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],h.BaseGeometry.ShadingCategory),transparentBackfaces:t.ParamDefinition.Select("off",t.ParamDefinition.arrayToOptions(["off","on","opaque"]),h.BaseGeometry.ShadingCategory),solidInterior:t.ParamDefinition.Boolean(!0,h.BaseGeometry.ShadingCategory),clipPrimitive:t.ParamDefinition.Boolean(!1,{...h.BaseGeometry.ShadingCategory,description:"Clip whole sphere instead of cutting it."}),approximate:t.ParamDefinition.Boolean(!1,{...h.BaseGeometry.ShadingCategory,description:"Faster rendering, but has artifacts."}),alphaThickness:t.ParamDefinition.Numeric(0,{min:0,max:20,step:1},{...h.BaseGeometry.ShadingCategory,description:"If not zero, adju
4100sts alpha for radius."}),bumpFrequency:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),bumpAmplitude:t.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},h.BaseGeometry.ShadingCategory),interior:(0,v.getInteriorParam)(),animation:(0,b.getAnimationParam)(),lodLevels:t.ParamDefinition.ObjectList({minDistance:t.ParamDefinition.Numeric(0),maxDistance:t.ParamDefinition.Numeric(0),overlap:t.ParamDefinition.Numeric(0),stride:t.ParamDefinition.Numeric(0),scaleBias:t.ParamDefinition.Numeric(3,{min:.1,max:10,step:.1})},N=>`${N.stride}`,{...h.BaseGeometry.CullingLodCategory,defaultValue:[],presets:Object.entries(C.LodLevelsPresets).map(([N,k])=>[k,N])})},C.Utils={Params:C.Params,createEmpty:S,createValues:w,createValuesSimple:O,updateValues:F,updateBoundingSphere:L,createRenderableState:U,updateRenderableState:q,createPositionIterator:B};function B(N,k){const j=N.sphereCount,H=k.instanceCount.ref.value,G=(0,r.PositionLocation)(),z=G.position,W=N.centerBuffer.ref.value,X=k.aTransform.ref.value,Y=(K,Q)=>(Q<0?d.Vec3.fromArray(z,W,K*3):d.Vec3.transformMat4Offset(z,W,X,0,K*3,Q*16),G);return(0,r.LocationIterator)(j,H,1,Y)}function w(N,k,j,H,G){const{instanceCount:z,groupCount:W}=j,X=B(N,k),Y=(0,n.createColors)(j,X,H.color),K=(0,s.createSizes)(j,X,H.size),Q=(0,h.resolveInstanceGranularity)(G.instanceGranularity,W,z)?(0,i.createMarkers)(z,"instance"):(0,i.createMarkers)(z*W,"groupInstance"),J=(0,f.createEmptyOverpaint)(),ae=(0,y.createEmptyTransparency)(),te=(0,u.createEmptyEmissive)(),ne=(0,p.createEmptySubstance)(),$=(0,a.createEmptyClipping)(),ie=(0,m.createEmptyWiggle)(),Z={drawCount:N.sphereCount*2*3,vertexCount:N.sphereCount*6,groupCount:W,instanceCount:z},re=N.boundingSphere.radius?(0,s.getMaxSize)(K)*G.sizeFactor:0,oe=o.Sphere3D.expand((0,o.Sphere3D)(),N.boundingSphere,re),ce=(0,c.calculateTransformBoundingSphere)(oe,k.aTransform.ref.value,z,0);return N.shaderData.update({lodLevels:G.lodLevels,sizeFactor:G.sizeFactor}),{dGeometryType:e.ValueCell.create("spheres"),uTexDim:N.shaderData.texDim,tPositionGroup:N.shaderData.positionGroup,boundingSphere:e.ValueCell.create(ce),invariantBoundingSphere:e.ValueCell.create(oe),uInvariantBoundingSphere:e.ValueCell.create(d.Vec4.ofSphere(oe)),...Y,...K,...Q,...J,...ae,...te,...ne,...$,...ie,...k,padding:e.ValueCell.create(re),...h.BaseGeometry.createValues(G,Z),uSizeFactor:N.shaderData.sizeFactor,uDoubleSided:e.ValueCell.create(G.doubleSided),dIgnoreLight:e.ValueCell.create(G.ignoreLight),dCelShaded:e.ValueCell.create(G.celShaded),dXrayShaded:e.ValueCell.create(G.xrayShaded==="inverted"?"inverted":G.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(G.transparentBackfaces),dSolidInterior:e.ValueCell.create(G.solidInterior),dClipPrimitive:e.ValueCell.create(G.clipPrimitive),dApproximate:e.ValueCell.create(G.approximate),uAlphaThickness:e.ValueCell.create(G.alphaThickness),uBumpFrequency:e.ValueCell.create(G.bumpFrequency),uBumpAmplitude:e.ValueCell.create(G.bumpAmplitude),lodLevels:N.shaderData.lodLevels,centerBuffer:N.centerBuffer,groupBuffer:N.groupBuffer,...(0,v.createInteriorValues)(G.interior),...(0,b.createAnimationValues)(G.animation)}}function O(N,k,j,H,G){const z=h.BaseGeometry.createSimple(j,H,G),W={...t.ParamDefinition.getDefaultValues(C.Params),...k};return w(N,z.transform,z.locationIterator,z.theme,W)}function F(N,k){const j=N.uSizeFactor.ref.value;h.BaseGeometry.updateValues(N,k),e.ValueCell.updateIfChanged(N.uSizeFactor,k.sizeFactor),e.ValueCell.updateIfChanged(N.uDoubleSided,k.doubleSided),e.ValueCell.updateIfChanged(N.dIgnoreLight,k.ignoreLight),e.ValueCell.updateIfChanged(N.dCelShaded,k.celShaded),e.ValueCell.updateIfChanged(N.dXrayShaded,k.xrayShaded==="inverted"?"inverted":k.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(N.dTransparentBackfaces,k.transparentBackfaces),e.ValueCell.updateIfChanged(N.dSolidInterior,k.solidInterior),e.ValueCell.updateIfChanged(N.dClipPrimitive,k.clipPrimitive),e.ValueCell.updateIfChanged(N.dApproximate,k.approximate),e.ValueCell.updateIfChanged(N.uAlphaThickness,k.alphaThickness),e.ValueCell.updateIfChanged(N.uBumpFrequency,k.bumpFrequency),e.ValueCell.updateIfChanged(N.uBumpAmplitude,k.bumpAmplitude),(0,v.updateInteriorValues)(N,k.interior),(0,b.updateAnimationValues)(N,k.animation);const H=R(N.lodLevels.ref.value);if(!D(k.lodLevels,H)||k.sizeFactor!==j){const G=N.uVertexCount.ref.value/6,z=I(k.lodLevels,k.sizeFactor),W=M(N.tPositionGroup.ref.value,N.centerBuffer.ref.value,N.groupBuffer.ref.value,G,z),X=W?V(k.lodLevels,k.sizeFactor,W,G):[];e.ValueCell.update(N.tPositionGroup,N.tPositionGroup.ref.value),e.ValueCell.update(N.lodLevels,X)}}function L(N,k){const j=k.boundingSphere.radius?(0,s.getMaxSize)(N)*N.uSizeFactor.ref.value:0,H=o.Sphere3D.expand((0,o.Sphere3D)(),k.boundingSphere,j),G=(0,c.calculateTransformBoundingSphere)(H,N.aTransform.ref.value,N.instanceCount.ref.value,0);o.Sphere3D.equals(G,N.boundingSphere.ref.value)||e.ValueCell.update(N.boundingSphere,G),o.Sphere3D.equals(H,N.invariantBoundingSphere.ref.value)||(e.ValueCell.update(N.invariantBoundingSphere,H),e.ValueCell.update(N.uInvariantBoundingSphere,d.Vec4.fromSphere(N.uInvariantBoundingSphere.ref.value,H))),e.ValueCell.update(N.padding,j)}function U(N){const k=h.BaseGeometry.createRenderableState(N);return q(k,N),k}function q(N,k){h.BaseGeometry.updateRenderableState(N,k),N.opaque=N.opaque&&!k.xrayShaded,N.writeDepth=N.opaque}})(P||(v1.Spheres=P={})),v1}var b1={},Oj;function Fl(){if(Oj)return b1;Oj=1,Object.defineProperty(b1,"__esModule",{value:!0}),b1.TextureMesh=void 0;const e=et(),t=rt(),r=Ne(),n=zt(),i=wi(),c=li(),o=Tt(),s=Ka(),h=Ya(),f=kr(),y=bn(),_=Ge(),g=Qa(),a=Xa(),d=Za(),p=Ja(),u=eo(),m=jf(),v=rc();var b;return(function(P){class C{constructor(){this.index=0,this.textures=[]}get(){return this.textures[this.index]}set(B,w,O){this.textures[this.index]=Object.assign(this.textures[this.index]||{},{vertex:B,group:w,normal:O}),this.index=(this.index+1)%2}destroy(){for(const B of this.textures)B.vertex.destroy(),B.group.destroy(),B.normal.destroy()}}P.DoubleBuffer=C;function l(I,B,w,O,F,L,U){const q=w.getWidth(),N=w.getHeight();return U?(U.vertexCount=I,U.groupCount=B,e.ValueCell.update(U.geoTextureDim,_.Vec2.set(U.geoTextureDim.ref.value,q,N)),e.ValueCell.update(U.vertexTexture,w),e.ValueCell.update(U.groupTexture,O),e.ValueCell.update(U.normalTexture,F),U.doubleBuffer.set(w,O,F),t.Sphere3D.copy(U.boundingSphere,L),U):{kind:"texture-mesh",vertexCount:I,groupCount:B,geoTextureDim:e.ValueCell.create(_.Vec2.create(q,N)),vertexTexture:e.ValueCell.create(w),groupTexture:e.ValueCell.create(O),normalTexture:e.ValueCell.create(F),varyingGroup:e.ValueCell.create(!1),doubleBuffer:new C,boundingSphere:t.Sphere3D.clone(L),meta:{}}}P.create=l;function S(I){const B=I?I.vertexTexture.ref.value:(0,y.createNullTexture)(),w=I?I.groupTexture.ref.value:(0,y.createNullTexture)(),O=I?I.normalTexture.ref.value:(0,y.createNullTexture)(),F=I?I.boundingSphere:(0,t.Sphere3D)();return l(0,0,B,w,O,F,I)}P.createEmpty=S,P.Params={...o.BaseGeometry.Params,doubleSided:r.ParamDefinition.Boolean(!1,o.BaseGeometry.CustomQualityParamInfo),flipSided:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),flatShaded:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),ignoreLight:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),celShaded:r.ParamDefinition.Boolean(!1,o.BaseGeometry.ShadingCategory),xrayShaded:r.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],o.BaseGeometry.ShadingCategory),transparentBackfaces:r.ParamDefinition.Select("off",r.ParamDefinition.arrayToOptions(["off","on","opaque"]),o.BaseGeometry.ShadingCategory),bumpFrequency:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory),bumpAmplitude:r.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},o.BaseGeometry.ShadingCategory),interior:(0,m.getInteriorParam)(),animation:(0,v.getAnimationParam)()},P.Utils={Params:P.Params,createEmpty:S,createValues:x,createValuesSimple:M,updateV
4100alues:D,updateBoundingSphere:V,createRenderableState:R,updateRenderableState:E,createPositionIterator:A};const T="texture-mesh";function A(I,B){const w=I.meta.webgl;if(!w)return(0,n.LocationIterator)(1,1,1,()=>a.NullLocation);w.namedFramebuffers[T]||(w.namedFramebuffers[T]=w.resources.framebuffer());const O=w.namedFramebuffers[T],[F,L]=I.geoTextureDim.ref.value;let U;const q=()=>{if(!U){const X=new Float32Array(F*L*4);O.bind(),I.vertexTexture.ref.value.attachFramebuffer(O,0),w.readPixels(0,0,F,L,X);const Y=new Float32Array(F*L*4);O.bind(),I.normalTexture.ref.value.attachFramebuffer(O,0),w.readPixels(0,0,F,L,Y),U={vertices:X,normals:Y}}return U},N=I.vertexCount,k=B.instanceCount.ref.value,j=(0,n.PositionLocation)(),H=j.position,G=j.normal,z=B.aTransform.ref.value,W=(X,Y)=>{const{vertices:K,normals:Q}=q();return Y<0?(_.Vec3.fromArray(H,K,X*4),_.Vec3.fromArray(G,Q,X*4)):(_.Vec3.transformMat4Offset(H,K,z,0,X*4,Y*16),_.Vec3.transformDirectionOffset(G,Q,z,0,X*4,Y*16)),j};return(0,n.LocationIterator)(N,k,1,W)}function x(I,B,w,O,F){const{instanceCount:L,groupCount:U}=w,q=P.Utils.createPositionIterator(I,B),N=(0,i.createColors)(w,q,O.color),k=(0,o.resolveInstanceGranularity)(F.instanceGranularity,U,L)?(0,c.createMarkers)(L,"instance"):(0,c.createMarkers)(L*U,"groupInstance"),j=(0,s.createEmptyOverpaint)(),H=(0,h.createEmptyTransparency)(),G=(0,p.createEmptyEmissive)(),z=(0,d.createEmptySubstance)(),W=(0,g.createEmptyClipping)(),X=(0,u.createEmptyWiggle)(),Y={drawCount:I.vertexCount,vertexCount:I.vertexCount,groupCount:U,instanceCount:L},K=t.Sphere3D.clone(I.boundingSphere),Q=(0,f.calculateTransformBoundingSphere)(K,B.aTransform.ref.value,L,0);return{dGeometryType:e.ValueCell.create("textureMesh"),uGeoTexDim:I.geoTextureDim,tPosition:I.vertexTexture,tGroup:I.groupTexture,tNormal:I.normalTexture,dVaryingGroup:I.varyingGroup,boundingSphere:e.ValueCell.create(Q),invariantBoundingSphere:e.ValueCell.create(K),uInvariantBoundingSphere:e.ValueCell.create(_.Vec4.ofSphere(K)),...N,...k,...j,...H,...G,...z,...W,...X,...B,...o.BaseGeometry.createValues(F,Y),uDoubleSided:e.ValueCell.create(F.doubleSided),dFlatShaded:e.ValueCell.create(F.flatShaded),dFlipSided:e.ValueCell.create(F.flipSided),dIgnoreLight:e.ValueCell.create(F.ignoreLight),dCelShaded:e.ValueCell.create(F.celShaded),dXrayShaded:e.ValueCell.create(F.xrayShaded==="inverted"?"inverted":F.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(F.transparentBackfaces),uBumpFrequency:e.ValueCell.create(F.bumpFrequency),uBumpAmplitude:e.ValueCell.create(F.bumpAmplitude),meta:e.ValueCell.create(I.meta),...(0,m.createInteriorValues)(F.interior),...(0,v.createAnimationValues)(F.animation)}}function M(I,B,w,O,F){const L=o.BaseGeometry.createSimple(w,O,F),U={...r.ParamDefinition.getDefaultValues(P.Params),...B};return x(I,L.transform,L.locationIterator,L.theme,U)}function D(I,B){o.BaseGeometry.updateValues(I,B),e.ValueCell.updateIfChanged(I.uDoubleSided,B.doubleSided),e.ValueCell.updateIfChanged(I.dFlatShaded,B.flatShaded),e.ValueCell.updateIfChanged(I.dFlipSided,B.flipSided),e.ValueCell.updateIfChanged(I.dIgnoreLight,B.ignoreLight),e.ValueCell.updateIfChanged(I.dCelShaded,B.celShaded),e.ValueCell.updateIfChanged(I.dXrayShaded,B.xrayShaded==="inverted"?"inverted":B.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(I.dTransparentBackfaces,B.transparentBackfaces),e.ValueCell.updateIfChanged(I.uBumpFrequency,B.bumpFrequency),e.ValueCell.updateIfChanged(I.uBumpAmplitude,B.bumpAmplitude),(0,m.updateInteriorValues)(I,B.interior),(0,v.updateAnimationValues)(I,B.animation)}function V(I,B){const w=t.Sphere3D.clone(B.boundingSphere),O=(0,f.calculateTransformBoundingSphere)(w,I.aTransform.ref.value,I.instanceCount.ref.value,0);t.Sphere3D.equals(O,I.boundingSphere.ref.value)||e.ValueCell.update(I.boundingSphere,O),t.Sphere3D.equals(w,I.invariantBoundingSphere.ref.value)||(e.ValueCell.update(I.invariantBoundingSphere,w),e.ValueCell.update(I.uInvariantBoundingSphere,_.Vec4.fromSphere(I.uInvariantBoundingSphere.ref.value,w)))}function R(I){const B=o.BaseGeometry.createRenderableState(I);return E(B,I),B}function E(I,B){o.BaseGeometry.updateRenderableState(I,B),I.opaque=I.opaque&&!B.xrayShaded,I.writeDepth=I.opaque}})(b||(b1.TextureMesh=b={})),b1}var S3={},C3={},P3={},kj;function Yt(){return kj||(kj=1,(function(e){Object.defineProperty(e,"__esMo
4100dule",{value:!0}),e.AnimationSchema=e.InteriorSchema=e.BaseSchema=e.WiggleSchema=e.ClippingSchema=e.SubstanceSchema=e.EmissiveSchema=e.TransparencySchema=e.OverpaintSchema=e.MarkerSchema=e.SizeSchema=e.ColorSchema=e.InternalSchema=e.GlobalDefineSchema=e.GlobalTextureSchema=e.GlobalUniformSchema=void 0,e.splitValues=t,e.getValueVersions=r,e.AttributeSpec=n,e.UniformSpec=i,e.TextureSpec=c,e.ElementsSpec=o,e.DefineSpec=s,e.ValueSpec=h;function t(f,y){const _={},g={},a={},d={},p={},u={},m={};return Object.keys(f).forEach(v=>{const b=f[v];b.type==="attribute"&&(_[v]=y[v]),b.type==="define"&&(g[v]=y[v]),b.type==="texture"&&y[v]!==void 0&&(b.variant==="material"?d[v]=y[v]:a[v]=y[v]),b.type==="uniform"&&y[v]!==void 0&&(b.variant==="material"?u[v]=y[v]:b.variant==="buffered"?m[v]=y[v]:p[v]=y[v])}),{attributeValues:_,defineValues:g,textureValues:a,materialTextureValues:d,uniformValues:p,materialUniformValues:u,bufferedUniformValues:m}}function r(f){const y={};return Object.keys(f).forEach(_=>{y[_]=f[_].ref.version}),y}function n(f,y,_){return{type:"attribute",kind:f,itemSize:y,divisor:_}}function i(f,y){return{type:"uniform",kind:f,variant:y}}function c(f,y,_,g,a){return{type:"texture",kind:f,format:y,dataType:_,filter:g,variant:a}}function o(f){return{type:"elements",kind:f}}function s(f,y){return{type:"define",kind:f,options:y}}function h(f){return{type:"value",kind:f}}e.GlobalUniformSchema={uDrawId:i("i"),uModel:i("m4"),uView:i("m4"),uInvView:i("m4"),uModelView:i("m4"),uInvModelView:i("m4"),uProjection:i("m4"),uInvProjection:i("m4"),uModelViewProjection:i("m4"),uInvModelViewProjection:i("m4"),uHasHeadRotation:i("b"),uInvHeadRotation:i("m4"),uIsAsymmetricProjection:i("b"),uHasEyeCamera:i("b"),uModelViewEye:i("m4"),uInvModelViewEye:i("m4"),uIsOrtho:i("f"),uPixelRatio:i("f"),uViewport:i("v4"),uViewOffset:i("v2"),uModelScale:i("f"),uDrawingBufferSize:i("v2"),uCameraPosition:i("v3"),uCameraDir:i("v3"),uCameraPlane:i("v4"),uNear:i("f"),uFar:i("f"),uFog:i("b"),uFogNear:i("f"),uFogFar:i("f"),uFogColor:i("v3"),uTransparentBackground:i("b"),uLightDirection:i("v3[]"),uLightColor:i("v3[]"),uAmbientColor:i("v3"),uPickingAlphaThreshold:i("f"),uHighlightColor:i("v3"),uSelectColor:i("v3"),uDimColor:i("v3"),uHighlightStrength:i("f"),uSelectStrength:i("f"),uDimStrength:i("f"),uMarkerPriority:i("i"),uMarkerAverage:i("f"),uXrayEdgeFalloff:i("f"),uCelSteps:i("f"),uExposure:i("f"),uRenderMask:i("i"),uMarkingDepthTest:i("b"),uMarkingType:i("i"),uPickType:i("i"),uTime:i("f"),uEnableAnimation:i("b")},e.GlobalTextureSchema={tDepth:c("texture","depth","ushort","nearest"),tDpoitDepth:c("texture","rg","float","nearest"),tDpoitFrontColor:c("texture","rgba","float","nearest"),tDpoitBackColor:c("texture","rgba","float","nearest")},e.GlobalDefineSchema={dLightCount:s("number"),dColorMarker:s("boolean")},e.InternalSchema={uObjectId:i("i")},e.ColorSchema={uColor:i("v3","material"),uColorTexDim:i("v2"),uColorGridDim:i("v3"),uColorGridTransform:i("v4"),uPaletteDomain:i("v2"),uPaletteDefault:i("v3"),tColor:c("image-uint8","rgb","ubyte","nearest"),tPalette:c("image-uint8","rgb","ubyte","nearest"),tColorGrid:c("texture","rgb","ubyte","linear"),dColorType:s("string",["uniform","attribute","instance","group","groupInstance","vertex","vertexInstance","volume","volumeInstance","direct"]),dUsePalette:s("boolean")},e.SizeSchema={uSize:i("f","material"),uSizeTexDim:i("v2"),tSize:c("image-uint8","rgb","ubyte","nearest"),dSizeType:s("string",["uniform","attribute","instance","group","groupInstance"]),uSizeFactor:i("f","material")},e.MarkerSchema={uMarker:i("f"),uMarkerTexDim:i("v2"),tMarker:c("image-uint8","alpha","ubyte","nearest"),markerAverage:h("number"),markerStatus:h("number"),dMarkerType:s("string",["instance","groupInstance"])},e.OverpaintSchema={uOverpaintTexDim:i("v2"),tOverpaint:c("image-uint8","rgba","ubyte","nearest"),dOverpaint:s("boolean"),uOverpaintGridDim:i("v3"),uOverpaintGridTransform:i("v4"),tOverpaintGrid:c("texture","rgba","ubyte","linear"),dOverpaintType:s("string",["instance","groupInstance","volumeInstance"]),uOverpaintStrength:i("f","material")},e.TransparencySchema={uTransparencyTexDim:i("v2"),tTransparency:c("image-uint8","alpha","ubyte","nearest"),dTransparency:s("boolean"),transparencyAverage:h("number"),transparencyMin:h("number"),uTransparencyGri
4100dDim:i("v3"),uTransparencyGridTransform:i("v4"),tTransparencyGrid:c("texture","alpha","ubyte","linear"),dTransparencyType:s("string",["instance","groupInstance","volumeInstance"]),uTransparencyStrength:i("f","material")},e.EmissiveSchema={uEmissiveTexDim:i("v2"),tEmissive:c("image-uint8","alpha","ubyte","nearest"),dEmissive:s("boolean"),emissiveAverage:h("number"),uEmissiveGridDim:i("v3"),uEmissiveGridTransform:i("v4"),tEmissiveGrid:c("texture","alpha","ubyte","linear"),dEmissiveType:s("string",["instance","groupInstance","volumeInstance"]),uEmissiveStrength:i("f","material")},e.SubstanceSchema={uSubstanceTexDim:i("v2"),tSubstance:c("image-uint8","rgba","ubyte","nearest"),dSubstance:s("boolean"),uSubstanceGridDim:i("v3"),uSubstanceGridTransform:i("v4"),tSubstanceGrid:c("texture","rgba","ubyte","linear"),dSubstanceType:s("string",["instance","groupInstance","volumeInstance"]),uSubstanceStrength:i("f","material")},e.ClippingSchema={uClippingTexDim:i("v2"),tClipping:c("image-uint8","alpha","ubyte","nearest"),dClipping:s("boolean"),dClippingType:s("string",["instance","groupInstance"])},e.WiggleSchema={uWiggleTexDim:i("v2"),tWiggle:c("image-uint8","alpha","ubyte","nearest"),dWiggle:s("boolean"),wiggleAverage:h("number"),dWiggleType:s("string",["instance","groupInstance"]),uWiggleStrength:i("f","material")},e.BaseSchema={dGeometryType:s("string",["cylinders","directVolume","image","lines","mesh","points","spheres","text","textureMesh"]),...e.ColorSchema,...e.MarkerSchema,...e.OverpaintSchema,...e.TransparencySchema,...e.EmissiveSchema,...e.SubstanceSchema,...e.ClippingSchema,...e.WiggleSchema,dClipObjectCount:s("number"),dClipVariant:s("string",["instance","pixel"]),uClipObjectType:i("i[]","material"),uClipObjectInvert:i("b[]","material"),uClipObjectPosition:i("v3[]","material"),uClipObjectRotation:i("v4[]","material"),uClipObjectScale:i("v3[]","material"),uClipObjectTransform:i("m4[]","material"),aInstance:n("float32",1,1),aTransform:n("float32",16,1),uAlpha:i("f","material"),uMetalness:i("f","material"),uRoughness:i("f","material"),uBumpiness:i("f","material"),uEmissive:i("f","material"),uDensity:i("f","material"),uVertexCount:i("i"),uInstanceCount:i("i"),uGroupCount:i("i"),uInvariantBoundingSphere:i("v4"),uLod:i("v4"),drawCount:h("number"),instanceCount:h("number"),alpha:h("number"),matrix:h("m4"),transform:h("float32"),extraTransform:h("float32"),hasExtraTransform:h("boolean"),hasReflection:h("boolean"),instanceGranularity:h("boolean"),boundingSphere:h("sphere"),invariantBoundingSphere:h("sphere"),instanceGrid:h("instanceGrid")},e.InteriorSchema={uInteriorColor:i("v4"),uInteriorSubstance:i("v4")},e.AnimationSchema={uWiggleSpeed:i("f","material"),uWiggleAmplitude:i("f","material"),uWiggleFrequency:i("f","material"),uWiggleMode:i("i","material"),uTumbleSpeed:i("f","material"),uTumbleAmplitude:i("f","material"),uTumbleFrequency:i("f","material")}})(P3)),P3}var _1={},Fj;function $ne(){return Fj||(Fj=1,Object.defineProperty(_1,"__esModule",{value:!0}),_1.copy_frag=void 0,_1.copy_frag=` 4101precision highp float; 4102precision highp sampler2D; 4103 4104uniform sampler2D tColor; 4105uniform vec2 uTexSize; 4106 4107void main() { 4108 vec2 coords = gl_FragCoord.xy / uTexSize; 4109 gl_FragColor = texture2D(tColor, coords); 4110} 4111`),_1}var S1={},Lj;function Gr(){return Lj||(Lj=1,Object.defineProperty(S1,"__esModule",{value:!0}),S1.quad_vert=void 0,S1.quad_vert=` 4112precision highp float; 4113 4114attribute vec2 aPosition; 4115uniform vec2 uQuadScale; 4116 4117void main(void) { 4118 vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; 4119 gl_Position = vec4(position, 0.0, 1.0); 4120} 4121`),S1}var T3={},Nj;function Zt(){return Nj||(Nj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ComputeRenderVariants=e.GraphicsRenderVariants=void 0,e.getDrawMode=g,e.createGraphicsRenderItem=b,e.createComputeRenderItem=P,e.createRenderItem=C;const t=_w(),r=bn(),n=Yt(),i=Yn(),c=et(),o=Ct(),s=Vt(),h=vr(),f=sQ(),y=3e7,_=(0,i.idFactory)();function g(l,S){const{gl:T}=l;switch(S){case"points":return T.POINTS;case"lines":return T.LINES;case"line-strip":return T.LINE_STRIP;case"line-loop":return T.LINE_LOOP;case"triangles":return T.TRIANGLES;case"triangle-strip":return T.TRIANGLE_STRIP;case"triangle-fan":return T.TRIANGLE_FAN}}const a={color:"",pick:"",depth:"",marking:"",emissive:"",tracing:""};e.GraphicsRenderVariants=Object.keys(a);const d={compute:""};e.ComputeRenderVariants=Object.keys(d);function p(l,S,T,A,x){return T={...T,dRenderVariant:c.ValueCell.create(S)},x.dRenderVariant===void 0&&Object.defineProperty(x,"dRenderVariant",{value:(0,n.DefineSpec)("str
4121ing")}),l.resources.program(T,A,x)}function u(){return{attributes:!1,defines:!1,elements:!1,textures:!1}}function m(l){l.attributes=!1,l.defines=!1,l.elements=!1,l.textures=!1}function v(l,S){if(l==="color")switch(S){case"blended":return"colorBlended";case"wboit":return"colorWboit";case"dpoit":return"colorDpoit"}return l}function b(l,S,T,A,x,M,D){return C(l,S,T,A,x,M,e.GraphicsRenderVariants,D)}function P(l,S,T,A,x,M=-1){return C(l,S,T,A,x,M,e.ComputeRenderVariants,void 0)}function C(l,S,T,A,x,M,D,V){const R=_(),{stats:E,state:I,resources:B}=l,{instancedArrays:w,vertexArrayObject:O,multiDrawInstancedBaseVertexBaseInstance:F,drawInstancedBaseVertexBaseInstance:L}=l.extensions;if(D=D.filter(de=>de==="tracing"?!!l.extensions.drawBuffers:!0),x.uVertexCount&&!l.extensions.noNonInstancedActiveAttribs){const de=x.uVertexCount.ref.value;x.aVertex=c.ValueCell.create((0,s.fillSerial)(new Float32Array(de))),A.aVertex=(0,n.AttributeSpec)("float32",1,0)}const{attributeValues:U,defineValues:q,textureValues:N,materialTextureValues:k,uniformValues:j,materialUniformValues:H,bufferedUniformValues:G}=(0,n.splitValues)(A,x),z=Object.entries(j),W=Object.entries(H),X=Object.entries(G),Y=Object.entries((0,f.cloneUniformValues)(G)),K=Object.entries(q),Q=(0,n.getValueVersions)(x),J=g(l,S),ae={};for(const de of D)ae[de]=p(l,v(de,V),q,T,A);const te=(0,r.createTextures)(l,A,N),ne=(0,r.createTextures)(l,A,k),$=(0,t.createAttributeBuffers)(l,A,U),ie=[];for(let de=0,ge=$.length;de<ge;++de){const Ce=$[de];Ce[1].divisor===1&&ie.push(Ce)}let Z;const re=x.elements;re&&re.ref.value&&(Z=B.elements(re.ref.value));const oe={};for(const de of D)oe[de]=O?B.vertexArray(ae[de],$,Z):null;let ce=x.drawCount.ref.value,ue=x.instanceCount.ref.value;E.drawCount+=ce,E.instanceCount+=ue,E.instancedDrawCount+=ue*ce;const pe=u();let he=!1,fe=-1;return{id:R,materialId:M,getByteCount(){let de=0;for(let ge=0,Ce=$.length;ge<Ce;++ge)de+=$[ge][1].getByteCount();
4121Z&&(de+=Z.getByteCount());for(let ge=0,Ce=te.length;ge<Ce;++ge)de+=te[ge][1].getByteCount();for(let ge=0,Ce=ne.length;ge<Ce;++ge)de+=ne[ge][1].getByteCount();return de},getProgram:de=>ae[de],setTransparency:de=>{if(de!==V){V=de;for(const ge of D)ae[ge].destroy(),ae[ge]=p(l,v(ge,V),q,T,A)}},render:(de,ge,Ce)=>{if(ce===0||ue===0)return;const ve=ae[de];if(ve.id===fe&&I.currentRenderItemId===R)ve.setUniforms(z),ve.bindTextures(te,ge);else{const le=oe[de];(ve.id!==I.currentProgramId||ve.id!==fe||M===-1||M!==I.currentMaterialId)&&(ve.id!==I.currentProgramId&&ve.use(),ve.setUniforms(W),ve.bindTextures(ne,ge+te.length),I.currentMaterialId=M,fe=ve.id),ve.setUniforms(z),ve.setUniforms(Y),ve.bindTextures(te,ge),le?(le.bind(),Z&&Z.bind()):(Z&&Z.bind(),ve.bindAttributes($)),I.currentRenderItemId=R}if(o.isDebugMode&&l.checkFramebufferStatus(`Framebuffer error rendering item id ${R}`),Ce){for(const le of Ce)if(le.count!==0){if(ve.setUniforms(le.uniforms),F)Z?F.multiDrawElementsInstancedBaseVertexBaseInstance(J,le.counts,0,Z._dataType,le.offsets,0,le.instanceCounts,0,le.baseVertices,0,le.baseInstances,0,le.count):F.multiDrawArraysInstancedBaseInstance(J,le.firsts,0,le.counts,0,le.instanceCounts,0,le.baseInstances,0,le.count);else if(L)if(Z)for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),L.drawElementsInstancedBaseVertexBaseInstance(J,le.counts[me],Z._dataType,le.offsets[me],le.instanceCounts[me],le.baseVertices[me],le.baseInstances[me]));else for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),L.drawArraysInstancedBaseInstance(J,le.firsts[me],le.counts[me],le.instanceCounts[me],le.baseInstances[me]));else if(Z)for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),ve.offsetAttributes(ie,le.baseInstances[me]),w.drawElementsInstanced(J,le.counts[me],Z._dataType,le.offsets[me],le.instanceCounts[me]));else for(let me=0;me<le.count;++me)le.counts[me]>0&&(ve.uniform("uDrawId",me),ve.offsetAttributes(ie,le.baseInstances[me]),w.drawArraysInstanced(J,0,le.counts[me],le.instanceCounts[me]));if(o.isTimingMode){F?E.calls.multiDrawInstancedBase+=1:L?E.calls.drawInstancedBase+=le.count:E.calls.drawInstanced+=le.count;for(let me=0;me<le.count;++me)E.calls.counts+=le.instanceCounts[me]}}}else{let le=0;for(;;){const me=Math.min(ce-le,y);if(Z?w.drawElementsInstanced(J,me,Z._dataType,le*Z._bpe,ue):w.drawArraysInstanced(J,le,me,ue),le+=me,le>=ce)break}o.isTimingMode&&(E.calls.drawInstanced+=1,E.calls.counts+=ue)}o.isDebugMode&&l.checkError(`Draw error rendering item id ${R}`)},update:()=>{if(m(pe),x.aVertex){const de=x.uVertexCount.ref.value;x.aVertex.ref.value.length<de&&c.ValueCell.update(x.aVertex,(0,s.fillSerial)(new Float32Array(de)))}for(let de=0,ge=K.length;de<ge;++de){const[Ce,ve]=K[de];ve.ref.version!==Q[Ce]&&(pe.defines=!0,Q[Ce]=ve.ref.version)}if(pe.defines)for(const de of D)ae[de].destroy(),ae[de]=p(l,v(de,V),q,T,A);x.drawCount.ref.version!==Q.drawCount&&(E.drawCount+=x.drawCount.ref.value-ce,E.instancedDrawCount+=ue*x.drawCount.ref.value-ue*ce,ce=x.drawCount.ref.value,Q.drawCount=x.drawCount.ref.version),x.instanceCount.ref.version!==Q.instanceCount&&(E.instanceCount+=x.instanceCount.ref.value-ue,E.instancedDrawCount+=x.instanceCount.ref.value*ce-ue*ce,ue=x.instanceCount.ref.value,Q.instanceCount=x.instanceCount.ref.version);for(let de=0,ge=$.length;de<ge;++de){const[Ce,ve]=$[de],le=U[Ce];if(le.ref.version!==Q[Ce]){if(ve.length>=le.ref.value.length)ve.updateSubData(le.ref.value,0,ve.length);else{ve.destroy();const{itemSize:me,divisor:ee}=A[Ce];$[de][1]=B.attribute(le.ref.value,me,ee),pe.attributes=!0}Q[Ce]=le.ref.version}}if(Z&&x.elements.ref.version!==Q.elements&&(Z.length>=x.elements.ref.value.length?Z.updateSubData(x.elements.ref.value,0,Z.length):(Z.destroy(),Z=B.elements(x.elements.ref.value),pe.elements=!0),Q.elements=x.elements.ref.version),pe.attributes||pe.defines||pe.elements)for(const de of D){const ge=oe[de];
4121ge&&ge.destroy(),oe[de]=O?B.vertexArray(ae[de],$,Z):null}for(let de=0,ge=te.length;de<ge;++de){const[Ce,ve]=te[de],le=N[Ce];le.ref.version!==Q[Ce]&&(A[Ce].kind!=="texture"?(ve.load(le.ref.value),pe.textures=!0):te[de][1]=le.ref.value,Q[Ce]=le.ref.version)}for(let de=0,ge=ne.length;de<ge;++de){const[Ce,ve]=ne[de],le=k[Ce];le.ref.version!==Q[Ce]&&(A[Ce].kind!=="texture"?(ve.load(le.ref.value),pe.textures=!0):ne[de][1]=le.ref.value,Q[Ce]=le.ref.version)}for(let de=0,ge=X.length;de<ge;++de){const[Ce,ve]=X[de];ve.ref.version!==Q[Ce]&&(c.ValueCell.update(Y[de][1],(0,h.deepClone)(ve.ref.value)),Q[Ce]=ve.ref.version)}},destroy:()=>{if(!he){for(const de of D){ae[de].destroy();const ge=oe[de];ge&&ge.destroy()}te.forEach(([de,ge])=>{A[de].kind!=="texture"&&ge.destroy()}),ne.forEach(([de,ge])=>{A[de].kind!=="texture"&&ge.destroy()}),$.forEach(([de,ge])=>ge.destroy()),Z&&Z.destroy(),E.drawCount-=ce,E.instanceCount-=ue,E.instancedDrawCount-=ue*ce,he=!0}}}}})(T3)),T3}var C1={},qj;function Jt(){if(qj)return C1;qj=1,Object.defineProperty(C1,"__esModule",{value:!0}),C1.createRenderable=a,C1.createComputeRenderable=d;const e=Kr(),t=Yn(),r=ir(),n=oQ(),i=DS(),c=ja(),o=Fa(),s=Ct(),h=i.Plane3D.distanceToPoint,f=n.Frustum3D.intersectsSphere3D,y=c.Sphere3D.fromArray,_=(0,t.idFactory)();function g(p,u){return u&&u.instanceCounts.length>=p?u:{firsts:new Int32Array(p),counts:new Int32Array(p),offsets:new Int32Array(p),instanceCounts:new Int32Array(p),baseVertices:new Int32Array(p),baseInstances:new Uint32Array(p),count:0,uniforms:[]}}function a(p,u,m){const v=_();let b=g(0);const P=[];let C=!1,l=-1;const S=(0,c.Sphere3D)(),T=()=>{var A;const x=(A=u.lodLevels)===null||A===void 0?void 0:A.ref.value;if(x&&x.length>0){const{cellCount:M}=u.instanceGrid.ref.value;P.length=x.length;for(let D=0,V=x.length;D<V;++D)P[D]=g(M,P[D]),P[D].count=0;if(u.lodLevels.ref.version!==l){for(let D=0,V=x.length;D<V;++D)P[D].uniforms.length!==1&&(P[D].uniforms.length=1,P[D].uniforms[0]=["uLod",e.ValueCell.create((0,o.Vec4)())]),e.ValueCell.update(P[D].uniforms[0][1],o.Vec4.set(P[D].uniforms[0][1].ref.value,x[D][0],x[D][1],x[D][2],x[D][4]));l=u.lodLevels.ref.version}}};return T(),{id:v,materialId:p.materialId,values:u,state:m,cull:(A,x,M,D)=>{var V,R;if(C=!1,u.drawCount.ref.value===0||u.instanceCount.ref.value===0||u.instanceGrid.ref.value.cellSize<=1)return;const{cellOffsets:E,cellSpheres:I,cellCount:B,batchOffsets:w,batchSpheres:O,batchCount:F,batchCell:L,batchSize:U}=u.instanceGrid.ref.value,[q,N]=u.uLod.ref.value,k=q!==0||N!==0,j=2*U,H=(V=u.lodLevels)===null||V===void 0?void 0:V.ref.value;if(H&&H.length>0){if(((R=u.lodLevels)===null||R===void 0?void 0:R.ref.version)!==l)T();else for(let G=0,z=H.length;G<z;++G)P[G].count=0;for(let G=0;G<F;++G){const z=w[G],W=w[G+1];if(W-z===0)continue;y(S,O,G*4);const Y=h(A,S.center);if(k&&(Y+S.radius<q||Y-S.radius>N)){s.isTimingMode&&(D.culled.lod+=E[L[W-1]+1]-E[L[z]]);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=E[L[W-1]+1]-E[L[z]]);continue}if(M!==null&&M(S)){s.isTimingMode&&(D.culled.occlusion+=E[L[W-1]+1]-E[L[z]]);continue}for(let K=z;K<W;++K){const Q=L[K],J=E[Q],te=E[Q+1]-J;if(te===0)continue;y(S,I,Q*4);const ne=h(A,S.center);if(k&&(ne+S.radius<q||ne-S.radius>N)){s.isTimingMode&&(D.culled.lod+=te);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=te);continue}if(M!==null&&ne-S.radius<j&&M(S)){s.isTimingMode&&(D.culled.occlusion+=te);continue}for(let $=0,ie=H.length;$<ie;++$){if(ne+S.radius<H[$][0]||ne-S.radius>H[$][1])continue;const Z=P[$],re=Z.count;re>0&&Z.baseInstances[re-1]+Z.instanceCounts[re-1]===J&&Z.counts[re-1]===H[$][3]?Z.instanceCounts[re-1]+=te:(Z.counts[re]=H[$][3],Z.instanceCounts[re]=te,Z.baseInstances[re]=J,Z.count+=1)}}}}else{b=g(B,b);const{baseInstances:G,instanceCounts:z,counts:W}=b;let X=0;for(let Y=0;Y<F;++Y){const K=w[Y],Q=w[Y+1];if(Q-K!==0){if(y(S,O,Y*4),k){const ae=h(A,S.center);if(ae+S.radius<q||ae-S.radius>N){s.isTimingMode&&(D.culled.lod+=E[L[Q-1]+1]-E[L[K]]);continue}}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=E[L[Q-1]+1]-E[L[K]]);continue}if(M!==null&&M(S)){s.isTimingMode&&(D.culled.occlusion+=E[L[Q-1]+1]-E[L[K]]);continue}for(let ae=K;ae<Q;++ae){const te=L[ae],ne=E[te],ie=E[te+1]-ne;if(ie===0)continue;y(S,I,te*4);const Z=h(A,S.center);if(k&&(Z+S.radius<q||Z-S.radius>N)){s.isTimingMode&&(D.culled.lod+=ie);continue}if(!f(x,S)){s.isTimingMode&&(D.culled.frustum+=ie);continue}if(M!==null&&Z-S.radius<j&&M(S)){s.isTimingMode&&(D.culled.occlusion+=ie);continue}X>0&&G[X-1]+z[X-1]===ne?z[X-1]+=ie:(W[X]=u.drawCount.ref.value,z[X]=ie,G[X]=ne,X+=1)}}}b.count=X,P.length=1,P[0]=b,P[0].uniforms.length=0}C=!0},uncull:()=>{C=!1},cullSimple:(A,x,M)=>{var D,V;const R=(D=u.lodLevels)===null||D===void 0?void 0:D.ref.value;if(!(!R||R.length===0)){if(((V=u.lodLevels)===null||V===void 0?void 0:V.ref.version)!==l)T();else for(let E=0,I=R.length;E<I;++E)P[E].count=0;for(let E=0,I=R.length;E<I;++E)if(A+x<R[E][1]*M){const B=P[E],w=B.count;B.counts[w]=R[E][3],B.instanceCounts[w]=u.instanceCount.ref.value,B.baseInstances[w]=0,B.count+=1;break}C=!0}},render:(A,x)=>{u.uAlpha&&u.alpha&&e.ValueCell.updateIfChanged(u.uAlpha,(0,r.clamp)(u.alpha.ref.value*m.alphaFactor,0,1)),p.render(A,x,C?P:void 0)},getByteCount:()=>p.getByteCount(),getProgram:A=>p.getProgram(A),setTransparency:A=>p.setTransparency(A),update:()=>{p.update(),T()},dispose:()=>p.destroy()}}function d(p,u){return{id:_(),values:u,render:()=>{p.getProgram("compute").finalize(!0),p.render("compute",0)},update:()=>p.update(),dispose:()=>p.destroy()}}return C1}var Uj;function Mr(){return Uj||(Uj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.QuadValues=e.QuadSchema=e.QuadPositions=void 0,e.createCopyRenderable=g,e.getSharedCopyRenderable=d,e.readTexture=m,e.readAlphaTexture=v;const t=bn(),r=et(),n=Yt(),i=Ge(),c=Kt(),o=$ne(),s=Gr(),h=Zt(),f=Jt();e.QuadPositions=new Float32Array([1,1,-1,1,-1,-1,-1,-1,1,-1,1,1]),e.QuadSchema={drawCount:(0,n.ValueSpec)("number"),instanceCount:(0,n.ValueSpec)("number"),aPosition:(0,n.AttributeSpec)("float32",2,0),uQuadScale:(0,n.UniformSpec)("v2")},e.QuadValues={drawCount:r.ValueCell.create(6),instanceCount:r.ValueCell.create(1),aPosition:r.ValueCell.create(e.QuadPositions),uQuadScale:r.ValueCell.create(i.Vec2.create(1,1))};const y={...e.QuadSchema,tColor:(0,n.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,n.UniformSpec)("v2")},_=(0,c.ShaderCode)("copy",s.quad_vert,o.copy_frag);function g(b,P){const C={...e.QuadValues,tColor:r.ValueCell.create(P),uTexSize:r.ValueCell.create(i.Vec2.create(P.getWidth(),P.getHeight()))},l={...y},S=(0,h.createComputeRenderItem)(b,"triangles",_,l,C);return(0,f.createComputeRenderable)(S,C)}const a="shared-copy";function d(b,P){b.namedComputeRenderables[a]||(b.namedComputeRenderables[a]=g(b,(0,t.createNullTexture)()));const C=b.namedComputeRenderables[a];return r.ValueCell.update(C.values.tColor,P),r.ValueCell.update(C.values.uTexSize,i.Vec2.set(C.values.uTexSize.ref.value,P.getWidth(),P.getHeight())),C.update(),C}const p="read-texture",u="read-alpha-texture";function m(b,P,C){const{gl:l,resources:S}=b;if(!C&&P.type!==l.UNSIGNED_BYTE)throw new Error("unsupported texture type");b.namedFramebuffers[p]||(b.namedFramebuffers[p]=S.framebuffer());const T=b.namedFramebuffers[p],A=P.getWidth(),x=P.getHeight();return C||(C=new Uint8Array(A*x*4)),T.bind(),P.attachFramebuffer(T,0),b.readPixels(0,0,A,x,C),{array:C,width:A,height:x}}function v(b,P){const{gl:C,state:l,resources:S}=b;if(P.type!==C.UNSIGNED_BYTE)throw new Error("unsupported texture type");const T=P.getWidth(),A=P.getHeight(),x=d(b,P);l.currentRenderItemId=-1,b.namedFramebuffers[u]||(b.namedFramebuffers[u]=S.framebuffer());const M=b.namedFramebuffers[u];M.bind(),b.namedTextures[u]||(b.namedTextures[u]=S.texture("image-uint8","rgba","ubyte","linear"));const D=b.namedTextures[u];D.define(T,A),D.attachFramebuffer(M,0),l.disable(C.CULL_FACE),l.enable(C.BLEND),l.disable(C.DEPTH_TEST),l.enable(C.SCISSOR_TEST),l.depthMask(!1),l.clearColor(0,0,0,0),l.blendFunc(C.ONE,C.ONE),l.blendEquation(C.FUNC_ADD),l.viewport(0,0,T,A),l.scissor(0,0,T,A),C.clear(C.COLOR_BUFFER_BIT),x.render();const V=new Uint8Array(T*A*4);return b.readPixels(0,0,T,A,V),{array:V,width:T,height:A}}})(C3)),C3}var jj;function Wf(){return jj||(jj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Image=e.InterpolationTypeNames=e.InterpolationTypes=void 0;const t=_t(),r=zt(),n=kr(),i=rt(),c=Ge(),o=et(),s=Ne(),h=Tt(),f=wi(),y=li(),_=Ka(),g=Ya(),a=Vt(),d=Qa(),p=Xa(),u=Mr(),m=Za(),v=Ja(),b=eo(),P=new Uint32Array([0,1,2,1,3,2]),C=new Float32Array([0,1,0,0,1,1,1,0]);e.InterpolationTypes={nearest:"Nearest",catmulrom:"Catmulrom (Cubic)",mitchell:"Mitchell (Cubic)",bspline:"B-Spline (Cubic)"},e.InterpolationTypeNames=Object.keys(e.InterpolationTypes);var l;(function(T){function A(){return{type:0,center:(0,c.Vec3)(),rotation:(0,c.Quat)(),scale:(0,c.Vec3)(),transform:(0,c.Mat4)()}}T.createEmptyTrim=A;function x(U,q,N,k,j,H,G){return G?V(U,q,N,k,j,H,G):D(U,q,N,k,j,H)}T.create=x;function M(U){return(0,t.hashFnv32a)([U.cornerBuffer.ref.version])}function D(U,q,N,k,j,H){const G=(0,i.Sphere3D)();let z=-1;const W=U.width,X=U.height,Y={kind:"image",imageTexture:o.ValueCell.create(U),imageTextureDim:o.ValueCell.create(c.Vec2.create(W,X)),cornerBuffer:o.ValueCell.create(q),groupTexture:o.ValueCell.create(N),valueTexture:o.ValueCell.create(k),trimType:o.ValueCell.create(j.type),trimCenter:o.ValueCell.create(j.center),trimRotation:o.ValueCell.create(j.rotation),trimScale:o.ValueCell.create(j.scale),trimTransform:o.ValueCell.create(j.transform),isoLevel:o.ValueCell.create(H),get boundingSphere(){const K=M(Y);if(K!==z){const Q=S(Y.cornerBuffer.ref.value);i.Sphere3D.copy(G,Q),z=K}return G},setBoundingSphere(K){i.Sphere3D.copy(G,K),z=M(Y)},hasBoundingSphere(){return z===M(Y)},meta:{}};return Y}function V(U,q,N,k,j,H,G){const z=U.width,W=U.height;return o.ValueCell.update(G.imageTexture,U),o.ValueCell.update(G.imageTextureDim,c.Vec2.set(G.imageTextureDim.ref.value,z,W)),o.ValueCell.update(G.cornerBuffer,q),o.ValueCell.update(G.groupTexture,N),o.ValueCell.update(G.valueTexture,k),o.ValueCell.updateIfChanged(G.trimType,j.type),o.ValueCell.update(G.trimCenter,c.Vec3.copy(G.trimCenter.ref.value,j.center)),o.ValueCell.update(G.trimRotation,c.Quat.copy(G.trimRotation.ref.value,j.rotation)),o.ValueCell.update(G.trimScale,c.Vec3.copy(G.trimScale.ref.value,j.scale)),o.ValueCell.update(G.trimTransform,c.Mat4.copy(G.trimTransform.ref.value,j.transform)),o.ValueCell.updateIfChanged(G.isoLevel,H),G}function R(U){const q=(0,n.createTextureImage)(0,4,Uint8Array),N=U?U.cornerBuffer.ref.value:new Float32Array(24),k=(0,n.createTextureImage)(0,4,Uint8Array),j=(0,n.createTextureImage)(0,1,Float32Array),H=A();return x(q,N,k,j,H,-1,U)}T.createEmpty=R,T.Params={...h.BaseGeometry.Params,interpolation:s.ParamDefinition.Select("bspline",s.ParamDefinition.objectToOptions(e.InterpolationTypes))},T.Utils={Params:T.Params,createEmpty:R,createValues:I,createValuesSimple:B,updateV
4121alues:w,updateBoundingSphere:O,createRenderableState:F,updateRenderableState:L,createPositionIterator:E};function E(U,q){return(0,r.LocationIterator)(1,1,1,()=>p.NullLocation)}function I(U,q,N,k,j){const{instanceCount:H,groupCount:G}=N,z=E(),W=(0,f.createColors)(N,z,k.color),X=(0,h.resolveInstanceGranularity)(j.instanceGranularity,G,H)?(0,y.createMarkers)(H,"instance"):(0,y.createMarkers)(H*G,"groupInstance"),Y=(0,_.createEmptyOverpaint)(),K=(0,g.createEmptyTransparency)(),Q=(0,v.createEmptyEmissive)(),J=(0,m.createEmptySubstance)(),ae=(0,d.createEmptyClipping)(),te=(0,b.createEmptyWiggle)(),ne={drawCount:P.length,vertexCount:u.QuadPositions.length/3,groupCount:G,instanceCount:H},$=i.Sphere3D.clone(U.boundingSphere),ie=(0,n.calculateTransformBoundingSphere)($,q.aTransform.ref.value,H,0);return{dGeometryType:o.ValueCell.create("image"),...W,...X,...Y,...K,...Q,...J,...ae,...te,...q,...h.BaseGeometry.createValues(j,ne),aPosition:U.cornerBuffer,aUv:o.ValueCell.create(C),elements:o.ValueCell.create(P),aGroup:o.ValueCell.create((0,a.fillSerial)(new Float32Array(4))),boundingSphere:o.ValueCell.create(ie),invariantBoundingSphere:o.ValueCell.create($),uInvariantBoundingSphere:o.ValueCell.create(c.Vec4.ofSphere($)),dInterpolation:o.ValueCell.create(j.interpolation),uImageTexDim:U.imageTextureDim,tImageTex:U.imageTexture,tGroupTex:U.groupTexture,tValueTex:U.valueTexture,uTrimType:U.trimType,uTrimCenter:U.trimCenter,uTrimRotation:U.trimRotation,uTrimScale:U.trimScale,uTrimTransform:U.trimTransform,uIsoLevel:U.isoLevel}}function B(U,q,N,k,j){const H=h.BaseGeometry.createSimple(N,k,j),G={...s.ParamDefinition.getDefaultValues(T.Params),...q};return I(U,H.transform,H.locationIterator,H.theme,G)}function w(U,q){h.BaseGeometry.updateValues(U,q),o.ValueCell.updateIfChanged(U.dInterpolation,q.interpolation)}function O(U,q){const N=i.Sphere3D.clone(q.boundingSphere),k=(0,n.calculateTransformBoundingSphere)(N,U.aTransform.ref.value,U.instanceCount.ref.value,0);i.Sphere3D.equals(k,U.boundingSphere.ref.value)||o.ValueCell.update(U.boundingSphere,k),i.Sphere3D.equals(N,U.invariantBoundingSphere.ref.value)||(o.ValueCell.update(U.invariantBoundingSphere,N),o.ValueCell.update(U.uInvariantBoundingSphere,c.Vec4.fromSphere(U.uInvariantBoundingSphere.ref.value,N)))}function F(U){const q=h.BaseGeometry.createRenderableState(U);return q.opaque=!1,q}function L(U,q){h.BaseGeometry.updateRenderableState(U,q),U.opaque=!1}})(l||(e.Image=l={}));function S(T){const A=(0,c.Vec3)(),x=[];for(let V=0,R=T.length;V<R;V+=3){const E=c.Vec3.fromArray((0,c.Vec3)(),T,V);x.push(E),c.Vec3.add(A,A,E)}c.Vec3.scale(A,A,1/(T.length/3));let M=0;for(const V of x){const R=c.Vec3.distance(A,V);R>M&&(M=R)}const D=i.Sphere3D.create(A,M);return i.Sphere3D.setExtrema(D,x),D}})(S3)),S3}var P1={},Gj;function no(){if(Gj)return P1;Gj=1,Object.defineProperty(P1,"__esModule",{value:!0}),P1.Cylinders=void 0;const e=et(),t=Ge(),r=us(),n=wi(),i=li(),c=ls(),o=zt(),s=Ne(),h=kr(),f=rt(),y=Tt(),_=Ka(),g=Ya(),a=_t(),d=Qa(),p=Za(),u=Ja(),m=eo(),v=jf(),b=rc();var P;return(function(C){function l(O,F,L,U,q,N,k,j,H,G){return G?x(O,F,L,U,q,N,k,j,H,G):A(O,F,L,U,q,N,k,j,H)}C.create=l;function S(O){const F=O?O.mappingBuffer.ref.value:new Float32Array(0),L=O?O.indexBuffer.ref.value:new Uint32Array(0),U=O?O.groupBuffer.ref.value:new Float32Array(0),q=O?O.startBuffer.ref.value:new Float32Array(0),N=O?O.endBuffer.ref.value:new Float32Array(0),k=O?O.scaleBuffer.ref.value:new Float32Array(0),j=O?O.capBuffer.ref.value:new Float32Array(0),H=O?O.colorModeBuffer.ref.value:new Float32Array(0);return l(F,L,U,q,N,k,j,H,0,O)}C.createEmpty=S;function T(O){return(0,a.hashFnv32a)([O.cylinderCount,O.mappingBuffer.ref.version,O.indexBuffer.ref.version,O.groupBuffer.ref.version,O.startBuffer.ref.version,O.endBuffer.ref.version,O.scaleBuffer.ref.version,O.capBuffer.ref.version,O.colorModeBuffer.ref.version])}function A(O,F,L,U,q,N,k,j,H){const G=(0,f.Sphere3D)();let z,W=-1,X=-1;const Y={kind:"cylinders",cylinderCount:H,mappingBuffer:e.ValueCell.create(O),indexBuffer:e.ValueCell.create(F),groupBuffer:e.ValueCell.create(L),startBuffer:e.ValueCell.create(U),endBuffer:e.ValueCell.create(q),scaleBuffer:e.ValueCell.create(N),capBuffer:e.ValueCell.create(k),colorModeBuffer:e.ValueCell.create(j),get boundingSphere(){const K=T(Y);if(K!==W){const Q=(0,h.calculateInvariantBoundingSphere)(Y.startBuffer.ref.value,Y.cylinderCount*6,6),J=(0,h.calculateInvariantBoundingSphere)(Y.endBuffer.ref.value,Y.cylinderCount*6,6);f.Sphere3D.expandBySphere(G,Q,J),W=K}return G},get groupMapping(){return Y.groupBuffer.ref.version!==X&&(z=(0,r.createGroupMapping)(Y.groupBuffer.ref.value,Y.cylinderCount,6),X=Y.groupBuffer.ref.version),z},setBoundingSphere(K){f.Sphere3D.copy(G,K),W=T(Y)},hasBoundingSphere(){return W===T(Y)}};return Y}function x(O,F,L,U,q,N,k,j,H,G){return H>G.cylinderCount&&(e.ValueCell.update(G.mappingBuffer,O),e.ValueCell.update(G.indexBuffer,F)),G.cylinderCount=H,e.ValueCell.update(G.groupBuffer,L),e.ValueCell.update(G.startBuffer,U),e.ValueCell.update(G.endBuffer,q),e.ValueCell.update(G.scaleBuffer,N),e.ValueCell.update(G.capBuffer,k),e.ValueCell.update(G.colorModeBuffer,j),G}function M(O,F){const L=O.startBuffer.ref.value;(0,r.transformPositionArray)(F,L,0,O.cylinderCount*6),e.ValueCell.update(O.startBuffer,L);const U=O.endBuffer.ref.value;(0,r.transformPositionArray)(F,U,0,O.cylinderCount*6),e.ValueCell.update(O.endBuffer,U)}C.transform=M,C.Params={...y.BaseGeometry.Params,sizeFactor:s.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),sizeAspectRatio:s.ParamDefinition.Numeric(1,{min:0,max:3,step:.01}),doubleSided:s.ParamDefinition.Boolean(!1,y.BaseGeometry.CustomQualityParamInfo),ignoreLight:s.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),celShaded:s.ParamDefinition.Boolean(!1,y.BaseGeometry.ShadingCategory),xrayShaded:s.ParamDefinition.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],y.BaseGeometry.ShadingCategory),transparentBackfaces:s.ParamDefinition.Select("off",s.ParamDefinition.arrayToOptions(["off","on","opaque"]),y.BaseGeometry.ShadingCategory),solidInterior:s.ParamDefinition.Boolean(!0,y.BaseGeometry.ShadingCategory),bumpFrequency:s.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory),bumpAmplitude:s.ParamDefinition.Numeric(1,{min:0,max:5,step:.1},y.BaseGeometry.ShadingCategory),interior:(0,v.getInteriorParam)(),animation:(0,b.getAnimationParam)(),colorMode:s.ParamDefinition.Select("default",s.ParamDefinition.arrayToOptions(["default","interpolate"]),y.BaseGeometry.ShadingCategory)}
4121,C.Utils={Params:C.Params,createEmpty:S,createValues:V,createValuesSimple:R,updateValues:E,updateBoundingSphere:I,createRenderableState:B,updateRenderableState:w,createPositionIterator:D};function D(O,F){const L=O.cylinderCount*6,U=F.instanceCount.ref.value,q=(0,o.PositionLocation)(),N=q.position,k=O.startBuffer.ref.value,j=O.endBuffer.ref.value,H=F.aTransform.ref.value,G=(z,W)=>{const X=z%6===0?k:j;return W<0?t.Vec3.fromArray(N,X,z*3):t.Vec3.transformMat4Offset(N,X,H,0,z*3,W*16),q};return(0,o.LocationIterator)(L,U,2,G)}function V(O,F,L,U,q){const{instanceCount:N,groupCount:k}=L,j=D(O,F),H=(0,n.createColors)(L,j,U.color),G=(0,c.createSizes)(L,j,U.size),z=(0,y.resolveInstanceGranularity)(q.instanceGranularity,k,N)?(0,i.createMarkers)(N,"instance"):(0,i.createMarkers)(N*k,"groupInstance"),W=(0,_.createEmptyOverpaint)(),X=(0,g.createEmptyTransparency)(),Y=(0,u.createEmptyEmissive)(),K=(0,p.createEmptySubstance)(),Q=(0,d.createEmptyClipping)(),J=(0,m.createEmptyWiggle)(),ae={drawCount:O.cylinderCount*4*3,vertexCount:O.cylinderCount*6,groupCount:k,instanceCount:N}
4121,te=(0,c.getMaxSize)(G)*q.sizeFactor,ne=f.Sphere3D.clone(O.boundingSphere),$=(0,h.calculateTransformBoundingSphere)(ne,F.aTransform.ref.value,N,0);return{dGeometryType:e.ValueCell.create("cylinders"),aMapping:O.mappingBuffer,aGroup:O.groupBuffer,aStart:O.startBuffer,aEnd:O.endBuffer,aScale:O.scaleBuffer,aCap:O.capBuffer,aColorMode:O.colorModeBuffer,elements:O.indexBuffer,boundingSphere:e.ValueCell.create($),invariantBoundingSphere:e.ValueCell.create(ne),uInvariantBoundingSphere:e.ValueCell.create(t.Vec4.ofSphere(ne)),...H,...G,...z,...W,...X,...Y,...K,...Q,...J,...F,padding:e.ValueCell.create(te),...y.BaseGeometry.createValues(q,ae),uSizeFactor:e.ValueCell.create(q.sizeFactor*q.sizeAspectRatio),uDoubleSided:e.ValueCell.create(q.doubleSided),dIgnoreLight:e.ValueCell.create(q.ignoreLight),dCelShaded:e.ValueCell.create(q.celShaded),dXrayShaded:e.ValueCell.create(q.xrayShaded==="inverted"?"inverted":q.xrayShaded===!0?"on":"off"),dTransparentBackfaces:e.ValueCell.create(q.transparentBackfaces),dSolidInterior:e.ValueCell.create(q.solidInterior),uBumpFrequency:e.ValueCell.create(q.bumpFrequency),uBumpAmplitude:e.ValueCell.create(q.bumpAmplitude),dDualColor:e.ValueCell.create(q.colorMode==="interpolate"),...(0,v.createInteriorValues)(q.interior),...(0,b.createAnimationValues)(q.animation)}}function R(O,F,L,U,q){const N=y.BaseGeometry.createSimple(L,U,q),k={...s.ParamDefinition.getDefaultValues(C.Params),...F};return V(O,N.transform,N.locationIterator,N.theme,k)}function E(O,F){y.BaseGeometry.updateValues(O,F),e.ValueCell.updateIfChanged(O.uSizeFactor,F.sizeFactor*F.sizeAspectRatio),e.ValueCell.updateIfChanged(O.uDoubleSided,F.doubleSided),e.ValueCell.updateIfChanged(O.dIgnoreLight,F.ignoreLight),e.ValueCell.updateIfChanged(O.dCelShaded,F.celShaded),e.ValueCell.updateIfChanged(O.dXrayShaded,F.xrayShaded==="inverted"?"inverted":F.xrayShaded===!0?"on":"off"),e.ValueCell.updateIfChanged(O.dTransparentBackfaces,F.transparentBackfaces),e.ValueCell.updateIfChanged(O.dSolidInterior,F.solidInterior),e.ValueCell.updateIfChanged(O.uBumpFrequency,F.bumpFrequency),e.ValueCell.updateIfChanged(O.uBumpAmplitude,F.bumpAmplitude),e.ValueCell.updateIfChanged(O.dDualColor,F.colorMode==="interpolate"),(0,v.updateInteriorValues)(O,F.interior),(0,b.updateAnimationValues)(O,F.animation)}function I(O,F){const L=f.Sphere3D.clone(F.boundingSphere),U=(0,h.calculateTransformBoundingSphere)(L,O.aTransform.ref.value,O.instanceCount.ref.value,0);f.Sphere3D.equals(U,O.boundingSphere.ref.value)||e.ValueCell.update(O.boundingSphere,U),f.Sphere3D.equals(L,O.invariantBoundingSphere.ref.value)||(e.ValueCell.update(O.invariantBoundingSphere,L),e.ValueCell.update(O.uInvariantBoundingSphere,t.Vec4.fromSphere(O.uInvariantBoundingSphere.ref.value,L)))}function B(O){const F=y.BaseGeometry.createRenderableState(O);return w(F,O),F}function w(O,F){y.BaseGeometry.updateRenderableState(O,F),O.opaque=O.opaque&&!F.xrayShaded,O.writeDepth=O.opaque}})(P||(P1.Cylinders=P={})),P1}var zj;function Ll(){if(zj)return s1;zj=1,Object.defineProperty(s1,"__esModule",{value:!0}),s1.Geometry=void 0;const e=Rt(),t=ic(),r=ya(),n=kn(),i=Hf(),c=ro(),o=Vt(),s=Fl(),h=Wf(),f=no(),y=nc();var _;return(function(g){function a(v){switch(v.kind){case"mesh":return v.triangleCount*3;case"points":return v.pointCount;case"spheres":return v.sphereCount*2*3;case"cylinders":return v.cylinderCount*4*3;case"text":return v.charCount*2*3;case"lines":return v.lineCount*2*3;case"direct-volume":return 36;case"image":return 6;case"texture-mesh":return v.vertexCount}}g.getDrawCount=a;function d(v){switch(v.kind){case"mesh":return v.vertexCount;case"points":return v.pointCount;case"spheres":return v.sphereCount*6;case"cylinders":return v.cylinderCount*6;case"text":return v.charCount*4;case"lines":return v.vertexCount;case"direct-volume":const[b,P,C]=v.gridDimension.ref.value;return b*P*C;case"image":return 4;case"texture-mesh":return v.vertexCount}}g.getVertexCount=d;function p(v){switch(v.kind){case"mesh":case"points":case"spheres":case"cylinders":case"text":case"lines":return a(v)===0?0:(0,o.arrayMax)(v.groupBuffer.ref.value)+1;case"direct-volume":return 1;case"image":return(0,y.arrayMaxPackedIntToRGB)(v.groupTexture.ref.value.array,4)+1;case"texture-mesh":return v.groupCount}}g.getGroupCount=p;function u(v){switch(v.kind){case"mesh":return e.Mesh.Utils;case"points":return t.Points.Utils;case"spheres":return c.Spheres.Utils;case"cylinders":return f.Cylinders.Utils;case"text":return r.Text.Utils;case"lines":return n.Lines.Utils;case"direct-volume":return i.DirectVolume.Utils;case"image":return h.Image.Utils;case"texture-mesh":return s.TextureMesh.Utils}}g.getUtils=u;function m(v,b){return b==="instance"&&v.nonInstanceable?"group":b}g.getGranularity=m})(_||(s1.Geometry=_={})),s1}var x3={},Hj;function _Q(){return Hj||(Hj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.ShapeGroupSizeThemeProvider=e.ShapeGroupSizeThemeParams=void 0,e.getShapeGroupSizeThemeParams=c,e.ShapeGroupSizeTheme=o;const t=pn(),r=Ne(),n=1,i="Assigns sizes as defined by the shape object.";e.ShapeGroupSizeThemeParams={};function c(s){return e.ShapeGroupSizeThemeParams}function o(s,h){return{factory:o,granularity:"groupInstance",size:f=>t.ShapeGroup.isLocation(f)?f.shape.getSize(f.group,f.instance):n,props:h,description:i}}e.ShapeGroupSizeThemeProvider={name:"shape-group",label:"Shape Group",category:"",factory:o,getParams:c,defaultValues:r.ParamDefinition.getDefaultValues(e.ShapeGroupSizeThemeParams),isApplicable:s=>!!s.shape}})(x3)),x3}var Du={},A3={},Wj;function Xne(){return Wj||(Wj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DirectVolumeSchema=void 0,e.DirectVolumeRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.DirectVolumeSchema={...n.BaseSchema,aPosition:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),uBboxMin:(0,n.UniformSpec)("v3"),uBboxMax:(0,n.UniformSpec)("v3"),uBboxSize:(0,n.UniformSpec)("v3"),uMaxSteps:(0,n.UniformSpec)("i"),uStepScale:(0,n.UniformSpec)("f"),uJumpLength:(0,n.UniformSpec)("f"),uTransform:(0,n.UniformSpec)("m4"),uGridDim:(0,n.UniformSpec)("v3"),tTransferTex:(0,n.TextureSpec)("image-uint8","alpha","ubyte","linear"),uTransferScale:(0,n.UniformSpec)("f","material"),dGridTexType:(0,n.DefineSpec)("string",["2d","3d"]),uGridTexDim:(0,n.UniformSpec)("v3"),tGridTex:(0,n.TextureSpec)("texture","rgba","ubyte","linear"),uGridStats:(0,n.UniformSpec)("v4"),uCellDim:(0,n.UniformSpec)("v3"),uCartnToUnit:(0,n.UniformSpec)("m4"),uUnitToCartn:(0,n.UniformSpec)("m4"),dPackedGroup:(0,n.DefineSpec)("boolean"),dAxisOrder:(0,n.DefineSpec)("string",["012","021","102","120","201","210"]),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),meta:(0,n.ValueSpec)("unknown")};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.DirectVolumeSchema};s.isWebGL2||(d.uMaxSteps=(0,n.DefineSpec)("number"));const p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.DirectVolumeShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(A3)),A3}var M3={},$j;function Kne(){return $j||($j=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MeshSchema=void 0,e.MeshRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.MeshSchema={...n.BaseSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aNormal:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),dVaryingGroup:(0,n.DefineSpec)("boolean"),dFlatShaded:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),meta:(0,n.ValueSpec)("unknown"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.MeshSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.MeshShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(M3)),M3}var D3={},Xj;function Yne(){return Xj||(Xj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointsSchema=void 0,e.PointsRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.PointsSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),dPointSizeAttenuation:(0,n.DefineSpec)("boolean"),dPointStyle:(0,n.DefineSpec)("str
4121ing",["square","circle","fuzzy"]),...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.PointsSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.PointsShaderCode,m=(0,r.createGraphicsRenderItem)(s,"points",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(D3)),D3}var I3={},Kj;function Qne(){return Kj||(Kj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LinesSchema=void 0,e.LinesRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=et(),c=Kt();e.LinesSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aMapping:(0,n.AttributeSpec)("float32",2,0),aStart:(0,n.AttributeSpec)("float32",3,0),aEnd:(0,n.AttributeSpec)("float32",3,0),elements:(0,n.ElementsSpec)("uint32"),dLineSizeAttenuation:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),stripCount:(0,n.ValueSpec)("number"),stripOffsets:(0,n.ValueSpec)("uint32"),...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.LinesSchema},p={...f,uObjectId:i.ValueCell.create(h),dLightCount:i.ValueCell.create(a.dLightCount),dColorMarker:i.ValueCell.create(a.dColorMarker)},u=c.LinesShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(I3)),I3}var w3={},Yj;function Zne(){return Yj||(Yj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpheresSchema=void 0,e.SpheresRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.SpheresSchema={...n.BaseSchema,...n.SizeSchema,uTexDim:(0,n.UniformSpec)("v2"),tPositionGroup:(0,n.TextureSpec)("image-float32","rgba","float","nearest"),padding:(0,n.ValueSpec)("number"),uDoubleSided:(0,n.UniformSpec)("b","material"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),dSolidInterior:(0,n.DefineSpec)("boolean"),dClipPrimitive:(0,n.DefineSpec)("boolean"),dApproximate:(0,n.DefineSpec)("boolean"),uAlphaThickness:(0,n.UniformSpec)("f"),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),lodLevels:(0,n.ValueSpec)("unknown"),centerBuffer:(0,n.ValueSpec)("float32"),groupBuffer:(0,n.ValueSpec)("float32"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.SpheresSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.SpheresShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(w3)),w3}var V3={},Qj;function Jne(){return Qj||(Qj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TextSchema=void 0,e.TextRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.TextSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aMapping:(0,n.AttributeSpec)("float32",2,0),aDepth:(0,n.AttributeSpec)("float32",1,0),elements:(0,n.ElementsSpec)("uint32"),aTexCoord:(0,n.AttributeSpec)("float32",2,0),tFont:(0,n.TextureSpec)("image-uint8","alpha","ubyte","linear"),padding:(0,n.ValueSpec)("number"),uBorderWidth:(0,n.UniformSpec)("f","material"),uBorderColor:(0,n.UniformSpec)("v3","material"),uOffsetX:(0,n.UniformSpec)("f","material"),uOffsetY:(0,n.UniformSpec)("f","material"),uOffsetZ:(0,n.UniformSpec)("f","material"),uBackgroundColor:(0,n.UniformSpec)("v3","material"),uBackgroundOpacity:(0,n.UniformSpec)("f","material")};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.TextSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.TextShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(V3)),V3}var E3={},Zj;function eie(){return Zj||(Zj=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.TextureMeshSchema=void 0,e.TextureMeshRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.TextureMeshSchema={...n.BaseSchema,uGeoTexDim:(0,n.UniformSpec)("v2","buffered"),tPosition:(0,n.TextureSpec)("texture","rgb","float","nearest"),tGroup:(0,n.TextureSpec)("texture","alpha","float","nearest"),tNormal:(0,n.TextureSpec)("texture","rgb","float","nearest"),dVaryingGroup:(0,n.DefineSpec)("boolean"),dFlatShaded:(0,n.DefineSpec)("boolean"),uDoubleSided:(0,n.UniformSpec)("b","material"),dFlipSided:(0,n.DefineSpec)("boolean"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),meta:(0,n.ValueSpec)("unknown"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.TextureMeshSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.MeshShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(E3)),E3}var B3={},Jj;function tie(){return Jj||(Jj=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImageSchema=void 0,e.ImageRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=Kr();e.ImageSchema={...n.BaseSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aPosition:(0,n.AttributeSpec)("float32",3,0),aUv:(0,n.AttributeSpec)("float32",2,0),elements:(0,n.ElementsSpec)("uint32"),uImageTexDim:(0,n.UniformSpec)("v2"),tImageTex:(0,n.TextureSpec)("image-uint8","rgba","ubyte","nearest"),tGroupTex:(0,n.TextureSpec)("image-uint8","rgba","ubyte","nearest"),tValueTex:(0,n.TextureSpec)("image-float32","alpha","float","linear"),uTrimType:(0,n.UniformSpec)("i"),uTrimCenter:(0,n.UniformSpec)("v3"),uTrimRotation:(0,n.UniformSpec)("q"),uTrimScale:(0,n.UniformSpec)("v3"),uTrimTransform:(0,n.UniformSpec)("m4"),uIsoLevel:(0,n.UniformSpec)("f"),dInterpolation:(0,n.DefineSpec)("string",["nearest","catmulrom","mitchell","bspline"])};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.ImageSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.ImageShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(B3)),B3}var R3={},e5;function rie(){return e5||(e5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CylindersSchema=void 0,e.CylindersRenderable=o;const t=Jt(),r=Zt(),n=Yt(),i=Kt(),c=et();e.CylindersSchema={...n.BaseSchema,...n.SizeSchema,aGroup:(0,n.AttributeSpec)("float32",1,0),aStart:(0,n.AttributeSpec)("float32",3,0),aEnd:(0,n.AttributeSpec)("float32",3,0),aMapping:(0,n.AttributeSpec)("float32",3,0),aScale:(0,n.AttributeSpec)("float32",1,0),aCap:(0,n.AttributeSpec)("float32",1,0),aColorMode:(0,n.AttributeSpec)("float32",1,0),elements:(0,n.ElementsSpec)("uint32"),padding:(0,n.ValueSpec)("number"),uDoubleSided:(0,n.UniformSpec)("b","material"),dIgnoreLight:(0,n.DefineSpec)("boolean"),dCelShaded:(0,n.DefineSpec)("boolean"),dXrayShaded:(0,n.DefineSpec)("string",["off","on","inverted"]),dTransparentBackfaces:(0,n.DefineSpec)("string",["off","on","opaque"]),dSolidInterior:(0,n.DefineSpec)("boolean"),uBumpFrequency:(0,n.UniformSpec)("f","material"),uBumpAmplitude:(0,n.UniformSpec)("f","material"),dDualColor:(0,n.DefineSpec)("boolean"),...n.InteriorSchema,...n.AnimationSchema};function o(s,h,f,y,_,g,a){const d={...n.GlobalUniformSchema,...n.GlobalTextureSchema,...n.GlobalDefineSchema,...n.InternalSchema,...e.CylindersSchema},p={...f,uObjectId:c.ValueCell.create(h),dLightCount:c.ValueCell.create(a.dLightCount),dColorMarker:c.ValueCell.create(a.dColorMarker)},u=i.CylindersShaderCode,m=(0,r.createGraphicsRenderItem)(s,"triangles",u,d,p,_,g);return(0,t.createRenderable)(m,p,y)}})(R3)),R3}var t5;function ds(){if(t5)return Du;
4121t5=1,Object.defineProperty(Du,"__esModule",{value:!0}),Du.getNextMaterialId=void 0,Du.createRenderObject=g,Du.createRenderable=a;const e=Yn(),t=Xne(),r=Kne(),n=Yne(),i=Qne(),c=Zne(),o=Jne(),s=eie(),h=tie(),f=rie(),y=Gt(),_=(0,e.idFactory)(0,2147483647);Du.getNextMaterialId=(0,e.idFactory)(0,2147483647);function g(d,p,u,m){return{id:_(),type:d,values:p,state:u,materialId:m}}function a(d,p,u,m){switch(p.type){case"mesh":return(0,r.MeshRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"points":return(0,n.PointsRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"spheres":return(0,c.SpheresRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"cylinders":return(0,f.CylindersRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"text":return(0,o.TextRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"lines":return(0,i.LinesRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"direct-volume":return(0,t.DirectVolumeRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"image":return(0,h.ImageRenderable)(d,p.id,p.values,p.state,p.materialId,u,m);case"texture-mesh":return(0,s.TextureMeshRenderable)(d,p.id,p.values,p.state,p.materialId,u,m)}(0,y.assertUnreachable)(p.type)}return Du}var r5;function SQ(){if(r5)return yu;r5=1,Object.defineProperty(yu,"__esModule",{value:!0}),yu.ShapeGroup=yu.Shape=void 0;const e=et(),t=at(),r=Ll(),n=Ge(),i=rt(),c=rS(),o=_Q(),s=CQ(),h=kl(),f=ds(),y=zt();var _;(function(a){function d(S,T,A,x,M,D,V,R){return{id:e.UUID.create22(),name:S,sourceData:T,geometry:A,transforms:V||[n.Mat4.identity()],get groupCount(){return R??r.Geometry.getGroupCount(A)},getColor:x,getSize:M,getLabel:D}}a.create=d;function p(S){return{color:(0,s.ShapeGroupColorTheme)({shape:S},{}),size:(0,o.ShapeGroupSizeTheme)({shape:S},{})}}a.getTheme=p;function u(S){const T=S.transforms.length,A=g.Location(S),x=(M,D)=>(A.group=M,A.instance=D,A);return(0,y.LocationIterator)(S.groupCount,T,1,x)}a.groupIterator=u;function m(S,T,A,x,M){const D=M&&M.aTransform.ref.value.length>=S.length*16?M.aTransform.ref.value:new Float32Array(S.length*16);for(let V=0,R=S.length;V<R;++V)n.Mat4.toArray(S[V],D,V*16);return(0,h.createTransform)(D,S.length,T,A,x,M)}a.createTransform=m;function v(S,T){const A=p(S),x=r.Geometry.getUtils(S.geometry),M=(0,f.getNextMaterialId)(),D=u(S),V=m(S.transforms,S.geometry.boundingSphere,T.cellSize,T.batchSize),R=x.createValues(S.geometry,V,D,A,T),E=x.createRenderableState(T);return(0,f.createRenderObject)(S.geometry.kind,R,E,M)}a.createRenderObject=v;function b(S){return{kind:"shape-loci",shape:S}}a.Loci=b;function P(S){return!!S&&S.kind==="shape-loci"}a.isLoci=P;function C(S,T){return S.shape===T.shape}a.areLociEqual=C;function l(S){return S.shape.groupCount===0}a.isLociEmpty=l})(_||(yu.Shape=_={}));var g;return(function(a){function d(x,M=0,D=0){return{kind:"group-location",shape:x,group:M,instance:D}}a.Location=d;function p(x){return!!x&&x.kind==="group-location"}a.isLocation=p;function u(x,M){return{kind:"group-loci",shape:x,groups:M}}a.Loci=u;function m(x){return!!x&&x.kind==="group-loci"}a.isLoci=m;function v(x,M){if(x.shape!==M.shape||x.groups.length!==M.groups.length)return!1;for(let D=0,V=x.groups.length;D<V;++D){const{ids:R,instance:E}=x.groups[D],{ids:I,instance:B}=M.groups[D];if(E!==B||!t.OrderedSet.areEqual(R,I))return!1}return!0}a.areLociEqual=v;function b(x){return P(x)===0}a.isLociEmpty=b;function P(x){let M=0;for(const D of x.groups)M+=t.OrderedSet.size(D.ids);return M}a.size=P;const C=new c.CentroidHelper,l=n.Vec3.zero();function S(x,M,D,V){const{indices:R,offsets:E}=M;for(const{ids:I,instance:B}of x)t.OrderedSet.forEach(I,w=>{for(let O=E[w],F=E[w+1];O<F;++O)n.Vec3.fromArray(l,D,R[O]*3),n.Vec3.transformMat4(l,l,V[B]),C.includeStep(l)})}function T(x,M,D,V){const{indices:R,offsets:E}=M;for(const{ids:I,instance:B}of x)t.OrderedSet.forEach(I,w=>{for(let O=E[w],F=E[w+1];O<F;++O)n.Vec3.fromArray(l,D,R[O]*3),n.Vec3.transformMat4(l,l,V[B]),C.radiusStep(l)})}function A(x,M){M||(M=(0,i.Sphere3D)()),C.reset();let D=0;const{geometry:V,transforms:R}=x.shape;if(V.kind==="mesh"||V.kind==="points"){const E=V.kind==="mesh"?V.vertexBuffer.ref.value:V.centerBuffer.ref.value;S(x.groups,V.groupMapping,E,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R)}else if(V.kind==="lines"){const E=V.startBuffer.ref.value,I=V.endBuffer.ref.value;S(x.groups,V.groupMapping,E,R),S(x.groups,V.groupMapping,I,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R),T(x.groups,V.groupMapping,I,R)}else if(V.kind==="spheres"||V.kind==="text"){const E=V.centerBuffer.ref.value;S(x.groups,V.groupMapping,E,R),C.finishedIncludeStep(),T(x.groups,V.groupMapping,E,R);for(const{ids:I,instance:B}of x.groups)t.OrderedSet.forEach(I,w=>{const O=x.shape.getSize(w,B);D<O&&(D=O)})}else return i.Sphere3D.copy(M,V.boundingSphere);return n.Vec3.copy(M.center,C.center),M.radius=Math.sqrt(C.radiusSq),i.Sphere3D.expand(M,M,D),M}a.getBoundingSphere=A})(g||(yu.ShapeGroup=g={})),yu}var n5;function pn(){return n5||(n5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),At.__exportStar(SQ(),e)})(h3)),h3}var i5;function CQ(){return i5||(i5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ShapeGroupColorThemeProvider=e.ShapeGroupColorThemeParams=void 0,e.getShapeGroupColorThemeParams=s,e.ShapeGroupColorTheme=h;const t=vt(),r=pn(),n=Ne(),i=Ut(),c=(0,t.Color)(13421772),o="Assigns colors as defined by the shape object.";e.ShapeGroupColorThemeParams={};function s(f){return e.ShapeGroupColorThemeParams}function h(f,y){return{factory:h,granularity:"groupInstance",color:_=>r.ShapeGroup.isLocation(_)?_.shape.getColor(_.group,_.instance):c,props:y,description:o}}e.ShapeGroupColorThemeProvider={name:"shape-group",label:"Shape Group",category:i.ColorThemeCategory.Misc,factory:h,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.ShapeGroupColorThemeParams),isApplicable:f=>!!f.shape}})(p3)),p3}var O3={},a5;function PQ(){return a5||(a5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UncertaintyColorThemeProvider=e.UncertaintyColorThemeParams=void 0,e.getUncertaintyColorThemeParams=s,e.getUncertainty=h,e.UncertaintyColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=(0,t.Color)(16777113),o="Assigns a color based on the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.";e.UncertaintyColorThemeParams={domain:n.ParamDefinition.Interval([0,100]),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})};function s(y){return e.UncertaintyColorThemeParams}function h(y,_){return r.Unit.isAtomic(y)?y.model.atomicConformation.B_iso_or_equiv.value(_):r.Unit.isSpheres(y)?y.model.coarseConformation.spheres.rmsf[_]:0}function f(y,_){let g;_.list.kind==="set"?g=t.ColorScale.createDiscrete({reverse:!0,domain:_.domain,listOrName:_.list.colors}):g=t.ColorScale.create({reverse:!0,domain:_.domain,listOrName:_.list.colors});function a(d){return r.StructureElement.Location.is(d)?g.color(h(d.unit,d.element)):r.Bond.isLocation(d)?g.color(h(d.aUnit,d.aUnit.elements[d.aIndex])):c}return{factory:f,granularity:"group",preferSmoothing:!0,color:a,props:_,description:o,legend:g?g.legend:void 0}}e.UncertaintyColorThemeProvider={name:"uncertainty",label:"Uncertainty/Disorder",category:i.ColorThemeCategory.Atom,factory:f,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.UncertaintyColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.models.some(_=>_.atomicConformation.B_iso_or_equiv.isDefined||_.coarseHierarchy.isDefined)}})(O3)),O3}var k3={},o5;function nie(){return o5||(o5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.IllustrativeColorThemeProvider=e.IllustrativeColorThemeParams=void 0,e.getIllustrativeColorThemeParams=u,e.IllustrativeColorTheme=v;const t=vt(),r=Ke(),n=Ne(),i=Uf(),c=wS(),o=Gt(),s=ES(),h=s2(),f=BS(),y=RS(),_=OS(),g=Ut(),a=o2(),d=(0,t.Color)(15658734),p="Assigns an illustrative color that gives every chain a color based on the chosen style but with lighter carbons (inspired by David Goodsell's Molecule of the Month style).";e.IllustrativeColorThemeParams={style:n.ParamDefinition.MappedStatic("entity-id",{uniform:n.ParamDefinition.Group(c.UniformColorThemeParams),"chain-id":n.ParamDefinition.Group(i.ChainIdColorThemeParams),"entity-id":n.ParamDefinition.Group(s.EntityIdColorThemeParams),"entity-source":n.ParamDefinition.Group(f.EntitySourceColorThemeParams),"molecule-type":n.ParamDefinition.Group(h.MoleculeTypeColorThemeParams),"model-index":n.ParamDefinition.Group(y.ModelIndexColorThemeParams),"structure-index":n.ParamDefinition.Group(_.StructureIndexColorThemeParams),"trajectory-index":n.ParamDefinition.Group(a.TrajectoryIndexColorThemeParams)}),carbonLightness:n.ParamDefinition.Numeric(.8,{min:-6,max:6,step:.1})};function u(b){return n.ParamDefinition.clone(e.IllustrativeColorThemeParams)}function m(b,P){switch(P.name){case"uniform":return(0,c.UniformColorTheme)(b,P.params);case"chain-id":return(0,i.ChainIdColorTheme)(b,P.params);case"entity-id":return(0,s.EntityIdColorTheme)(b,P.params);case"entity-source":return(0,f.EntitySourceColorTheme)(b,P.params);case"molecule-type":return(0,h.MoleculeTypeColorTheme)(b,P.params);case"model-index":return(0,y.ModelIndexColorTheme)(b,P.params);case"structure-index":return(0,_.StructureIndexColorTheme)(b,P.params);case"trajectory-index":return(0,a.TrajectoryIndexColorTheme)(b,P.params);default:(0,o.assertUnreachable)(P)}}function v(b,P){const{color:C,legend:l,contextHash:S}=m(b,P.style);function T(x,M){const D=C(x,!1);return M==="C"?t.Color.lighten(D,P.carbonLightness):D}function A(x){if(r.StructureElement.Location.is(x)&&r.Unit.isAtomic(x.unit)){const M=x.unit.model.atomicHierarchy.atoms.type_symbol.value(x.element);return T(x,M)}else if(r.Bond.isLocation(x)&&r.Unit.isAtomic(x.aUnit)){const M=x.aUnit.elements[x.aIndex],D=x.aUnit.model.atomicHierarchy.atoms.type_symbol.value(M);return T(x,D)}return d}return{factory:v,granularity:"group",preferSmoothing:!0,color:A,props:P,contextHash:S,description:p,legend:l}}e.IllustrativeColorThemeProvider={name:"illustrative",label:"Illustrative",category:g.ColorThemeCategory.Misc,factory:v,getParams:u,defaultValues:n.ParamDefinition.getDefaultValues(e.IllustrativeColorThemeParams),isApplicable:b=>!!b.structure}}
4121)(k3)),k3}var F3={},s5;function TQ(){return s5||(s5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HydrophobicityColorThemeProvider=e.HydrophobicityColorThemeParams=void 0,e.getHydrophobicityColorThemeParams=s,e.hydrophobicity=f,e.HydrophobicityColorTheme=g;const t=vt(),r=Ke(),n=Ne(),i=dt(),c=Ut(),o='Assigns a color to every amino acid according to the "Experimentally determined hydrophobicity scale for proteins at membrane interfaces" by Wimely and White (doi:10.1038/nsb1096-842).';e.HydrophobicityColorThemeParams={list:n.ParamDefinition.ColorList("red-yellow-green",{presetKind:"scale"}),scale:n.ParamDefinition.Select("DGwif",[["DGwif","DG water-membrane"],["DGwoct","DG water-octanol"],["Oct-IF","DG difference"]])};function s(a){return e.HydrophobicityColorThemeParams}const h={DGwif:0,DGwoct:1,"Oct-IF":2};function f(a,d){const p=i.ResidueHydrophobicity[a];return p===void 0?0:p[d]}function y(a,d){return a.model.atomicHierarchy.atoms.label_comp_id.value(d)}function _(a,d){const p=a.coarseElements.seq_id_begin.value(d),u=a.coarseElements.seq_id_end.value(d);if(p===u){const m=a.coarseElements.entityKey[d];return a.model.sequence.byEntityKey[m].sequence.compId.value(p-1)}}function g(a,d){const p=h[d.scale];let u=1/0,m=-1/0;for(const P in i.ResidueHydrophobicity){const C=i.ResidueHydrophobicity[P][p];u=Math.min(u,C),m=Math.max(m,C)}const v=t.ColorScale.create({listOrName:d.list.colors,domain:[m,u],minLabel:"Hydrophilic",maxLabel:"Hydrophobic"});function b(P){let C;return r.StructureElement.Location.is(P)?r.Unit.isAtomic(P.unit)?C=y(P.unit,P.element):C=_(P.unit,P.element):r.Bond.isLocation(P)&&(r.Unit.isAtomic(P.aUnit)?C=y(P.aUnit,P.aUnit.elements[P.aIndex]):C=_(P.aUnit,P.aUnit.elements[P.aIndex])),v.color(C?f(C,p):0)}return{factory:g,granularity:"group",preferSmoothing:!0,color:b,props:d,description:o,legend:v?v.legend:void 0}}e.HydrophobicityColorThemeProvider={name:"hydrophobicity",label:"Hydrophobicity",category:c.ColorThemeCategory.Residue,factory:g,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.HydrophobicityColorThemeParams),isApplicable:a=>!!a.structure}})(F3)),F3}var L3={},c5;function xQ(){return c5||(c5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OccupancyColorThemeProvider=e.OccupancyColorThemeParams=void 0,e.getOccupancyColorThemeParams=s,e.getOccupancy=h,e.OccupancyColorTheme=f;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=(0,t.Color)(13421772),o="Assigns a color based on the occupancy of an atom.";e.OccupancyColorThemeParams={domain:n.ParamDefinition.Interval([0,1]),list:n.ParamDefinition.ColorList("purples",{presetKind:"scale"})};function s(y){return e.OccupancyColorThemeParams}function h(y,_){return r.Unit.isAtomic(y)?y.model.atomicConformation.occupancy.value(_):0}function f(y,_){const g=t.ColorScale.create({reverse:!1,domain:_.domain,listOrName:_.list.colors});function a(d){return r.StructureElement.Location.is(d)?g.color(h(d.unit,d.element)):r.Bond.isLocation(d)?g.color(h(d.aUnit,d.aUnit.elements[d.aIndex])):c}return{factory:f,granularity:"group",preferSmoothing:!0,color:a,props:_,description:o,legend:g?g.legend:void 0}}e.OccupancyColorThemeProvider={name:"occupancy",label:"Occupancy",category:i.ColorThemeCategory.Atom,factory:f,getParams:s,defaultValues:n.ParamDefinition.getDefaultValues(e.OccupancyColorThemeParams),isApplicable:y=>!!y.structure&&y.structure.models.some(_=>_.atomicConformation.occupancy.isDefined)}})(L3)),L3}var N3={},u5;function iie(){return u5||(u5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OperatorHklColorThemeProvider=e.OperatorHklColorThemeParams=void 0,e.getOperatorHklColorThemeParams=g,e.OperatorHklColorTheme=v;const t=vt(),r=Ke(),n=Ne(),i=On(),c=Ge(),o=Df(),s=pa(),h=Ut(),f="dark-2",y=(0,t.Color)(13421772),_="Assigns a color based on the operator HKL value of a transformed chain.";
4121e.OperatorHklColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:f})};function g(b){const P=n.ParamDefinition.clone(e.OperatorHklColorThemeParams);return b.structure&&m(b.structure.root).map.size>s.ColorLists[f].list.length&&(P.palette.defaultValue.name="colors",P.palette.defaultValue.params={...P.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,s.getColorListFromName)(f).list}}),P}const a=1e4;function d(b){return b.map(P=>`${P+a}`.padStart(5,"0")).join("")}function p(b){const P=(0,o.integerDigitCount)(a,0),C=parseInt(b.substr(0,P)),l=parseInt(b.substr(P,P)),S=parseInt(b.substr(P+P,P));return c.Vec3.create(C-a,l-a,S-a)}function u(b){return b.map(P=>P+5).join("")}function m(b){const P=new Map,C=new Set;for(let A=0,x=b.units.length;A<x;++A){const M=d(b.units[A].conformation.operator.hkl);C.add(M)}const l=Array.from(C.values()).sort();l.forEach(A=>P.set(A,P.size));const S=p(l[0]),T=p(l[l.length-1]);return{min:S,max:T,map:P}}function v(b,P){let C,l;if(b.structure){const{min:S,max:T,map:A}=m(b.structure.root),x=[];A.forEach((V,R)=>{const E=V%A.size,I=u(p(R));x[E]===void 0?x[E]=I:x[E]+=`, ${I}`});const M={minLabel:u(S),maxLabel:u(T),valueLabel:V=>x[V]},D=(0,i.getPalette)(A.size,P,M);l=D.legend,C=V=>{let R;if(r.StructureElement.Location.is(V)){const E=d(V.unit.conformation.operator.hkl);R=A.get(E)}else if(r.Bond.isLocation(V)){const E=d(V.aUnit.conformation.operator.hkl);R=A.get(E)}return R===void 0?y:D.color(R)}}else C=()=>y;return{factory:v,granularity:"instance",color:C,props:P,description:_,legend:l}}e.OperatorHklColorThemeProvider={name:"operator-hkl",label:"Operator HKL",category:h.ColorThemeCategory.Symmetry,factory:v,getParams:g,defaultValues:n.ParamDefinition.getDefaultValues(e.OperatorHklColorThemeParams),isApplicable:b=>!!b.structure}})(N3)),N3}var q3={},T1={},l5;function c2(){if(l5)return T1;l5=1,Object.defineProperty(T1,"__esModule",{value:!0}),T1.AtomPartialCharge=void 0;const e=as();var t;return(function(r){r.Descriptor={name:"atom_partial_charge"},r.Provider=e.FormatPropertyProvider.create(r.Descriptor)})(t||(T1.AtomPartialCharge=t={})),T1}var d5;function AQ(){return d5||(d5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PartialChargeColorThemeProvider=e.PartialChargeColorThemeParams=void 0,e.getPartialChargeColorThemeParams=h,e.PartialChargeColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=c2(),c=Ut(),o=(0,t.Color)(16777113),s="Assigns a color based on the partial charge of an atom.";e.PartialChargeColorThemeParams={domain:n.ParamDefinition.Interval([-1,1]),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})};function h(_){return e.PartialChargeColorThemeParams}function f(_,g){var a;return(a=i.AtomPartialCharge.Provider.get(_.model))===null||a===void 0?void 0:a.data.value(g)}function y(_,g){const a=t.ColorScale.create({domain:g.domain,listOrName:g.list.colors});function d(p){if(r.StructureElement.Location.is(p)){const u=f(p.unit,p.element);return u!==void 0?a.color(u):o}else if(r.Bond.isLocation(p)){const u=f(p.aUnit,p.aUnit.elements[p.aIndex]);return u!==void 0?a.color(u):o}return o}return{factory:y,granularity:"group",preferSmoothing:!0,color:d,props:g,description:s,legend:a?a.legend:void 0}}e.PartialChargeColorThemeProvider={name:"partial-charge",label:"Partial Charge",category:c.ColorThemeCategory.Atom,factory:y,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PartialChargeColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>i.AtomPartialCharge.Provider.get(g)!==void 0)}})(q3)),q3}var U3={},f5;function aie(){return f5||(f5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AtomIdColorThemeProvider=e.AtomIdColorThemeParams=void 0,e.getAtomIdColorThemeParams=f,e.AtomIdColorTheme=_;const t=Ke(),r=vt(),n=Ne(),i=On(),c=Ut(),o="many-distinct",s=(0,r.Color)(16448250),h="Gives every atom a color based on its `label_atom_id` value.";
4121e.AtomIdColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:o})};function f(g){return n.ParamDefinition.clone(e.AtomIdColorThemeParams)}function y(g){const a=new Map;for(const d of g.models){const{label_atom_id:p}=d.atomicHierarchy.atoms;for(let u=0,m=p.rowCount;u<m;++u){const v=p.value(u);a.has(v)||a.set(v,a.size)}}return a}function _(g,a){let d,p;if(g.structure){const u=t.StructureElement.Location.create(g.structure.root),m=y(g.structure.root),v=Array.from(m.keys()),b=C=>v[C],P=(0,i.getPalette)(m.size,a,{valueLabel:b});p=P.legend,d=C=>{let l;if(t.StructureElement.Location.is(C)){const S=t.StructureProperties.atom.label_atom_id(C);l=m.get(S)}else if(t.Bond.isLocation(C)){u.unit=C.aUnit,u.element=C.aUnit.elements[C.aIndex];const S=t.StructureProperties.atom.label_atom_id(u);l=m.get(S)}return l===void 0?s:P.color(l)}}else d=()=>s;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,description:h,legend:p}}e.AtomIdColorThemeProvider={name:"atom-id",label:"Atom Id",category:c.ColorThemeCategory.Atom,factory:_,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.AtomIdColorThemeParams),isApplicable:g=>!!g.structure}})(U3)),U3}var j3={},m5;function oie(){return m5||(m5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeValueColorThemeProvider=e.VolumeValueColorThemeParams=void 0,e.getVolumeValueColorThemeParams=_,e.VolumeValueColorTheme=g;const t=ms(),r=Ne(),n=Vr(),i=oc(),c=Ut(),o=ir(),s=wn(),h=zf(),f=zt(),y="Assign color based on the given value of a volume cell.";e.VolumeValueColorThemeParams={colorList:r.ParamDefinition.ColorList({kind:"interpolate",colors:[[n.ColorNames.white,0],[n.ColorNames.red,.25],[n.ColorNames.white,.5],[n.ColorNames.blue,.75],[n.ColorNames.white,1]]},{offsets:!0,isEssential:!0}),domain:r.ParamDefinition.MappedStatic("auto",{custom:r.ParamDefinition.Interval([-1,1],{step:.001}),auto:r.ParamDefinition.Group({symmetric:r.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),isRelative:r.ParamDefinition.Boolean(!1,{description:"If true the value is treated as relative to the volume mean and sigma."}),defaultColor:r.ParamDefinition.Color((0,s.Color)(13421772))};function _(a){return e.VolumeValueColorThemeParams}function g(a,d){var p;if(a.volume){const{min:u,max:m,mean:v,sigma:b}=a.volume.grid.stats,P=d.domain.name==="custom"?d.domain.params:[u,m],{colorList:C,defaultColor:l}=d;if(d.domain.name==="auto"&&d.isRelative&&(P[0]=(P[0]-v)/b,P[1]=(P[1]-v)/b),d.domain.name==="auto"&&d.domain.params.symmetric){const S=Math.max(Math.abs(P[0]),Math.abs(P[1]));P[0]=-S,P[1]=S}if(!((p=a.locationKinds)===null||p===void 0)&&p.includes("direct-location")){const S=[(0,o.normalize)(P[0],u,m),(0,o.normalize)(P[1],u,m)],T=t.ColorTheme.Palette(C.colors,C.kind,S,l);return{factory:g,granularity:"direct",props:d,description:y,palette:T}}else{const S=h.Grid.makeGetTrilinearlyInterpolated(a.volume.grid,"none"),T=x=>{if(!(0,f.isPositionLocation)(x))return d.defaultColor;const M=S(x.position);return Number.isNaN(M)?d.defaultColor:(0,o.clamp)((M-P[0])/(P[1]-P[0]),0,1)*t.ColorTheme.PaletteScale},A=t.ColorTheme.Palette(C.colors,C.kind,void 0,l);return{factory:g,granularity:"vertex",preferSmoothing:!0,color:T,palette:A,props:d,description:y}}}else return{factory:g,granularity:"uniform",color:()=>d.defaultColor,props:d,description:y}}e.VolumeValueColorThemeProvider={name:"volume-value",label:"Volume Value",category:c.ColorThemeCategory.Misc,factory:g,getParams:_,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeValueColorThemeParams),isApplicable:a=>!!a.volume&&!i.Volume.Segmentation.get(a.volume)}})(j3)),j3}var G3={},p5;function sie(){return p5||(p5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeSegmentColorThemeProvider=e.VolumeSegmentColorThemeParams=void 0,e.getVolumeSegmentColorThemeParams=h,e.VolumeSegmentColorTheme=f;const t=vt(),r=Ne(),n=On(),i=oc(),c=Ut(),o=(0,t.Color)(13421772),s="Gives every volume segment a unique color.";
4121e.VolumeSegmentColorThemeParams={...(0,n.getPaletteParams)({type:"colors",colorList:"many-distinct"})};function h(y){return r.ParamDefinition.clone(e.VolumeSegmentColorThemeParams)}function f(y,_){let g,a;const d=y.volume&&i.Volume.Segmentation.get(y.volume);if(d){const p=d.segments.size,u=Array.from(d.segments.keys()),m=(0,n.getPalette)(p,_);a=m.legend,g=v=>i.Volume.Segment.isLocation(v)?m.color(u.indexOf(v.segment)):o}else g=()=>o;return{factory:f,granularity:"instance",color:g,props:_,description:s,legend:a}}e.VolumeSegmentColorThemeProvider={name:"volume-segment",label:"Volume Segment",category:c.ColorThemeCategory.Misc,factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeSegmentColorThemeParams),isApplicable:y=>!!y.volume&&!!i.Volume.Segmentation.get(y.volume)}})(G3)),G3}var z3={},x1={},H3={},A1={},M1={},D1={},I1={},h5;function MQ(){if(h5)return I1;h5=1,Object.defineProperty(I1,"__esModule",{value:!0}),I1.StateAction=void 0;const e=et(),t=Ne();var r;return(function(n){function i(s){const h={create(f){return{action:h,params:f}},id:e.UUID.create22(),definition:s,createDefaultParams(f,y){return s.params?t.ParamDefinition.getDefaultValues(s.params(f,y)):{}}};return h}n.create=i;function c(s){const h=s.definition;return i({from:h.from,display:h.display,params:h.params,isApplicable:s.definition.isApplicable?(f,y,_)=>s.definition.isApplicable(f,_):void 0,run({cell:f,state:y,params:_}){const g=y.build().to(f.transform.ref).apply(s,_);return y.updateTree(g)}})}n.fromTransformer=c;let o;(function(s){function h(f){return y=>i({from:f.from instanceof Array?f.from:f.from?[f.from]:[],display:typeof f.display=="string"?{name:f.display}:f.display?f.display:{name:"Unnamed State Action"},params:typeof f.params=="object"?()=>f.params:f.params?f.params:void 0,isApplicable:f.isApplicable,...typeof y=="function"?{run:y}:y})}s.build=f=>h(f)})(o=n.Builder||(n.Builder={})),n.build=o.build})(r||(I1.StateAction=r={})),I1}var g5;function u2(){if(g5)return D1;g5=1,Object.defineProperty(D1,"__esModule",{value:!0}),D1.StateTransformer=void 0;const e=sc(),t=Ne(),r=MQ(),n=ui(),i=Ct();var c;return(function(o){function s(C,l,S){return C.definition.params?C.definition.params(l,S):{}}o.getParamDefinition=s;function h(C){return!!C&&typeof C.toAction=="function"&&typeof C.apply=="function"}o.is=h;let f;(function(C){C[C.Unchanged=0]="Unchanged",C[C.Updated=1]="Updated",C[C.Recreate=2]="Recreate",C[C.Null=3]="Null"})(f=o.UpdateResult||(o.UpdateResult={}));const y=new Map,_=new Map;function g(C){for(const l of C.definition.from)if(_.has(l.type)){const S=_.get(l.type);for(let T=0;T<S.length;T++)if(S[T].id===C.id){S[T]=C;return}S.push(C)}else _.set(l.type,[C])}function a(){return Array.from(y.values())}o.getAll=a;function d(C){const l=y.get(C);if(!l)throw new Error(`A transformer with signature '${C}' is not registered.`);return l}o.get=d;function p(C){return _.get(C)||[]}o.fromType=p;function u(C,l){const{name:S}=l,T=`${C}.${S}`;if(y.has(T)){if(y.get(T).definition===l)return y.get(T);i.isProductionMode||console.warn(`A transform with id '${S}' is already registered. Please pick a unique identifier for your transforms and/or register them only once. This is to ensure that transforms can be serialized and replayed.`)}const A={apply(x,M,D){return e.StateTransform.create(x,A,M,D)},toAction(){return r.StateAction.fromTransformer(A)},namespace:C,id:T,definition:l,createDefaultParams(x,M){return l.params?t.ParamDefinition.getDefaultValues(l.params(x,M)):{}}};return y.set(T,A),g(A),A}o.create=u;function m(C){return l=>u(C,l)}o.factory=m;function v(C){return b.build(C)}o.builderFactory=v;let b;(function(C){function l(T,A){return x=>u(T,{name:A.name,from:A.from instanceof Array?A.from:[A.from],to:A.to instanceof Array?A.to:[A.to],display:typeof A.display=="string"?{name:A.display}:A.display?A.display:{name:(0,n.capitalize)(A.name.replace(/[-]/g," "))},params:typeof A.params=="object"?()=>A.params:A.params?A.params:void 0,isDecorator:A.isDecorator,...x})}function S(T){return A=>l(T,A)}C.build=S})(b=o.Builder||(o.Builder={}));function P(C){return b.build(C)}o.build=P,o.ROOT=u("build-in",{name:"root",from:[],to:[],display:{name:"Root",description:"For internal use."},apply(){throw new Error("should never be applied")},update(){return f.Unchanged}})})(c||(D1.StateTransformer=c={})),D1}var y5;function sc(){if(y5)return M1;y5=1,Object.defineProperty(M1,"__esModule",{value:!0}),M1.StateTransform=void 0;const e=u2(),t=et(),r=Dn(),n=Ne(),i=Vt();var c;return(function(o){o.RootRef="-=root=-";function s(M,D){return D?typeof D.isCollapsed<"u"&&M.isCollapsed!==D.isCollapsed||t
4121ypeof D.isHidden<"u"&&M.isHidden!==D.isHidden||typeof D.isGhost<"u"&&M.isGhost!==D.isGhost||typeof D.isLocked<"u"&&M.isLocked!==D.isLocked:!1}o.isStateChange=s;function h(M,D){if(!D)return!1;let V=!1;for(const R of Object.keys(D)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,M[R]=E)}return V}o.assignState=h;function f(M,D){if(!D)return!1;let V=!1;for(const R of Object.keys(D)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,E!==void 0?M[R]=E:delete M[R])}for(const R of Object.keys(M)){const E=D[R],I=M[R];!!E!=!!I&&(V=!0,E!==void 0?M[R]=E:delete M[R])}return V}o.syncState=f;function y(M,D,V,R){const E=R&&R.ref?R.ref:t.UUID.create22();let I;return R&&R.tags&&(I=typeof R.tags=="string"?[R.tags]:R.tags,I.length===0?I=void 0:I.sort()),{parent:M,transformer:D,state:R?.state||{},tags:I,ref:E,dependsOn:R&&R.dependsOn,params:V,version:t.UUID.create22()}}o.create=y;function _(M,D){return{...M,params:D,version:t.UUID.create22()}}o.withParams=_;function g(M,D){return D?{...M,state:{...M.state,...D}}:M}o.withState=g;function a(M,D){let V;return D&&(V=typeof D=="str
4121ing"?[D]:D,V.length===0?V=void 0:V.sort()),{...M,tags:V,version:t.UUID.create22()}}o.withTags=a;function d(M,D){let V;return D&&(V=typeof D=="string"?[D]:D,V.length===0?V=void 0:V.sort()),{...M,dependsOn:V,version:t.UUID.create22()}}o.withDependsOn=d;function p(M,D){return{...M,parent:D,version:t.UUID.create22()}}o.withParent=p;function u(M){return y(o.RootRef,e.StateTransformer.ROOT,{},{ref:o.RootRef,state:M})}o.createRoot=u;function m(M,D){return M.tags?M.tags.indexOf(D)>=0:!1}o.hasTag=m;function v(M,D){if(!M.tags)return typeof D!="string"&&D.length===0;if(typeof D=="string")return m(M,D);for(const V of D)if(M.tags.indexOf(V)<0)return!1;return!0}o.hasTags=v;function b(M){const D=M;if(D._defaultSchemaSet)return D._defaultSchema;D._defaultSchemaSet=!0;try{const V=M.transformer.definition;V.params&&(D._defaultSchema=V.params(void 0,void 0))}catch{}return D._defaultSchema}o.tryGetDefaultParamDefinition=b;function P(M){const D=[];if(M.dependsOn)for(const E of M.dependsOn)(0,i.arraySetAdd)(D,E);const V=M.transformer.definition,R=M.params;if(V.getDependencies&&R)try{const E=V.getDependencies(R);if(E)for(const I of E)(0,i.arraySetAdd)(D,I)}catch{}if(R){const E=b(M);E?n.ParamDefinition.collectRefs(E,R,D):C(R,D)}return(0,i.arraySetRemove)(D,M.ref),(0,i.arraySetRemove)(D,o.RootRef),D}o.getEffectiveDependsOn=P;function C(M,D,V=0){if(!M||typeof M!="object"||V>6)return D;if(Array.isArray(M)){for(const E of M)C(E,D,V+1);return D}const R=M.ref;if(typeof R=="string"&&typeof M.getValue=="function")return(0,i.arraySetAdd)(D,R),D;for(const E of Object.keys(M))C(M[E],D,V+1);return D}const l={};function S(M){var D,V;let R;try{R=(0,r.hashMurmur128o)((D=M.params)!==null&&D!==void 0?D:l)}catch{const I=M.transformer.definition.customSerialization?M.transformer.definition.customSerialization.toJSON:T;R=(0,r.hashMurmur128o)(I((V=M.params)!==null&&V!==void 0?V:l))}M.version=R}o.setParamsHashVersion=S;function T(M){return M}function A(M){const D=M.transformer.definition.customSerialization?M.transformer.definition.customSerialization.toJSON:T;let V;for(const R of Object.keys(M.state))M.state[R]&&(V||(V={}),V[R]=!0);return{parent:M.parent,transformer:M.transformer.id,params:M.params?D(M.params):void 0,state:V,tags:M.tags,ref:M.ref,dependsOn:M.dependsOn,version:M.version}}o.toJSON=A;function x(M){const D=e.StateTransformer.get(M.transformer),V=D.definition.customSerialization?D.definition.customSerialization.fromJSON:T;return{parent:M.parent,transformer:D,params:M.params?V(M.params):void 0,state:M.state||{},tags:M.tags,ref:M.ref,dependsOn:M.dependsOn,version:M.version}}o.fromJSON=x})(c||(M1.StateTransform=c={})),M1}var w1={},v5;function DQ(){if(v5)return w1;v5=1,Object.defineProperty(w1,"__esModule",{value:!0}),w1.TransientTree=void 0;const e=Ff,t=sc(),r=xw(),n=vr(),i=Vt();class c{get childMutations(){return this._childMutations?this._childMutations:(this._childMutations=new Map,this._childMutations)}get dependencyMutations(){return this._dependencyMutations?this._dependencyMutations:(this._dependencyMutations=new Map,this._dependencyMutations)}changeNodes(){this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable())}changeChildren(){this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable())}changeDependencies(){this.changedDependencies||(this.changedDependencies=!0,this.dependencies=this.dependencies.asMutable())}get root(){return this.transforms.get(t.StateTransform.RootRef)}asTransient(){return this.asImmutable().asTransient()}addChild(g,a){if(this.changeChildren(),this.childMutations.has(g))this.childMutations.get(g).add(a);else{const d=this.children.get(g).asMutable();d.add(a),this.children.set(g,d),this.childMutations.set(g,d)}}removeChild(g,a){if(this.changeChildren(),this.childMutations.has(g))this.childMutations.get(g).remove(a);else{const d=this.children.get(g).asMutable();d.remove(a),this.children.set(g,d),this.childMutations.set(g,d)}}clearRoot(){const g=t.StateTransform.RootRef;if(this.children.get(g).size===0)return;this.changeChildren();const a=(0,e.OrderedSet)();this.children.set(g,a),this.childMutations.set(g,a)}mutateDependency(g,a,d){let p=this.dependencyMutations.get(g);if(!p){const u=this.dependencies.get(g);if(!u&&d==="remove")return;this.changeDependencies(),p=u?u.asMutable():(0,e.OrderedSet)().asMutable(),this.dependencyMutations.set(g,p),this.dependencies.set(g,p)}d==="add"?p.add(a):p.remove(a)}changeParent(g,a){y(this.transforms,g);const d=this.transforms.get(g);this.removeChild(d.parent,g),this.addChild(a,g),this.changeNodes(),this.transforms.set(g,t.StateTransform.withParent(d,a))}add(g){const a=g.ref;this.transforms.has(g.ref)&&this.transforms.get(g.ref).parent!==g.parent&&h(g.ref);const d=this.children.get(g.parent);if(d||f(g.parent),d.has(g.ref)||this.addChild(g.parent,g.ref),this.children.has(g.ref)||(this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable()),this.children.set(g.ref,(0,e.OrderedSet)())),this.changeNodes(),this.transforms.set(a,g),g.depen
4121dsOn)for(const p of g.dependsOn)this.mutateDependency(p,a,"add");return this}setParams(g,a){y(this.transforms,g);const d=this.transforms.get(g);return(0,n.shallowEqual)(d.params,a)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,t.StateTransform.withParams(d,a)),!0)}setTags(g,a){y(this.transforms,g);const d=this.transforms.get(g),p=t.StateTransform.withTags(d,a);return(0,i.arrayEqual)(d.tags,p.tags)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,p),!0)}setDependsOn(g,a){y(this.transforms,g);const d=this.transforms.get(g),p=t.StateTransform.withDependsOn(d,a);return(0,i.arrayEqual)(d.dependsOn,p.dependsOn)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(d.ref,p),!0)}assignState(g,a){y(this.transforms,g);const d=this.transforms.get(g);if(this._stateUpdates&&this._stateUpdates.has(g))return t.StateTransform.assignState(d.state,a),d;{this._stateUpdates||(this._stateUpdates=new Set),this._stateUpdates.add(d.ref),this.changeNodes();const p=t.StateTransform.withState(d,a);return this.transforms.set(g,p),p}}remove(g){const a=this.transforms.get(g);if(!a)return[];const d=r.StateTree.subtreePostOrder(this,a);if(g===t.StateTransform.RootRef){if(d.pop(),d.length===0)return d;this.clearRoot()}else{if(d.length===0)return d;this.removeChild(a.parent,a.ref)}this.changeNodes(),this.changeChildren();for(const u of d)this.transforms.delete(u.ref),this.children.delete(u.ref),this._childMutations&&this._childMutations.delete(u.ref);const p=[];for(const u of d){if(u.dependsOn)for(const m of u.dependsOn)this.transforms.has(m)&&this.mutateDependency(m,u.ref,"remove");if(this.dependencies.has(u.ref)){const m=this.dependencies.get(u.ref).toArray();this.changeDependencies(),this.dependencies.delete(u.ref),this._dependencyMutations&&this._dependencyMutations.delete(u.ref);for(const v of m)if(this.transforms.has(v))for(const b of this.remove(v))p[p.length]=b}}for(const u of p)d[d.length]=u;return d}asImmutable(){return!this.changedNodes&&!this.changedChildren&&!this._childMutations?this.tree:(this._childMutations&&this._childMutations.forEach(o,this.children),this._dependencyMutations&&this._dependencyMutations.forEach(s,this.dependencies),r.StateTree.create(this.changedNodes?this.transforms.asImmutable():this.transforms,this.changedChildren?this.children.asImmutable():this.children,this.changedDependencies?this.dependencies.asImmutable():this.dependencies))}constructor(g){this.tree=g,this.transforms=this.tree.transforms,this.children=this.tree.children,this.dependencies=this.tree.dependencies,this.changedNodes=!1,this.changedChildren=!1,this.changedDependencies=!1,this._childMutations=void 0,this._dependencyMutations=void 0,this._stateUpdates=void 0}}w1.TransientTree=c;function o(_,g){this.set(g,_.asImmutable())}function s(_,g){_.size===0?this.delete(g):this.set(g,_.asImmutable())}function h(_){throw new Error(`Transform '${_}' is already present in the tree.`)}function f(_){throw new Error(`Parent '${_}' must be present in the tree.`)}function y(_,g){if(!_.has(g))throw new Error(`Node '${g}' is not present in the tree.`)}return w1}var b5;function xw(){if(b5)return A1;b5=1,Object.defineProperty(A1,"__esModule",{value:!0}),A1.StateTree=void 0;const e=Ff,t=sc(),r=DQ();var n;return(function(i){class c{get root(){return this.transforms.get(t.StateTransform.RootRef)}asTransient(){return new r.TransientTree(this)}constructor(x,M,D){this.transforms=x,this.children=M,this.dependencies=D}}function o(A){const x=A||t.StateTransform.createRoot();return s((0,e.Map)([[x.ref,x]]),(0,e.Map)([[x.ref,(0,e.OrderedSet)()]]),(0,e.Map)())}i.createEmpty=o;function s(A,x,M){return new c(A,x,M)}i.create=s;function h(A){f(this,this.tree.transforms.get(A))}function f(A,x){const M=A.tree.children.get(x.ref);M&&M.size&&M.forEach(h,A),A.f(x,A.tree,A.state)}function y(A,x,M,D){const V={tree:A,state:M,f:D};return f(V,x),V.state}i.doPostOrder=y;function _(A){g(this,this.tree.transforms.get(A))}function g(A,x){const M=A.f(x,A.tree,A.state);if(typeof M=="boolean"&&!M)return;const D=A.tree.children.get(x.ref);D&&D.size&&D.forEach(_,A)}function a(A,x,M,D){const V={tree:A,state:M,f:D};return g(V,x),V.state}i.doPreOrder=a;function d(A,x,M){M.push(A)}function p(A,x){return y(A,x,[],d)}i.subtreePostOrder=p;function u(A,x,M){M.push(t.StateTransform.toJSON(A))}function m(A){const x=[];return a(A,A.root,x,u),{transforms:x}}i.toJSON=m;function v(A){const x=(0,e.Map)().asMutable(),M=(0,e.Map)().asMutable(),D=(0,e.Map)().asMutable();for(const R of A.transforms){const E=t.StateTransform.fromJSON(R);
4121x.set(E.ref,E),M.has(E.ref)||M.set(E.ref,(0,e.OrderedSet)().asMutable()),E.ref!==E.parent&&M.get(E.parent).add(E.ref)}const V=new Set;for(const R of A.transforms){const E=R.ref;if(M.set(E,M.get(E).asImmutable()),!!R.dependsOn)for(const I of R.dependsOn)V.add(I),D.has(I)?D.get(I).add(E):D.set(I,(0,e.OrderedSet)([E]).asMutable())}return V.forEach(R=>{D.set(R,D.get(R).asImmutable())}),s(x.asImmutable(),M.asImmutable(),D.asImmutable())}i.fromJSON=v;function b(A){console.log({tr:A.transforms.keySeq().toArray(),tr1:A.transforms.valueSeq().toArray().map(x=>x.ref),ch:A.children.keySeq().toArray()})}i.dump=b;function P(A,x,M){if(x===M)return!0;const V=A.children.get(x).values();for(;;){const R=V.next();if(R.done)return!1;if(P(A,R.value,M))return!0}}function C(A,x,M){return!A.transforms.has(x)||!A.transforms.has(M)?!1:P(A,x,M)}i.subtreeHasRef=C;function l(A,x){const M=A.children.get(x);if(M.size!==1)return x;const D=A.transforms.get(M.first());return D?.transformer.definition.isDecorator?l(A,D.ref):x}i.getDecoratorRoot=l;function S(A,x){for(const M of x){const D=A.transforms.get(M);D&&t.StateTransform.setParamsHashVersion(D)}}i.setParamHashVersion=S;function T(A,x){const M=new Map(x.transforms.map(D=>[D.ref,D]));for(const D of A.transforms){const V=M.get(D.ref);V&&(D.transformer!==V.transformer||D.version!==V.version||(D.params=V.params))}}i.reuseTransformParams=T})(n||(A1.StateTree=n={})),A1}var _5;function Aw(){return _5||(_5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TransientTree=e.StateTree=void 0;const t=xw();Object.defineProperty(e,"StateTree",{enumerable:!0,get:function(){return t.StateTree}});const r=DQ();Object.defineProperty(e,"TransientTree",{enumerable:!0,get:function(){return r.TransientTree}})})(H3)),H3}var S5;function l2(){if(S5)return x1;S5=1,Object.defineProperty(x1,"__esModule",{value:!0}),x1.StateSelection=void 0;const e=Aw(),t=sc();var r;return(function(n){function i(z,W){return c(z)(W)}n.select=i;function c(z){const W=z||g.root;let X;return s(W)?X=W.compile():o(W)?X=g.byValue(W).compile():h(W)?X=W:X=g.byRef(W).compile(),X}n.compile=c;function o(z){return z.transform!==void 0&&z.status!==void 0}function s(z){return z.compile!==void 0}function h(z){return typeof z=="function"}const f={select(z){return i(this,z||this.state)}};function y(z,W){f[z]=function(...X){return W.call(void 0,this,...X)}}function _(z){return Object.create(f,{compile:{writable:!1,configurable:!1,value:z}})}let g;(function(z){z.root=_(()=>ie=>[ie.cells.get(ie.tree.root.ref)]);function W(...ie){return _(()=>Z=>{const re=[];for(const oe of ie){const ce=Z.cells.get(oe);ce&&re.push(ce)}return re})}z.byRef=W;function X(...ie){return _(()=>Z=>ie)}z.byValue=X;function Y(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={roots:[],cells:re.cells,type:ie.type};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,ae),oe.roots})}z.rootsOfType=Y;function K(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,type:ie.type};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,te),oe.ret})}z.ofType=K;function Q(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,t:ie};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,ne),oe.ret})}z.ofTransformer=Q;function J(ie,Z=t.StateTransform.RootRef){return _(()=>re=>{const oe={ret:[],cells:re.cells,t:ie};return e.StateTree.doPreOrder(re.tree,re.tree.transforms.get(Z),oe,$),oe.ret})}z.ofTransformerWithError=J;function ae(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.obj.type===re.type?(re.roots.push(oe),!1):!0}function te(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.obj.type===re.type&&re.ret.push(oe),!0}function ne(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.obj&&oe.transform.transformer===re.t&&re.ret.push(oe),!0}function $(ie,Z,re){const oe=re.cells.get(ie.ref);return oe&&oe.status==="error"&&oe.transform.transformer===re.t&&re.ret.push(oe),!0}})(g=n.Generators||(n.Generators={})),y("flatMap",a);function a(z,W){const X=c(z);return _(()=>Y=>{const K=[];for(const Q of X(Y))for(const J of W(Q,Y))K.push(J);return K})}n.flatMap=a,y("mapObject",d);function d(z,W){const X=c(z);return _(()=>Y=>{const K=[];for(const Q of X(Y)){const J=W(Q,Y);J&&K.push(J)}return K})}n.mapObject=d,y("unique",p);function p(z){const W=c(z);return _(()=>X=>{const Y=new Set,K=[];for(const Q of W(X))Q&&(Y.has(Q.transform.ref)||(Y.add(Q.transform.ref),K.push(Q
4121)));return K})}n.unique=p,y("first",u);function u(z){const W=c(z);return _(()=>X=>{const Y=W(X);return Y.length?[Y[0]]:[]})}n.first=u,y("filter",m);function m(z,W){return a(z,X=>W(X)?[X]:[])}n.filter=m,y("withStatus",v);function v(z,W){return m(z,X=>X.status===W)}n.withStatus=v,y("withTag",b);function b(z,W){return m(z,X=>!!X.transform.tags&&X.transform.tags.indexOf(W)>=0)}n.withTag=b,y("subtree",P);function P(z){return a(z,(W,X)=>{const Y=[];return e.StateTree.doPreOrder(X.tree,X.tree.transforms.get(W.transform.ref),Y,(K,Q,J)=>{J.push(K.ref)}),Y.map(K=>X.cells.get(K))})}n.subtree=P,y("children",C);function C(z){return a(z,(W,X)=>{const Y=[];return X.tree.children.get(W.transform.ref).forEach(K=>Y.push(X.cells.get(K))),Y})}n.children=C,y("ofType",l);function l(z,W){return m(z,X=>X.obj?X.obj.type===W.type:!1)}n.ofType=l,y("ancestor",S);function S(z,W){return p(d(z,(X,Y)=>E(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestor=S,y("ancestorOfType",T);function T(z,W){return p(d(z,(X,Y)=>w(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestorOfType=T,y("ancestorWithTransformer",A);function A(z,W){return p(d(z,(X,Y)=>B(Y.tree,Y.cells,X.transform.ref,W)))}n.ancestorWithTransformer=A,y("withTransformer",x);function x(z,W){return m(z,X=>X.transform.transformer===W)}n.withTransformer=x,y("root",M);function M(z,W){return p(d(z,(X,Y)=>I(Y.tree,Y.cells,X.transform.ref,W)))}n.root=M,y("rootOfType",D);function D(z,W){return p(d(z,(X,Y)=>O(Y.tree,Y.cells,X.transform.ref,W)))}n.rootOfType=D,y("parent",V);function V(z){return p(d(z,(W,X)=>X.cells.get(X.tree.transforms.get(W.transform.ref).parent)))}n.parent=V;function R(z,W,X,Y,K){let Q=z.transforms.get(X),J;for(;;){Q=z.transforms.get(Q.parent);const ae=W.get(Q.ref);if(ae.obj&&Y(ae)&&(J=ae,K)||Q.ref===t.StateTransform.RootRef)return J}}function E(z,W,X,Y){return R(z,W,X,Y,!0)}n.findAncestor=E;function I(z,W,X,Y){return R(z,W,X,Y,!1)}n.findRoot=I;function B(z,W,X,Y){return E(z,W,X,Array.isArray(Y)?K=>Y.indexOf(K.transform.transformer)>=0:K=>K.transform.transformer===Y)}n.findAncestorWithTransformer=B;function w(z,W,X,Y){return E(z,W,X,F(Y))}n.findAncestorOfType=w;function O(z,W,X,Y){return I(z,W,X,F(Y))}n.findRootOfType=O;function F(z){return Array.isArray(z)?W=>{for(const X of z)if(X.type===W.obj.type)return!0}:W=>W.obj.type===z.type}function L(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{refs:{},tags:X},U).refs}n.findUniqueTagsInSubtree=L;function U(z,W,X){if(z.tags){for(const Y of z.tags)if(X.tags.has(Y)){X.refs[Y]=z.ref;break}}return!0}function q(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{ref:void 0,tag:X},N).ref}n.findTagInSubtree=q;function N(z,W,X){return z.tags&&z.tags.indexOf(X.tag)>=0?(X.ref=z.ref,!1):!0}function k(z,W,X){return e.StateTree.doPreOrder(z,z.transforms.get(W),{refs:[],tags:X},j).refs}n.findWithAllTags=k;function j(z,W,X){if(z.tags){const Y=X.tags.size;let K=0;for(const Q of z.tags)if(X.tags.has(Q)&&(K++,K===Y)){X.refs.push(z);break}}else X.tags.size===0&&X.refs.push(z)}function H(z,W,X){if(z.transforms.get(W).transformer===X)return z.cells.get(W);const K=z.tree.children.get(W);if(K.size!==1)return;const Q=K.first();if(Q&&z.transforms.get(Q).transformer.definition.isDecorator)return H(z,Q,X)}n.tryFindDecorator=H;function G(z,W){const X=z.tree.children.get(W);if(X.size!==1)return z.cells.get(W);const Y=X.first();return Y&&z.transforms.get(Y).transformer.definition.isDecorator?G(z,Y):z.cells.get(W)}n.getDecorated=G})(r||(x1.StateSelection=r={})),x1}var Iu={},W3={},gi={},C5;function Mw(){if(C5)return gi;C5=1,Object.defineProperty(gi,"__esModule",{value:!0}),gi.StateObjectRef=gi.StateObjectSelector=gi.StateObjectTracker=gi.StateObjectCell=gi.StateObject=void 0;const e=et(),t=Et();var r;(function(s){function h(){return _=>f(_)}s.factory=h;function f(_){var g;return g=class{static is(d){return!!d&&_===d.type}constructor(d,p){this.data=d,this.id=e.UUID.create22(),this.type=_,this.label=p&&p.label||_.name,this.description=p&&p.description}},g.type=_,g}s.create=f;function y(_,g){if(!_.tags)return!1;for(const a of _.tags)if(a===g)return!0;return!1}s.hasTag=y,s.Null={id:e.UUID.create22(),type:{name:"Null",typeClass:"Null"},data:void 0,label:"Null"}})(r||(gi.StateObject=r={}));var n;(function(s){function h(y){const _=y;return!!_&&!!_.transform&&!!_.parent&&!!_.status}s.is=h;function f(y,_){const g=typeof _=="string"?_:s.is(_)?_.transform.ref:_.ref;return y.cells.get(g)}s.resolve=f})(n||(gi.StateObjectCell=n={}));
4121class i{setQuery(h){this.query=t.StateSelection.compile(h)}update(){const h=this.state.select(this.query)[0],f=h?h.transform.version:void 0,y=this.cell!==h||this.version!==f;return this.cell=h,this.version=f||"",this.data=h&&h.obj?h.obj.data:void 0,y}constructor(h){this.state=h,this.version=""}}gi.StateObjectTracker=i;class c{get cell(){var h;return(h=this.state)===null||h===void 0?void 0:h.cells.get(this.ref)}get obj(){var h,f;return(f=(h=this.state)===null||h===void 0?void 0:h.cells.get(this.ref))===null||f===void 0?void 0:f.obj}get data(){var h;return(h=this.obj)===null||h===void 0?void 0:h.data}update(h,f){if(!this.state)throw new Error("To use update() from StateObjectSelector, 'state' must be defined.");return f||(f=this.state.build()),(f||this.state.build()).to(this).update(h),f}checkValid(){if(!this.state)throw new Error("Unassigned State.");const h=this.cell;if(!h)throw new Error("Not created at all. Did you await/then the corresponding state update?");if(h.status==="ok")return!0;throw h.status==="error"?new Error(h.errorText):h.obj===r.Null?new Error("The object is Null."):new Error("Unresolved. Did you await/then the corresponding state update?")}get isOk(){const h=this.cell;return h&&h.status==="ok"&&h.obj!==r.Null}constructor(h,f){this.ref=h,this.state=f}}gi.StateObjectSelector=c;var o;return(function(s){function h(_){var g;if(_)return typeof _=="string"?_:n.is(_)?_.transform.ref:(g=_.cell)===null||g===void 0?void 0:g.transform.ref}s.resolveRef=h;function f(_,g){if(g)return n.is(g)?g:typeof g=="string"?_.cells.get(g):g.cell}s.resolve=f;function y(_,g){const a=f(_,g);if(!(!a||!a.obj||a.status!=="ok"))return a}s.resolveAndCheck=y})(o||(gi.StateObjectRef=o={})),gi}var Es={},V1={},P5;function Nl(){if(P5)return V1;P5=1,Object.defineProperty(V1,"__esModule",{value:!0}),V1.RxEventHelper=void 0;const e=Rn();var t;(function(n){function i(){const c=new r,o=(()=>c.create());return o.dispose=()=>c.dispose(),o.behavior=s=>c.behavior(s),o}n.create=i})(t||(V1.RxEventHelper=t={}));class r{constructor(){this._eventList=[],this._disposed=!1}create(){const i=new e.Subject;return this._eventList.push(i),i}behavior(i){const c=new e.BehaviorSubject(i);return this._eventList.push(c),c}dispose(){if(!this._disposed){for(const i of this._eventList)i.complete();this._disposed=!0}}}return V1}var E1={},T5;function IQ(){if(T5)return E1;T5=1,Object.defineProperty(E1,"__esModule",{value:!0}),E1.StateBuilder=void 0;const e=xw(),t=Mw(),r=sc(),n=Lf();var i;(function(o){function s(a){const d=new Set;for(const p of a.actions)switch(p.kind){case"add":d.add(p.transform.ref);break;case"update":d.add(p.ref);break;case"delete":d.add(p.ref);break;case"insert":{d.add(p.ref),d.add(p.transform.ref);const u=a.tree.children.get(p.ref).toArray();for(const m of u)d.add(m);break}}return Array.from(d)}function h(a,d){if(!a.state||a.state.tree===a.editInfo.sourceTree){const m=a.tree.asImmutable();return d?.useHashVersion&&e.StateTree.setParamHashVersion(m,s(a)),m}const p=a.state.tree.asTransient();for(const m of a.actions)switch(m.kind){case"add":p.add(m.transform);break;case"update":p.setParams(m.ref,m.params);break;case"delete":p.remove(m.ref);break;case"insert":{const v=p.children.get(m.ref).toArray();p.add(m.transform);for(const b of v)p.changeParent(b,m.transform.ref);break}}a.editInfo.sourceTree=a.tree;const u=p.asImmutable();return d?.useHashVersion&&e.StateTree.setParamHashVersion(u,s(a)),u}function f(a){return!!a&&typeof a.getTree=="function"}o.is=f;function y(a){return!!a&&typeof a.getTree=="function"&&typeof a.ref=="string"}o.isTo=y;class _{get editInfo(){return this.state.editInfo}get currentTree(){return this.state.tree}to(d){const p=typeof d=="string"?d:t.StateObjectCell.is(d)?d.transform.ref:d.ref;return new g(this.state,p,this)}toRoot(){return new g(this.state,this.state.tree.root.ref,this)}delete(d){const p=t.StateObjectRef.resolveRef(d);return!p||!this.state.tree.transforms.has(p)?this:(this.editInfo.count++,this.state.tree.remove(p),this.state.actions.push({kind:"delete",ref:p}),this)}getTree(d){return h(this.state,d)}commit(d){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,d))}constructor(d,p){this.state={state:p,tree:d.asTransient(),actions:[],editInfo:{applied:!1,sourceTree:d,count:0,lastUpdate:void 0}}}}o.Root=_;class g{get editInfo(){return this.state.editInfo}get selector(){return new t.StateObjectSelector(this.ref,this.state.state)}
4121getApplyRoot(){return e.StateTree.getDecoratorRoot(this.state.tree,this.ref)}apply(d,p,u){if(d.definition.isDecorator)return this.insert(d,p,u);const m=this.getApplyRoot(),v=d.apply(m,p,u);return this.state.tree.add(v),this.editInfo.count++,this.editInfo.lastUpdate=v.ref,this.state.actions.push({kind:"add",transform:v}),new g(this.state,v.ref,this.root)}applyOrUpdate(d,p,u,m){if(this.state.tree.transforms.has(d)){const v=this.to(d);return u&&v.update(u),v}else return this.apply(p,u,{...m,ref:d})}applyOrUpdateTagged(d,p,u,m){if(p.definition.isDecorator)throw new Error("Can't use applyOrUpdateTagged on decorator transformers.");const v=this.getApplyRoot(),b=this.state.tree.children.get(v).values();for(;;){const C=b.next();if(C.done)break;const l=this.state.tree.transforms.get(C.value);if(l&&r.StateTransform.hasTags(l,d)){const S=this.to(C.value);return S.updateTagged(u,c(l.tags,d,m&&m.tags)),S}}const P=p.apply(v,u,{...m,tags:c(d,m&&m.tags)});return this.state.tree.add(P),this.editInfo.count++,this.editInfo.lastUpdate=P.ref,this.state.actions.push({kind:"add",transform:P}),new g(this.state,P.ref,this.root)}group(d,p,u){return this.apply(d,p,u)}insert(d,p,u){const m=this.state.tree.children.get(this.ref).toArray(),v=d.apply(this.ref,p,u);this.state.tree.add(v);for(const b of m)this.state.tree.changeParent(b,v.ref);return this.editInfo.count++,this.editInfo.lastUpdate=v.ref,this.state.actions.push({kind:"insert",ref:this.ref,transform:v}),new g(this.state,v.ref,this.root)}updateTagged(d,p){(this.state.tree.setParams(this.ref,d)||this.state.tree.setTags(this.ref,p))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:d}))}update(d,p){let u;if(p){const m=this.state.tree.transforms.get(this.ref);u=(0,n.produce)(m.params,p)}else u=typeof d=="function"?(0,n.produce)(this.state.tree.transforms.get(this.ref).params,d):d;return this.state.tree.setParams(this.ref,u)&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:u})),this.root}updateState(d){const p=this.state.tree.transforms.get(this.ref);r.StateTransform.isStateChange(p.state,d)&&(this.state.tree.assignState(this.ref,d),this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.find(u=>u.kind==="update"&&u.ref===this.ref)||this.state.actions.push({kind:"update",ref:this.ref,params:p.params}))}tag(d){const p=this.state.tree.transforms.get(this.ref);return this.updateTagged(p.params,c(p.tags,d)),this}dependsOn(d){const p=this.state.tree.transforms.get(this.ref);this.state.tree.setDependsOn(this.ref,c(p.dependsOn,d))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:p.params}))}to(d){return this.root.to(d)}toRoot(){return this.root.toRoot()}delete(d){return this.root.delete(d)}getTree(d){return h(this.state,d)}commit(d){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,d))}constructor(d,p,u){if(this.state=d,this.root=u,this.ref=p,!this.state.tree.transforms.has(p))throw new Error(`Could not find node '${p}'.`)}}o.To=g})(i||(E1.StateBuilder=i={}));function c(...o){let s;const h=[];for(const f of o)if(f)if(s||(s=new Set),typeof f=="string"){if(s.has(f))continue;s.add(f),h.push(f)}else for(const y of f)s.has(y)||(s.add(y),h.push(y));return h}return E1}var B1={},x5;function cie(){if(x5)return B1;x5=1,Object.defineProperty(B1,"__esModule",{value:!0}),B1.StateActionManager=void 0;const e=u2(),t=et(),r=Vt(),n=Nl();class i{constructor(){this.ev=n.RxEventHelper.create(),this.actions=new Map,this.fromTypeIndex=new Map,this.events={added:this.ev(),removed:this.ev()}}add(o){const s=e.StateTransformer.is(o)?o.toAction():o;if(this.actions.has(s.id))return this;this.actions.set(s.id,s);for(const h of s.definition.from)this.fromTypeIndex.has(h.type)?this.fromTypeIndex.get(h.type).push(s):this.fromTypeIndex.set(h.type,[s]);return this.events.added.next(void 0),this}remove(o){const s=e.StateTransformer.is(o)?o.toAction().id:t.UUID.is(o)?o:o.id,h=this.actions.get(s);if(!h)return this;this.actions.delete(s);for(const f of h.definition.from){const y=this.fromTypeIndex.get(f.type);y&&((0,r.arraySetRemove)(y,h),y.length===0&&this.fromTypeIndex.delete(f.type))}return this.events.removed.next(void 0),this}fromCell(o,s){const h=o.obj;if(!h)return[];const f=this.fromTypeIndex.get(h.type);if(!f)return[];let y=!1;for(const g of f)if(g.definition.isApplicable){y=!0;break}if(!y)return f;const _=[];for(const g of f)g.definition.isApplicable?g.definition.isApplicable(h,o.transform,s)&&_.push(g):_.push(g);return _}dispose(){this.ev.dispose()}}return B1.StateActionManager=i,B1}var R1={},A5;function wQ(){if(A5)return R1;A5=1,Object.defineProperty(R1,"__esModule",{value:!0}),R1.LogEntry=void 0;var e;return(function(t){function r(o){return{type:"message",timestamp:new Date,message:o}}t.message=r;function n(o){return{type:"error",timestamp:new Date,message:o}}t.error=n;function i(o){return{type:"warning",timestamp:new Date,message:o}}t.warning=i;function c(o){return{type:"info",timestamp:new Date,message:o}}t.info=c})(e||(R1.LogEntry=e={})),R1}var O1={},M5;function VQ(){if(M5)return O1;M5=1,Object.defineProperty(O1,"__esModule",{value:!0}),O1.StateTreeSpine=void 0;const e=sc();var t;
4121return(function(r){class n{get current(){return this._current}set current(s){this._current=s}getAncestorOfType(s){if(!this._current)return;let h=this._current;for(;;){if(h=this.cells.get(h.transform.parent),!h.obj)return;if(h.obj.type===s.type)return h.obj;if(h.transform.ref===e.StateTransform.RootRef)return}}getRootOfType(s){if(!this._current)return;let h=this._current,f;for(;;){if(!h.obj)return;if(h.obj.type===s.type&&(f=h),h.transform.ref===e.StateTransform.RootRef)return f?f.obj:void 0;h=this.cells.get(h.transform.parent)}}constructor(s){this.cells=s,this._current=void 0}}r.Impl=n;function i(o,s){const h=o.cells;let f=h.get(s);const y=[f];for(;f?.transform.transformer.definition.isDecorator;)f=h.get(f.transform.parent),y.push(f);return y}r.getDecoratorChain=i;function c(o,s,h){let f,y=o.cells.get(h);if(y)for(;;){if(!y.obj)return;if(y.obj.type===s.type&&(f=y),y.transform.ref===e.StateTransform.RootRef)return f?f.obj:void 0;y=o.cells.get(y.transform.parent)}}r.getRootOfType=c})(t||(O1.StateTreeSpine=t={})),O1}var k1={},D5;function uie(){if(D5)return k1;D5=1,Object.defineProperty(k1,"__esModule",{value:!0}),k1.AsyncQueue=void 0;const e=Vt(),t=Rn();class r{constructor(){this.queue=[],this.signal=new t.Subject}get length(){return this.queue.length}enqueue(i){return this.queue.push(i),this.queue.length===1?!0:this.waitFor(i)}handled(i){(0,e.arrayRemoveInPlace)(this.queue,i),this.queue.length>0&&this.signal.next({v:this.queue[0],stillPresent:!0})}remove(i){const c=(0,e.arrayRemoveInPlace)(this.queue,i);return c&&this.signal.next({v:i,stillPresent:!1}),c}waitFor(i){return new Promise(c=>{const o=this.signal.subscribe(({v:s,stillPresent:h})=>{s===i&&(o.unsubscribe(),c(h))})})}}return k1.AsyncQueue=r,k1}var I5;function lie(){if(I5)return Es;I5=1,Object.defineProperty(Es,"__esModule",{value:!0}),Es.StateTreeCycleError=Es.State=void 0;const e=Mw(),t=Aw(),r=sc(),n=u2(),i=nt(),c=l2(),o=Nl(),s=IQ(),h=cie(),f=wQ(),y=ci(),_=Ne(),g=VQ(),a=uie(),d=Vt(),p=HD(),u=vr();class m extends Error{constructor(ne){super(`Cyclic state-tree dependency detected: ${ne.join(" -> ")}`),this.name="StateTreeCycleError",this.cycle=ne}}Es.StateTreeCycleError=m;class v{get tree(){return this._tree}get transforms(){return this._tree.transforms}get current(){return this.behaviors.currentObject.value.ref}get root(){return this.cells.get(this._tree.root.ref)}build(){return new s.StateBuilder.Root(this.tree,this)}registerRefResolver(ne,$){this.refResolvers.push([ne,$])}removeRefResolver(ne){this.refResolvers=this.refResolvers.filter($=>$[0]!==ne)}addHistory(ne,$){this.historyCapacity!==0&&(this.history.unshift([ne,$||"Update"]),this.history.length>this.historyCapacity&&this.history.pop(),this.events.historyUpdated.next({state:this}))}clearHistory(){this.history.length!==0&&(this.history=[],this.events.historyUpdated.next({state:this}))}get latestUndoLabel(){return this.history.length>0?this.history[0][1]:void 0}get canUndo(){return this.history.length>0}undo(){return i.Task.create("Undo",async ne=>{const $=this.history.shift();if($){this.events.historyUpdated.next({state:this}),this.undoingHistory=!0;try{await this.updateTree($[0],{canUndo:!1}).runInContext(ne)}finally{this.undoingHistory=!1}}})}getSnapshot(){return{tree:t.StateTree.toJSON(this._tree)}}setSnapshot(ne){const $=t.StateTree.fromJSON(ne.tree);return this.updateTree($)}setCurrent(ne){this.behaviors.currentObject.next({state:this,ref:ne})}updateCellState(ne,$){const ie=this.cells.get(ne);if(!ie)return;const Z=typeof $=="function"?$(ie.state):$;r.StateTransform.assignState(ie.state,Z)&&(ie.transform=this._tree.assignState(ie.transform.ref,Z),this.events.cell.stateUpdated.next({state:this,ref:ne,cell:ie}))}dispose(){const ne=[];t.StateTree.doPostOrder(this._tree,this._tree.root,{refs:ne},($,ie,Z)=>{Z.refs.push($.ref)});for(let $=ne.length-1;$>=0;$--){const ie=this.cells.get(ne[$]);if(ie)try{X(ie.transform,ie.obj,ie.transform.params,ie.cache,this.globalContext)}catch(Z){console.warn("Error in transformer dispose during State.dispose",Z)}}this.ev.dispose(),this.actions.dispose()}select(ne){return c.StateSelection.select(ne,this)}selectQ(ne){return typeof ne=="string"?c.StateSelection.select(ne,this):c.StateSelection.select(ne(c.StateSelection.Generators),this)}applyAction(ne,$,ie=r.StateTransform.RootRef){return i.Task.create("Apply Action",Z=>{const re=this.cells.get(ie);if(!re)throw new Error(`'${ie}' does not exist.`);if(re.status!=="ok")throw new Error(`Action cannot be applied to a cell with status '${re.status}'`);return K(ne.definition.run({ref:ie,cell:re,a:re.obj,params:$,state:this},this.globalContext),Z)})}transaction(ne,$){return i.Task.create("State Transaction",async ie=>{const Z=this.inTransaction,re=this._tree.asImmutable();let oe=!1;try{Z||this.behaviors.isUpdating.next(!0),this.inTransaction=!0,this.inTransactionError=!1,await ne(ie),this.inTransactionError&&(oe=!0,await this.updateTree(re).runInContext(ie))}catch(ce){if(oe||(oe=!0,await this.updateTree(re).runInContext(ie),this.events.log.next(f.LogEntry.error("Error during state transaction, reverting"))),Z)throw this.inTransactionError=!0,
4121ce;if($?.rethrowErrors)throw ce;console.error(ce)}finally{Z||(this.inTransaction=!1,this.events.changed.next({state:this,inTransaction:!1}),this.behaviors.isUpdating.next(!1),oe||($?.canUndo?this.addHistory(re,typeof $.canUndo=="string"?$.canUndo:void 0):this.clearHistory()))}})}get inUpdate(){return this._inUpdate}updateTree(ne,$){const ie={tree:ne,options:$};return i.Task.create("Update Tree",async Z=>{if(!await this.updateQueue.enqueue(ie))return;this._inUpdate=!0;const oe=$?.canUndo?this._tree.asImmutable():void 0;let ce=!1;this.inTransaction||this.behaviors.isUpdating.next(!0);try{if(s.StateBuilder.is(ne)){if(ne.editInfo.applied)throw new Error("This builder has already been applied. Create a new builder for further state updates");ne.editInfo.applied=!0}this.reverted=!1;const ue=$&&($.revertIfAborted||$.revertOnError)?await this._revertibleTreeUpdate(Z,ie,$):await this._updateTree(Z,ie);return ce=this.reverted,ue.ctx.hadError&&(this.inTransactionError=!0),ue.cell?new e.StateObjectSelector(ue.cell.transform.ref,this):void 0}finally{this._inUpdate=!1,this.updateQueue.handled(ie),this.inTransaction||(this.behaviors.isUpdating.next(!1),$?.canUndo?ce||this.addHistory(oe,typeof $.canUndo=="string"?$.canUndo:void 0):this.undoingHistory||this.clearHistory())}},()=>{this.updateQueue.remove(ie)})}async _revertibleTreeUpdate(ne,$,ie){const Z=this.tree,re=await this._updateTree(ne,$);return(re.ctx.hadError||re.ctx.wasAborted)&&ie.revertOnError||re.ctx.wasAborted&&ie.revertIfAborted?(this.reverted=!0,await this._updateTree(ne,{tree:Z,options:$.options})):re}async _updateTree(ne,$){let ie=!1;const Z=this.updateTreeAndCreateCtx($.tree,ne,$.options);try{if(ie=await P(Z),s.StateBuilder.isTo($.tree)){const re=this.select($.tree.ref)[0];return{ctx:Z,cell:re}}return{ctx:Z}}finally{this.spine.current=void 0,ie&&this.events.changed.next({state:this,inTransaction:this.inTransaction})}}updateTreeAndCreateCtx(ne,$,ie){const Z=(s.StateBuilder.is(ne)?ne.getTree():ne).asTransient(),re=this._tree;this._tree=Z;const oe={parent:this,editInfo:s.StateBuilder.is(ne)?ne.editInfo:void 0,errorFree:this.errorFree,taskCtx:$,oldTree:re,tree:Z,cells:this.cells,spine:this.spine,results:[],options:{...b,...ie},changed:!1,hadError:!1,wasAborted:!1,newCurrent:void 0,getCellData:this.tryGetCellData};return this.errorFree=!0,oe}constructor(ne,$){this.errorFree=!0,this.ev=o.RxEventHelper.create(),this.globalContext=void 0,this.events={cell:{stateUpdated:this.ev(),created:this.ev(),removed:this.ev()},object:{updated:this.ev(),created:this.ev(),removed:this.ev()},log:this.ev(),changed:this.ev(),historyUpdated:this.ev()},this.behaviors={currentObject:this.ev.behavior({state:this,ref:r.StateTransform.RootRef}),isUpdating:this.ev.behavior(!1)},this.actions=new h.StateActionManager,this.cells=new Map,this.spine=new g.StateTreeSpine.Impl(this.cells),this.refResolvers=[],this.tryGetCellData=re=>{var oe,ce;let ue=(ce=(oe=this.cells.get(re))===null||oe===void 0?void 0:oe.obj)===null||ce===void 0?void 0:ce.data;if(ue===void 0){for(const[,pe]of this.refResolvers)if(ue=pe(this,re),ue!==void 0)break;if(ue===void 0)throw new Error(`Cell '${re}' data undefined.`)}return ue},this.historyCapacity=5,this.history=[],this.undoingHistory=!1,this.inTransaction=!1,this.inTransactionError=!1,this._inUpdate=!1,this.reverted=!1,this.updateQueue=new a.AsyncQueue,this._tree=t.StateTree.createEmpty(r.StateTransform.createRoot($&&$.rootState)).asTransient();const Z=this._tree.root;this.runTask=$.runTask,$?.historyCapacity!==void 0&&(this.historyCapacity=$.historyCapacity),this.cells.set(Z.ref,{parent:this,transform:Z,sourceRef:void 0,obj:ne,status:"ok",state:{...Z.state},errorText:void 0,params:{definition:{},values:{}},dependencies:{dependentBy:[],dependsOn:[]},cache:{}}),this.globalContext=$&&$.globalContext}}Es.State=v,(function(te){function ne($,ie){return new te($,ie)}te.create=ne,(function($){function ie(Z,re){return!!re&&Z.ref===re.transform.ref&&Z.state===re.parent}$.isCell=ie})(te.ObjectEvent||(te.ObjectEvent={}))})(v||(Es.State=v={}));const b={doNotLogTiming:!1,doNotUpdateCurrent:!0,revertIfAborted:!1,revertOnError:!1,canUndo:!1};async function P(te){const ne=!!(te.editInfo&&te.editInfo.count===1&&te.editInfo.lastUpdate&&te.editInfo.sourceTree===te.oldTree);let $,ie=[],Z;if(ne)$=[],Z=[te.editInfo.lastUpdate];else{$=T(te);const ce=te.parent.current;let ue=!1;for(const pe of $)if(pe===ce){ue=!0;break}if(ue){const pe=L(te.oldTree,ce,$,te.cells);te.parent.setCurrent(pe)}for(let pe=$.length-1;pe>=0;pe--){const he=te.cells.get($[pe]);he&&X(he.transform,he.obj,he?.transform.params,he.cache,te.parent.globalContext)}for(const pe of $){const he=te.cells.get(pe);he&&(he.parent=void 0,R(he));const fe=he&&he.obj;te.cells.delete(pe),ie.push(fe)}Z=C(te.cells,te.tree)}const re=F(te,Z);for(const ce of re.added)te.parent.events.cell.created.next({state:te.parent,ref:ce.transform.ref,cell:ce});for(let ce=0;ce<$.length;ce++){const ue=$[ce],pe=te.oldTree.transforms.get(ue).parent;te.parent.events.object.removed.next({state:te.parent,ref:ue,obj:ie[ce]}),te.parent.events.cell.removed.next({state:te.parent,ref:ue,parent:pe})}if(ie.length&&(ie=[]),re.dependent)for(const ce of re.dependent)Z.push(ce.transform.ref);V(te,Z),te.scheduled=j(te,Z);for(const ce of Z)await G(te,ce);if(te.deferred&&te.deferred.length>0)for(;te.deferred.length>0;){const ce=te.deferred;te.deferred=[];let ue=!1;for(const pe of ce){const he=te.deferred.length;await G(te,pe),te.deferred.length>he&&te.deferred[te.deferred.length-1]===pe||(ue=!0)}if(!ue){const pe=te.deferred.map(he=>{const fe=te.cells.get(he);if(!fe)return he;const de=H(te,fe);return`${he} (waiting on: ${de.length?de.join(", "):"unknown"})`});throw te.deferred=[],new Error(`Unresolved dependency: ${pe.join("; ")}`)}}te.editInfo||x(te);let oe=te.newCurrent;for(const ce of te.results)ce.action==="created"?(te.parent.events.object.created.next({state:te.parent,ref:ce.ref,obj:ce.obj}),te.newCurrent||!te.tree.transforms.get(ce.ref).state.isGhost&&ce.obj!==e.StateObject.Null&&(oe=ce.ref)):ce.action==="updated"?te.parent.events.object.updated.next({state:te.parent,ref:ce.ref,action:"in-place",obj:ce.obj,oldData:ce.oldData}):ce.action==="replaced"&&te.parent.events.object.updated.next({state:te.parent,ref:ce.ref,action:"recreate",obj:ce.obj,oldObj:ce.oldObj});
4121if(oe)te.options.doNotUpdateCurrent||te.parent.setCurrent(oe);else{const ce=te.parent.current,ue=te.cells.get(ce);ue&&(ue.obj===e.StateObject.Null||ue.status==="error"&&ue.errorText===N)&&(oe=L(te.oldTree,ce,[],te.cells),te.parent.setCurrent(oe))}return $.length>0||Z.length>0||te.changed}function C(te,ne){const $={roots:[],cells:te};return t.StateTree.doPreOrder(ne,ne.root,$,l),$.roots}function l(te,ne,$){const ie=$.cells.get(te.ref);return!ie||ie.transform.version!==te.version?($.roots.push(te.ref),!1):!(ie.status==="error"||ie&&ie.obj===e.StateObject.Null)}function S(te,ne,$){!$.newTree.transforms.has(te.ref)&&$.cells.has(te.ref)&&$.deletes.push(te.ref)}function T(te){const ne={newTree:te.tree,cells:te.cells,deletes:[]};return t.StateTree.doPostOrder(te.oldTree,te.oldTree.root,ne,S),ne.deletes}function A(te,ne,$){const ie=$.cells.get(te.ref);!ie||!r.StateTransform.syncState(ie.state,te.state)||$.parent.events.cell.stateUpdated.next({state:$.parent,ref:te.ref,cell:ie})}function x(te){t.StateTree.doPreOrder(te.tree,te.tree.root,te,A)}function M(te,ne,$,ie){const Z=te.cells.get(ne),re=Z.status!==$;Z.status=$,Z.errorText=ie,re&&te.parent.events.cell.stateUpdated.next({state:te.parent,ref:ne,cell:Z})}function D(te,ne,$){const ie=$.cells.get(te.ref);ie.transform=te,B(ie,$)&&O(ie),M($,te.ref,"pending")}function V(te,ne){for(const $ of ne)t.StateTree.doPreOrder(te.tree,te.tree.transforms.get($),te,D)}function R(te){for(const ne of te.dependencies.dependsOn)(0,d.arraySetRemove)(ne.dependencies.dependentBy,te)}function E(te,ne,{ctx:$,added:ie,visited:Z}){if(Z.add(te.ref),$.cells.has(te.ref))return;const re={parent:$.parent,transform:te,sourceRef:void 0,status:"pending",state:{...te.state},errorText:void 0,params:void 0,dependencies:{dependentBy:[],dependsOn:[]},cache:void 0};$.cells.set(te.ref,re),ie.push(re)}function I(te,ne){const $=r.StateTransform.getEffectiveDependsOn(te.transform);if($.length!==0)for(const ie of $){if(!ne.tree.transforms.get(ie))throw new Error("Cannot depend on a non-existent transform.");const re=ne.cells.get(ie);(0,d.arraySetAdd)(te.dependencies.dependsOn,re),(0,d.arraySetAdd)(re.dependencies.dependentBy,te)}}function B(te,ne){const $=r.StateTransform.getEffectiveDependsOn(te.transform),ie=te.dependencies.dependsOn;if(ie.length===$.length){let ce=!0;for(const ue of ie)if($.indexOf(ue.transform.ref)<0){ce=!1;break}if(ce)return!1}const Z=new Set($);let re=!1;for(let ce=ie.length-1;ce>=0;ce--){const ue=ie[ce];Z.has(ue.transform.ref)||(ie.splice(ce,1),(0,d.arraySetRemove)(ue.dependencies.dependentBy,te),re=!0)}const oe=new Set(ie.map(ce=>ce.transform.ref));for(const ce of $){if(oe.has(ce))continue;if(!ne.tree.transforms.get(ce))throw new Error("Cannot depend on a non-existent transform.");const pe=ne.cells.get(ce);(0,d.arraySetAdd)(te.dependencies.dependsOn,pe),(0,d.arraySetAdd)(pe.dependencies.dependentBy,te),re=!0}return re}function w(te){if(te.dependencies.dependsOn.length===0)return;const ne=[{cell:te,idx:0}],$=new Set([te.transform.ref]),ie=new Set;for(;ne.length>0;){const Z=ne[ne.length-1],re=Z.cell.dependencies.dependsOn;if(Z.idx>=re.length){$.delete(Z.cell.transform.ref),ie.add(Z.cell.transform.ref),ne.pop();continue}const oe=re[Z.idx++],ce=oe.transform.ref;if(!ie.has(ce)){if($.has(ce)){const ue=[];let pe=!1;for(const he of ne)(pe||he.cell.transform.ref===ce)&&(pe=!0,ue.push(he.cell.transform.ref));return ue.push(ce),ue}$.add(ce),ne.push({cell:oe,idx:0})}}}function O(te){const ne=w(te);if(ne)throw new m(ne)}function F(te,ne){const $={ctx:te,visited:new Set,added:[]};for(const Z of ne)t.StateTree.doPreOrder(te.tree,te.tree.transforms.get(Z),$,E);for(const Z of $.added)I(Z,te);for(const Z of $.added)O(Z);let ie;return $.visited.forEach(Z=>{const re=te.cells.get(Z);for(const oe of re.dependencies.dependentBy)$.visited.has(oe.transform.ref)||(ie||(ie=p.UniqueArray.create()),p.UniqueArray.add(ie,oe.transform.ref,oe))}),{added:$.added,dependent:ie?ie.array:void 0}}function L(te,ne,$,ie){const Z=new Set($);return U(te,ne,Z,ie)}function U(te,ne,$,ie){if(ne===r.StateTransform.RootRef)return ne;const Z=te.transforms.get(ne),re=te.children.get(Z.parent).values();let oe,ce=!1;for(;;){const ue=re.next();if(ue.done)break;if($.has(ue.value))continue;const pe=ie.get(ue.value);if(!pe||pe.status==="error"||pe.obj===e.StateObject.Null)continue;const he=te.transforms.get(ue.value);
4121if(!he.state.isGhost){if(ue.value===ne){ce=!0,$.has(ne)||(oe=ne);continue}if(ce)return he.ref;oe=he.ref}}return oe||U(te,Z.parent,$,ie)}function q(te,ne,$,ie){ie||(te.hadError=!0,te.parent.errorFree=!1);const Z=te.cells.get(ne);if($){te.wasAborted=te.wasAborted||i.Task.isAbort($);const oe=""+$;M(te,ne,"error",oe),ie||te.parent.events.log.next({type:"error",timestamp:new Date,message:oe})}else Z.params=void 0;if(Z.obj){const oe=Z.obj;Z.obj=void 0,Z.cache=void 0,te.parent.events.object.removed.next({state:te.parent,ref:ne,obj:oe})}const re=te.tree.children.get(ne).values();for(;;){const oe=re.next();if(oe.done)return;q(te,oe.value,void 0,ie)}}const N="Parent is null";function k(te,ne,$){$.add(te.ref)}function j(te,ne){const $=new Set;for(const ie of ne){const Z=te.tree.transforms.get(ie);Z&&t.StateTree.doPreOrder(te.tree,Z,$,k)}return $}function H(te,ne){const $=[],ie=te.scheduled;if(!ie)return $;for(const Z of ne.dependencies.dependsOn)Z.obj||Z.status!=="error"&&ie.has(Z.transform.ref)&&$.push(Z.transform.ref);return $}async function G(te,ne){const $=te.cells.get(ne);if($&&$.dependencies.dependsOn.length>0&&H(te,$).length>0){te.deferred||(te.deferred=[]),te.deferred.push(ne);return}M(te,ne,"processing");let ie=!1;try{const re=(0,y.now)(),oe=await W(te,ne),ce=(0,y.now)()-re;oe.action!=="none"&&(te.changed=!0),M(te,ne,"ok"),te.results.push(oe),oe.action==="created"?(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Created ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`))):oe.action==="updated"?(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Updated ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`))):oe.action==="replaced"&&(ie=oe.obj===e.StateObject.Null,!ie&&!te.options.doNotLogTiming&&te.parent.events.log.next(f.LogEntry.info(`Updated ${oe.obj.label} in ${(0,y.formatTimespan)(ce)}.`)))}catch(re){te.changed=!0,te.hadError||(te.newCurrent=ne),q(te,ne,re,!1),console.error(re);return}const Z=te.tree.children.get(ne).values();for(;;){const re=Z.next();if(re.done)return;ie?q(te,re.value,void 0,!0):await G(te,re.value)}}function z(te,ne,$,ie){const Z=ne.transformer.definition.params,re=Z?Z($,te.parent.globalContext):{};if(ne.version!==ne._normalized_param_version)ne.params=_.ParamDefinition.normalizeParams(re,ne.params,"all"),ne._normalized_param_version=ne.version;else{const oe=_.ParamDefinition.getDefaultValues(re);ne.params=ne.params?(0,u.assignIfUndefined)(ne.params,oe):oe}return _.ParamDefinition.resolveRefs(re,ne.params,te.getCellData),{definition:re,values:ne.params}}async function W(te,ne){var $;const{oldTree:ie,tree:Z}=te,re=te.cells.get(ne),oe=re.transform;if(re.transform.ref===r.StateTransform.RootRef)return{action:"none"};const ce=te.cells.get(re.transform.parent);if(ce?.obj===e.StateObject.Null)if(re.sourceRef=ce.transform.ref,ie.transforms.has(ne)&&re.params){const de=re.params.values,ge=re.cache;return X(oe,re.obj,de,ge,te.parent.globalContext),re.params=void 0,re.obj=e.StateObject.Null,{ref:ne,action:"updated",obj:re.obj}}else return re.params=void 0,{ref:ne,action:"created",obj:e.StateObject.Null};const pe=oe.transformer.definition.from.length===0?ce:c.StateSelection.findAncestorOfType(Z,te.cells,ne,oe.transformer.definition.from);if(!pe)throw new Error(`No suitable parent found for '${ne}'`);te.spine.current=re;const he=pe.obj;re.sourceRef=pe.transform.ref;const fe=z(te,oe,he);if(!ie.transforms.has(ne)||!re.params){re.params=fe;const de=await J(te,re,oe.transformer,he,fe.values);return Y(de,oe),re.obj=de,{ref:ne,action:"created",obj:de}}else{const de=re.params.values,ge=re.cache,Ce=($=re.obj)===null||$===void 0?void 0:$.data,ve=fe.values;switch(re.params=fe,re.obj&&re.obj!==e.StateObject.Null?await ae(te,re,oe.transformer,he,re.obj,de,ve):n.StateTransformer.UpdateResult.Recreate){case n.StateTransformer.UpdateResult.Recreate:{const me=re.obj;X(oe,me,de,ge,te.parent.globalContext);const ee=await J(te,re,oe.transformer,he,ve);return Y(ee,oe),re.obj=ee,{ref:ne,action:"replaced",oldObj:me,obj:ee}}
4121case n.StateTransformer.UpdateResult.Updated:return Y(re.obj,oe),{ref:ne,action:"updated",oldData:Ce,obj:re.obj};case n.StateTransformer.UpdateResult.Null:return X(oe,re.obj,de,ge,te.parent.globalContext),re.obj=e.StateObject.Null,{ref:ne,action:"updated",obj:re.obj};default:return{action:"none"}}}}function X(te,ne,$,ie,Z){var re,oe;(oe=(re=te.transformer.definition).dispose)===null||oe===void 0||oe.call(re,{b:ne!==e.StateObject.Null?ne:void 0,params:$,cache:ie},Z)}function Y(te,ne){!te||te===e.StateObject.Null||(te.tags=ne.tags)}function K(te,ne){return typeof te.runInContext=="function"?te.runInContext(ne):te}function Q(te){if(te.dependencies.dependsOn.length===0)return;const ne=Object.create(null);for(const $ of te.dependencies.dependsOn){if(!$.obj)throw new Error("Unresolved dependency.");ne[$.transform.ref]=$.obj}return ne}function J(te,ne,$,ie,Z){return ne.cache||(ne.cache=Object.create(null)),K($.definition.apply({a:ie,params:Z,cache:ne.cache,spine:te.spine,dependencies:Q(ne)},te.parent.globalContext),te.taskCtx)}async function ae(te,ne,$,ie,Z,re,oe){return $.definition.update?(ne.cache||(ne.cache=Object.create(null)),K($.definition.update({a:ie,oldParams:re,b:Z,newParams:oe,cache:ne.cache,spine:te.spine,dependencies:Q(ne)},te.parent.globalContext),te.taskCtx)):n.StateTransformer.UpdateResult.Recreate}return Es}var w5;function Et(){return w5||(w5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=At;t.__exportStar(Mw(),e),t.__exportStar(Aw(),e),t.__exportStar(lie(),e),t.__exportStar(IQ(),e),t.__exportStar(l2(),e),t.__exportStar(u2(),e),t.__exportStar(sc(),e),t.__exportStar(MQ(),e)})(W3)),W3}var V5;function jt(){if(V5)return Iu;V5=1,Object.defineProperty(Iu,"__esModule",{value:!0}),Iu.PluginStateTransform=Iu.PluginStateObject=void 0;const e=Et();var t;(function(n){n.Create=e.StateObject.factory();function i(y){return!!y&&y.type.typeClass==="Representation3D"}n.isRepresentation3D=i;function c(y){return!!y&&y.type.typeClass==="Behavior"}n.isBehavior=c;function o(y){return n.Create({...y,typeClass:"Representation3D"})}n.CreateRepresentation3D=o;function s(y){return n.Create({...y,typeClass:"Behavior"})}n.CreateBehavior=s;class h extends n.Create({name:"Root",typeClass:"Root"}){}n.Root=h;class f extends n.Create({name:"Group",typeClass:"Group"}){}n.Group=f,(function(y){class _ extends n.Create({name:"String Data",typeClass:"Data"}){}y.String=_;class g extends n.Create({name:"Binary Data",typeClass:"Data"}){}y.Binary=g;class a extends n.Create({name:"Data Blob",typeClass:"Data"}){}y.Blob=a})(n.Data||(n.Data={})),(function(y){class _ extends n.Create({name:"JSON Data",typeClass:"Data"}){}y.Json=_;class g extends n.Create({name:"CIF File",typeClass:"Data"}){}y.Cif=g;class a extends n.Create({name:"Cube File",typeClass:"Data"}){}y.Cube=a;class d extends n.Create({name:"PSF File",typeClass:"Data"}){}y.Psf=d;class p extends n.Create({name:"PRMTOP File",typeClass:"Data"}){}y.Prmtop=p;class u extends n.Create({name:"TOP File",typeClass:"Data"}){}y.Top=u;class m extends n.Create({name:"PLY File",typeClass:"Data"}){}y.Ply=m;class v extends n.Create({name:"OBJ File",typeClass:"Data"}){}y.Obj=v;class b extends n.Create({name:"VTP File",typeClass:"Data"}){}y.Vtp=b;class P extends n.Create({name:"CCP4/MRC/MAP File",typeClass:"Data"}){}y.Ccp4=P;class C extends n.Create({name:"DSN6/BRIX File",typeClass:"Data"}){}y.Dsn6=C;class l extends n.Create({name:"DX File",typeClass:"Data"}){}y.Dx=l;class S extends n.Create({name:"MTZ File",typeClass:"Data"}){}y.Mtz=S;class T extends n.Create({name:"Format Blob",typeClass:"Data"}){}y.Blob=T})(n.Format||(n.Format={})),(function(y){class _ extends n.Create({name:"Coordinates",typeClass:"Object"}){}y.Coordinates=_;class g extends n.Create({name:"Topology",typeClass:"Object"}){}y.Topology=g;class a extends n.Create({name:"Model",typeClass:"Object"}){}y.Model=a;class d extends n.Create({name:"Trajectory",typeClass:"Object"}){}y.Trajectory=d;class p extends n.Create({name:"Structure",typeClass:"Object"}){}y.Structure=p,(function(u){class m extends o({name:"Structure 3D"}){}u.Representation3D=m;class v extends n.Create({name:"Structure 3D State",typeClass:"Object"}){}u.Representation3DState=v;class b extends n.Create({name:"Selections",typeClass:"Object"}){}u.Selections=b})(p=y.Structure||(y.Structure={}))})(n.Molecule||(n.Molecule={})),(function(y){class _ extends n.Create({name:"Volume",typeClass:"Object"}){}y.Data=_;class g extends n.Create({name:"Lazy Volume",typeClass:"Object"}){}y.Lazy=g;class a extends o({name:"Volume 3D"}){}y.Representation3D=a})(n.Volume||(n.Volume={})),(function(y){class _ extends n.Create({name:"Shape Provider",typeClass:"Object"}){}y.Provider=_;class g extends o({name:"Shape 3D"}){}y.Representation3D=g})(n.Shape||(n.Shape={}))})(t||(Iu.PluginStateObject=t={}));var r;return(function(n){n.CreateBuiltIn=e.StateTransformer.factory("ms-plugin"),n.BuiltIn=e.StateTransformer.builderFactory("ms-plugin")})(r||(Iu.PluginStateTransform=r={})),Iu}var E5;function die(){return E5||(E5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.ExternalVolumeColorThemeProvider=e.ExternalVolumeColorThemeParams=void 0,e.ExternalVolumeColorTheme=g;const t=vt(),r=ms(),n=Ne(),i=sn(),c=zt(),o=Ge(),s=ir(),h=Ut(),f=l2(),y=jt(),_="Assigns a color based on volume value at a given vertex.";e.ExternalVolumeColorThemeParams={volume:n.ParamDefinition.ValueRef(a=>a.state.data.select(f.StateSelection.Generators.rootsOfType(y.PluginStateObject.Volume.Data)).filter(p=>{var u;return(u=p.obj)===null||u===void 0?void 0:u.data}).map(p=>{var u,m;return[p.transform.ref,(m=(u=p.obj)===null||u===void 0?void 0:u.label)!==null&&m!==void 0?m:"<unknown>"]}),(a,d)=>d(a)),coloring:n.ParamDefinition.MappedStatic("absolute-value",{"absolute-value":n.ParamDefinition.Group({domain:n.ParamDefinition.MappedStatic("auto",{custom:n.ParamDefinition.Interval([-1,1],{step:.001}),auto:n.ParamDefinition.Group({symmetric:n.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})}),"relative-value":n.ParamDefinition.Group({domain:n.ParamDefinition.MappedStatic("auto",{custom:n.ParamDefinition.Interval([-1,1],{step:.001}),auto:n.ParamDefinition.Group({symmetric:n.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:n.ParamDefinition.ColorList("red-white-blue",{presetKind:"scale"})})}),defaultColor:n.ParamDefinition.Color((0,t.Color)(13421772)),normalOffset:n.ParamDefinition.Numeric(0,{min:0,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."}),usePalette:n.ParamDefinition.Boolean(!1,{description:"Use a palette to color at the pixel level."})};function g(a,d){let p;try{p=d.volume.getValue()}catch{}let u,m;const{normalOffset:v,defaultColor:b,usePalette:P}=d;if(p){const C=d.coloring.params,{stats:l}=p.grid,S=C.domain.name==="custom"?C.domain.params:[l.min,l.max],T=d.coloring.name==="relative-value";if(C.domain.name==="auto"&&T&&(S[0]=(S[0]-l.mean)/l.sigma,S[1]=(S[1]-l.mean)/l.sigma),C.domain.name==="auto"&&C.domain.params.symmetric){const D=Math.max(Math.abs(S[0]),Math.abs(S[1]));S[0]=-D,S[1]=D}const A=t.ColorScale.create({domain:S,listOrName:C.list.colors}),x=(0,o.Vec3)(),M=i.Grid.makeGetTrilinearlyInterpolated(p.grid,T?"relative":"none");u=D=>{if(!(0,c.isPositionLocation)(D))return b;v>0?o.Vec3.scaleAndAdd(x,D.position,D.normal,v):o.Vec3.copy(x,D.position);const V=M(x);return Number.isNaN(V)?b:P?(0,s.clamp)((V-S[0])/(S[1]-S[0]),0,1)*r.ColorTheme.PaletteScale:A.color(V)},m=P?{colors:C.list.colors.map(D=>Array.isArray(D)?D[0]:D),filter:C.list.kind==="set"?"nearest":"linear"}:void 0}else u=()=>b;return{factory:g,granularity:"vertex",preferSmoothing:!0,color:u,palette:m,props:d,description:_}}e.ExternalVolumeColorThemeProvider={name:"external-volume",label:"External Volume",category:h.ColorThemeCategory.Misc,factory:g,getParams:()=>e.ExternalVolumeColorThemeParams,defaultValues:n.ParamDefinition.getDefaultValues(e.ExternalVolumeColorThemeParams),isApplicable:a=>!0}})(z3)),z3}var $3={},B5;function fie(){return B5||(B5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CartoonColorThemeProvider=e.CartoonColorThemeParams=void 0,e.getCartoonColorThemeParams=l,e.CartoonColorTheme=A;const t=Ne(),r=Uf(),n=wS(),i=Gt(),c=ES(),o=s2(),s=BS(),h=RS(),f=OS(),y=Ut(),_=pQ(),g=hQ(),a=mQ(),d=o2(),p=Dn(),u=TQ(),m=PQ(),v=xQ(),b=gQ(),P=AQ(),C="Uses separate themes for coloring mainchain and sidechain visuals.";e.CartoonColorThemeParams={mainchain:t.ParamDefinition.MappedStatic("molecule-type",{uniform:t.ParamDefinition.Group(n.UniformColorThemeParams),"chain-id":t.ParamDefinition.Group(r.ChainIdColorThemeParams),"entity-id":t.ParamDefinition.Group(c.EntityIdColorThemeParams),"entity-source":t.ParamDefinition.Group(s.EntitySourceColorThemeParams),"molecule-type":t.ParamDefinition.Group(o.MoleculeTypeColorThemeParams),"model-index":t.ParamDefinition.Group(h.ModelIndexColorThemeParams),"structure-index":t.ParamDefinition.Group(f.StructureIndexColorThemeParams),"secondary-structure":t.ParamDefinition.Group(g.SecondaryStructureColorThemeParams),"trajectory-index":t.ParamDefinition.Group(d.TrajectoryIndexColorThemeParams)}),sidechain:t.ParamDefinition.MappedStatic("residue-name",{uniform:t.ParamDefinition.Group(n.UniformColorThemeParams),"residue-name":t.ParamDefinition.Group(_.ResidueNameColorThemeParams),"element-symbol":t.ParamDefinition.Group(a.ElementSymbolColorThemeParams),hydrophobicity:t.ParamDefinition.Group(u.HydrophobicityColorThemeParams),uncertainty:t.ParamDefinition.Group(m.UncertaintyColorThemeParams),occupancy:t.ParamDefinition.Group(v.OccupancyColorThemeParams),"sequence-id":t.ParamDefinition.Group(b.SequenceIdColorThemeParams),"partial-charge":t.ParamDefinition.Group(P.PartialChargeColorThemeParams)})};function l(x){return t.ParamDefinition.clone(e.CartoonColorThemeParams)}function S(x,M){switch(M.name){case"uniform":return(0,n.UniformColorTheme)(x,M.params);case"chain-id":return(0,r.ChainIdColorTheme)(x,M.params);case"entity-id":return(0,c.EntityIdColorTheme)(x,M.params);case"entity-source":return(0,s.EntitySourceColorTheme)(x,M.params);case"molecule-type":return(0,o.MoleculeTypeColorTheme)(x,M.params);case"model-index":return(0,h.ModelIndexColorTheme)(x,M.params);case"structure-index":return(0,f.StructureIndexColorTheme)(x,M.params);case"secondary-structure":return(0,g.SecondaryStructureColorTheme)(x,M.params);case"trajectory-index":return(0,d.TrajectoryIndexColorTheme)(x,M.params);default:(0,i.assertUnreachable)(M)}}function T(x,M){switch(M.name){case"uniform":return(0,n.UniformColorTheme)(x,M.params);case"residue-name":return(0,_.ResidueNameColorTheme)(x,M.params);case"element-symbol":return(0,a.ElementSymbolColorTheme)(x,M.params);case"hydrophobicity":return(0,u.HydrophobicityColorTheme)(x,M.params);case"uncertainty":return(0,m.UncertaintyColorTheme)(x,M.params);case"occupancy":return(0,v.OccupancyColorTheme)(x,M.params);case"sequence-id":return(0,b.SequenceIdColorTheme)(x,M.params);case"partial-charge":return(0,P.PartialChargeColorTheme)(x,M.params);default:(0,i.assertUnreachable)(M)}}function A(x,M){var D,V,R,E;const I=S(x,M.mainchain),B=T(x,M.sidechain),w=(0,p.hash2)((D=I.contextHash)!==null&&D!==void 0?D:0,(V=B.contextHash)!==null&&V!==void 0?V:0);function O(L,U){return U?I.color(L,!1):B.color(L,!1)}let F=I.legend;return((R=I.legend)===null||R===void 0?void 0:R.kind)==="table-legend"&&((E=B.legend)===null||E===void 0?void 0:E.kind)==="table-legend"&&(F={kind:"table-legend",table:[...I.legend.table,...B.legend.table]}
4121),{factory:A,granularity:"group",preferSmoothing:!1,color:O,props:M,contextHash:w,description:C,legend:F}}e.CartoonColorThemeProvider={name:"cartoon",label:"Cartoon",category:y.ColorThemeCategory.Misc,factory:A,getParams:l,defaultValues:t.ParamDefinition.getDefaultValues(e.CartoonColorThemeParams),isApplicable:x=>!!x.structure}})($3)),$3}var X3={},R5;function mie(){return R5||(R5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FormalChargeColorThemeProvider=e.FormalChargeColorThemeParams=void 0,e.getFormalChargeColorThemeParams=h,e.FormalChargeColorTheme=y;const t=vt(),r=Ke(),n=Ne(),i=Ut(),c=pa(),o=(0,t.Color)(16777113),s="Assigns a color based on the formal charge of an atom.";e.FormalChargeColorThemeParams={domain:n.ParamDefinition.Interval([-3,3]),list:n.ParamDefinition.ColorList({kind:"set",colors:c.ColorLists["red-white-blue"].list})};function h(_){return e.FormalChargeColorThemeParams}function f(_,g){return r.Unit.isAtomic(_)?_.model.atomicHierarchy.atoms.pdbx_formal_charge.value(g):0}function y(_,g){const a=t.ColorScale.create({domain:g.domain,listOrName:g.list.colors});function d(p){if(r.StructureElement.Location.is(p)){const u=f(p.unit,p.element);return u!==void 0?a.color(u):o}else if(r.Bond.isLocation(p)){const u=f(p.aUnit,p.aUnit.elements[p.aIndex]);return u!==void 0?a.color(u):o}return o}return{factory:y,granularity:"group",preferSmoothing:!0,color:d,props:g,description:s,legend:a?a.legend:void 0}}e.FormalChargeColorThemeProvider={name:"formal-charge",label:"Formal Charge",category:i.ColorThemeCategory.Atom,factory:y,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.FormalChargeColorThemeParams),isApplicable:_=>!!_.structure&&_.structure.models.some(g=>g.atomicHierarchy.atoms.pdbx_formal_charge.isDefined)}})(X3)),X3}var K3={},Y3={},Q3={},Z3={},O5;function pie(){if(O5)return Z3;O5=1,Object.defineProperty(Z3,"__esModule",{value:!0});const e=$D(),t=sI(),r=Ke(),n=dt(),i=Hi(),c=ui(),o=ma(),s=Dn(),h=iI(),f=Vt(),y=t.QuerySymbolRuntime.Const,_=t.QuerySymbolRuntime.Dynamic,g=[y(e.MolScriptSymbolTable.core.type.bool,function(v,b){return!!b[0](v)}),y(e.MolScriptSymbolTable.core.type.num,function(v,b){return+b[0](v)}),y(e.MolScriptSymbolTable.core.type.str,function(v,b){return""+b[0](v)}),y(e.MolScriptSymbolTable.core.type.list,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,(P,C,l)=>l[C]=P,[])}),y(e.MolScriptSymbolTable.core.type.set,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,function(C,l,S){return S.add(C)},new Set)}),y(e.MolScriptSymbolTable.core.type.regex,function(v,b){return new RegExp(b[0](v),b[1]&&b[1](v)||"")}),y(e.MolScriptSymbolTable.core.type.bitflags,function(v,b){return+b[0](v)}),y(e.MolScriptSymbolTable.core.type.compositeKey,function(v,b){return t.QueryRuntimeArguments.forEachEval(b,v,(P,C,l)=>l[C]=""+P,[]).join("-")}),y(e.MolScriptSymbolTable.core.logic.not,(m,v)=>!v[0](m)),y(e.MolScriptSymbolTable.core.logic.and,(m,v)=>{if(typeof v.length=="number"){for(let b=0,P=v.length;b<P;b++)if(!v[b](m))return!1}else for(const b of Object.keys(v))if(!v[b](m))return!1;return!0}),y(e.MolScriptSymbolTable.core.logic.or,(m,v)=>{if(typeof v.length=="number"){for(let b=0,P=v.length;b<P;b++)if(v[b](m))return!0}else for(const b of Object.keys(v))if(v[b](m))return!0;return!1}),y(e.MolScriptSymbolTable.core.rel.eq,(m,v)=>v[0](m)===v[1](m)),y(e.MolScriptSymbolTable.core.rel.neq,(m,v)=>v[0](m)!==v[1](m)),y(e.MolScriptSymbolTable.core.rel.lt,(m,v)=>v[0](m)<v[1](m)),y(e.MolScriptSymbolTable.core.rel.lte,(m,v)=>v[0](m)<=v[1](m)),y(e.MolScriptSymbolTable.core.rel.gr,(m,v)=>v[0](m)>v[1](m)),y(e.MolScriptSymbolTable.core.rel.gre,(m,v)=>v[0](m)>=v[1](m)),y(e.MolScriptSymbolTable.core.rel.inRange,(m,v)=>{const b=v[0](m);return b>=v[1](m)&&b<=v[2](m)}),y(e.MolScriptSymbolTable.core.math.add,(m,v)=>{let b=0;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b+=v[P](m);else for(const P of Object.keys(v))b+=v[P](m);return b}),y(e.MolScriptSymbolTable.core.math.sub,(m,v)=>{let b=0;if(typeof v.length=="number"){if(v.length===1)return-v[0](m);b=v[0](m)||0;for(let P=1,C=v.length;P<C;P++)b-=v[P](m)}else{const P=Object.keys(v);if(P.length===1)return-v[P[0]](m);b=v[P[0]](m)||0;for(let C=1,l=P.length;C<l;C++)b-=v[P[C]](m)}return b}),y(e.MolScriptSymbolTable.core.math.mult,(m,v)=>{let b=1;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b*=v[P](m);else for(const P of Object.keys(v))b*=v[P](m);return b}),y(e.MolScriptSymbolTable.core.math.div,(m,v)=>v[0](m)/v[1](m)),y(e.MolScriptSymbolTable.core.math.pow,(m,v)=>Math.pow(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.mod,(m,v)=>v[0](m)%v[1](m)),y(e.MolScriptSymbolTable.core.math.min,(m,v)=>{let b=Number.POSITIVE_INFINITY;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=Math.min(v[P](m),b);else for(const P of Object.keys(v))b=Math.min(v[P](m),b);return b}),y(e.MolScriptSymbolTable.core.math.max,(m,v)=>{let b=Number.NEGATIVE_INFINITY;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=Math.max(v[P](m),b);else for(const P of Object.keys(v))b=Math.max(v[P](m),b);return b}),y(e.MolScriptSymbolTable.core.math.cantorPairing,(m,v)=>(0,s.cantorPairing)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.sortedCantorPairing,(m,v)=>(0,s.sortedCantorPairing)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.math.invertCantorPairing,(m,v)=>(0,s.invertCantorPairing)([0,0],v[0](m))),y(e.MolScriptSymbolTable.core.math.floor,(m,v)=>Math.floor(v[0](m))),y(e.MolScriptSymbolTable.core.math.ceil,(m,v)=>Math.ceil(v[0](m))),y(e.MolScriptSymbolTable.core.math.roundInt,(m,v)=>Math.round(v[0](m))),y(e.MolScriptSymbolTable.core.math.trunc,(m,v)=>Math.trunc(v[0](m))),y(e.MolScriptSymbolTable.core.math.abs,(m,v)=>Math.abs(v[0](m))),y(e.MolScriptSymbolTable.core.math.sign,(m,v)=>Math.sign(v[0](m))),y(e.MolScriptSymbolTable.core.math.sqrt,(m,v)=>Math.sqrt(v[0](m))),y(e.MolScriptSymbolTable.core.math.cbrt,(m,v)=>Math.cbrt(v[0](m))),y(e.MolScriptSymbolTable.core.math.sin,(m,v)=>Math.sin(v[0](m))),y(e.MolScriptSymbolTable.core.math.cos,(m,v)=>Math.cos(v[0](m))),y(e.MolScriptSymbolTable.core.math.tan,(m,v)=>Math.tan(v[0](m))),y(e.MolScriptSymbolTable.core.math.asin,(m,v)=>Math.asin(v[0](m))),y(e.MolScriptSymbolTable.core.math.acos,(m,v)=>Math.acos(v[0](m))),y(e.MolScriptSymbolTable.core.math.atan,(m,v)=>Math.atan(v[0](m))),y(e.MolScriptSymbolTable.core.math.sinh,(m,v)=>Math.sinh(v[0](m))),y(e.MolScriptSymbolTable.core.math.cosh,(m,v)=>Math.cosh(v[0](m))),y(e.MolScriptSymbolTable.core.math.tanh,(m,v)=>Math.tanh(v[0](m))),y(e.MolScriptSymbolTable.core.math.exp,(m,v)=>Math.exp(v[0](m))),y(e.MolScriptSymbolTable.core.math.log,(m,v)=>Math.log(v[0](m))),y(e.MolScriptSymbolTable.core.math.log10,(m,v)=>Math.log10(v[0](m))),y(e.MolScriptSymbolTable.core.math.atan2,(m,v)=>Math.atan2(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.str.match,(m,v)=>v[0](m).test(v[1](m))),y(e.MolScriptSymbolTable.core.str.concat,(m,v)=>{const b=[];if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b.push(v[P](m).toString());else for(const P of Object.keys(v))b.push(v[P](m).toString());return b.join("")}),y(e.MolScriptSymbolTable.core.list.getAt,(m,v)=>v[0](m)[v[1](m)]),y(e.MolScriptSymbolTable.core.list.equal,(m,v)=>(0,f.arrayEqual)(v[0](m),v[1](m))),y(e.MolScriptSymbolTable.core.set.has,function(v,b){return b[0](v).has(b[1](v))}),y(e.MolScriptSymbolTable.core.set.isSubset,function(v,b){return i.SetUtils.isSuperset(b[1](v),b[0](v))}
4121),y(e.MolScriptSymbolTable.core.flags.hasAny,(m,v)=>{const b=v[1](m),P=v[0](m);return b?(P&b)!==0:!!P}),y(e.MolScriptSymbolTable.core.flags.hasAll,(m,v)=>{const b=v[1](m),P=v[0](m);return b?(P&b)===b:!P}),y(e.MolScriptSymbolTable.structureQuery.type.elementSymbol,(m,v)=>(0,n.ElementSymbol)(v[0](m))),y(e.MolScriptSymbolTable.structureQuery.type.atomName,(m,v)=>(0,c.upperCaseAny)(v[0](m))),y(e.MolScriptSymbolTable.structureQuery.type.bondFlags,(m,v)=>{let b=n.BondType.Flag.None;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=d(b,v[P](m));else for(const P of Object.keys(v))b=d(b,v[P](m));return b}),y(e.MolScriptSymbolTable.structureQuery.type.ringFingerprint,(m,v)=>r.UnitRing.elementFingerprint(u(m,v))),y(e.MolScriptSymbolTable.structureQuery.type.secondaryStructureFlags,(m,v)=>{let b=n.SecondaryStructureType.Flag.None;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b=p(b,v[P](m));else for(const P of Object.keys(v))b=p(b,v[P](m));return b}),_(e.MolScriptSymbolTable.structureQuery.filter.pick,(m,v)=>r.Queries.filters.pick(v[0],v.test)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.first,(m,v)=>r.Queries.filters.first(v[0])(m)),_(e.MolScriptSymbolTable.structureQuery.filter.withSameAtomProperties,(m,v)=>r.Queries.filters.withSameAtomProperties(v[0],v.source,v.property)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.intersectedBy,(m,v)=>r.Queries.filters.areIntersectedBy(v[0],v.by)(m)),_(e.MolScriptSymbolTable.structureQuery.filter.within,(m,v)=>{var b,P,C;return r.Queries.filters.within({query:v[0],target:v.target,minRadius:(b=v["min-radius"])===null||b===void 0?void 0:b.call(v,m),maxRadius:(P=v["max-radius"])===null||P===void 0?void 0:P.call(v,m),elementRadius:v["atom-radius"],invert:(C=v.invert)===null||C===void 0?void 0:C.call(v,m)})(m)}),_(e.MolScriptSymbolTable.structureQuery.filter.isConnectedTo,(m,v)=>{var b,P;return r.Queries.filters.isConnectedTo({query:v[0],target:v.target,disjunct:(b=v.disjunct)===null||b===void 0?void 0:b.call(v,m),invert:(P=v.invert)===null||P===void 0?void 0:P.call(v,m),bondTest:v["bond-test"]})(m)}),_(e.MolScriptSymbolTable.structureQuery.generator.atomGroups,function(v,b){return r.Queries.generators.atoms({entityTest:b["entity-test"],chainTest:b["chain-test"],residueTest:b["residue-test"],atomTest:b["atom-test"],groupBy:b["group-by"]})(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.all,function(v){return r.Queries.generators.all(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.empty,function(v){return r.Queries.generators.none(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.bondedAtomicPairs,function(v,b){return r.Queries.generators.bondedAtomicPairs(b&&b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.rings,function(v,b){var P,C;return r.Queries.generators.rings((P=b?.fingerprint)===null||P===void 0?void 0:P.call(b,v),(C=b?.["only-aromatic"])===null||C===void 0?void 0:C.call(b,v))(v)}),_(e.MolScriptSymbolTable.structureQuery.generator.queryInSelection,function(v,b){var P;return r.Queries.generators.querySelection(b[0],b.query,(P=b["in-complement"])===null||P===void 0?void 0:P.call(b,v))(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.includeSurroundings,function(v,b){return r.Queries.modifiers.includeSurroundings(b[0],{radius:b.radius(v),wholeResidues:!!(b["as-whole-residues"]&&b["as-whole-residues"](v)),elementRadius:b["atom-radius"]})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.surroundingLigands,function(v,b){return r.Queries.modifiers.surroundingLigands({query:b[0],radius:b.radius(v),includeWater:!!(b["include-water"]&&b["include-water"](v))})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.wholeResidues,function(v,b){return r.Queries.modifiers.wholeResidues(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.union,function(v,b){return r.Queries.modifiers.union(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.expandProperty,function(v,b){return r.Queries.modifiers.expandProperty(b[0],b.property)(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.exceptBy,function(v,b){return r.Queries.modifiers.exceptBy(b[0],b.by)(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.includeConnected,function(v,b){var P,C;return r.Queries.modifiers.includeConnected({query:b[0],bondTest:b["bond-test"],wholeResidues:!!(b["as-whole-residues"]&&b["as-whole-residues"](v)),layerCount:b["layer-count"]&&b["layer-count"](v)||1,fixedPoint:(C=(P=b["fixed-point"])===null||P===void 0?void 0:P.call(b,v))!==null&&C!==void 0?C:!1})(v)}),_(e.MolScriptSymbolTable.structureQuery.modifier.intersectBy,function(v,b){return r.Queries.modifiers.intersectBy(b[0],b.by)(v)}),_(e.MolScriptSymbolTable.structureQuery.combinator.merge,(m,v)=>r.Queries.combinators.merge(v)(m)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.elementSymbol,a(r.StructureProperties.atom.type_symbol)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.vdw,(m,v)=>(0,o.VdwRadius)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.mass,(m,v)=>(0,o.AtomWeight)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.atomicNumber,(m,v)=>(0,o.AtomNumber)(r.StructureProperties.atom.type_symbol(v&&v[0]&&v[0](m)||m.element))),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.x,a(r.StructureProperties.atom.x)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.y,a(r.StructureProperties.atom.y)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.z,a(r.StructureProperties.atom.z)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.sourceIndex,a(r.StructureProperties.atom.sourceIndex)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorName,a(r.StructureProperties.unit.operator_name)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.instanceId,a(r.StructureProperties.unit.instance_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorKey,a(r.StructureProperties.unit.operator_key)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelIndex,a(r.StructureProperties.unit.model_index)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelLabel,a(r.StructureProperties.unit.model_label)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.modelEntryId,a(r.StructureProperties.unit.model_entry_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.core.atomKey,(m,v)=>{const b=v&&v[0]&&v[0](m)||m.element;return(0,s.cantorPairing)(b.unit.id,b.element)}),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueKey,(m,v)=>r.StructureElement.residueIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chainKey,(m,v)=>r.StructureElement.chainIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityKey,(m,v)=>r.StructureElement.entityIndex(v&&v[0]&&v[0](m)||m.element)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.id,a(r.StructureProperties.atom.id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isHet,(m,v)=>r.StructureProperties.residue.group_PDB(v&&v[0]&&v[0](m)||m.element)!=="ATOM"),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_atom_id,a(r.StructureProperties.atom.label_atom_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_alt_id,a(r.StructureProperties.atom.label_alt_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_comp_id,a(r.StructureProperties.atom.label_comp_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_seq_id,a(r.StructureProperties.residue.label_seq_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_asym_id,a(r.StructureProperties.chain.label_asym_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_entity_id,a(r.StructureProperties.entity.id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_atom_id,a(r.StructureProperties.atom.auth_atom_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_comp_id,a(r.StructureProperties.atom.auth_comp_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_seq_id,a(r.StructureProperties.residue.auth_seq_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_asym_id,a(r.StructureProperties.chain.auth_asym_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,a(r.StructureProperties.residue.pdbx_PDB_ins_code)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,a(r.StructureProperties.atom.pdbx_formal_charge)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.occupancy,a(r.StructureProperties.atom.occupancy)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,a(r.StructureProperties.atom.B_iso_or_equiv)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityType,a(r.StructureProperties.entity.type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entitySubtype,a(r.StructureProperties.entity.subtype)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityPrdId,a(r.StructureProperties.entity.prd_id)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityDescription,a(r.StructureProperties.entity.pdbx_description)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.objectPrimitive,a(r.StructureProperties.unit.object_primitive)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isNonStandard,a(r.StructureProperties.residue.isNonStandard)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureKey,a(r.StructureProperties.residue.secondary_structure_key)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureFlags,a(r.StructureProperties.residue.secondary_structure_type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chemCompType,a(r.StructureProperties.residue.chem_comp_type)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueSourceIndex,a(r.StructureProperties.residue.residueSourceIndex)),_(e.MolScriptSymbolTable.structureQuery.atomProperty.ihm.hasSeqId,function(v,b){const P=v.element,C=b&&b[0]&&b[0](v);return P.unit.kind===r.Unit.Kind.Atomic?C===r.StructureProperties.residue.label_seq_id(P):C>=r.StructureProperties.coarse.seq_id_begin(P)&&C<=r.StructureProperties.coarse.seq_id_end(P)}),_(e.MolScriptSymbolTable.structureQuery.atomProperty.ihm.overlapsSeqIdRange,function(v,b){var P,C;const l=v.element,S=(P=b&&b.beg&&b.beg(v))!==null&&P!==void 0?P:-Number.MAX_VALUE,T=(C=b&&b.end&&b.end(v))!==null&&C!==void 0?C:Number.MAX_VALUE;if(l.unit.kind===r.Unit.Kind.Atomic){const M=r.StructureProperties.residue.label_seq_id(l);return M>=S&&M<=T}const A=r.StructureProperties.coarse.seq_id_begin(l),x=r.StructureProperties.coarse.seq_id_end(l);return A>=S&&A<=T||x>=S&&x<=T||A<=S&&x>=T}),_(e.MolScriptSymbolTable.structureQuery.atomSet.atomCount,function(v,b){return r.Queries.atomset.atomCount(v)}),_(e.MolScriptSymbolTable.structureQuery.atomSet.countQuery,function(v,b){return r.Queries.atomset.countQuery(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.atomSet.propertySet,function(v,b){return r.Queries.atomset.propertySet(b[0])(v)}),_(e.MolScriptSymbolTable.structureQuery.bondProperty.order,(m,v)=>m.atomicBond.order),_(e.MolScriptSymbolTable.structureQuery.bondProperty.flags,(m,v)=>m.atomicBond.type),_(e.MolScriptSymbolTable.structureQuery.bondProperty.key,(m,v)=>m.atomicBond.key),_(e.MolScriptSymbolTable.structureQuery.bondProperty.atomA,(m,v)=>m.atomicBond.a),_(e.MolScriptSymbolTable.structureQuery.bondProperty.atomB,(m,v)=>m.atomicBond.b),_(e.MolScriptSymbolTable.structureQuery.bondProperty.length,(m,v)=>m.atomicBond.length),_(e.MolScriptSymbolTable.internal.generator.bundleElement,function(v,b){return(0,h.bundleElementImpl)(b.groupedUnits(v),b.ranges(v),b.set(v))}),_(e.MolScriptSymbolTable.internal.generator.bundle,function(v,b){return(0,h.bundleGenerator)(b.elements(v))(v)}),_(e.MolScriptSymbolTable.internal.generator.current,function(v,b){return v.tryGetCurrentSelection()})];function a(m){return(v,b)=>m(b&&b[0]&&b[0](v)||v.element)}function d(m,v){return m|(n.BondType.isName(v)?n.BondType.fromName(v):n.BondType.Flag.None)}function p(m,v){switch(v.toLowerCase()){case"helix":return m|n.SecondaryStructureType.Flag.Helix;case"alpha":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.HelixAlpha;case"pi":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.HelixPi;case"310":return m|n.SecondaryStructureType.Flag.Helix|n.SecondaryStructureType.Flag.Helix3Ten;case"beta":return m|n.SecondaryStructureType.Flag.Beta;case"strand":return m|n.SecondaryStructureType.Flag.Beta|n.SecondaryStructureType.Flag.BetaStrand;case"sheet":return m|n.SecondaryStructureType.Flag.Beta|n.SecondaryStructureType.Flag.BetaSheet;case"turn":return m|n.SecondaryStructureType.Flag.Turn;case"bend":return m|n.SecondaryStructureType.Flag.Bend;case"coil":return m|n.SecondaryStructureType.Flag.NA;default:return m}}function u(m,v){const b=[];if(!v)return b;if(typeof v.length=="number")for(let P=0,C=v.length;P<C;P++)b.push(v[P](m));else{const P=Object.keys(v);for(let C=1,l=P.length;C<l;C++)b.push(v[P[C]](m))}return b}return(function(){for(const m of g)t.DefaultQueryRuntimeTable.addSymbol(m)})(),Z3}var k5;function LS(){return k5||(k5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),At.__exportStar(sI(),e),pie()})(Q3)),Q3}var F1={},It={},zo={},L1={},N1={},F5;function NS(){if(F5)return N1;F5=1,Object.defineProperty(N1,"__esModule",{value:!0}),N1.SimpleBuffer=void 0;const e=et();var t;return(function(r){function n(f){const y=new DataView(f.buffer);return Object.assign(f.subarray(0),{readInt8:_=>y.getInt8(_),readUInt8:_=>y.getUint8(_),writeInt8:(_,g)=>y.setInt8(g,_),writeUInt8:(_,g)=>y.setUint8(g,_),readInt16LE:_=>y.getInt16(_,!0),readInt32LE:_=>y.getInt32(_,!0),readUInt16LE:_=>y.getUint16(_,!0),readUInt32LE:_=>y.getUint32(_,!0),readFloatLE:_=>y.getFloat32(_,!0),readDoubleLE:_=>y.getFloat64(_,!0),writeInt16LE:(_,g)=>y.setInt16(g,_,!0),writeInt32LE:(_,g)=>y.setInt32(g,_,!0),writeUInt16LE:(_,g)=>y.setUint16(g,_,!0),writeUInt32LE:(_,g)=>y.setUint32(g,_,!0),writeFloatLE:(_,g)=>y.setFloat32(g,_,!0),writeDoubleLE:(_,g)=>y.setFloat64(g,_,!0),readInt16BE:_=>y.getInt16(_,!1),readInt32BE:_=>y.getInt32(_,!1),readUInt16BE:_=>y.getUint16(_,!1),readUInt32BE:_=>y.getUint32(_,!1),readFloatBE:_=>y.getFloat32(_,!1),readDoubleBE:_=>y.getFloat64(_,!1),writeInt16BE:(_,g)=>y.setInt16(g,_,!1),writeInt32BE:(_,g)=>y.setInt32(g,_,!1),writeUInt16BE:(_,g)=>y.setUint16(g,_,!1),writeUInt32BE:(_,g)=>y.setUint32(g,_,!1),writeFloatBE:(_,g)=>y.setFloat32(g,_,!1),writeDoubleBE:(_,g)=>y.setFloat64(g,_,!1),copy:(_,g,a,d)=>(g=(0,e.defaults)(g,0),a=(0,e.defaults)(a,0),d=(0,e.defaults)(d,f.length),_.set(f.subarray(a,d),g),d-a)})}r.fromUint8Array=n;function i(f){return n(new Uint8Array(f))}r.fromArrayBuffer=i;function c(f){return f}r.fromBuffer=c,r.IsNativeEndianLittle=new Uint16Array(new Uint8Array([18,52]).buffer)[0]===13330;function o(f,y,_,g,a){for(let d=0,p=_;d<p;d+=g)for(let u=0;u<g;u++)y[a+d+g-u-1]=f[a+d+u]}r.flipByteOrder=o;function s(f,y=0,_){const g=new Int16Array(f,y,_);for(let a=0,d=g.length;a<d;++a){const p=g[a];g[a]=(p&255)<<8|p>>8&255}}r.flipByteOrderInPlace2=s;function h(f,y,_,g,a){r.IsNativeEndianLittle||!_||g<=1||o(f,y,_,g,a)}r.ensureLittleEndian=h})(t||(N1.SimpleBuffer=t={})),N1}var L5;function EQ(){if(L5)return L1;L5=1,Object.defineProperty(L1,"__esModule",{value:!0}),L1.FileHandle=void 0;const e=et(),t=NS();var r;return(function(n){function i(c,o){return{name:o,readBuffer:(s,h,f,y)=>{let _,g;if(typeof h=="number"){f=(0,e.defaults)(f,h);const a=s,d=Math.min(c.length,a+f);_=d-a,g=t.SimpleBuffer.fromUint8Array(new Uint8Array(c.buffer,a,d-a))}else{f=(0,e.defaults)(f,h.length);const a=s,d=Math.min(c.length,a+f);h.set(c.subarray(a,d),y),_=d-a,g=h}return f!==_&&console.warn(`byteCount ${f} and bytesRead ${_} differ`),Promise.resolve({bytesRead:_,buffer:g})},writeBuffer:(s,h,f)=>(f=(0,e.defaults)(f,h.length),console.error(".writeBuffer not implemented for FileHandle.fromBuffer"),Promise.resolve(0)),writeBufferSync:(s,h,f)=>(f=(0,e.defaults)(f,h.length),console.error(".writeSync not implemented for FileHandle.fromBuffer"),0),close:e.noop}}n.fromBuffer=i})(r||(L1.FileHandle=r={})),L1}var Ia={},N5;function BQ(){if(N5)return Ia;N5=1,Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.TypedArrayValueType=void 0,Ia.getElementByteSize=r,Ia.makeTypedArray=n,Ia.createTypedArray=i,Ia.createTypedArrayBufferContext=c,Ia.readTypedArray=o;const e=NS();var t;(function(s){s.Float32="float32",s.Int8="int8",s.Int16="int16",s.Uint16="uint16"})(t||(Ia.TypedArrayValueType=t={}));function r(s){return s===t.Float32?4:s===t.Int16||s===t.Uint16?2:1}function n(s,h,f=0,y){return s===t.Float32?new Float32Array(h,f,y):s===t.Int16?new Int16Array(h,f,y):s===t.Uint16?new Uint16Array(h,f,y):new Int8Array(h,f,y)}function i(s,h){switch(s){case t.Float32:return new Float32Array(new ArrayBuffer(4*h));case t.Int8:return new Int8Array(new ArrayBuffer(1*h));case t.Int16:return new Int16Array(new ArrayBuffer(2*h));case t.Uint16:return new Uint16Array(new ArrayBuffer(2*h))}throw Error(`${s} is not a supported value format.`)}function c(s,h){const f=r(h),y=new ArrayBuffer(f*s),_=e.SimpleBuffer.fromArrayBuffer(y),g=e.SimpleBuffer.IsNativeEndianLittle?y:new ArrayBuffer(f*s);return{type:h,elementByteSize:f,readBuffer:_,valuesBuffer:new Uint8Array(g),values:n(h,g)}}
4121async function o(s,h,f,y,_,g){return await h.readBuffer(f,s.readBuffer,y,_),s.elementByteSize>1&&(g!==void 0&&g!==e.SimpleBuffer.IsNativeEndianLittle||!e.SimpleBuffer.IsNativeEndianLittle)&&e.SimpleBuffer.flipByteOrder(s.readBuffer,s.valuesBuffer,y,s.elementByteSize,_),s.values}return Ia}var q5;function RQ(){if(q5)return zo;q5=1,Object.defineProperty(zo,"__esModule",{value:!0}),zo.readCcp4Header=c,zo.readCcp4Slices=o,zo.getCcp4ValueType=f,zo.getCcp4DataOffset=y,zo.parseFile=g,zo.parse=a;const e=nt(),t=Tr(),r=EQ(),n=NS(),i=BQ();async function c(d){const{buffer:u}=await d.readBuffer(0,1024),m=String.fromCharCode(u.readUInt8(208),u.readUInt8(209),u.readUInt8(210),u.readUInt8(211)||32);if(m!=="MAP ")throw new Error('ccp4 format error, missing "MAP " string');const v=[u.readUInt8(212),u.readUInt8(213)];let b=!1;v[0]===68&&v[1]===65?b=!0:v[0]===17&&v[1]===17?b=!1:u.readInt32LE(12)<=16&&(b=!0);const P=b?S=>u.readInt32LE(S*4):S=>u.readInt32BE(S*4),C=b?S=>u.readFloatLE(S*4):S=>u.readFloatBE(S*4);return{header:{NC:P(0),NR:P(1),NS:P(2),MODE:P(3),NCSTART:P(4),NRSTART:P(5),NSSTART:P(6),NX:P(7),NY:P(8),NZ:P(9),xLength:C(10),yLength:C(11),zLength:C(12),alpha:C(13),beta:C(14),gamma:C(15),MAPC:P(16),MAPR:P(17),MAPS:P(18),AMIN:C(19),AMAX:C(20),AMEAN:C(21),ISPG:P(22),NSYMBT:P(23),LSKFLG:P(24),SKWMAT:[],SKWTRN:[],userFlag1:P(39),userFlag2:P(40),originX:C(49),originY:C(50),originZ:C(51),MAP:m,MACHST:v,ARMS:C(54)},littleEndian:b}}async function o(d,p,u,m,v,b){if(h(d)){const P=3*v;await u.readBuffer(m,p.readBuffer,v,P);const C=new Int8Array(p.valuesBuffer.buffer,P),l=(d.AMAX-d.AMIN)/255,S=.5*(d.AMIN+d.AMAX+l);for(let T=0,A=v;T<A;++T)p.values[T]=l*C[T]+S}else await(0,i.readTypedArray)(p,u,m,v,0,b)}function s(d){switch(d){case 0:return i.TypedArrayValueType.Int8;case 1:return i.TypedArrayValueType.Int16;case 2:return i.TypedArrayValueType.Float32;case 3:throw new Error("mode 3 unsupported, complex 16-bit integers");case 4:throw new Error("mode 4 unsupported, complex 32-bit reals");case 6:i.TypedArrayValueType.Uint16;case 16:throw new Error("mode 16 unsupported, unsigned char * 3 (for rgb data, non-standard)")}throw new Error(`unknown mode '${d}'`)}function h(d){return d.userFlag1===-128&&d.userFlag2===127}function f(d){return h(d)?i.TypedArrayValueType.Float32:s(d.MODE)}function y(d){return 256*4+d.NSYMBT}async function _(d,p,u){await u.update({message:"Parsing CCP4/MRC/MAP file..."});const{header:m,littleEndian:v}=await c(d),b=y(m),P=s(m.MODE),C=f(m),l=m.NC*m.NR*m.NS,S=(0,i.getElementByteSize)(P),T=l*S,A=(0,i.createTypedArrayBufferContext)(l,C);return o(m,A,d,b,T,v),{header:m,values:A.values,name:d.name}}function g(d,p){return e.Task.create("Parse CCP4/MRC/MAP",async u=>{try{return t.ReaderResult.success(await _(d,p,u))}catch(m){return t.ReaderResult.error(m)}})}function a(d,p){return g(r.FileHandle.fromBuffer(n.SimpleBuffer.fromUint8Array(d),p),d.length)}return zo}var J3={},U5;function hie(){return U5||(U5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.dsn6HeaderSize=void 0,e.readDsn6Header=f,e.parseDsn6Values=y,e.getDsn6Counts=_,e.parseFile=a,e.parse=d;const t=nt(),r=Tr(),n=EQ(),i=NS(),c=QD();e.dsn6HeaderSize=512;function o(p){return{xStart:parseInt(p.substr(10,5)),yStart:parseInt(p.substr(15,5)),zStart:parseInt(p.substr(20,5)),xExtent:parseInt(p.substr(32,5)),yExtent:parseInt(p.substr(38,5)),zExtent:parseInt(p.substr(42,5)),xRate:parseInt(p.substr(52,5)),yRate:parseInt(p.substr(58,5)),zRate:parseInt(p.substr(62,5)),xlen:parseFloat(p.substr(73,10)),ylen:parseFloat(p.substr(83,10)),zlen:parseFloat(p.substr(93,10)),alpha:parseFloat(p.substr(103,10)),beta:parseFloat(p.substr(113,10)),gamma:parseFloat(p.substr(123,10)),divisor:parseFloat(p.substr(138,12)),summand:parseInt(p.substr(155,8)),sigma:parseFloat(p.substr(170,12))}}function s(p,u){const m=u?b=>p.readInt16LE(b*2):b=>p.readInt16BE(b*2),v=1/m(17);return{xStart:m(0),yStart:m(1),zStart:m(2),xExtent:m(3),yExtent:m(4),zExtent:m(5),xRate:m(6),yRate:m(7),zRate:m(8),xlen:m(9)*v,ylen:m(10)*v,zlen:m(11)*v,alpha:m(12)*v,beta:m(13)*v,gamma:m(14)*v,divisor:m(15)/100,summand:m(16),sigma:void 0}}function h(p){const{xExtent:u,yExtent:m,zExtent:v}=p,b=Math.ceil(u/8),P=Math.ceil(m/8),C=Math.ceil(v/8);return{xBlocks:b,yBlocks:P,zBlocks:C}}async function f(p){const{buffer:u}=await p.readBuffer(0,e.dsn6HeaderSize),m=(0,c.uint8ToString)(u),v=m.startsWith(":-)"),b=v||u.readInt16LE(36)===100;return{header:v?o(m):s(u,b),littleEndian:b}}async function y(p,u,m,v){v||i.SimpleBuffer.flipByteOrderInPlace2(u.buffer);const{divisor:b,summand:P,xExtent:C,yExtent:l,zExtent:S}=p,{xBlocks:T,yBlocks:A,zBlocks:x}=h(p);let M=0;for(let D=0;D<x;++D)for(let V=0;V<A;++V)for(let R=0;R<T;++R)for(let E=0;E<8;++E){const I=8*D+E;for(let B=0;B<8;++B){const w=8*V+B;for(let O=0;O<8;++O){const F=8*R+O;if(F<C&&w<l&&I<S){const L=(F*l+w)*S+I;m[L]=(u[M]-P)/b,++M}else{M+=8-O;break}}}}}function _(p){const{xExtent:u,yExtent:m,zExtent:v}=p,{xBlocks:b,yBlocks:P,zBlocks:C}=h(p),l=u*m*v,S=b*8*P*8*C*8,A=S*1;return{count:S,byteCount:A,valueCount:l}}async function g(p,u,m){await m.update({message:"Parsing DSN6/BRIX file..."});const{header:v,littleEndian:b}=await f(p),{buffer:P}=await p.readBuffer(e.dsn6HeaderSize,u-e.dsn6HeaderSize),{valueCount:C}=_(v),l=new Float32Array(C);return await y(v,P,l,b),{header:v,values:l,name:p.name}}function a(p,u){return t.Task.create("Parse DSN6/BRIX",async m=>{try{return r.ReaderResult.success(await g(p,u,m))}catch(v){return r.ReaderResult.error(v)}})}function d(p,u){return a(n.FileHandle.fromBuffer(i.SimpleBuffer.fromUint8Array(p),u),p.length)}})(J3)),J3}var cP={},eA={},j5;function gie(){return j5||(j5=1,(function(e){Object.defineProperty(e,"__esMo
4121dule",{value:!0}),e.PlyTypes=e.PlyTypeByteLength=void 0,e.PlyType=t,e.PlyFile=r,e.PlyTypeByteLength={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8,int8:1,uint8:1,int16:2,uint16:2,int32:4,uint32:4,float32:4,float64:8},e.PlyTypes=new Set(Object.keys(e.PlyTypeByteLength));function t(n){if(!e.PlyTypes.has(n))throw new Error(`unknown ply type '${n}'`);return n}function r(n,i,c){const o=new Map;for(let s=0,h=i.length;s<h;++s)o.set(i[s],n[s]);return{comments:c,elementNames:i,getElement:s=>o.get(s)}}})(eA)),eA}var G5;function yie(){if(G5)return cP;G5=1,Object.defineProperty(cP,"__esModule",{value:!0}),cP.parsePly=C;const e=Tr(),t=nt(),r=gie(),n=Or(),i=lt(),c=Wi(),o=$s();function s(l,S,T){const A=(0,n.Tokenizer)(l);return{data:l,tokenizer:A,runtimeCtx:S,format:T??"ascii",formatPreset:T!==void 0,littleEndian:T!=="binary_big_endian",binaryData:void 0,binaryOffset:0,comments:[],elementSpecs:[],elements:[]}}function h(l){const S=l.data.indexOf("end_header",l.position);if(S===-1)throw new Error("no 'end_header' record found");l.tokenStart=l.position,l.tokenEnd=S,l.position=S,n.Tokenizer.eatLine(l)}function f(l){const{tokenizer:S,comments:T,elementSpecs:A}=l;h(S);const x=n.Tokenizer.getTokenString(S).split(/\r?\n/);if(x[0]!=="ply")throw new Error("data not starting with 'ply'");if(!l.formatPreset){const E=x[1];if(E==="format ascii 1.0")l.format="ascii",l.littleEndian=!0;else if(E==="format binary_little_endian 1.0")l.format="binary_little_endian",l.littleEndian=!0;else if(E==="format binary_big_endian 1.0")l.format="binary_big_endian",l.littleEndian=!1;else throw new Error(`unsupported PLY format '${E}'`)}let M,D,V;function R(){if(M!==void 0&&D!==void 0&&V!==void 0){let E=!1;for(let I=0,B=V.length;I<B;++I)if(V[I].kind==="list"){E=!0;break}E&&V.length,E?A.push({kind:"list",name:M,count:D,property:V[0]}):A.push({kind:"table",name:M,count:D,properties:V})}}for(let E=2,I=x.length;E<I;++E){const B=x[E],w=B.split(" ");if(B.startsWith("comment"))T.push(B.substr(8));else if(B.startsWith("element"))R(),V=[],M=w[1],D=parseInt(w[2]);else if(B.startsWith("property")){if(V===void 0)throw new Error("properties outside of element");w[1]==="list"?V.push({kind:"list",countType:(0,r.PlyType)(w[2]),dataType:(0,r.PlyType)(w[3]),name:w[4]}
4121):V.push({kind:"column",type:(0,r.PlyType)(w[1]),name:w[2]})}else B.startsWith("end_header")?R():console.warn("unknown header line")}}function y(l){const{elementSpecs:S}=l;if(l.format==="ascii")for(let T=0,A=S.length;T<A;++T){const x=S[T];x.kind==="table"?u(l,x):x.kind==="list"&&m(l,x)}else for(let T=0,A=S.length;T<A;++T){const x=S[T];x.kind==="table"?d(l,x):x.kind==="list"&&p(l,x)}}function _(l){switch(l){case"char":case"uchar":case"int8":case"uint8":case"short":case"ushort":case"int16":case"uint16":case"int":case"uint":case"int32":case"uint32":return i.Column.Schema.int;case"float":case"double":case"float32":case"float64":return i.Column.Schema.float}}function g(l,S,T,A){switch(T){case"char":case"int8":return l.getInt8(S);case"uchar":case"uint8":return l.getUint8(S);case"short":case"int16":return l.getInt16(S,A);case"ushort":case"uint16":return l.getUint16(S,A);case"int":case"int32":return l.getInt32(S,A);case"uint":case"uint32":return l.getUint32(S,A);case"float":case"float32":return l.getFloat32(S,A);case"double":case"float64":return l.getFloat64(S,A)}}function a(l,S){switch(l){case"char":case"int8":return new Int8Array(S);case"uchar":case"uint8":return new Uint8Array(S);case"short":case"int16":return new Int16Array(S);case"ushort":case"uint16":return new Uint16Array(S);case"int":case"int32":return new Int32Array(S);case"uint":case"uint32":return new Uint32Array(S);case"float":case"float32":return new Float32Array(S);case"double":case"float64":return new Float64Array(S)}}function d(l,S){const{elements:T,binaryData:A,littleEndian:x}=l,{count:M,properties:D}=S,V=D.length,R=[],E=[],I=new Map,B=[];for(let O=0;O<V;O++)B.push(a(D[O].type,M));const w=new DataView(A.buffer,A.byteOffset);for(let O=0;O<M;O++)for(let F=0;F<V;F++){const{type:L}=D[F];B[F][O]=g(w,l.binaryOffset,L,x),l.binaryOffset+=r.PlyTypeByteLength[L]}for(let O=0;O<V;O++){const{type:F,name:L}=D[O],U=_(F),q=i.Column.ofArray({array:B[O],schema:U});R.push(L),E.push(F),I.set(L,q)}T.push({kind:"table",rowCount:M,propertyNames:R,propertyTypes:E,getProperty:O=>I.get(O)})}function p(l,S){const{elements:T,binaryData:A,littleEndian:x}=l,{count:M,property:D}=S,{countType:V,dataType:R}=D,E=new DataView(A.buffer,A.byteOffset),I=[],B=new Uint32Array(M+1);for(let O=0;O<M;O++){const F=g(E,l.binaryOffset,V,x);l.binaryOffset+=r.PlyTypeByteLength[V],B[O+1]=B[O]+F;for(let L=0;L<F;L++)I.push(g(E,l.binaryOffset,R,x)),l.binaryOffset+=r.PlyTypeByteLength[R]}const w={entries:[],count:0};T.push({kind:"list",rowCount:M,name:D.name,type:D.dataType,value:O=>{const F=B[O],L=B[O+1];w.count=L-F;for(let U=F;U<L;U++)w.entries[U-F]=I[U];return w}})}function u(l,S){const{elements:T,tokenizer:A}=l,{count:x,properties:M}=S,D=M.length,V=[],R=[],E=[],I=new Map;for(let B=0,w=D;B<w;++B){const O=n.TokenBuilder.create(A.data,x*2);E.push(O)}for(let B=0,w=x;B<w;++B)for(let O=0,F=D;O<F;++O)n.Tokenizer.skipWhitespace(A),n.Tokenizer.markStart(A),n.Tokenizer.eatValue(A),n.TokenBuilder.addUnchecked(E[O],A.tokenStart,A.tokenEnd);for(let B=0,w=D;B<w;++B){const{type:O,name:F}=M[B],L=(0,c.TokenColumn)(E[B],_(O));V.push(F),R.push(O),I.set(F,L)}T.push({kind:"table",rowCount:x,propertyNames:V,propertyTypes:R,getProperty:B=>I.get(B)})}function m(l,S){const{elements:T,tokenizer:A}=l,{count:x,property:M}=S,D=n.TokenBuilder.create(A.data,x*2*3),V=new Uint32Array(x+1);let R=0;for(let B=0,w=x;B<w;++B){for(n.Tokenizer.skipWhitespace(A),n.Tokenizer.markStart(A);n.Tokenizer.skipWhitespace(A)!==10;)++R,n.Tokenizer.markStart(A),n.Tokenizer.eatValue(A),n.TokenBuilder.addToken(D,A);V[B+1]=R}const E={entries:[],count:0},I=(0,c.TokenColumn)(D,_(M.dataType));T.push({kind:"list",rowCount:x,name:M.name,type:M.dataType,value:B=>{const w=V[B]+1,O=I.value(w-1);for(let F=w,L=w+O;F<L;++F)E.entries[F-w]=I.value(F);return E.count=O,E}})}async function v(l,S){let T,A,x=0,M;if(l instanceof Uint8Array){x=P(l);const w=(0,o.utf8Read)(l,0,x),O=b(w);M=O,O!=="ascii"?(T=w,A=l):T=(0,o.utf8ReadLong)(l,0,l.length)}else T=l;const D=s(T,S,M);A!==void 0&&(D.binaryData=A,D.binaryOffset=x),S.update({message:"Parsing...",current:0,max:l.length}),f(D),y(D);const{elements:V,elementSpecs:R,comments:E}=D,I=R.map(w=>w.name),B=(0,r.PlyFile)(V,I,E);return e.ReaderResult.success(B)}function b(l){const S=l.indexOf(` 4122`),T=S===-1?"":l.substring(S+1,l.indexOf(` 4123`,S+1)).replace(/\r$/,"");return T==="format binary_little_endian 1.0"?"binary_little_endian":T==="format binary_big_endian 1.0"?"binary_big_endian":"ascii"}function P(l){const S=[101,110,100,95,104,101,97,100,101,114],T=S.length;for(let A=0;A<=l.length-T;A++){if(A!==0&&l[A-1]!==10)continue;let x=!0;for(let D=0;D<T;D++)if(l[A+D]!==S[D]){x=!1;break}if(!x)continue;let M=A+T;return M<l.length&&l[M]===13&&M++,M<l.length&&l[M]===10&&M++,M}throw new Error("no 'end_header' record found")}function C(l){return t.Task.create("Parse PLY",async S=>await v(l,S))}return cP}var uP={},z5;
4123function vie(){if(z5)return uP;z5=1,Object.defineProperty(uP,"__esModule",{value:!0}),uP.parseObj=E;const e=Tr(),t=nt(),r=_t(),n=Or(),i=La(),c=256;function o(I){return{tokenizer:(0,n.Tokenizer)(I),positions:r.ChunkedArray.create(Float32Array,3,1024),normals:r.ChunkedArray.create(Float32Array,3,1024),vertexColors:r.ChunkedArray.create(Float32Array,3,1024),positionIndices:r.ChunkedArray.create(Int32Array,3,1024),normalIndices:r.ChunkedArray.create(Int32Array,3,1024),faceGroups:r.ChunkedArray.create(Int32Array,1,1024),facePos:new Int32Array(c),faceNorm:new Int32Array(c),materialNames:[],materialMap:new Map,currentMaterialIdx:0,hasVertexColors:!1,warnings:[]}}const s=118,h=110,f=102,y=117,_=115,g=101,a=109,d=116,p=108,u=35,m=10,v=13,b=32,P=9,C=47;function l(I){const{data:B}=I;for(;I.position<I.length;){const w=B.charCodeAt(I.position);if(w===m){++I.position,++I.lineNumber;return}if(w===v){++I.position,++I.lineNumber,I.position<I.length&&B.charCodeAt(I.position)===m&&++I.position;return}++I.position}}function S(I){const{data:B}=I;for(;I.position<I.length;){const w=B.charCodeAt(I.position);if(w!==b&&w!==P)return;++I.position}}function T(I){S(I);const{data:B}=I;if(I.position>=I.length)return!1;const w=B.charCodeAt(I.position);if(w===m||w===v||w===u)return!1;for(I.tokenStart=I.position;I.position<I.length;){const O=B.charCodeAt(I.position);if(O===b||O===P||O===m||O===v||O===u)break;++I.position}return I.tokenEnd=I.position,I.tokenEnd>I.tokenStart}function A(I,B,w,O,F,L){const{data:U}=I;let q=0;for(;q<O&&T(I);){const N=I.tokenStart,k=I.tokenEnd;let j=-1;for(let z=N;z<k;++z)if(U.charCodeAt(z)===C){j=z;break}let H,G=-1;if(j===-1){const z=(0,i.parseInt)(U,N,k);H=z<0?F+z:z-1}else{const z=(0,i.parseInt)(U,N,j);H=z<0?F+z:z-1;let W=-1;for(let X=j+1;X<k;++X)if(U.charCodeAt(X)===C){W=X;break}if(W!==-1&&W+1<k){const X=(0,i.parseInt)(U,W+1,k);G=X<0?L+X:X-1}}B[q]=H,w[q]=G,++q}return q}function x(I){const{tokenizer:B}=I;if(T(B)){const w=B.data.substring(B.tokenStart,B.tokenEnd);if(!I.materialMap.has(w)){const O=I.materialNames.length;I.materialMap.set(w,O),I.materialNames.push(w)}I.currentMaterialIdx=I.materialMap.get(w)}l(B)}function M(I){const{tokenizer:B}=I;let w=0,O=0,F=0;T(B)&&(w=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(O=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(F=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),r.ChunkedArray.add3(I.positions,w,O,F);let L=1,U=1,q=1;if(T(B)){const N=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd);if(T(B)){const k=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd);T(B)&&(L=N,U=k,q=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd),I.hasVertexColors=!0)}}r.ChunkedArray.add3(I.vertexColors,L,U,q),l(B)}function D(I){const{tokenizer:B}=I;let w=0,O=0,F=0;T(B)&&(w=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(O=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),T(B)&&(F=(0,i.parseFloat)(B.data,B.tokenStart,B.tokenEnd)),r.ChunkedArray.add3(I.normals,w,O,F),l(B)}function V(I){const{tokenizer:B}=I,w=I.positions.elementCount,O=I.normals.elementCount,F=A(B,I.facePos,I.faceNorm,c,w,O);if(F<3){I.warnings.push(`Line ${B.lineNumber}: degenerate face with ${F} vertices, skipped`),l(B);return}F===c&&T(B)&&I.warnings.push(`Line ${B.lineNumber}: face with more than ${c} vertices truncated`);const L=I.facePos[0],U=I.faceNorm[0],q=I.currentMaterialIdx;for(let N=1;N<F-1;++N)r.ChunkedArray.add3(I.positionIndices,L,I.facePos[N],I.facePos[N+1]),r.ChunkedArray.add3(I.normalIndices,U,I.faceNorm[N],I.faceNorm[N+1]),r.ChunkedArray.add(I.faceGroups,q);l(B)}async function R(I,B){const w=o(I),{tokenizer:O}=w,F=1e5;for(;O.position<O.length;){const G=O.data.charCodeAt(O.position);if(G===m){++O.position,++O.lineNumber;continue}if(G===v){++O.position,++O.lineNumber,O.position<O.length&&O.data.charCodeAt(O.position)===m&&++O.position;continue}if(G===b||G===P){S(O);continue}if(G===u){l(O);continue}const z=O.position+1<O.length?O.data.charCodeAt(O.position+1):-1;if(G===f&&(z===b||z===P))O.position+=2,V(w);else if(G===y){const W=O.position;W+6<O.length&&O.data.charCodeAt(W+1)===_&&O.data.charCodeAt(W+2)===g&&O.data.charCodeAt(W+3)===a&&O.data.charCodeAt(W+4)===d&&O.data.charCodeAt(W+5)===p&&(O.data.charCodeAt(W+6)===b||O.data.charCodeAt(W+6)===P)?(O.position+=7,x(w)):l(O)}else G===s?z===b||z===P?(O.position+=2,M(w)):z===h?(O.position+=2,D(w)):l(O):l(O);B.shouldUpdate&&O.lineNumber%F===0&&await B.update({message:"Parsing OBJ",current:O.position,max:O.length})}const L=r.ChunkedArray.compact(w.positions),U=r.ChunkedArray.compact(w.normals),q=r.ChunkedArray.compact(w.positionIndices),N=r.ChunkedArray.compact(w.normalIndices),k=r.ChunkedArray.compact(w.faceGroups),j=w.hasVertexColors?r.ChunkedArray.compact(w.vertexColors):new Float32Array(0),H={positions:L,normals:U,positionIndices:q,normalIndices:N,positionCount:w.positions.elementCount,normalCount:w.normals.elementCount,triangleCount:q.length/3,vertexColors:j,materialNames:w.materialNames,faceGroups:k};return e.ReaderResult.success(H,w.warnings)}function E(I){return t.Task.create("Parse OBJ",async B=>await R(I,B))}return uP}var lP={},dP={},H5;function bie(){if(H5)return dP;
4123H5=1,Object.defineProperty(dP,"__esModule",{value:!0}),dP.toVtkDataType=t;const e=new Set(["Float32","Float64","Int8","UInt8","Int16","UInt16","Int32","UInt32","Int64","UInt64"]);function t(r){return r!==void 0&&e.has(r)?r:"Float32"}return dP}var tA={},W5;function _ie(){return W5||(W5=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.B64_DECODE=void 0,e.decodeB64Bytes=t,e.decodeB64Str=r,e.B64_DECODE=new Int8Array(256).fill(-1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach((n,i)=>e.B64_DECODE[n.charCodeAt(0)]=i);function t(n,i,c){if(c===0)return new Uint8Array(0);const o=new Uint8Array(c);let s=i,h=0;for(;h<c;){const f=e.B64_DECODE[n[s++]],y=e.B64_DECODE[n[s++]],_=e.B64_DECODE[n[s++]],g=e.B64_DECODE[n[s++]];if(f<0||y<0)break;h<c&&(o[h++]=f<<2|y>>4),_>=0&&h<c&&(o[h++]=(y&15)<<4|_>>2),g>=0&&h<c&&(o[h++]=(_&3)<<6|g)}return o}function r(n,i,c){if(c===0)return new Uint8Array(0);const o=new Uint8Array(c);let s=i,h=0;for(;h<c;){const f=e.B64_DECODE[n.charCodeAt(s++)],y=e.B64_DECODE[n.charCodeAt(s++)],_=e.B64_DECODE[n.charCodeAt(s++)],g=e.B64_DECODE[n.charCodeAt(s++)];if(f<0||y<0)break;h<c&&(o[h++]=f<<2|y>>4),_>=0&&h<c&&(o[h++]=(y&15)<<4|_>>2),g>=0&&h<c&&(o[h++]=(_&3)<<6|g)}return o}})(tA)),tA}var $5;function Sie(){if($5)return lP;$5=1,Object.defineProperty(lP,"__esModule",{value:!0}),lP.parseVtp=I;const e=Tr(),t=nt(),r=iS(),n=bie(),i=La(),c=_ie(),o=Gt(),s=lt();function h(B,w){return{name:B.name,type:B.type,numberOfComponents:B.numberOfComponents,rangeMin:B.rangeMin,rangeMax:B.rangeMax,values:s.Column.ofFloatArray(w)}}function f(B,w){if(B.byteOffset%4===0)return new Float32Array(B.buffer,B.byteOffset,w);const O=B.slice(0,w*4);return new Float32Array(O.buffer,0,w)}function y(B,w){const O=new DataView(B.buffer,B.byteOffset,B.byteLength),F=new Int32Array(w);for(let L=0;L<w;L++)F[L]=O.getUint32(L*8,!0);return F}function _(B,w,O){const F=new DataView(B.buffer,B.byteOffset,B.byteLength);switch(w){case"Float32":return f(B,O);case"Float64":{const L=new Float64Array(O);for(let U=0;U<O;U++)L[U]=F.getFloat64(U*8,!0);return L}case"Int8":{const L=new Int8Array(O);for(let U=0;U<O;U++)L[U]=F.getInt8(U);return L}case"UInt8":{const L=new Uint8Array(O);for(let U=0;U<O;U++)L[U]=F.getUint8(U);return L}case"Int16":{const L=new Int16Array(O);for(let U=0;U<O;U++)L[U]=F.getInt16(U*2,!0);return L}case"UInt16":{const L=new Uint16Array(O);for(let U=0;U<O;U++)L[U]=F.getUint16(U*2,!0);return L}case"Int32":{const L=new Int32Array(O);for(let U=0;U<O;U++)L[U]=F.getInt32(U*4,!0);return L}case"UInt32":{const L=new Uint32Array(O);for(let U=0;U<O;U++)L[U]=F.getUint32(U*4,!0);return L}case"Int64":case"UInt64":{const L=new Float64Array(O);for(let U=0;U<O;U++){const q=F.getUint32(U*8,!0),N=F.getInt32(U*8+4,!0);L[U]=N*4294967296+q}return L}default:return(0,o.assertUnreachable)(w)}}function g(B,w,O){return w==="Float32"?f(B,O):new Float32Array(_(B,w,O))}function a(B,w){if(w==="Int64"||w==="UInt64")return y(B,B.byteLength/8);if(w==="Int32"||w==="UInt32"){if(B.byteOffset%4===0)return new Int32Array(B.buffer,B.byteOffset,B.byteLength/4);const O=B.slice();return new Int32Array(O.buffer,0,O.byteLength/4)}throw new Error(`Unsupported connectivity type: "${w}". Expected Int32, UInt32, Int64, or UInt64.`)}function d(B,w,O=0){const F=w.split("").map(U=>U.charCodeAt(0)),L=F.length;for(let U=O,q=B.length-L;U<=q;U++){let N=!0;for(let k=0;k<L;k++)if(B[U+k]!==F[k]){N=!1;break}if(N)return U}return-1}function p(B){var w,O,F;const L=d(B,"<AppendedData");if(L===-1)throw new Error("AppendedData section not found");let U=L;for(;U<B.length&&B[U]!==62;)U++;const q=new TextDecoder("ascii").decode(B.subarray(L,U+1)),{attrs:N}=v(q,13),k=((w=N.get("encoding"))!==null&&w!==void 0?w:"raw").toLowerCase();for(U++;U<B.length&&(B[U]===32||B[U]===9||B[U]===10||B[U]===13);)U++;if(U>=B.length||B[U]!==95)throw new Error(`Expected '_' before appended data, got 0x${(F=(O=B[U])===null||O===void 0?void 0:O.toString(16))!==null&&F!==void 0?F:"EOF"}`);const j=U+1;return{encoding:k,rawByteStart:j,rawData:B}}function u(B){return B===32||B===9||B===10||B===13}function m(B,w,O){const F="<"+w,L=F.length;e:for(let U=O,q=B.length-L;U<=q;
4123U++){if(B.charCodeAt(U)!==60)continue;for(let k=1;k<L;k++)if(B.charCodeAt(U+k)!==F.charCodeAt(k))continue e;const N=B.charCodeAt(U+L);if(u(N)||N===62||N===47)return U}return-1}function v(B,w){const O=new Map,F=B.length;for(;w<F;){for(;w<F&&u(B.charCodeAt(w));)w++;const L=B.charCodeAt(w);if(L===62||L===47)break;const U=w;for(;w<F&&B.charCodeAt(w)!==61&&!u(B.charCodeAt(w))&&B.charCodeAt(w)!==62&&B.charCodeAt(w)!==47;)w++;const q=B.slice(U,w);for(;w<F&&u(B.charCodeAt(w));)w++;for(w<F&&B.charCodeAt(w)===61&&w++;w<F&&u(B.charCodeAt(w));)w++;if(w<F&&(B.charCodeAt(w)===34||B.charCodeAt(w)===39)){const N=B.charCodeAt(w++),k=w;for(;w<F&&B.charCodeAt(w)!==N;)w++;q&&O.set(q,B.slice(k,w)),w<F&&w++}}return{attrs:O,tagEnd:w}}function b(B,w){var O,F,L;const U=m(B,w,0);if(U===-1)return[];let q=U+1+w.length;for(;q<B.length&&B.charCodeAt(q)!==62;)q++;q++;const N=B.indexOf("</"+w+">",q);if(N===-1)return[];const k=[];for(;q<N;){const j=m(B,"DataArray",q);if(j===-1||j>=N)break;const{attrs:H,tagEnd:G}=v(B,j+10);let z="",W;if(B.charCodeAt(G)===47)W=G+2;else{W=G+1;const te=B.indexOf("</DataArray>",W);te!==-1?(z=B.slice(W,te),W=te+12):W=N}q=W;const X=(O=H.get("format"))!==null&&O!==void 0?O:"binary",Y=H.get("offset"),K=X==="binary"?z.replace(/\s/g,""):"",Q=X==="ascii"?z:void 0;if(X==="appended"&&Y===void 0||X==="binary"&&K.length===0)continue;const J=H.get("RangeMin"),ae=H.get("RangeMax");k.push({name:(F=H.get("Name"))!==null&&F!==void 0?F:"",type:(0,n.toVtkDataType)(H.get("type")),numberOfComponents:parseInt((L=H.get("NumberOfComponents"))!==null&&L!==void 0?L:"1",10),format:X,offset:Y!==void 0?parseInt(Y,10):-1,rangeMin:J!==void 0?parseFloat(J):void 0,rangeMax:ae!==void 0?parseFloat(ae):void 0,...K.length>0?{inlineBase64:K}:{},...Q!==void 0?{asciiText:Q}:{}})}return k}function P(B){var w,O,F,L,U;const q=m(B,"VTKFile",0);if(q===-1)throw new Error("Cannot find VTKFile element in VTP header");const{attrs:N}=v(B,q+8),k=m(B,"Piece",0);if(k===-1)throw new Error("Cannot find Piece element in VTP header");const{attrs:j}=v(B,k+6),H=j.get("NumberOfPoints"),G=j.get("NumberOfPolys");if(!H||!G)throw new Error("Cannot parse NumberOfPoints/NumberOfPolys from VTP Piece element");return{nPoints:parseInt(H,10),nCells:parseInt(G,10),nVerts:parseInt((w=j.get("NumberOfVerts"))!==null&&w!==void 0?w:"0",10),nLines:parseInt((O=j.get("NumberOfLines"))!==null&&O!==void 0?O:"0",10),nStrips:parseInt((F=j.get("NumberOfStrips"))!==null&&F!==void 0?F:"0",10),byteOrder:(L=N.get("byte_order"))!==null&&L!==void 0?L:"LittleEndian",compressor:(U=N.get("compressor"))!==null&&U!==void 0?U:"",headerType:N.get("header_type")==="UInt64"?"UInt64":"UInt32",pointDataArrays:b(B,"PointData"),cellDataArrays:b(B,"CellData"),pointsArrays:b(B,"Points"),polysArrays:b(B,"Polys")}}async function C(B,w,O,F,L="UInt32",U=!0){const q=L==="UInt64"?8:4,N=O+F;if(!U){const ie=(0,c.decodeB64Bytes)(w,N,q),Z=new DataView(ie.buffer,ie.byteOffset,q).getUint32(0,!0);return(0,c.decodeB64Bytes)(w,N+Math.ceil(q/3)*4,Z)}const k=(0,c.decodeB64Bytes)(w,N,3*q),j=new DataView(k.buffer,k.byteOffset,3*q),H=j.getUint32(0,!0),G=j.getUint32(q,!0),z=j.getUint32(2*q,!0);if(H===0)return new Uint8Array(0);const W=(3+H)*q,X=(0,c.decodeB64Bytes)(w,N,W),Y=new DataView(X.buffer,X.byteOffset,X.byteLength),K=new Uint32Array(H);let Q=0;for(let ie=0;ie<H;ie++)K[ie]=Y.getUint32((3+ie)*q,!0),Q+=K[ie];const J=(0,c.decodeB64Bytes)(w,N+Math.ceil(W/3)*4,Q),ae=z>0?(H-1)*G+z:H*G,te=new Uint8Array(ae);let ne=0,$=0;for(let ie=0;ie<H;ie++){const Z=K[ie],re=await(0,r.inflate)(B,new Uint8Array(J.buffer,J.byteOffset+ne,Z));te.set(re,$),$+=re.length,ne+=Z}return te}async function l(B,w,O,F="UInt32",L=!0){const U=F==="UInt64"?8:4;if(!L){const ne=(0,c.decodeB64Str)(w,O,U),$=new DataView(ne.buffer,ne.byteOffset,U).getUint32(0,!0);return(0,c.decodeB64Str)(w,O+Math.ceil(U/3)*4,$)}const q=(0,c.decodeB64Str)(w,O,3*U),N=new DataView(q.buffer,q.byteOffset,3*U),k=N.getUint32(0,!0),j=N.getUint32(U,!0),H=N.getUint32(2*U,!0);if(k===0)return new Uint8Array(0);const G=(3+k)*U,z=(0,c.decodeB64Str)(w,O,G),W=new DataView(z.buffer,z.byteOffset,z.byteLength),X=new Uint32Array(k);let Y=0;for(let ne=0;ne<k;ne++)X[ne]=W.getUint32((3+ne)*U,!0),Y+=X[ne];const K=(0,c.decodeB64Str)(w,O+Math.ceil(G/3)*4,Y),Q=H>0?(k-1)*j+H:k*j,J=new Uint8Array(Q);let ae=0,te=0;for(let ne=0;ne<k;ne++){const $=X[ne],ie=await(0,r.inflate)(B,new Uint8Array(K.buffer,K.byteOffset+ae,$));J.set(ie,te),te+=ie.length,ae+=$}return J}async function S(B,w,O,F,L="UInt32",U=!0){const q=L==="UInt64"?8:4,N=O+F,k=new DataView(w.buffer,w.byteOffset,w.b
4123yteLength);if(!U){const J=k.getUint32(N,!0);return new Uint8Array(w.buffer,w.byteOffset+N+q,J).slice()}const j=k.getUint32(N,!0),H=k.getUint32(N+q,!0),G=k.getUint32(N+2*q,!0);if(j===0)return new Uint8Array(0);const z=(3+j)*q,W=new Uint32Array(j);for(let J=0;J<j;J++)W[J]=k.getUint32(N+(3+J)*q,!0);const X=G>0?(j-1)*H+G:j*H,Y=new Uint8Array(X);let K=N+z,Q=0;for(let J=0;J<j;J++){const ae=W[J],te=new Uint8Array(w.buffer,w.byteOffset+K,ae),ne=await(0,r.inflate)(B,te);Y.set(ne,Q),Q+=ne.length,K+=ae}return Y}async function T(B,w,O,F,L){if(O.inlineBase64)return l(B,O.inlineBase64,0,F,L);if(!w)throw new Error(`No data source for array "${O.name}"`);return w.encoding==="base64"?C(B,w.rawData,w.rawByteStart,O.offset,F,L):S(B,w.rawData,w.rawByteStart,O.offset,F,L)}function A(B,w,O,F){let L=0,U=0;const q=B.length;for(;L<q&&U<O;){for(;L<q&&u(B.charCodeAt(L));)L++;if(L>=q)break;const N=L;for(;L<q&&!u(B.charCodeAt(L));)L++;L>N&&(w[U++]=F?(0,i.parseInt)(B,N,L):(0,i.parseFloat)(B,N,L))}}function x(B,w){const O=new Float32Array(w);return A(B,O,w,!1),O}function M(B,w){const O=new Float64Array(w);return A(B,O,w,!1),O}function D(B,w){const O=new Int32Array(w);return A(B,O,w,!0),O}function V(B){let w=0,O=0;const F=B.length;for(;O<F;){for(;O<F&&u(B.charCodeAt(O));)O++;if(O>=F)break;for(w++;
4123O<F&&!u(B.charCodeAt(O));)O++}const L=new Int32Array(w);return A(B,L,w,!0),L}function R(B,w,O){let F=0;for(let k=0;k<O;k++){const j=k>0?w[k-1]:0;F+=Math.max(0,w[k]-j-2)}const L=new Int32Array(3*F),U=new Int32Array(F);let q=0,N=0;for(let k=0;k<O;k++){const j=k>0?w[k-1]:0,H=w[k],G=B[j];for(let z=j+1;z<H-1;z++)L[q++]=G,L[q++]=B[z],L[q++]=B[z+1],U[N++]=k}return{connectivity:L,triangleCellIndex:U}}async function E(B,w){var O,F,L,U,q,N;w.update({message:"Parsing VTP header...",current:0,max:100});const k=d(B,"<AppendedData"),j=k===-1,H=new TextDecoder("ascii").decode(j?B:B.subarray(0,k)),G=P(H);if(G.byteOrder==="BigEndian")throw new Error("BigEndian VTP files are not supported.");if(G.compressor&&G.compressor!=="vtkZLibDataCompressor")throw new Error(`Unsupported VTP compressor: "${G.compressor}". Only vtkZLibDataCompressor is supported.`);G.nVerts+G.nLines+G.nStrips>0&&console.warn(`VTP: file contains ${G.nVerts} verts, ${G.nLines} lines, ${G.nStrips} strips â only Polys are rendered.`);const z=G.headerType,W=!!G.compressor;w.update({message:"Locating binary section...",current:5,max:100});const X=j?null:p(B),Y=(O=G.pointsArrays.find(oe=>oe.name==="Points"))!==null&&O!==void 0?O:G.pointsArrays[0];if(!Y)throw new Error("VTP file missing Points DataArray");w.update({message:"Decoding positions...",current:10,max:100});let K;if(Y.format==="ascii")K=x((F=Y.asciiText)!==null&&F!==void 0?F:"",G.nPoints*3);else{const oe=await T(w,X,Y,z,W);K=g(oe,Y.type,G.nPoints*3)}const Q=G.polysArrays.find(oe=>oe.name==="connectivity"),J=G.polysArrays.find(oe=>oe.name==="offsets");if(!Q||!J)throw new Error("VTP file missing Polys connectivity/offsets DataArrays");w.update({message:"Decoding topology...",current:20,max:100});let ae,te;if(Q.format==="ascii")ae=V((L=Q.asciiText)!==null&&L!==void 0?L:""),te=D((U=J.asciiText)!==null&&U!==void 0?U:"",G.nCells);else{const oe=await T(w,X,Q,z,W),ce=await T(w,X,J,z,W);ae=a(oe,Q.type),te=a(ce,J.type)}const{connectivity:ne,triangleCellIndex:$}=R(ae,te,G.nCells),ie=ne.length/3,Z=new Map;for(let oe=0;oe<G.pointDataArrays.length;oe++){const ce=G.pointDataArrays[oe],ue=G.nPoints*ce.numberOfComponents;w.update({message:`Point data: ${ce.name}...`,current:30+Math.floor(oe/Math.max(1,G.pointDataArrays.length)*30),max:100});let pe;if(ce.format==="ascii")pe=M((q=ce.asciiText)!==null&&q!==void 0?q:"",ue);else{const he=await T(w,X,ce,z,W);pe=_(he,ce.type,ue)}Z.set(ce.name,h(ce,pe))}const re=new Map;for(let oe=0;oe<G.cellDataArrays.length;oe++){const ce=G.cellDataArrays[oe],ue=G.nCells*ce.numberOfComponents;w.update({message:`Cell data: ${ce.name}...`,current:60+Math.floor(oe/Math.max(1,G.cellDataArrays.length)*35),max:100});let pe;if(ce.format==="ascii")pe=M((N=ce.asciiText)!==null&&N!==void 0?N:"",ue);else{const he=await T(w,X,ce,z,W);pe=_(he,ce.type,ue)}re.set(ce.name,h(ce,pe))}return e.ReaderResult.success({numberOfPoints:G.nPoints,numberOfCells:G.nCells,positions:K,connectivity:ne,numberOfTriangles:ie,triangleCellIndex:$,pointData:Z,cellData:re})}function I(B){return t.Task.create("Parse VTP",async w=>await E(B,w))}return lP}var fP={},X5;function Cie(){if(X5)return fP;X5=1,Object.defineProperty(fP,"__esModule",{value:!0}),fP.parsePsf=m;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer,y=/\s+/,_=/(^\*|REMARK)*/;function g(v,b){return{tokenizer:v,runtimeCtx:b}}async function a(v,b){const{tokenizer:P}=v,C=t.TokenBuilder.create(P.data,b*2),l=t.TokenBuilder.create(P.data,b*2),S=t.TokenBuilder.create(P.data,b*2),T=t.TokenBuilder.create(P.data,b*2),A=t.TokenBuilder.create(P.data,b*2),x=t.TokenBuilder.create(P.data,b*2),M=t.TokenBuilder.create(P.data,b*2),D=t.TokenBuilder.create(P.data,b*2),{position:V}=P,R=c(P).trim();P.position=V;const E=R.split(y).length===7,I=E?6:8,{length:B}=P;let w=0;return await(0,e.chunkedSubtask)(v.runtimeCtx,1e5,void 0,O=>{const F=Math.min(b-w,O);for(let L=0;L<F;++L){for(let U=0;U<I;++U)if(o(P),f(P),s(P),E)switch(U){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(S,P.tokenStart,P.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(A,P.tokenStart,P.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(x,P.tokenStart,P.tokenEnd);break;case 4:t.TokenBuilder.addUnchecked(M,P.tokenStart,P.tokenEnd);break;case 5:t.TokenBuilder.addUnchecked(D,P.tokenStart,P.tokenEnd);break}else switch(U){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(l,P.tokenStart,P.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(S,P.tokenStart,P.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(T,P.tokenStart,P.tokenEnd);break;case 4:t.TokenBuilder.addUnchecked(A,P.tokenStart,P.tokenEnd);break;case 5:t.TokenBuilder.addUnchecked(x,P.tokenStart,P.tokenEnd);break;case 6:t.TokenBuilder.addUnchecked(M,P.tokenStart,P.tokenEnd);break;case 7:t.TokenBuilder.addUnchecked(D,P.tokenStart,P.tokenEnd);break}h(P),f(P)}return w+=F,F},O=>O.update({message:"Parsing...",current:P.position,max:B}
4123)),{count:b,atomId:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),segmentName:E?(0,n.TokenColumnProvider)(S)(i.Column.Schema.str):(0,n.TokenColumnProvider)(l)(i.Column.Schema.str),residueId:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),residueName:E?(0,n.TokenColumnProvider)(S)(i.Column.Schema.str):(0,n.TokenColumnProvider)(T)(i.Column.Schema.str),atomName:(0,n.TokenColumnProvider)(A)(i.Column.Schema.str),atomType:(0,n.TokenColumnProvider)(x)(i.Column.Schema.str),charge:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float),mass:(0,n.TokenColumnProvider)(D)(i.Column.Schema.float)}}async function d(v,b){const{tokenizer:P}=v,C=t.TokenBuilder.create(P.data,b*2),l=t.TokenBuilder.create(P.data,b*2),{length:S}=P;let T=0;return await(0,e.chunkedSubtask)(v.runtimeCtx,10,void 0,A=>{const x=Math.min(b-T,A);for(let M=0;M<x;++M)for(let D=0;D<2;++D)switch(o(P),f(P),s(P),D){case 0:t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(l,P.tokenStart,P.tokenEnd);break}return T+=x,x},A=>A.update({message:"Parsing...",current:P.position,max:S})),{count:b,atomIdA:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),atomIdB:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int)}}function p(v,b){const P=[];for(let C=0;C<b;++C){const l=c(v.tokenizer);P.push(l.replace(_,"").trim())}return P}async function u(v,b){const P=(0,t.Tokenizer)(v),C=g(P,b);let l,S,T;const A=c(C.tokenizer).trim();for(;P.tokenEnd<P.length;){const M=c(C.tokenizer).trim();if(M.includes("!NTITLE")){const D=parseInt(M.split(y)[0]);l=p(C,D)}else if(M.includes("!NATOM")){const D=parseInt(M.split(y)[0]);S=await a(C,D)}else if(M.includes("!NBOND")){const D=parseInt(M.split(y)[0]);T=await d(C,D);break}else M.includes("!NTHETA")||M.includes("!NPHI")||M.includes("!NIMPHI")||M.includes("!NDON")||M.includes("!NACC")||M.includes("!NNB")||M.includes("!NGRP NST2")||M.includes("!MOLNT")||M.includes("!NUMLP NUMLPH")||M.includes("!NCRTERM")}if(l===void 0&&(l=[]),S===void 0)return r.ReaderResult.error("no atoms data");if(T===void 0)return r.ReaderResult.error("no bonds data");const x={id:A,title:l,atoms:S,bonds:T};return r.ReaderResult.success(x)}function m(v){return e.Task.create("Parse PSF",async b=>await u(v,b))}return fP}var mP={},q1={},K5;function Pie(){if(K5)return q1;K5=1,Object.defineProperty(q1,"__esModule",{value:!0}),q1.asciiWrite=e,q1.asciiSlice=t;function e(r,n){for(let i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i)}function t(r,n,i){let c="";for(let o=n;o<i;o++)c+=String.fromCharCode(r[o]);return c}return q1}var Y5;function Tie(){if(Y5)return mP;Y5=1,Object.defineProperty(mP,"__esModule",{value:!0}),mP.parseMtz=f;const e=nt(),t=Tr(),r=NS(),n=Pie();function i(y){return y.replace(/\s+$/,"").replace(/\0/g,"").trim()}function c(y,_){const g=y[8],a=y[9];
4123if(g===68&&a===65)return!0;if(g===17&&a===17)return!1;const d=new DataView(y.buffer,y.byteOffset),p=d.getInt32(4,!0),u=d.getInt32(4,!1),m=_/4|0,v=p>=21&&p<=m,b=u>=21&&u<=m;return v&&!b?!0:!(b&&!v)}function o(y){var _;const g=y.trim().split(/\s+/),a=parseInt(g[0],10)||1,d=parseInt(g[3],10)||1,p=y.indexOf("'"),u=y.lastIndexOf("'"),m=p>=0&&u>p?y.slice(p+1,u):(_=g[4])!==null&&_!==void 0?_:"P 1";return{nsym:a,spgno:d,spgname:m}}function s(y,_){var g;const a=y.trim().split(/\s+/),d=a.length,p=parseInt(a[d-1],10)||0,u=parseFloat(a[d-2]),m=parseFloat(a[d-3]),v=(g=a[d-4])!==null&&g!==void 0?g:"R",b=a.slice(0,d-4).join(" ");return{label:i(b),type:v,min:m,max:u,datasetId:p,index:_}}function h(y){var _,g,a,d,p,u;const m=y.trim().split(/\s+/).map(Number);return[(_=m[0])!==null&&_!==void 0?_:0,(g=m[1])!==null&&g!==void 0?g:0,(a=m[2])!==null&&a!==void 0?a:0,(d=m[3])!==null&&d!==void 0?d:90,(p=m[4])!==null&&p!==void 0?p:90,(u=m[5])!==null&&u!==void 0?u:90]}function f(y,_){return e.Task.create("Parse MTZ",async g=>{var a;try{if(y.length<80)return t.ReaderResult.error("MTZ file too small to be valid.");if((0,n.asciiSlice)(y,0,4).slice(0,3)!=="MTZ")return t.ReaderResult.error("Not an MTZ file: magic bytes mismatch.");const p=c(y,y.length),u=new DataView(y.buffer,y.byteOffset),m=k=>u.getInt32(k,p),v=k=>u.getFloat32(k,p),b=m(4),P=(b-1)*4;if(P<=0||P>=y.length)return t.ReaderResult.error(`MTZ header position out of range: word ${b}`);await g.update({message:"Reading MTZ header..."});let C="",l=0,S=0,T=0,A="",x=[1,1,1,90,90,90],M=1,D="P 1",V=1,R=NaN;const E=[],I=[],B=[],w=new Map;let O=P;for(;O+80<=y.length;){const k=(0,n.asciiSlice)(y,O,O+80);O+=80;const j=k.indexOf(" "),H=(j>=0?k.slice(0,j):k).trim(),G=j>=0?k.slice(j+1):"";if(H==="END")break;switch(H){case"VERS":C=i(G);break;case"TITLE":case"TITL":A=i(G);break;case"NCOL":{const z=G.trim().split(/\s+/);l=parseInt(z[0],10)||0,S=parseInt(z[1],10)||0,T=parseInt(z[2],10)||0;break}case"CELL":x=h(G);break;case"SYMINF":case"SYMI":{const z=o(G);V=z.nsym,M=z.spgno,D=z.spgname;break}case"SYMM":E.push(i(G));break;case"COLUMN":case"COL":{const z=s(G,I.length);I.push(z);break}case"VALM":{const z=parseFloat(G.trim());R=isNaN(z)?NaN:z;break}case"PROJECT":case"PROJ":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).project=z.slice(1).join(" ");break}case"CRYSTAL":case"CRYS":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).crystal=z.slice(1).join(" ");break}case"DATASET":case"DATA":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).name=z.slice(1).join(" ");break}case"DCELL":case"DCEL":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).cell=h(z.slice(1).join(" "));break}case"DWAVEL":case"DWAV":{const z=G.trim().split(/\s+/),W=parseInt(z[0],10)||0;w.has(W)||w.set(W,{id:W,project:"",crystal:"",name:""}),w.get(W).wavelength=parseFloat(z[1])||void 0;break}}}for(const k of w.values())B.push(k);if(B.sort((k,j)=>k.id-j.id),l===0||S===0)return t.ReaderResult.error(`MTZ header did not contain valid NCOL record (nColumns=${l}, nReflections=${S}).`);await g.update({message:"Reading MTZ reflection data..."});const F=80,L=S*l,U=F+L*4;if(U>y.length)return t.ReaderResult.error(`MTZ file truncated: expected ${U} bytes for ${S} Ã ${l} reflections, got ${y.length}.`);const q=new Float32Array(L);if(p===r.SimpleBuffer.IsNativeEndianLittle){const k=new Float32Array(y.buffer,y.byteOffset+F,L);q.set(k)}else for(let k=0;k<L;k++)q[k]=v(F+k*4);const N={version:C,title:A,nColumns:l,nReflections:S,nBatches:T,cell:x,spaceGroupNumber:M,spaceGroupName:D,nSymOps:V,symops:E,columns:I,datasets:B,missingNumber:R};return t.ReaderResult.success({name:_,header:N,data:q})}catch(d){return t.ReaderResult.error((a=d?.message)!==null&&a!==void 0?a:String(d))}})}return mP}var pP={},Q5;function xie(){if(Q5)return pP;Q5=1,Object.defineProperty(pP,"__esModule",{value:!0}),pP.parseCube=y;const e=Ge(),t=Or(),r=lt(),n=nt(),i=Tr(),c=La(),o=.529177210859;function s(_){const g=t.Tokenizer.readLines(_,6),a=(V,R)=>{const E=+g[V].trim().split(/\s+/g)[R];return Number.isNaN(E)?0:E},d=V=>{const R=a(V+2,0),E=o;return[Math.abs(R),e.Vec3.create(a(V+2,1)*E,a(V+2,2)*E,a(V+2,3)*E),R]},p=g[0].trim(),u=g[1].trim(),[m,v,b]=d(0),[P,C]=d(1),[l,S]=d(2),[T,A]=d(3),x=h(_,m,o),M=[];if(b>=0){let V=a(2,4);V===0&&(V=1);for(let R=0;R<V;R++)M.push(R)}else{const V=t.Tokenizer.readLine(_).trim().split(/\s+/g);for(let R=0,E=+V[0];R<E;R++)M.push(+V[R+1])}return{header:{orbitals:b<0,comment1:p,comment2:u,atomCount:m,origin:v,dim:e.Vec3.create(P,l,T),basisX:C,basisY:S,basisZ:A,dataSetIds:M},atoms:x}}function h(_,g,a){const d=new Int32Array(g),p=new Float64Array(g),u=new Float32Array(g),m=new Float32Array(g),v=new Float32Array(g);for(let b=0;b<g;b++){const P=t.Tokenizer.readLine(_).trim().split(/\s+/g);d[b]=+P[0],p[b]=+P[1],u[b]=+P[2]*a,m[b]=+P[3]*a,v[b]=+P[4]*a}return{count:g,number:r.Column.ofArray({array:d,schema:r.Column.Schema.int}),nuclearCharge:r.Column.ofArray({array:p,schema:r.Column.Schema.float}),x:r.Column.ofArray({array:u,schema:r.Column.Schema.float}),y:r.Column.ofArray({array:m,schema:r.Column.Schema.float}),z:r.Column.ofArray({array:v,schema:r.Column.Schema.float})}}function f(_,g,a){const d=a.dim[0]*a.dim[1]*a.dim[2]*a.dataSetIds.length,p=1e4*100,u=new Float64Array(d);let m=0;return(0,n.chunkedSubtask)(_,p,u,(v,b)=>{const P=Math.min(d,m+v);for(let C=m;C<P;C++)t.Tokenizer.skipWhitespace(g),g.tokenStart=g.position,t.Tokenizer.eatValue(g),b[C]=(0,c.parseFloat)(g.data,g.tokenStart,g.tokenEnd);return m=P,P===d?0:p},(v,b,P)=>v.update({current:Math.min(P,d),max:d}))}function y(_,g){return n.Task.create("Parse Cube",async a=>{await a.update("Reading header...");const d=(0,t.Tokenizer)(_),{header:p,atoms:u}=s(d),m=await f(a,d,p);return i.ReaderResult.success({header:p,atoms:u,values:m,name:g})})}return pP}var hP={},Z5;
4123function Aie(){if(Z5)return hP;Z5=1,Object.defineProperty(hP,"__esModule",{value:!0}),hP.parseDx=_;const e=Ge(),t=nt(),r=nS(),n=$s(),i=La(),c=Or(),o=Tr();function s(g){const a={h:(0,e.Vec3)()};let d=0,p=0;const u=/\s+/g;for(;;){const m=c.Tokenizer.readLine(g);let v;if(m.startsWith("object 1"))v=m.split(u),a.dim=e.Vec3.create(parseInt(v[5]),parseInt(v[6]),parseInt(v[7]));else if(m.startsWith("origin"))v=m.split(u),a.min=e.Vec3.create(parseFloat(v[1]),parseFloat(v[2]),parseFloat(v[3]));else if(m.startsWith("delta"))v=m.split(u),p===0?a.h[0]=parseFloat(v[1]):p===1?a.h[1]=parseFloat(v[2]):p===2&&(a.h[2]=parseFloat(v[3])),p+=1;else if(m.startsWith("object 3")){d+=m.length+1;break}d+=m.length+1}return{header:a,headerByteCount:d}}function h(g,a,d){const p=d.dim[0]*d.dim[1]*d.dim[2],u=1e4*100,m=new Float64Array(p);let v=0;return(0,t.chunkedSubtask)(g,u,m,(b,P)=>{const C=Math.min(p,v+b);for(let l=v;l<C;l++)c.Tokenizer.skipWhitespace(a),a.tokenStart=a.position,c.Tokenizer.eatValue(a),P[l]=(0,i.parseFloat)(a.data,a.tokenStart,a.tokenEnd);return v=C,C===p?0:u},(b,P,C)=>b.update({current:Math.min(C,p),max:p}))}async function f(g,a,d){await g.update("Reading header...");const p=(0,c.Tokenizer)(a),{header:u}=s(p);await g.update("Reading values...");const m=await h(g,p,u);return o.ReaderResult.success({header:u,values:m,name:d})}async function y(g,a,d){await g.update("Reading header...");const p=(0,n.utf8Read)(a,0,1e3),u=(0,c.Tokenizer)(p),{header:m,headerByteCount:v}=s(u);await g.update("Reading values...");const b=m.dim[0]*m.dim[1]*m.dim[2],P=new DataView(a.buffer,a.byteOffset+v),C=new Float64Array(b);for(let l=0;l<b;l++)C[l]=P.getFloat64(l*8,!0);return o.ReaderResult.success({header:m,values:C,name:d})}function _(g,a){return t.Task.create("Parse DX",d=>r.StringLike.is(g)?f(d,g,a):y(d,g,a))}return hP}var gP={},J5;function Mie(){if(J5)return gP;J5=1,Object.defineProperty(gP,"__esModule",{value:!0}),gP.parsePrmtop=p;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),o=Object.keys({NATOM:"",NTYPES:"",NBONH:"",MBONA:"",NTHETH:"",MTHETA:"",NPHIH:"",MPHIA:"",NHPARM:"",NPARM:"",NNB:"",NRES:"",NBONA:"",NTHETA:"",NPHIA:"",NUMBND:"",NUMANG:"",NPTRA:"",NATYP:"",NPHB:"",IFPERT:"",NBPER:"",NGPER:"",NDPER:"",MBPER:"",MGPER:"",MDPER:"",IFBOX:"",NMXRS:"",IFCAP:"",NUMEXTRA:"",NCOPY:""}),{readLine:s,markLine:h,trim:f}=t.Tokenizer;function y(u,m){return{tokenizer:u,runtimeCtx:m}}function _(u){const{tokenizer:m}=u,v=[];for(;m.tokenEnd<m.length&&m.data.charAt(m.position)!=="%";){const b=s(m).trim();b&&v.push(b)}return v}function g(u){const{tokenizer:m}=u,v=Object.create(null);o.forEach(P=>{v[P]=0});let b=0;for(;m.tokenEnd<m.length&&m.data.charAt(m.position)!=="%";){const P=s(m),C=Math.min(b+10,32);for(let l=0;b<C;++l,++b)v[o[b]]=parseInt(P.substring(l*8,l*8+8).trim())}return v}function a(u,m,v,b){const{tokenizer:P}=u,C=t.TokenBuilder.create(P.data,m*2);let l=0;for(;P.tokenEnd<P.length&&P.data.charAt(P.position)!=="%";){P.tokenStart=P.position;const S=Math.min(l+v,m);for(let T=0;l<S;++T,++l){const A=P.position;f(P,P.position,P.position+b),t.TokenBuilder.addUnchecked(C,P.tokenStart,P.tokenEnd),P.position=A+b}h(P)}return C}async function d(u,m){const v=(0,t.Tokenizer)(u),b=y(v,m),P=Object.create(null);let C=0;for(;v.tokenEnd<v.length;){v.position-C>1e5&&m.shouldUpdate&&(C=v.position,await m.update({current:v.position,max:v.length}));const l=s(b.tokenizer).trim();if(l.startsWith("%VERSION"))P.version=l.substring(8).trim();else if(l.startsWith("%FLAG")){const S=l.substring(5).trim();let T=s(b.tokenizer).trim();for(;T.startsWith("%COMMENT");)T=s(b.tokenizer).trim();if(!T.startsWith("%FORMAT"))throw new Error(`expected %FORMAT got "${T}"`);if(S==="TITLE"||S==="CTITLE")P.title=_(b);else if(S==="POINTERS")P.pointers=g(b);else if(S==="ATOM_NAME"){const A=a(b,P.pointers.NATOM,20,4);P.atomName=(0,n.TokenColumnProvider)(A)(i.Column.Schema.str)}else if(S==="CHARGE"){const A=a(b,P.pointers.NATOM,5,16);P.charge=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else if(S==="MASS"){const A=a(b,P.pointers.NATOM,5,16);P.mass=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else if(S==="RESIDUE_LABEL"){const A=a(b,P.pointers.NRES,20,4);
4123P.residueLabel=(0,n.TokenColumnProvider)(A)(i.Column.Schema.str)}else if(S==="RESIDUE_POINTER"){const A=a(b,P.pointers.NRES,10,8);P.residuePointer=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="BONDS_INC_HYDROGEN"){const A=a(b,P.pointers.NBONH*3,10,8);P.bondsIncHydrogen=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="BONDS_WITHOUT_HYDROGEN"){const A=a(b,P.pointers.NBONA*3,10,8);P.bondsWithoutHydrogen=(0,n.TokenColumnProvider)(A)(i.Column.Schema.int)}else if(S==="RADII"){const A=a(b,P.pointers.NATOM,5,16);P.radii=(0,n.TokenColumnProvider)(A)(i.Column.Schema.float)}else for(;v.tokenEnd<v.length&&v.data.charAt(v.position)!=="%";)h(v)}}return r.ReaderResult.success(P)}function p(u){return e.Task.create("Parse PRMTOP",async m=>await d(u,m))}return gP}var yP={},eG;function Die(){if(eG)return yP;eG=1,Object.defineProperty(yP,"__esModule",{value:!0}),yP.parseTop=S;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),c={nr:i.Column.Schema.Int(),type:i.Column.Schema.Str(),resnr:i.Column.Schema.Int(),residu:i.Column.Schema.Str(),atom:i.Column.Schema.Str(),cgnr:i.Column.Schema.Int(),charge:i.Column.Schema.Float(),mass:i.Column.Schema.Float()},o={ai:i.Column.Schema.Int(),aj:i.Column.Schema.Int()},s={compound:i.Column.Schema.Str(),molCount:i.Column.Schema.Int()},{readLine:h,markLine:f,skipWhitespace:y,markStart:_,eatValue:g,eatLine:a}=t.Tokenizer;function d(T,A){return{tokenizer:T,runtimeCtx:A}}const p=/\[ (.+) \]/,u=/\s+/;function m(T){const{tokenizer:A}=T;let x;for(;A.tokenEnd<A.length;){y(A);const M=A.data.charAt(A.position);if(M==="[")break;if(M===";"||M==="*"){f(A);continue}if(x!==void 0)throw new Error("more than one molName");x=h(A).split(u)[0]}if(x===void 0)throw new Error("missing molName");return x}function v(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64),D=t.TokenBuilder.create(A.data,64),V=t.TokenBuilder.create(A.data,64),R=t.TokenBuilder.create(A.data,64),E=t.TokenBuilder.create(A.data,64),I=t.TokenBuilder.create(A.data,64),B=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length;){y(A);const w=A.data.charAt(A.position);if(w==="[")break;if(w===";"||w==="*"){f(A);continue}for(let O=0;O<8;++O)switch(y(A),_(A),g(A),O){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break;case 2:t.TokenBuilder.add(D,A.tokenStart,A.tokenEnd);break;case 3:t.TokenBuilder.add(V,A.tokenStart,A.tokenEnd);break;case 4:t.TokenBuilder.add(R,A.tokenStart,A.tokenEnd);break;case 5:t.TokenBuilder.add(E,A.tokenStart,A.tokenEnd);break;case 6:t.TokenBuilder.add(I,A.tokenStart,A.tokenEnd);break;case 7:t.TokenBuilder.add(B,A.tokenStart,A.tokenEnd);break}f(A)}return i.Table.ofColumns(c,{nr:(0,n.TokenColumnProvider)(x)(i.Column.Schema.int),type:(0,n.TokenColumnProvider)(M)(i.Column.Schema.str),resnr:(0,n.TokenColumnProvider)(D)(i.Column.Schema.int),residu:(0,n.TokenColumnProvider)(V)(i.Column.Schema.str),atom:(0,n.TokenColumnProvider)(R)(i.Column.Schema.str),cgnr:(0,n.TokenColumnProvider)(E)(i.Column.Schema.int),charge:(0,n.TokenColumnProvider)(I)(i.Column.Schema.float),mass:(0,n.TokenColumnProvider)(B)(i.Column.Schema.float)})}function b(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length;){y(A);const D=A.data.charAt(A.position);if(D==="[")break;if(D===";"||D==="*"){f(A);continue}for(let V=0;V<2;++V)switch(y(A),_(A),g(A),V){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break}f(A)}return i.Table.ofColumns(o,{ai:(0,n.TokenColumnProvider)(x)(i.Column.Schema.int),aj:(0,n.TokenColumnProvider)(M)(i.Column.Schema.int)})}function P(T){const{tokenizer:A}=T;let x;for(;A.tokenEnd<A.length;){y(A);const M=A.data.charAt(A.position);if(M==="[")break;if(M===";"||M==="*"){f(A);continue}if(x!==void 0)throw new Error("more than one system");x=h(A).trim()}if(x===void 0)throw new Error("missing system");return x}function C(T){const{tokenizer:A}=T,x=t.TokenBuilder.create(A.data,64),M=t.TokenBuilder.create(A.data,64);for(;A.tokenEnd<A.length&&(y(A),!(A.position>=A.length));){const D=A.data.charAt(A.position);if(D==="[")break;if(D===";"||D==="*"){f(A);continue}for(let V=0;V<2;
4123++V)switch(y(A),_(A),g(A),V){case 0:t.TokenBuilder.add(x,A.tokenStart,A.tokenEnd);break;case 1:t.TokenBuilder.add(M,A.tokenStart,A.tokenEnd);break}a(A),_(A)}return i.Table.ofColumns(s,{compound:(0,n.TokenColumnProvider)(x)(i.Column.Schema.str),molCount:(0,n.TokenColumnProvider)(M)(i.Column.Schema.int)})}async function l(T,A){const x=(0,t.Tokenizer)(T),M=d(x,A),D=Object.create(null);let V=0;D.compounds={};let R={},E="";function I(){E&&R.atoms&&(D.compounds[E]=R,R={},E="")}for(;x.tokenEnd<x.length;){x.position-V>1e5&&A.shouldUpdate&&(V=x.position,await A.update({current:x.position,max:x.length}));const B=h(M.tokenizer).trim();if(!(!B||B[0]==="*"||B[0]===";")){if(B.startsWith("#include"))throw new Error("#include statements not allowed");if(B.startsWith("[")){const w=B.match(p);if(w===null)throw new Error("expected field name");const O=w[1];if(O==="moleculetype")I(),E=m(M);else if(O==="atoms")R.atoms=v(M);else if(O==="bonds")R.bonds=b(M);else if(O==="system")D.system=P(M);else if(O==="molecules")I(),D.molecules=C(M);else for(;x.tokenEnd<x.length&&x.data.charAt(x.position)!=="[";)f(x)}}}return r.ReaderResult.success(D)}function S(T){return e.Task.create("Parse TOP",async A=>await l(T,A))}return yP}var tG;function OQ(){if(tG)return It;tG=1,Object.defineProperty(It,"__esModule",{value:!0}),It.LazyVolume=It.ParseJson=It.ImportJson=It.ImportString=It.ParseDx=It.ParseMtz=It.ParseDsn6=It.ParseCcp4=It.ParseVtp=It.ParseObj=It.ParsePly=It.ParseTop=It.ParsePrmtop=It.ParsePsf=It.ParseCube=It.ParseCif=It.ParseBlob=It.ReadFile=It.RawData=It.DeflateData=It.DownloadBlob=It.Download=void 0;const e=At,t=e.__importStar(RQ()),r=Ti(),n=e.__importStar(hie()),i=e.__importStar(yie()),c=e.__importStar(vie()),o=e.__importStar(Sie()),s=Cie(),h=Tie(),f=Et(),y=nt(),_=ET(),g=Ne(),a=jt(),d=Ha(),p=xie(),u=Aie(),m=Vr(),v=Gt(),b=Mie(),P=Die(),C=iS(),l=nS(),S=$s(),T=a.PluginStateTransform.BuiltIn({name:"download",display:{name:"Download",description:"Download string or binary data from the specified URL"},from:[a.PluginStateObject.Root],to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{url:g.ParamDefinition.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("")),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, download data as binary (string otherwise)"}))}})({apply({params:W,cache:X},Y){return y.Task.create("Download",async K=>{const Q=d.Asset.getUrlAsset(Y.managers.asset,W.url),J=await Y.managers.asset.resolve(Q,W.isBinary?"binary":"string").runInContext(K);return X.asset=J,W.isBinary?new a.PluginStateObject.Data.Binary(J.data,{label:W.label?W.label:Q.url}):new a.PluginStateObject.Data.String(J.data,{label:W.label?W.label:Q.url})})},dispose({cache:W}){var X;(X=W?.asset)===null||X===void 0||X.dispose()},update({oldParams:W,newParams:X,b:Y}){return W.url!==X.url||W.isBinary!==X.isBinary?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||(typeof X.url=="string"?X.url:X.url.url),f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged}});It.Download=T;const A=a.PluginStateTransform.BuiltIn({name:"download-blob",display:{name:"Download Blob",description:"Download multiple string or binary data from the specified URLs."},from:a.PluginStateObject.Root,to:a.PluginStateObject.Data.Blob,params:{sources:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text("",{label:"Unique ID"}),url:g.ParamDefinition.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, download data as binary (string otherwise)"})),canFail:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"Indicate whether the download can fail and not be included in the blob as a result."}))},W=>`${W.id}: ${W.url}`),maxConcurrency:g.ParamDefinition.Optional(g.ParamDefinition.Numeric(4,{min:1,max:12,step:1},{description:"The maximum number of concurrent downloads."}))}})({apply({params:W,cache:X},Y){return y.Task.create("Download Blob",async K=>{const Q=[],J=await(0,_.ajaxGetMany)(K,Y.managers.asset,W.sources,W.maxConcurrency||4),ae=[];for(let te=0;te<J.length;te++){const ne=J[te],$=W.sources[te];ne.kind==="error"?Y.log.warn(`Download ${ne.id} (${$.url}) failed: ${ne.error}
4123`):(ae.push(ne.result),Q.push($.isBinary?{id:ne.id,kind:"binary",data:ne.result.data}:{id:ne.id,kind:"string",data:ne.result.data}))}return X.assets=ae,new a.PluginStateObject.Data.Blob(Q,{label:"Data Blob",description:`${Q.length} ${Q.length===1?"entry":"entries"}`})})},dispose({cache:W},X){const Y=W?.assets;if(Y)for(const K of Y)K.dispose()}});It.DownloadBlob=A;const x=a.PluginStateTransform.BuiltIn({name:"defalate-data",display:{name:"Deflate",description:"Deflate compressed data"},params:{method:g.ParamDefinition.Select("gzip",[["gzip","gzip"]]),isString:g.ParamDefinition.Boolean(!1),stringEncoding:g.ParamDefinition.Optional(g.ParamDefinition.Select("utf-8",[["utf-8","UTF8"]])),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))},from:[a.PluginStateObject.Data.Binary],to:[a.PluginStateObject.Data.Binary,a.PluginStateObject.Data.String]})({apply({a:W,params:X},Y){return y.Task.create("Gzip",async K=>{const Q=await(0,C.ungzip)(K,W.data),J=X.label?X.label:W.label;if(X.isString){const ae=(0,S.utf8ReadLong)(Q);return new a.PluginStateObject.Data.String(ae,{label:J})}return new a.PluginStateObject.Data.Binary(Q,{label:J})})}});It.DeflateData=x;const M=a.PluginStateTransform.BuiltIn({name:"raw-data",display:{name:"Raw Data",description:"Raw data supplied by value."},from:[a.PluginStateObject.Root],to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{data:g.ParamDefinition.Value("",{isHidden:!0}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:W}){return y.Task.create("Raw Data",async()=>{if(typeof W.data=="string")return new a.PluginStateObject.Data.String(W.data,{label:W.label?W.label:"String"});if(Array.isArray(W.data))return new a.PluginStateObject.Data.Binary(new Uint8Array(W.data),{label:W.label?W.label:"Binary"});if(W.data instanceof ArrayBuffer)return new a.PluginStateObject.Data.Binary(new Uint8Array(W.data),{label:W.label?W.label:"Binary"});if(W.data instanceof Uint8Array)return new a.PluginStateObject.Data.Binary(W.data,{label:W.label?W.label:"Binary"});(0,v.assertUnreachable)(W.data)})},update({oldParams:W,newParams:X,b:Y}){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||Y.label,f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},customSerialization:{toJSON(W){if(typeof W.data=="string"||Array.isArray(W.data))return W;if(W.data instanceof ArrayBuffer){const X=new Uint8Array(W.data),Y=new Array(X.length);for(let K=0,Q=X.length;K<Q;K++)Y[K]=X[K];return{data:Y,label:W.label}}else if(W.data instanceof Uint8Array){const X=new Array(W.data.length);for(let Y=0,K=W.data.length;Y<K;Y++)X[Y]=W.data[Y];return{data:X,label:W.label}}},fromJSON(W){return W}}});It.RawData=M;const D=a.PluginStateTransform.BuiltIn({name:"read-file",display:{name:"Read File",description:"Read string or binary data from the specified file"},from:a.PluginStateObject.Root,to:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],params:{file:g.ParamDefinition.File(),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("")),isBinary:g.ParamDefinition.Optional(g.ParamDefinition.Boolean(!1,{description:"If true, open file as as binary (string otherwise)"}))}})({apply({params:W,cache:X},Y){return y.Task.create("Open File",async K=>{if(W.file===null)return Y.log.error("No file(s) selected"),f.StateObject.Null;const Q=await Y.managers.asset.resolve(W.file,W.isBinary?"binary":"string").runInContext(K);return X.asset=Q,W.isBinary?new a.PluginStateObject.Data.Binary(Q.data,{label:W.label?W.label:W.file.name}):new a.PluginStateObject.Data.String(Q.data,{label:W.label?W.label:W.file.name})})},dispose({cache:W}){var X;(X=W?.asset)===null||X===void 0||X.dispose()},update({oldParams:W,newParams:X,b:Y}){var K;return W.label!==X.label?(Y.label=X.label||((K=W.file)===null||K===void 0?void 0:K.name)||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user loaded files."})});It.ReadFile=D;const V=a.PluginStateTransform.BuiltIn({name:"parse-blob",display:{name:"Parse Blob",description:"Parse multiple data enties"},from:a.PluginStateObject.Data.Blob,to:a.PluginStateObject.Format.Blob,params:{formats:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text("",{label:"Unique ID"}),format:g.ParamDefinition.Select("cif",[["cif","cif"]])},W=>`${W.id}: ${W.format}`)}})({apply({a:W,params:X},Y){return y.Task.create("Parse Blob",async K=>{const Q=new Map;for(const ae of X.formats)Q.set(ae.id,ae.format);const J=[];for(const ae of W.data){if(!Q.has(ae.id))continue;
4123const te=await(ae.kind==="string"?r.CIF.parse(ae.data):r.CIF.parseBinary(ae.data)).runInContext(K);if(te.isError)throw new Error(`${ae.id}: ${te.message}`);J.push({id:ae.id,kind:"cif",data:te.result})}return new a.PluginStateObject.Format.Blob(J,{label:"Format Blob",description:`${J.length} ${J.length===1?"entry":"entries"}`})})}});It.ParseBlob=V;const R=a.PluginStateTransform.BuiltIn({name:"parse-cif",display:{name:"Parse CIF",description:"Parse CIF from String or Binary data"},from:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Cif})({apply({a:W}){return y.Task.create("Parse CIF",async X=>{const Y=await r.CIF.parse(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return Y.result.blocks.length===0?f.StateObject.Null:new a.PluginStateObject.Format.Cif(Y.result)})}});It.ParseCif=R;const E=a.PluginStateTransform.BuiltIn({name:"parse-cube",display:{name:"Parse Cube",description:"Parse Cube from String data"},from:a.PluginStateObject.Data.String,to:a.PluginStateObject.Format.Cube})({apply({a:W}){return y.Task.create("Parse Cube",async X=>{const Y=await(0,p.parseCube)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Cube(Y.result)})}});It.ParseCube=E;const I=a.PluginStateTransform.BuiltIn({name:"parse-psf",display:{name:"Parse PSF",description:"Parse PSF from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Psf})({apply({a:W}){return y.Task.create("Parse PSF",async X=>{const Y=await(0,s.parsePsf)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Psf(Y.result)})}});It.ParsePsf=I;const B=a.PluginStateTransform.BuiltIn({name:"parse-prmtop",display:{name:"Parse PRMTOP",description:"Parse PRMTOP from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Prmtop})({apply({a:W}){return y.Task.create("Parse PRMTOP",async X=>{const Y=await(0,b.parsePrmtop)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Prmtop(Y.result)})}});It.ParsePrmtop=B;const w=a.PluginStateTransform.BuiltIn({name:"parse-top",display:{name:"Parse TOP",description:"Parse TOP from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Top})({apply({a:W}){return y.Task.create("Parse TOP",async X=>{const Y=await(0,P.parseTop)(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Top(Y.result)})}});It.ParseTop=w;const O=a.PluginStateTransform.BuiltIn({name:"parse-ply",display:{name:"Parse PLY",description:"Parse PLY from String or Binary data"},from:[a.PluginStateObject.Data.String,a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Ply})({apply({a:W}){return y.Task.create("Parse PLY",async X=>{const Y=await i.parsePly(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Ply(Y.result,{label:Y.result.comments[0]||"PLY Data"})})}});It.ParsePly=O;const F=a.PluginStateTransform.BuiltIn({name:"parse-obj",display:{name:"Parse OBJ",description:"Parse OBJ from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Obj})({apply({a:W}){return y.Task.create("Parse OBJ",async X=>{const Y=await c.parseObj(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Obj(Y.result,{label:"OBJ Data"})})}});It.ParseObj=F;const L=a.PluginStateTransform.BuiltIn({name:"parse-vtp",display:{name:"Parse VTP",description:"Parse VTP (VTK PolyData) from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Vtp})({apply({a:W}){return y.Task.create("Parse VTP",async X=>{const Y=await o.parseVtp(W.data).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Vtp(Y.result,{label:"VTP Data"})})}});It.ParseVtp=L;const U=a.PluginStateTransform.BuiltIn({name:"parse-ccp4",display:{name:"Parse CCP4/MRC/MAP",description:"Parse CCP4/MRC/MAP from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Ccp4})({apply({a:W}){return y.Task.create("Parse CCP4/MRC/MAP",async X=>{const Y=await t.parse(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Ccp4(Y.result)})}});It.ParseCcp4=U;const q=a.PluginStateTransform.BuiltIn({name:"parse-dsn6",display:{name:"Parse DSN6/BRIX",description:"Parse CCP4/BRIX from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Dsn6})({apply({a:W}){return y.Task.create("Parse DSN6/BRIX",async X=>{const Y=await n.parse(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Dsn6(Y.result)})}});It.ParseDsn6=q;const N=a.PluginStateTransform.BuiltIn({name:"parse-mtz",display:{name:"Parse MTZ",description:"Parse CCP4 MTZ reflection file from Binary data"},from:[a.PluginStateObject.Data.Binary],to:a.PluginStateObject.Format.Mtz})({apply({a:W}){return y.Task.create("Parse MTZ",async X=>{const Y=await(0,h.parseMtz)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Mtz(Y.result)})}});It.ParseMtz=N;const k=a.PluginStateTransform.BuiltIn({name:"parse-dx",display:{name:"Parse DX",description:"Parse DX from Binary/String data"},from:[a.PluginStateObject.Data.Binary,a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Dx})({apply({a:W}){return y.Task.create("Parse DX",async X=>{const Y=await(0,u.parseDx)(W.data,W.label).runInContext(X);if(Y.isError)throw new Error(Y.message);return new a.PluginStateObject.Format.Dx(Y.result)})}});It.ParseDx=k;const j=a.PluginStateTransform.BuiltIn({name:"import-string",display:{name:"Import String",description:"Import given data as a string"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Data.String,params:{data:g.ParamDefinition.Value(""),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:{data:W,label:X}}){return new a.PluginStateObject.Data.String(W,{label:X||""})},update({oldParams:W,newParams:X,b:Y}
4123){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported strings."})});It.ImportString=j;const H=a.PluginStateTransform.BuiltIn({name:"import-json",display:{name:"Import JSON",description:"Import given data as a JSON"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Format.Json,params:{data:g.ParamDefinition.Value({}),label:g.ParamDefinition.Optional(g.ParamDefinition.Text(""))}})({apply({params:{data:W,label:X}}){return new a.PluginStateObject.Format.Json(W,{label:X||""})},update({oldParams:W,newParams:X,b:Y}){return W.data!==X.data?f.StateTransformer.UpdateResult.Recreate:W.label!==X.label?(Y.label=X.label||"",f.StateTransformer.UpdateResult.Updated):f.StateTransformer.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported JSON."})});It.ImportJson=H;const G=a.PluginStateTransform.BuiltIn({name:"parse-json",display:{name:"Parse JSON",description:"Parse JSON from String data"},from:[a.PluginStateObject.Data.String],to:a.PluginStateObject.Format.Json})({apply({a:W}){return y.Task.create("Parse JSON",async X=>{const Y=await new Response(l.StringLike.toString(W.data)).json();return new a.PluginStateObject.Format.Json(Y)})}});It.ParseJson=G;const z=a.PluginStateTransform.BuiltIn({name:"lazy-volume",display:{name:"Lazy Volume",description:"A placeholder for lazy loaded volume representation"},from:a.PluginStateObject.Root,to:a.PluginStateObject.Volume.Lazy,params:{url:g.ParamDefinition.Url(""),isBinary:g.ParamDefinition.Boolean(!1),format:g.ParamDefinition.Text("ccp4"),entryId:g.ParamDefinition.Value("",{isHidden:!0}),isovalues:g.ParamDefinition.ObjectList({type:g.ParamDefinition.Text("relative"),value:g.ParamDefinition.Numeric(0),color:g.ParamDefinition.Color(m.ColorNames.black),alpha:g.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),volumeIndex:g.ParamDefinition.Numeric(0)},W=>`${W.type} ${W.value}`)}})({apply({a:W,params:X}){return y.Task.create("Lazy Volume",async Y=>{const K=Array.isArray(X.entryId)?X.entryId.join(", "):X.entryId;return new a.PluginStateObject.Volume.Lazy(X,{label:`${K||X.url}`,description:"Lazy Volume"})})}});return It.LazyVolume=z,It}var U1={},rG;function Iie(){if(rG)return U1;rG=1,Object.defineProperty(U1,"__esModule",{value:!0}),U1.CreateGroup=void 0;const e=Et(),t=et(),r=Ne(),n=jt(),i=n.PluginStateTransform.BuiltIn({name:"create-group",display:{name:"Group"},from:[],to:n.PluginStateObject.Group,params:{label:r.ParamDefinition.Text("Group"),description:r.ParamDefinition.Optional(r.ParamDefinition.Text(""))}})({apply({params:c}){return new n.PluginStateObject.Group({},c)},update({oldParams:c,newParams:o,b:s}){return(0,t.shallowEqualObjects)(c,o)?e.StateTransformer.UpdateResult.Unchanged:(s.label=o.label,s.description=o.description,e.StateTransformer.UpdateResult.Updated)}});return U1.CreateGroup=i,U1}var rA={},j1={},nG;function wie(){if(nG)return j1;nG=1,Object.defineProperty(j1,"__esModule",{value:!0}),j1._parseDcd=n,j1.parseDcd=i;const e=Tr(),t=nt(),r=QD();function n(c){const o=new DataView(c.buffer),s=Object.create(null),h=[];let f=0;const y=new Int32Array(c.buffer,0,23),_=y[0]!==o.getInt32(0);if(y[0]!==84){const P=c.byteLength;for(let C=0;C<P;C+=4)o.setFloat32(C,o.getFloat32(C),!0)}if(y[0]!==84)throw new Error("dcd bad format, header block start");if(String.fromCharCode(o.getUint8(4),o.getUint8(5),o.getUint8(6),o.getUint8(7))!=="CORD")throw new Error("dcd bad format, format string");let a=!1,d=!1,p=!1;if(y[22]!==0&&(a=!0,y[12]!==0&&(d=!0),y[13]===1&&(p=!0)),s.NSET=y[2],s.ISTART=y[3],s.NSAVC=y[4],s.NAMNF=y[10],a?s.DELTA=o.getFloat32(44,_):s.DELTA=o.getFloat64(44,_),y[22]!==84)throw new Error("dcd bad format, header block end");f=f+84+8;const u=o.getInt32(f,_),m=f+1;if((u-4)%80!==0)throw new Error("dcd bad format, title block start");if(s.TITLE=(0,r.uint8ToString)(c.subarray(m,u)),o.getInt32(m+u+4-1,_)!==u)throw new Error("dcd bad format, title block end");if(f=f+u+8,o.getInt32(f,_)!==4)throw new Error("dcd bad format, natom block start");if(s.NATOM=o.getInt32(f+4,_),o.getInt32(f+8,_)!==4)throw new Error("dcd bad format, natom block end");if(f=f+4+8,s.NAMNF>0)throw new Error("dcd format with fixed atoms unsupported, aborting");const v=s.NATOM,b=v*4;for(let P=0,C=s.NSET;P<C;++P){const l=Object.create(null);l.elementCount=v,d&&(f+=4,l.cell=[o.getFloat64(f,_),o.getFloat64(f+1,_),o.getFloat64(f+16,_),o.getFloat64(f+24,_),o.getFloat64(f+32,_),o.getFloat64(f+40,_)],f+=48,f+=4);for(let S=0;S<3;++S){if(o.getInt32(f,_)!==b)throw new Error(`dcd bad format, coord block start: ${P}, ${S}`);f+=4;const T=new Float32Array(c.buffer,f,v);if(S===0?l.x=T:S===1?l.y=T:l.z=T,f+=b,o.getInt32(f,_)!==b)throw new Error(`dcd bad format, coord block end: ${P}, ${S}`);f+=4}if(p){const S=o.getInt32(f,_);f+=4+S+4}h.push(l)}return{header:s,frames:h}}function i(c){return t.Task.create("Parse DCD",async o=>{try{const s=n(c);return e.ReaderResult.success(s)}catch(s){return e.ReaderResult.error(s)}})}return j1}var vP={},G1={},iG;function Vie(){if(iG)return G1;iG=1,Object.defineProperty(G1,"__esModule",{value:!0}
4123),G1.FixedColumnProvider=n,G1.FixedColumn=i;const e=lt(),t=Or(),r=La();function n(c){return function(o,s,h){return i(c,o,s,h)}}function i(c,o,s,h){const{data:f,indices:y,count:_}=c,{valueType:g}=h,a=g==="str"?d=>{const p=y[2*d]+o,u=y[2*d+1];if(p>=u)return"";let m=p+s;return m>u&&(m=u),(0,t.trimStr)(f,p,m)}:g==="int"?d=>{const p=y[2*d]+o;return p>y[2*d+1]?0:(0,r.parseIntSkipLeadingWhitespace)(f,p,p+s)}:d=>{const p=y[2*d]+o;return p>y[2*d+1]?0:(0,r.parseFloatSkipLeadingWhitespace)(f,p,p+s)};return{schema:h,__array:void 0,isDefined:!0,rowCount:_,value:a,valueKind:d=>e.Column.ValueKinds.Present,toArray:d=>e.ColumnHelpers.createAndFillArray(_,a,d),areValuesEqual:(d,p)=>a(d)===a(p)}}return G1}var aG;function Eie(){if(aG)return vP;aG=1,Object.defineProperty(vP,"__esModule",{value:!0}),vP.parseGRO=g;const e=lt(),t=Or(),r=Vie(),n=Tr(),i=nt();function c(){return{title:"",timeInPs:0,hasVelocities:!1,precision:{position:0,velocity:0},box:[0,0,0]}}function o(a,d){return{tokenizer:a,header:c(),numberOfAtoms:0,runtimeCtx:d}}function s(a){const{tokenizer:d,header:p}=a;let u=t.Tokenizer.readLine(d);u.trim().length===0&&(u=t.Tokenizer.readLine(d));const m=u.lastIndexOf("t=");m>=0?(p.timeInPs=parseFloat(u.substring(m+2)),p.title=u.substring(0,m).trim(),p.title&&p.title[p.title.length-1]===","&&(p.title=p.title.substring(0,p.title.length-1))):p.title=u}function h(a){const{tokenizer:d}=a;t.Tokenizer.markLine(d);const p=t.Tokenizer.getTokenString(d);a.numberOfAtoms=parseInt(p)}async function f(a){const{tokenizer:d,numberOfAtoms:p}=a,u=await t.Tokenizer.readLinesAsync(d,p,a.runtimeCtx,1e5),v=d.data.substring(u.indices[0],u.indices[1]).substring(20).match(/\.\d+/g),b=v.length===6;a.header.hasVelocities=b,a.header.precision.position=v[0].length-1,a.header.precision.velocity=b?v[3].length-1:0;const P=20,C=a.header.precision.position+5,l=P+3*C,S=a.header.precision.velocity+4,T=(0,r.FixedColumnProvider)(u),A=e.Column.Undefined(a.numberOfAtoms,e.Column.Schema.float);return{count:a.numberOfAtoms,residueNumber:T(0,5,e.Column.Schema.int),residueName:T(5,5,e.Column.Schema.str),atomName:T(10,5,e.Column.Schema.str),atomNumber:T(15,5,e.Column.Schema.int),x:T(P,C,e.Column.Schema.float),y:T(P+C,C,e.Column.Schema.float),z:T(P+2*C,C,e.Column.Schema.float),vx:b?T(l,S,e.Column.Schema.float):A,vy:b?T(l+S,S,e.Column.Schema.float):A,vz:b?T(l+2*S,S,e.Column.Schema.float):A}}function y(a){const{tokenizer:d}=a,p=t.Tokenizer.readLine(d).trim().split(/\s+/g);a.header.box=[+p[0],+p[1],+p[2]]}async function _(a,d){const p=(0,t.Tokenizer)(a);await d.update({message:"Parsing...",current:0,max:a.length});const u=[];for(;p.position<a.length;){const v=o(p,d);s(v),h(v);const b=await f(v);y(v),u.push({header:v.header,atoms:b})}const m={structures:u};return n.ReaderResult.success(m)}function g(a){return i.Task.create("Parse GRO",async d=>await _(a,d))}return vP}var bP={},oG;function Bie(){if(oG)return bP;oG=1,Object.defineProperty(bP,"__esModule",{value:!0}),bP.parsePDB=n;const e=nt(),t=Tr(),r=Or();function n(i,c,o){return e.Task.create("Parse PDB",async s=>t.ReaderResult.success({lines:await r.Tokenizer.readAllLinesAsync(i,s),id:c,variant:o||"pdb"}))}return bP}var _P={},z1={},sG;function d2(){if(sG)return z1;sG=1,Object.defineProperty(z1,"__esModule",{value:!0}),z1.Cell=t;const e=Ge();function t(){return t.empty()}return(function(r){function n(o,s){return{size:o,anglesInRadians:s}}r.create=n;function i(){return n((0,e.Vec3)(),(0,e.Vec3)())}r.empty=i;function c(o,s,h){const f=e.Vec3.magnitude(o),y=e.Vec3.magnitude(s),_=e.Vec3.magnitude(h),g=Math.acos(e.Vec3.dot(s,h)/(y*_)),a=Math.acos(e.Vec3.dot(o,h)/(f*_)),d=Math.acos(e.Vec3.dot(o,s)/(f*y));return f<=0||y<=0||_<=0||g>=Math.PI||a>=Math.PI||d>=Math.PI?i():n(e.Vec3.create(f,y,_),e.Vec3.create(g,a,d))}r.fromBasis=c})(t||(z1.Cell=t={})),z1}var cG;function Rie(){if(cG)return _P;cG=1,Object.defineProperty(_P,"__esModule",{value:!0}),_P.coordinatesFromDcd=s;const e=nt(),t=vl(),r=Ge(),n=er(),i=d2(),c=rn(),o=20.45482949774598;function s(h){return e.Task.create("Parse DCD",async f=>{await f.update("Converting to coordinates");const{header:y}=h,_=y.DELTA?(0,t.Time)(y.DELTA*o,"ps"):(0,t.Time)(1,"step"),g=y.ISTART>=1?(0,t.Time)((y.ISTART-1)*_.value,_.unit):(0,t.Time)(0,_.unit),a=[];for(let d=0,p=h.frames.length;d<p;++d){const u=h.frames[d],m={elementCount:u.elementCount,time:(0,t.Time)(g.value+_.value*d,_.unit),x:u.x,y:u.y,z:u.z,xyzOrdering:{isIdentity:!0}};if(u.cell){const v=u.cell;v[1]>=-1&&v[1]<=1&&v[3]>=-1&&v[3]<=1&&v[4]>=-1&&v[4]<=1?m.cell=i.Cell.create(r.Vec3.create(v[0],v[2],v[5]),r.Vec3.create((0,n.degToRad)(90-Math.asin(v[1])*90/n.halfPI),(0,n.degToRad)(90-Math.asin(v[3])*90/n.halfPI),(0,n.degToRad)(90-Math.asin(v[4])*90/n.halfPI))):v[0]<0||v[1]<0||v[2]<0||v[3]<0||v[4]<0||v[5]<0||v[3]>180||v[4]>180||v[5]>180?m.cell=i.Cell.fromBasis(r.Vec3.create(v[0],v[1],v[3]),r.Vec3.create(v[1],v[2],v[4]),r.Vec3.create(v[3],v[4],v[5])):m.cell=i.Cell.create(r.Vec3.create(v[0],v[2],v[5]),r.Vec3.create((0,n.degToRad)((0,c.equalEps)(v[1],0,c.EPSILON)?90:v[1]),(0,n.degToRad)((0,c.equalEps)(v[3],0,c.EPSILON)?90:v[3]),(0,n.degToRad)((0,c.equalEps)(v[4],0,c.EPSILON)?90:v[4])))}a.push(m)}return t.Coordinates.create(a,_,g)})}return _P}var Cd={},H1={},uG;function cc(){if(uG)return H1;uG=1,Object.defineProperty(H1,"__esModule",{value:!0}),H1.guessElementSymbolTokens=t,H1.guessElementSymbolString=c;const e=Or();function t(o,s,h,f){let y=h,_=f-1,g=s.charCodeAt(y);for(;(g===32||g>=48&&g<=57)&&y<=_;)g=s.charCodeAt(++y);for(g=s.charCodeAt(_);(g===32||g>=48&&g<=57)&&_>=y;)g=s.charCodeAt(--_);if(++_,y===_||y+1===_)return e.TokenBuilder.add(o,y,_);if(g=s.charCodeAt(y),y+2===_){const a=s.charCodeAt(y+1);if((g===78||g===110)&&(a===65||a===97)||(g===67||g===99)&&(a===76||a===108)||(g===70||g===102)&&(a===69||a===101)||(g===83||g===115)&&(a===73||a===105)||(g===66||g===98)&&(a===82||a===114)||(g===65||g===97)&&(a===83||a===115)||(g===76||g===108)&&(a===73||a===105)||(g===71||g===103)&&(a===65||a===97))return e.TokenBuilder.add(o,y,y+2)}if(g===67||g===99||g===72||g===104||g===78||g===110||g===79||g===111||g===80||g===112||g===83||g===115)return e.TokenBuilder.add(o,y,y+1);e.TokenBuilder.add(o,y,y)}const r=new Set(["NA","CL","FE","SI","BR","AS","LI","GA"]),n=new Set(["C","H","N","O","P","S","F","B"]),i=/^[\s\d]+|[\s\d]+$/g;function c(o,s){o=o.replace(i,"").toUpperCase();const h=o.length;if(h===0||h===1||r.has(o))return o;if(h===3&&s===o){if(o==="SOD")return"NA";if(o==="POT")return"K";if(o==="CES")return"CS";if(o==="CAL")return"CA";if(o==="CLA")return"CL"}return n.has(o[0])?o[0]:""}return H1}var W1={},lG;function qS(){if(lG)return W1;lG=1,Object.defineProperty(W1,"__esModule",{value:!0}),W1.getChainId=void 0;const e=Af(),t="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function r(n){const i=t.length;let c=n,o=0,s=t[c%i];for(;c>=i;)c=Math.floor(c/i),s+=t[c%i],o+=1;return o>=5&&console.warn("getChainId overflow"),s}return W1.getChainId=(0,e.memoize1)(r),W1}var dG;function Oie(){if(dG)return Cd;dG=1,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.GroFormat=void 0,Cd.trajectoryFromGRO=d;const e=nt(),t=lt(),r=Ge(),n=cc(),i=dt(),c=Ai(),o=qS(),s=xi(),h=vn(),f=ga(),y=LT(),_=Qn();function g(p,u){const m=p.atomName,v=p.residueName,b=new Array(p.count),P=new Array(p.count),C=new Uint32Array(p.count),l=new Uint32Array(p.count),S=new Array(p.count),T=new s.EntityBuilder,A=new c.ComponentBuilder(p.residueNumber,p.atomName);let x="",M=0,D="",V=0,R=i.MoleculeType.Unknown,E=-1;for(let w=0,O=p.count;w<O;++w){const F=p.residueNumber.value(w);if(F!==E){const L=p.residueName.value(w),U=(0,i.getMoleculeType)(A.add(L,w).type,L);(U!==R||F!==E+1&&!(E===99999&&F===0))&&(D=(0,o.getChainId)(M),M+=1,V=0),x=T.getEntityId(L,U,D),V+=1,E=F,R=U}b[w]=x,P[w]=D,C[w]=V,l[w]=w,S[w]=(0,n.guessElementSymbolString)(p.atomName.value(w),p.residueName.value(w))}
4123const I=t.Column.ofStringArray(P),B=t.Table.ofPartialColumns(h.BasicSchema.atom_site,{auth_asym_id:I,auth_atom_id:m,auth_comp_id:v,auth_seq_id:p.residueNumber,Cartn_x:t.Column.ofFloatArray(t.Column.mapToArray(p.x,w=>w*10,Float32Array)),Cartn_y:t.Column.ofFloatArray(t.Column.mapToArray(p.y,w=>w*10,Float32Array)),Cartn_z:t.Column.ofFloatArray(t.Column.mapToArray(p.z,w=>w*10,Float32Array)),id:t.Column.ofIntArray(l),label_asym_id:I,label_atom_id:m,label_comp_id:v,label_seq_id:t.Column.ofIntArray(C),label_entity_id:t.Column.ofStringArray(b),occupancy:t.Column.ofConst(1,p.count,t.Column.Schema.float),type_symbol:t.Column.ofStringArray(S),pdbx_PDB_model_num:t.Column.ofConst(u,p.count,t.Column.Schema.int)},p.count);return(0,h.createBasic)({entity:T.getEntityTable(),chem_comp:A.getChemCompTable(),atom_site:B})}var a;(function(p){function u(v){return v?.kind==="gro"}p.is=u;function m(v){return{kind:"gro",name:v.structures[0].header.title,data:v}}p.fromGro=m})(a||(Cd.GroFormat=a={}));function d(p){return e.Task.create("Parse GRO",async u=>{const m=a.fromGro(p),v=[];for(let b=0,P=p.structures.length;b<P;++b){const C=g(p.structures[b].atoms,b+1),l=await(0,f.createModels)(C,m,u);if(l.frameCount===1){const S=l.representative,[T,A,x]=p.structures[b].header.box;if(T!==0&&A!==0&&x!==0){const M=_.ModelSymmetry.fromCell(r.Vec3.create(T*10,A*10,x*10),r.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));_.ModelSymmetry.Provider.set(S,M)}v.push(S)}}return new y.ArrayTrajectory(v)})}return Cd}var Pd={},SP={},Td={},fG;function kie(){if(fG)return Td;fG=1,Object.defineProperty(Td,"__esModule",{value:!0}),Td.parseCryst1=r,Td.parseRemark350=i,Td.parseMtrix=c;const e=Ti(),t=Ge();function r(o,s){const h=(_,g)=>(s.substr(_,g)||"").trim(),f={entry_id:e.CifField.ofString(o),length_a:e.CifField.ofString(h(6,9)),length_b:e.CifField.ofString(h(15,9)),length_c:e.CifField.ofString(h(24,9)),angle_alpha:e.CifField.ofString(h(33,7)),angle_beta:e.CifField.ofString(h(40,7)),angle_gamma:e.CifField.ofString(h(47,7)),Z_PDB:e.CifField.ofString(h(66,4)),pdbx_unique_axis:e.CifField.ofString("?")},y={entry_id:e.CifField.ofString(o),"space_group_name_H-M":e.CifField.ofString(h(55,11)),Int_Tables_number:e.CifField.ofString("?"),cell_setting:e.CifField.ofString("?"),space_group_name_Hall:e.CifField.ofString("?")};return[e.CifCategory.ofFields("cell",f),e.CifCategory.ofFields("symmetry",y)]}function n(o,s){return{id:o,details:s,groups:[]}}function i(o,s,h){const f=[];let y,_,g,a=1,d=1;const p=C=>o.data.substring(o.indices[2*C],o.indices[2*C+1]);for(let C=s;C<h;C++){let l=p(C);if(l.substr(11,12)==="BIOMOLECULE:"){const S=l.substr(23).trim();let T=`Biomolecule ${S}`;l=p(C+1),l.substr(11,30)!=="APPLY THE FOLLOWING TO CHAINS:"&&(C++,T=l.substr(11).trim()),y=n(S,T),f.push(y)}else if(l.substr(13,5)==="BIOMT"){const S=l.split(/\s+/),T=parseInt(l[18])-1;T===0&&(g=t.Mat4.identity(),_.operators.push({id:a++,matrix:g})),t.Mat4.setValue(g,T,0,parseFloat(S[4])),t.Mat4.setValue(g,T,1,parseFloat(S[5])),t.Mat4.setValue(g,T,2,parseFloat(S[6])),t.Mat4.setValue(g,T,3,parseFloat(S[7]))}else if(l.substr(11,30)==="APPLY THE FOLLOWING TO CHAINS:"||l.substr(11,30)===" AND CHAINS:"){l.substr(11,5)==="APPLY"&&(_={chains:[],operators:[]},y.groups.push(_));const S=l.substr(41,30).split(",");for(let T=0,A=S.length;T<A;++T){const x=S[T].trim();x&&_.chains.push(x)}}else if(l.substr(11,33)==="APPLYING THE FOLLOWING TO CHAINS:"){y=n(`${d}`,`Biomolecule ${d}`),f.push(y),d+=1,_={chains:[],operators:[]},y.groups.push(_),C++,l=p(C);const S=l.substr(11,69).split(",");for(let T=0,A=S.length;T<A;++T){const x=S[T].trim();x&&_.chains.push(x)}}}if(f.length===0)return[];const u={id:e.CifField.ofStrings(f.map(C=>C.id)),details:e.CifField.ofStrings(f.map(C=>C.details))},m=[];for(const C of f)for(const l of C.groups)m.push({assembly_id:C.id,oper_expression:l.operators.map(S=>S.id).join(","),asym_id_list:l.chains.join(",")});const v={assembly_id:e.CifField.ofStrings(m.map(C=>C.assembly_id)),oper_expression:e.CifField.ofStrings(m.map(C=>C.oper_expression)),asym_id_list:e.CifField.ofStrings(m.map(C=>C.asym_id_list))},b=[];for(const C of f)for(const l of C.groups)for(const S of l.operators){const T={id:""+S.id,type:"?",name:"?",symmetry_operation:"?"};for(let A=0;A<3;A++){for(let x=0;x<3;x++)T[`matrix[${A+1}][${x+1}]`]=""+t.Mat4.getValue(S.matrix,A,x);T[`vector[${A+1}]`]=""+t.Mat4.getValue(S.matrix,A,3)}b.push(T)}const P={id:e.CifField.ofStrings(b.map(C=>C.id)),type:e.CifField.ofStrings(b.map(C=>C.type)),name:e.CifField.ofStrings(b.map(C=>C.name)),symmetry_operation:e.CifField.ofStrings(b.map(C=>C.symmetry_operation))};for(let C=0;C<3;C++){for(let S=0;S<3;S++){const T=`matrix[${C+1}][${S+1}]`;P[T]=e.CifField.ofStrings(b.map(A=>A[T]))}const l=`vector[${C+1}]`;P[l]=e.CifField.ofStrings(b.map(S=>S[l]))}return[e.CifCategory.ofFields("pdbx_struct_assembly",u),e.CifCategory.ofFields("pdbx_struct_assembly_gen",v),e.CifCategory.ofFields("pdbx_struct_oper_list",P)]}function c(o,s,h){const f=[];let y;const _=p=>o.data.substring(o.indices[2*p],o.indices[2*p+1]);for(let p=s;p<h;p++){const u=_(p),m=u.split(/\s+/),v=parseInt(u[5])-1;v===0&&(y=t.Mat4.identity(),f.push(y)),t.Mat4.setValue(y,v,0,parseFloat(m[2])),t.Mat4.setValue(y,v,1,parseFloat(m[3])),t.Mat4.setValue(y,v,2,parseFloat(m[4])),t.Mat4.setValue(y,v,3,parseFloat(m[5]))}if(f.length===0)return[];const g=[];let a=1;for(const p of f){const u={id:"ncsop"+a++,code:".",details:"."};for(let m=0;m<3;m++){for(let v=0;v<3;v++)u[`matrix[${m+1}][${v+1}]`]=""+t.Mat4.getValue(p,m,v);u[`vector[${m+1}]`]=""+t.Mat4.getValue(p,m,3)}g.push(u)}const d={id:e.CifField.ofStrings(g.map(p=>p.id)),code:e.CifField.ofStrings(g.map(p=>p.code)),details:e.CifField.ofStrings(g.map(p=>p.details))};for(let p=0;p<3;p++){for(let m=0;m<3;m++){const v=`matrix[${p+1}][${m+1}]`;d[v]=e.CifField.ofStrings(g.map(b=>b[v]))}const u=`vector[${p+1}]`;d[u]=e.CifField.ofStrings(g.map(m=>m[u]))}return[e.CifCategory.ofFields("struct_ncs_oper",d)]}return Td}var $1={},mG;function Fie(){if(mG)return $1;mG=1,Object.defineProperty($1,"__esModule",{value:!0}),$1.parseHelix=i,$1.parseSheet=c;const e=Ti(),t=lt(),r={1:"helx_rh_al_p",2:"helx_rh_om_p",3:"helx_rh_pi_p",4:"helx_rh_ga_p",5:"helx_rh_3t_p",6:"helx_lh_al_p",7:"helx_lh_om_p",8:"helx_lh_ga_p",9:"helx_rh_27_p",10:"helx_rh_pp_p"};function n(o){return r[o]||"helx_p"}function i(o,s,h){const f=[],y=u=>o.data.substring(o.indices[2*u],o.indices[2*u+1]);for(let u=s;u<h;u++){const m=y(u);f.push({serNum:m.substring(7,10).trim(),helixID:m.substring(11,14).trim(),initResName:m.substring(15,19).trim(),initChainID:m.substring(19,20).trim(),initSeqNum:m.substring(21,25).trim(),initICode:m.substring(25,26).trim(),endResName:m.substring(27,31).trim(),endChainID:m.substring(31,34).trim(),endSeqNum:m.substring(33,37).trim(),endICode:m.substring(37,38).trim(),helixClass:m.substring(38,40).trim(),comment:m.substring(40,70).trim(),length:m.substring(71,76).trim()})}const _=e.CifField.ofStrings(f.map(u=>u.initChainID)),g=e.CifField.ofStrings(f.map(u=>u.initResName)),a=e.CifField.ofStrings(f.map(u=>u.endChainID)),d=e.CifField.ofStrings(f.map(u=>u.endResName)),p={beg_label_asym_id:_,beg_label_comp_id:g,beg_label_seq_id:e.CifField.ofUndef
4123ined(f.length,t.Column.Schema.int),beg_auth_asym_id:_,beg_auth_comp_id:g,beg_auth_seq_id:e.CifField.ofStrings(f.map(u=>u.initSeqNum)),conf_type_id:e.CifField.ofStrings(f.map(u=>n(u.helixClass))),details:e.CifField.ofStrings(f.map(u=>u.comment)),end_label_asym_id:a,end_label_comp_id:d,end_label_seq_id:e.CifField.ofUndefined(f.length,t.Column.Schema.int),end_auth_asym_id:a,end_auth_comp_id:d,end_auth_seq_id:e.CifField.ofStrings(f.map(u=>u.endSeqNum)),id:e.CifField.ofStrings(f.map(u=>u.serNum)),pdbx_beg_PDB_ins_code:e.CifField.ofStrings(f.map(u=>u.initICode)),pdbx_end_PDB_ins_code:e.CifField.ofStrings(f.map(u=>u.endICode)),pdbx_PDB_helix_class:e.CifField.ofStrings(f.map(u=>u.helixClass)),pdbx_PDB_helix_length:e.CifField.ofStrings(f.map(u=>u.length)),pdbx_PDB_helix_id:e.CifField.ofStrings(f.map(u=>u.helixID))};return e.CifCategory.ofFields("struct_conf",p)}function c(o,s,h){const f=[],y=v=>o.data.substring(o.indices[2*v],o.indices[2*v+1]);for(let v=s;v<h;v++){const b=y(v);f.push({strand:b.substring(7,10).trim(),sheetID:b.substring(11,14).trim(),numStrands:b.substring(14,16).trim(),initResName:b.substring(17,21).trim(),initChainID:b.substring(21,22).trim(),initSeqNum:b.substring(22,26).trim(),initICode:b.substring(26,27).trim(),endResName:b.substring(28,32).trim(),endChainID:b.substring(32,33).trim(),endSeqNum:b.substring(33,37).trim(),endICode:b.substring(37,38).trim(),sense:b.substring(38,40).trim(),curAtom:b.substring(41,45).trim(),curResName:b.substring(45,49).trim(),curChainId:b.substring(49,50).trim(),curResSeq:b.substring(50,54).trim(),curICode:b.substring(54,55).trim(),prevAtom:b.substring(56,60).trim(),prevResName:b.substring(60,64).trim(),prevChainId:b.substring(64,65).trim(),prevResSeq:b.substring(65,69).trim(),prevICode:b.substring(69,70).trim()})}const _=e.CifField.ofStrings(f.map(v=>v.initChainID)),g=e.CifField.ofStrings(f.map(v=>v.initResName)),a=e.CifField.ofStrings(f.map(v=>v.initSeqNum)),d=e.CifField.ofStrings(f.map(v=>v.endChainID)),p=e.CifField.ofStrings(f.map(v=>v.endResName)),u=e.CifField.ofStrings(f.map(v=>v.endSeqNum)),m={beg_label_asym_id:_,beg_label_comp_id:g,beg_label_seq_id:a,beg_auth_asym_id:_,beg_auth_comp_id:g,beg_auth_seq_id:a,end_label_asym_id:d,end_label_comp_id:d,end_label_seq_id:u,end_auth_asym_id:d,end_auth_comp_id:p,end_auth_seq_id:u,id:e.CifField.ofStrings(f.map(v=>v.strand)),sheet_id:e.CifField.ofStrings(f.map(v=>v.sheetID)),pdbx_beg_PDB_ins_code:e.CifField.ofStrings(f.map(v=>v.initICode)),pdbx_end_PDB_ins_code:e.CifField.ofStrings(f.map(v=>v.endICode))};return e.CifCategory.ofFields("struct_sheet_range",m)}return $1}var Bs={},pG;function Lie(){if(pG)return Bs;pG=1,Object.defineProperty(Bs,"__esModule",{value:!0}),Bs.parseCmpnd=r,Bs.parseHetnam=n,Bs.parseSeqres=i,Bs.getEntityPolySeq=c,Bs.getPdbxUnobsOrZeroOccResidues=o;const e=Ti(),t={MOL_ID:"",MOLECULE:"",CHAIN:"",FRAGMENT:"",SYNONYM:"",EC:"",ENGINEERED:"",MUTATION:"",OTHER_DETAILS:""};function r(s,h,f){const y=p=>s.data.substring(s.indices[2*p],s.indices[2*p+1]);let _,g={chains:[],description:""};const a=[];for(let p=h;p<f;p++){const m=y(p).substring(10,80).trim(),v=m.indexOf(":"),b=m.substring(0,v);let P;b in t?(_=b,P=m.substring(v+2)):P=m,P=P.replace(/;$/,""),_==="MOL_ID"?(g={chains:[],description:""},a.push(g)):_==="MOLECULE"?(g.description&&(g.description+=" "),g.description+=P):_==="CHAIN"&&Array.prototype.push.apply(g.chains,P.split(/\s*,\s*/))}const d=[];for(const p of a)for(const u of p.chains)d.push({description:p.description,chains:[u]});return d}function n(s,h,f){const y=g=>s.data.substring(s.indices[2*g],s.indices[2*g+1]),_=new Map;for(let g=h;g<f;g++){const a=y(g),d=a.substring(11,14).trim(),p=a.substring(15).trim();_.has(d)?_.set(d,`${_.get(d)} ${p}`):_.set(d,p)}return _}function i(s,h,f){const y=g=>s.data.substring(s.indices[2*g],s.indices[2*g+1]),_=new Map;for(let g=h;g<f;g++){const a=y(g),d=a.substring(11,12),p=a.substring(19).trim().split(/\s+/);_.has(d)||_.set(d,[]),_.get(d).push(...p)}return _}function c(s,h){const f=[],y=[],_=[],g=[],a=new Set;for(const[d,p]of s){const u=h(d);if(!(!u||a.has(u))){a.add(u);for(let m=0;m<p.length;m++)f.push(u),y.push(m+1),_.push(p[m]),g.push("no")}}if(f.length>0){const d={entity_id:e.CifField.ofStrings(f),num:e.CifField.ofNumbers(y),mon_id:e.CifField.ofStrings(_),hetero:e.CifField.ofStrings(g)};return e.CifCategory.ofFields("entity_poly_seq",d)}}
4123function o(s,h,f,y){const _=new Map;for(const x of s.keys()){const M=h(x);M&&_.set(x,M)}const g=new Set,a=new Map,d=f.label_asym_id.rowCount;for(let x=0;x<d;++x){const M=f.auth_asym_id.str(x),D=f.label_entity_id.str(x),V=_.get(M);if(V&&D!==V)continue;const R=f.label_asym_id.str(x),E=f.label_seq_id.int(x),I=f.pdbx_PDB_model_num.int(x);g.add(`${I}|${R}|${E}`),a.has(M)||a.set(M,R)}const p=[],u=[],m=[],v=[],b=[],P=[],C=[],l=[],S=[],T=[];let A=0;y=Math.max(y,1);for(let x=1;x<=y;++x)for(const[M,D]of s){const V=a.get(M);if(V)for(let R=0;R<D.length;R++){const E=R+1;g.has(`${x}|${V}|${E}`)||(A++,p.push(A),u.push(x),m.push(V),v.push(D[R]),b.push(E),P.push(M),C.push(D[R]),l.push(E),S.push("y"),T.push(1))}}if(p.length>0){const x={id:e.CifField.ofNumbers(p),PDB_model_num:e.CifField.ofNumbers(u),polymer_flag:e.CifField.ofStrings(S),occupancy_flag:e.CifField.ofNumbers(T),label_asym_id:e.CifField.ofStrings(m),label_comp_id:e.CifField.ofStrings(v),label_seq_id:e.CifField.ofNumbers(b),auth_asym_id:e.CifField.ofStrings(P),auth_comp_id:e.CifField.ofStrings(C),auth_seq_id:e.CifField.ofNumbers(l)};return e.CifCategory.ofFields("pdbx_unobs_or_zero_occ_residues",x)}}return Bs}var Rs={},CP={},X1={},hG;function Nie(){if(hG)return X1;hG=1,Object.defineProperty(X1,"__esModule",{value:!0}),X1.SubstitutionMatrices=void 0;const e="ACDEFGHIKLMNPQRSTVWY",t="ARNDCQEGHILKMFPSTWYVBZX",r=[[4,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,-3,-2],[0,9,-3,-4,-2,-3,-3,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-1,-2,-2],[-2,-3,6,2,-3,-1,-1,-3,-1,-4,-3,1,-1,0,-2,0,-1,-3,-4,-3],[-1,-4,2,5,-3,-2,0,-3,1,-3,-2,0,-1,2,0,0,-1,-2,-3,-2],[-2,-2,-3,-3,6,-3,-1,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,1,3],[0,-3,-1,-2,-3,6,-2,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-3,-2,-3],[-2,-3,-1,0,-1,-2,8,-3,-1,-3,-2,1,-2,0,0,-1,-2,-3,-2,2],[-1,-1,-3,-3,0,-4,-3,4,-3,2,1,-3,-3,-3,-3,-2,-1,3,-3,-1],[-1,-3,-1,1,-3,-2,-1,-3,5,-2,-1,0,-1,1,2,0,-1,-2,-3,-2],[-1,-1,-4,-3,0,-4,-3,2,-2,4,2,-3,-3,-2,-2,-2,-1,1,-2,-1],[-1,-1,-3,-2,0,-3,-2,1,-1,2,5,-2,-2,0,-1,-1,-1,1,-1,-1],[-2,-3,1,0,-3,0,1,-3,0,-3,-2,6,-2,0,0,1,0,-3,-4,-2],[-1,-3,-1,-1,-4,-2,-2,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-4,-3],[-1,-3,0,2,-3,-2,0,-3,1,-2,0,0,-1,5,1,0,-1,-2,-2,-1],[-1,-3,-2,0,-3,-2,0,-3,2,-2,-1,0,-2,1,5,-1,-1,-3,-3,-2],[1,-1,0,0,-2,0,-1,-2,0,-2,-1,1,-1,0,-1,4,1,-2,-3,-2],[0,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,-2,-2],[0,-1,-3,-2,-1,-3,-3,3,-2,1,1,-3,-2,-2,-3,-2,0,4,-3,-1],[-3,-2,-4,-3,1,-2,-2,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-3,11,2],[-2,-2,-3,-2,3,-3,2,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,2,7]],n=[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1]];function i(c,o){let s,h=0;const f={};return o.forEach(y=>{s=0;const _={};y.forEach(g=>_[c[s++]]=g),f[c[h++]]=_}),f}return X1.SubstitutionMatrices={blosum62:i(t,n),blosum62x:i(e,r)},X1}var gG;
4123function qie(){if(gG)return CP;gG=1,Object.defineProperty(CP,"__esModule",{value:!0}),CP.align=n;const e=Ct(),t=Nie(),r={gapPenalty:-11,gapExtensionPenalty:-1,substMatrix:"default"};function n(c,o,s={}){const h={...r,...s},f=new i(c,o,h);return f.calculate(),f.trace()}class i{constructor(o,s,h){this.seqA=o,this.seqB=s,this.S=[],this.V=[],this.H=[],this.gapPenalty=h.gapPenalty,this.gapExtensionPenalty=h.gapExtensionPenalty,this.substMatrix=h.substMatrix==="default"?void 0:t.SubstitutionMatrices[h.substMatrix],this.n=this.seqA.length,this.m=this.seqB.length}initMatrices(){const{n:o,m:s,gapPenalty:h,S:f,V:y,H:_}=this;for(let g=0;g<=o;++g){f[g]=[],y[g]=[],_[g]=[];for(let a=0;a<=s;++a)f[g][a]=0,y[g][a]=0,_[g][a]=0}for(let g=0;g<=o;++g)f[g][0]=h,_[g][0]=-1/0;for(let g=0;g<=s;++g)f[0][g]=h,y[0][g]=-1/0;f[0][0]=0}makeScoreFn(){const{seqA:o,seqB:s,substMatrix:h}=this;return h?function(y,_){var g;const a=o[y],d=s[_],p=(g=h[a])===null||g===void 0?void 0:g[d];return e.isDebugMode&&p===void 0&&console.warn(`Substitution matrix has no entry for residue pair ('${a}', '${d}') (seqA[${y}], seqB[${_}]). Non-standard residues are not supported with BLOSUM matrices.`),p??0}:function(y,_){const g=o[y],a=s[_];return g===a?5:-3}}calculate(){this.initMatrices();const o=this.makeScoreFn(),{V:s,H:h,S:f,n:y,m:_,gapExtensionPenalty:g,gapPenalty:a}=this;let d,p,u,m,v;for(let b=1;b<=y;++b){p=f[b-1],d=s[b-1],u=s[b],m=h[b],v=f[b];for(let P=1;P<=_;++P)u[P]=Math.max(p[P]+a,d[P]+g),m[P]=Math.max(v[P-1]+a,m[P-1]+g),v[P]=Math.max(p[P-1]+o(b-1,P-1),u[P],m[P])}}trace(){const o=this.makeScoreFn(),{V:s,H:h,S:f,seqA:y,seqB:_,gapExtensionPenalty:g,gapPenalty:a}=this;let d=this.n,p=this.m,u,m;const v=[],b=[];for(f[d][p]>=s[d][p]?(u="S",m=f[d][p]):s[d][p]>=h[d][p]?(u="V",m=s[d][p]):(u="H",m=h[d][p]);d>0&&p>0;)u==="S"?f[d][p]===f[d-1][p-1]+o(d-1,p-1)?(v.push(y[d-1]),b.push(_[p-1]),--d,--p,u="S"):f[d][p]===s[d][p]?u="V":f[d][p]===h[d][p]?u="H":(--d,--p):u==="V"?s[d][p]===s[d-1][p]+g?(v.push(y[d-1]),b.push("-"),--d,u="V"):s[d][p]===f[d-1][p]+a?(v.push(y[d-1]),b.push("-"),--d,u="S"):--d:u==="H"&&(h[d][p]===h[d][p-1]+g?(v.push("-"),b.push(_[p-1]),--p,u="H"):h[d][p]===f[d][p-1]+a?(v.push("-"),b.push(_[p-1]),--p,u="S"):--p);for(;d>0;)v.push(y[d-1]),b.push("-"),--d;for(;p>0;)v.push("-"),b.push(_[p-1]),--p;return v.reverse(),b.reverse(),{aliA:v,aliB:b,score:m}}}return CP}var yG;function Uie(){if(yG)return Rs;yG=1,Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.LabelAsymIdHelper=void 0,Rs.getAtomSiteTemplate=o,Rs.getAtomSite=g,Rs.addAtom=a;const e=Ti(),t=Or(),r=cc(),n=lt(),i=Wi(),c=qie();function o(d,p){const u=()=>[],m=()=>t.TokenBuilder.create(d,2*p);return{index:0,group_PDB:m(),id:u(),auth_atom_id:m(),label_alt_id:m(),auth_comp_id:m(),auth_asym_id:m(),auth_seq_id:m(),pdbx_PDB_ins_code:m(),Cartn_x:m(),Cartn_y:m(),Cartn_z:m(),occupancy:m(),B_iso_or_equiv:m(),type_symbol:m(),pdbx_PDB_model_num:u(),label_entity_id:u(),partial_charge:m()}}class s{constructor(p,u,m,v){this.asymIds=p,this.modelNums=u,this.terIndices=m,this.hasAssemblies=v,this.asymIdCounts=new Map,this.currModelNum=void 0,this.currAsymId="",this.currLabelAsymId=""}clear(){this.asymIdCounts.clear(),this.currModelNum=void 0}get(p){const u=this.asymIds.value(p);if(this.hasAssemblies)return u;const m=this.modelNums[p];if(m!==this.currModelNum?(this.asymIdCounts.clear(),this.currModelNum=m,this.currLabelAsymId=u):this.currAsymId!==u&&(this.currAsymId=u,this.currLabelAsymId=u),this.asymIdCounts.has(u)){if(this.terIndices.has(p)){const v=this.asymIdCounts.get(u)+1;this.asymIdCounts.set(u,v),this.currLabelAsymId=`${u}_${v}`}}else this.asymIdCounts.set(u,0);return this.currLabelAsymId}}Rs.LabelAsymIdHelper=s;const h=-1;function f(d,p){const u=p.length,m=d.length;if(u===0)return[];if(m===0)return new Array(u).fill(h);const{aliA:v,aliB:b}=(0,c.align)(p,d),P=new Array(u).fill(h);let C=0,l=0;for(let S=0,T=v.length;S<T;S++){const A=v[S]!=="-",x=b[S]!=="-";A&&x?(P[C]=l+1,C++,l++):A?C++:l++}return P}function y(d,p,u,m,v,b,P){const C=new Map;if(!d)return C;const l=new Map;let S="",T=-99999,A="___";const x=u.str(0);for(let M=0,D=p.rowCount;M<D&&u.str(M)===x;++M){const V=m.str(M),R=v.int(M),E=b.str(M);(V!==S||R!==T||E!==A)&&(l.has(V)||l.set(V,[]),l.get(V).push(P.str(M)),S=V,T=R,A=E)}for(const[M,D]of l){const V=d.get(M);V&&V.length>0&&C.set(M,f(V,D))}return C}function _(d,p,u){const m=d?d[0]:h;return m!==h?m:u?1:p}function g(d,p,u){p.clear();const m=e.CifField.ofStrings(d.pdbx_PDB_model_num),v=e.CifField.ofTokens(d.auth_asym_id),b=e.CifField.ofTokens(d.auth_seq_id),P=e.CifField.ofTokens(d.pdbx_PDB_ins_code),C=e.CifField.ofTokens(d.auth_atom_id),l=e.CifField.ofTokens(d.auth_comp_id),S=e.CifField.ofStrings(d.id);let T=!!u.seqresMap;if(!T){for(let k=0,j=S.rowCount;k<j;++k)if(P.str(k)!==""){T=!0;break}}const A=y(u.seqresMap,S,m,v,b,P,l);let x=m.str(0),M=v.str(0),D=b.int(0),V=P.str(0),R=A.get(M),E=0,I=_(R,D,T);const B=new Map,w=new Map,O=[],F=[],L=[];for(let k=0,j=S.rowCount;k<j;++k){const H=m.str(k),G=v.str(k),z=b.int(k),W=P.str(k);let X=C.str(k);if(H!==x)B.clear(),w.clear(),x=H,M=G,D=z,V=W,R=A.get(G),E=0,I=_(R,D,T);else if(M!==G)w.clear(),M=G,D=z,V=W,R=A.get(G),E=0,I=_(R,z,T);else if(D!==z||V!==W){w.clear(),E++;const Y=R&&E<R.length?R[E]:h;Y!==h?I=Y:D===I&&!T?I=z:I+=1,D=z,V=W}if(O[k]=p.get(k),w.has(X)){const Y=w.get(X)+1;w.set(X,Y),X=`${X}_${Y}`}else w.set(X,0);F[k]=X,T&&(L[k]=I)}const U=n.Column.ofStringArray(O),q=n.Column.ofStringArray(F),N=T?e.CifField.ofColumn(n.Column.ofIntArray(L)):e.CifField.ofUndef
4123ined(d.index,n.Column.Schema.int);return{auth_asym_id:v,auth_atom_id:C,auth_comp_id:l,auth_seq_id:b,B_iso_or_equiv:e.CifField.ofTokens(d.B_iso_or_equiv),Cartn_x:e.CifField.ofTokens(d.Cartn_x),Cartn_y:e.CifField.ofTokens(d.Cartn_y),Cartn_z:e.CifField.ofTokens(d.Cartn_z),group_PDB:e.CifField.ofTokens(d.group_PDB),id:S,label_alt_id:e.CifField.ofTokens(d.label_alt_id),label_asym_id:e.CifField.ofColumn(U),label_atom_id:e.CifField.ofColumn(q),label_comp_id:l,label_seq_id:N,label_entity_id:e.CifField.ofStrings(d.label_entity_id),occupancy:(0,i.areTokensEmpty)(d.occupancy)?e.CifField.ofUndefined(d.index,n.Column.Schema.float):e.CifField.ofTokens(d.occupancy),type_symbol:e.CifField.ofTokens(d.type_symbol),pdbx_PDB_ins_code:e.CifField.ofTokens(d.pdbx_PDB_ins_code),pdbx_PDB_model_num:m,partial_charge:e.CifField.ofTokens(d.partial_charge)}}function a(d,p,u,m,v,b){const{data:P}=u,C=v-m;t.TokenBuilder.addToken(d.group_PDB,t.Tokenizer.trim(u,m,m+6)),t.Tokenizer.trim(u,m+6,m+11),d.id[d.index]=u.data.substring(u.tokenStart,u.tokenEnd),t.TokenBuilder.addToken(d.auth_atom_id,t.Tokenizer.trim(u,m+12,m+16)),P.charCodeAt(m+16)===32?t.TokenBuilder.add(d.label_alt_id,0,0):t.TokenBuilder.add(d.label_alt_id,m+16,m+17),t.TokenBuilder.addToken(d.auth_comp_id,t.Tokenizer.trim(u,m+17,m+21)),t.TokenBuilder.add(d.auth_asym_id,m+21,m+22),t.TokenBuilder.addToken(d.auth_seq_id,t.Tokenizer.trim(u,m+22,m+26)),P.charCodeAt(m+26)===32?t.TokenBuilder.add(d.pdbx_PDB_ins_code,0,0):t.TokenBuilder.add(d.pdbx_PDB_ins_code,m+26,m+27),t.TokenBuilder.addToken(d.Cartn_x,t.Tokenizer.trim(u,m+30,m+38)),t.TokenBuilder.addToken(d.Cartn_y,t.Tokenizer.trim(u,m+38,m+46)),t.TokenBuilder.addToken(d.Cartn_z,t.Tokenizer.trim(u,m+46,m+54)),b==="pqr"?(t.TokenBuilder.addToken(d.partial_charge,t.Tokenizer.trim(u,m+54,m+62)),(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)):(t.TokenBuilder.addToken(d.occupancy,t.Tokenizer.trim(u,m+54,m+60)),C>=66?t.TokenBuilder.addToken(d.B_iso_or_equiv,t.Tokenizer.trim(u,m+60,m+66)):t.TokenBuilder.add(d.B_iso_or_equiv,0,0),b==="pdbqt"&&t.TokenBuilder.addToken(d.partial_charge,t.Tokenizer.trim(u,m+70,m+76)),C>=78&&b==="pdb"?(t.Tokenizer.trim(u,m+76,m+78),u.tokenStart<u.tokenEnd?t.TokenBuilder.addToken(d.type_symbol,u):(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)):(0,r.guessElementSymbolTokens)(d.type_symbol,P,m+12,m+16)),d.pdbx_PDB_model_num[d.index]=p,d.index++}return Rs}var xd={},vG;function jie(){if(vG)return xd;vG=1,Object.defineProperty(xd,"__esModule",{value:!0}),xd.getAnisotropicTemplate=i,xd.getAnisotropic=c,xd.addAnisotropic=o;const e=Ti(),t=Or(),r=cc(),n=La();function i(s,h){const f=()=>[],y=()=>new Float32Array(h),_=()=>t.TokenBuilder.create(s,2*h);return{index:0,count:h,id:f(),type_symbol:_(),pdbx_label_atom_id:_(),pdbx_label_alt_id:_(),pdbx_label_comp_id:_(),pdbx_label_asym_id:_(),pdbx_label_seq_id:_(),pdbx_PDB_ins_code:_(),"U[1][1]":y(),"U[2][2]":y(),"U[3][3]":y(),"U[1][2]":y(),"U[1][3]":y(),"U[2][3]":y(),pdbx_auth_seq_id:_(),pdbx_auth_comp_id:_(),pdbx_auth_asym_id:_(),pdbx_auth_atom_id:_()}}function c(s){const h=e.CifField.ofTokens(s.pdbx_auth_seq_id),f=e.CifField.ofTokens(s.pdbx_auth_comp_id),y=e.CifField.ofTokens(s.pdbx_auth_asym_id),_=e.CifField.ofTokens(s.pdbx_auth_atom_id),g={id:e.CifField.ofStrings(s.id),type_symbol:e.CifField.ofTokens(s.type_symbol),pdbx_label_atom_id:_,pdbx_label_alt_id:e.CifField.ofTokens(s.pdbx_label_alt_id),pdbx_label_comp_id:f,pdbx_label_asym_id:y,pdbx_label_seq_id:h,pdbx_PDB_ins_code:e.CifField.ofTokens(s.pdbx_PDB_ins_code),pdbx_auth_seq_id:h,pdbx_auth_comp_id:f,pdbx_auth_asym_id:y,pdbx_auth_atom_id:_};return g["U[1][1]"]=e.CifField.ofNumbers(s["U[1][1]"]),g["U[2][2]"]=e.CifField.ofNumbers(s["U[2][2]"]),g["U[3][3]"]=e.CifField.ofNumbers(s["U[3][3]"]),g["U[1][2]"]=e.CifField.ofNumbers(s["U[1][2]"]),g["U[1][3]"]=e.CifField.ofNumbers(s["U[1][3]"]),g["U[2][3]"]=e.CifField.ofNumbers(s["U[2][3]"]),g}function o(s,h,f,y,_){const{data:g}=f,a=_-y;t.Tokenizer.trim(f,y+6,y+11),s.id[s.index]=g.substring(f.tokenStart,f.tokenEnd),t.TokenBuilder.addToken(s.pdbx_auth_atom_id,t.Tokenizer.trim(f,y+12,y+16)),g.charCodeAt(y+16)===32?t.TokenBuilder.add(s.pdbx_label_alt_id,0,0):t.TokenBuilder.add(s.pdbx_label_alt_id,y+16,y+17),t.TokenBuilder.addToken(s.pdbx_auth_comp_id,t.Tokenizer.trim(f,y+17,y+21)),t.TokenBuilder.add(s.pdbx_auth_asym_id,y+21,y+22),t.TokenBuilder.addToken(s.pdbx_auth_seq_id,t.Tokenizer.trim(f,y+22,y+26)),g.charCodeAt(y+26)===32?t.TokenBuilder.add(s.pdbx_PDB_ins_code,0,0):t.TokenBuilder.add(s.pdbx_PDB_ins_code,y+26,y+27),s["U[1][1]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+28,y+35)/1e4,s["U[2][2]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+35,y+42)/1e4,s["U[3][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+42,y+49)/1e4,s["U[1][2]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+49,y+56)/1e4,s["U[1][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+56,y+63)/1e4,s["U[2][3]"][s.index]=(0,n.parseIntSkipLeadingWhitespace)(g,y+63,y+70)/1e4,a>=78?(t.Tokenizer.trim(f,y+76,y+78),f.tokenStart<f.tokenEnd?t.TokenBuilder.addToken(s.type_symbol,f):(0,r.guessElementSymbolTokens)(s.type_symbol,g,y+12,y+16)):(0,r.guessElementSymbolTokens)(s.type_symbol,g,y+12,y+16),s.index++}return xd}var PP={},bG;function Gie(){if(bG)return PP;
4123bG=1,Object.defineProperty(PP,"__esModule",{value:!0}),PP.parseConect=r;const e=Ti(),t=Xi();function r(n,i,c,o){const s={};for(let R=0,E=o.id.rowCount;R<E;++R)s[o.id.str(R)]=R;const h=R=>n.data.substring(n.indices[2*R],n.indices[2*R+1]),f=[],y=[],_=[],g=[],a=[],d=[],p=[],u=[],m=[],v=[],b=[],P=[],C=[],l=[],S=[],T=[11,16,21,26];let A=1,x=-1,M={},D=!1;for(let R=i;R<c;R++){const E=h(R),I=s[parseInt(E.substr(6,5))];if(I!==void 0){x!==I&&(x=I,M={});for(let B=0;B<4;++B){const w=parseInt(E.substr(T[B],5));if(Number.isNaN(w))continue;const O=s[w];if(O===void 0||I>O)continue;if(M[O]!==void 0){_[M[O]]+=1,D=!0;continue}M[O]=A-1;const F=o.type_symbol.str(I),L=o.type_symbol.str(O);(0,t.isMetal)(F)||(0,t.isMetal)(L)?(f.push(`metalc${A}`),y.push("metalc")):(f.push(`covale${A}`),y.push("covale")),_.push(1),g.push(o.label_asym_id.str(I)),a.push(o.label_seq_id.int(I)),d.push(o.auth_seq_id.int(I)),p.push(o.label_atom_id.str(I)),u.push(o.label_alt_id.str(I)),m.push(o.pdbx_PDB_ins_code.str(I)),v.push(o.label_asym_id.str(O)),b.push(o.label_seq_id.int(O)),P.push(o.auth_seq_id.int(O)),C.push(o.label_atom_id.str(O)),l.push(o.label_alt_id.str(O)),S.push(o.pdbx_PDB_ins_code.str(O)),A+=1}}}const V={id:e.CifField.ofStrings(f),conn_type_id:e.CifField.ofStrings(y),ptnr1_label_asym_id:e.CifField.ofStrings(g),ptnr1_label_seq_id:e.CifField.ofNumbers(a),ptnr1_auth_seq_id:e.CifField.ofNumbers(d),ptnr1_label_atom_id:e.CifField.ofStrings(p),pdbx_ptnr1_label_alt_id:e.CifField.ofStrings(u),pdbx_ptnr1_PDB_ins_code:e.CifField.ofStrings(m),ptnr2_label_asym_id:e.CifField.ofStrings(v),ptnr2_label_seq_id:e.CifField.ofNumbers(b),ptnr2_auth_seq_id:e.CifField.ofNumbers(P),ptnr2_label_atom_id:e.CifField.ofStrings(C),pdbx_ptnr2_label_alt_id:e.CifField.ofStrings(l),pdbx_ptnr2_PDB_ins_code:e.CifField.ofStrings(S)};if(D){const R=["sing","doub","trpl","quad"];V.pdbx_value_order=e.CifField.ofStrings(_.map(E=>R[E-1]||"sing"))}return e.CifCategory.ofFields("struct_conn",V)}return PP}var TP={},_G;function zie(){if(_G)return TP;_G=1,Object.defineProperty(TP,"__esModule",{value:!0}),TP.addHeader=e;function e(t,r,n,i){const c=t.substring(r,n);i.id_code=c.substring(62,66).trim()||void 0,i.dep_date=c.substring(50,59).trim()||void 0,i.classification=c.substring(10,50).trim()||void 0}return TP}var SG;function Hie(){if(SG)return SP;SG=1,Object.defineProperty(SP,"__esModule",{value:!0}),SP.pdbToMmCif=p;const e=Ti(),t=Or(),r=kie(),n=Fie(),i=Lie(),c=Ai(),o=xi(),s=lt(),h=dt(),f=Uie(),y=jie(),_=Gie(),g=Ct(),a=zie();function d(u,m,v,b){const P=b.length;if(P>v-m)return!1;for(let C=0;C<P;C++)if(u.charCodeAt(m+C)!==b.charCodeAt(C))return!1;return!0}async function p(u){const{lines:m,variant:v}=u,{data:b,indices:P}=m,C=(0,t.Tokenizer)(b);let l=0,S=0;for(let G=0,z=m.count;G<z;G++){const W=P[2*G],X=P[2*G+1];switch(b.charAt(W)){case"A":d(b,W,X,"ATOM ")?l++:d(b,W,X,"ANISOU")&&S++;break;case"H":d(b,W,X,"HETATM")&&l++;break}}const T={},A=(0,f.getAtomSiteTemplate)(b,l),x=(0,y.getAnisotropicTemplate)(b,S),M=new o.EntityBuilder,D=[],V=[];let R=0,E="",I,B=!1,w;const O=new Set;for(let G=0,z=m.count;G<z;G++){let W=P[2*G],X=P[2*G+1];switch(b.charAt(W)){case"A":d(b,W,X,"ATOM ")?(R||(R++,E=""+R),(0,f.addAtom)(A,E,C,W,X,v)):d(b,W,X,"ANISOU")&&(0,y.addAnisotropic)(x,E,C,W,X);break;case"C":if(d(b,W,X,"CRYST1"))D.push(...(0,r.parseCryst1)(u.id||"?",b.substring(W,X)));else if(d(b,W,X,"CONECT")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"CONECT");)Y++;I?g.isDebugMode&&console.log("only single CONECT block allowed, ignoring others"):I=[G,Y],G=Y-1}else if(d(b,W,X,"COMPND")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"COMPND");)Y++;M.setCompounds((0,i.parseCmpnd)(m,G,Y)),G=Y-1}break;case"H":if(d(b,W,X,"HEADER"))(0,a.addHeader)(b,W,X,T);else if(d(b,W,X,"HETATM"))R||(R++,E=""+R),(0,f.addAtom)(A,E,C,W,X,v);else if(d(b,W,X,"HELIX")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"HELIX");)Y++;D.push((0,n.parseHelix)(m,G,Y)),G=Y-1}else if(d(b,W,X,"HETNAM")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"HETNAM");)Y++;V.push(...Array.from((0,i.parseHetnam)(m,G,Y).entries())),G=Y-1}break;case"M":if(d(b,W,X,"MODEL ")&&(R++,E=""+R),d(b,W,X,"MTRIX")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"MTRIX");)Y++;D.push(...(0,r.parseMtrix)(m,G,Y)),G=Y-1}break;case"O":break;case"R":if(d(b,W,X,"REMARK 350")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"REMARK 350");)Y++;D.push(...(0,r.parseRemark350)(m,G,Y)),G=Y-1,B=!0}break;case"S":if(d(b,W,X,"SHEET")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"SHEET");)Y++;D.push((0,n.parseSheet)(m,G,Y)),G=Y-1}else if(d(b,W,X,"SEQRES")){let Y=G+1;for(;W=P[2*Y],X=P[2*Y+1],!!d(b,W,X,"SEQRES");)Y++;w?g.isDebugMode&&console.log("only single SEQRES block allowed, ignoring others"):(w=(0,i.parseSeqres)(m,G,Y),M.setSeqres(w)),G=Y-1}break;case"T":d(b,W,X,"TER")&&O.add(A.index)}}if(T.id_code){const G={id:e.CifField.ofString(T.id_code)};D.push(e.CifCategory.ofFields("entry",G))}if(T.classification){const G={pdbx_keywords:e.CifField.ofString(T.classification)};D.push(e.CifCategory.ofFields("struct_keywords",G))}if(T.dep_date){const G={recvd_initial_deposition_date:e.CifField.ofString(T.dep_date)};D.push(e.CifCategory.ofFields("pdbx_database_status",G))}const F=s.Column.ofIntTokens(A.auth_seq_id),L=s.Column.ofStringTokens(A.auth_atom_id),U=s.Column.ofStringTokens(A.auth_comp_id),q=s.Column.ofStringTokens(A.auth_asym_id),N=new f.LabelAsymIdHelper(q,A.pdbx_PDB_model_num,O,B),k=new c.ComponentBuilder(F,L);k.setNames(V),M.setNames(V);for(let G=0,z=U.rowCount;G<z;
4123++G){const W=U.value(G),X=(0,h.getMoleculeType)(k.add(W,G).type,W),Y=N.get(G);A.label_entity_id[G]=M.getEntityId(W,X,Y)}const j=(0,f.getAtomSite)(A,N,{hasAssemblies:B,seqresMap:w});v==="pdb"&&delete j.partial_charge,I&&D.push((0,_.parseConect)(m,I[0],I[1],j));const H={entity:e.CifCategory.ofTable("entity",M.getEntityTable()),chem_comp:e.CifCategory.ofTable("chem_comp",k.getChemCompTable()),atom_site:e.CifCategory.ofFields("atom_site",j),atom_site_anisotrop:e.CifCategory.ofFields("atom_site_anisotrop",(0,y.getAnisotropic)(x))};if(w){const G=(0,i.getEntityPolySeq)(w,W=>M.getEntityIdForChain(W));G&&D.push(G);const z=(0,i.getPdbxUnobsOrZeroOccResidues)(w,W=>M.getEntityIdForChain(W),j,R);z&&D.push(z)}for(const G of D)H[G.name]=G;return{header:u.id||v.toUpperCase(),categoryNames:Object.keys(H),categories:H}}return SP}var CG;function Wie(){if(CG)return Pd;CG=1,Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PdbFormat=void 0,Pd.trajectoryFromPDB=h;const e=Hie(),t=nt(),r=Mi(),n=ga(),i=lt(),c=c2(),o=vn();var s;(function(f){function y(g){return g?.kind==="pdb"}f.is=y;function _(g){return{kind:"pdb",name:g.id||"",data:g}}f.create=_})(s||(Pd.PdbFormat=s={}));function h(f){return t.Task.create("Parse PDB",async y=>{var _;await y.update("Converting to mmCIF");const g=await(0,e.pdbToMmCif)(f),a=r.MmcifFormat.fromFrame(g,void 0,s.create(f)),d=(0,o.createBasic)(a.data.db,!0),p=await(0,n.createModels)(d,a,y),u=(_=g.categories.atom_site)===null||_===void 0?void 0:_.getField("partial_charge");if(u&&p.frameCount===1){const m=p.representative,v=m.atomicHierarchy.atomSourceIndex,P=i.Column.isIdentity(v)?void 0:v.toArray({array:Int32Array}),C=u.toFloatArray(),l=P?i.Column.ofFloatArray(i.Column.mapToArray(v,S=>C[S],Float32Array)):i.Column.ofFloatArray(C);c.AtomPartialCharge.Provider.set(m,{data:l,type:"GASTEIGER"})}return p})}return Pd}var Ad={},PG;function $ie(){if(PG)return Ad;PG=1,Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.PsfFormat=void 0,Ad.topologyFromPsf=_;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(g){const a=new Array(g.count),d=new Array(g.count),p=new Uint32Array(g.count),u=new Uint32Array(g.count),m=new Array(g.count),v=new o.EntityBuilder,b=new c.ComponentBuilder(g.residueId,g.atomName);let P="",C=0,l="",S=0,T=g.segmentName.value(0),A=!1,x=t.MoleculeType.Unknown,M=-1;for(let V=0,R=g.count;V<R;++V){const E=g.residueId.value(V),I=g.segmentName.value(V);if(T!==I?(l=(0,s.getChainId)(C),C+=1,S=0,A=!0,T=I):A=!1,A||E!==M){const B=g.residueName.value(V),w=(0,t.getMoleculeType)(b.add(B,V).type,B);!A&&(w!==x||E!==M+1)&&(l=(0,s.getChainId)(C),C+=1,S=0),P=v.getEntityId(B,w,l),S+=1,M=E,x=w}a[V]=P,d[V]=l,p[V]=S,u[V]=V,m[V]=(0,h.guessElementSymbolString)(g.atomName.value(V),g.residueName.value(V))}const D=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:g.segmentName,auth_atom_id:g.atomName,auth_comp_id:g.residueName,auth_seq_id:g.residueId,id:e.Column.ofIntArray(u),label_asym_id:e.Column.ofStringArray(d),label_atom_id:g.atomName,label_comp_id:g.residueName,label_seq_id:e.Column.ofIntArray(p),label_entity_id:e.Column.ofStringArray(a),occupancy:e.Column.ofConst(1,g.count,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(m),pdbx_PDB_model_num:e.Column.ofConst(1,g.count,e.Column.Schema.int)},g.count);return(0,i.createBasic)({entity:v.getEntityTable(),chem_comp:b.getChemCompTable(),atom_site:D})}var y;(function(g){function a(p){return p?.kind==="psf"}g.is=a;function d(p){return{kind:"psf",name:p.id,data:p}}g.fromPsf=d})(y||(Ad.PsfFormat=y={}));function _(g){return n.Task.create("Parse PSF",async a=>{const d=y.fromPsf(g),p=f(g.atoms),{atomIdA:u,atomIdB:m}=g.bonds,v={indexA:e.Column.ofLambda({value:b=>u.value(b)-1,rowCount:u.rowCount,schema:u.schema}),indexB:e.Column.ofLambda({value:b=>m.value(b)-1,rowCount:m.rowCount,schema:m.schema}),order:e.Column.ofConst(1,g.bonds.count,e.Column.Schema.int)};return r.Topology.create(g.id,p,v,d)})}return Ad}var K1={},nA={},wu={},TG;function Xie(){if(TG)return wu;TG=1,Object.defineProperty(wu,"__esModule",{value:!0}),wu.getPositionalArgs=t,wu.tryGetArg=r,wu.pickArgs=n,wu.aggregate=i;const e=dr();function t(c){return Object.keys(c).filter(o=>!isNaN(o)).map(o=>+o).sort((o,s)=>o-s).map(o=>c[o])}function r(c,o,s){return c&&c[o]!==void 0?c[o]:s}function n(c,...o){const s=Object.create(null);let h=0;for(const f of Object.keys(c))o.indexOf(f)>=0&&(s[f]=c[f],h++);return h?s:void 0}function i(c,o,s){return e.MolScriptBuilder.struct.atomSet.reduce({initial:s!==void 0?s:c,value:o([e.MolScriptBuilder.struct.slot.elementSetReduce(),c])})}return wu}var xG;function Kie(){return xG||(xG=1,(function(e){Object.defineProperty(e,"__esMo
4123dule",{value:!0}),e.SymbolList=e.SymbolMap=e.NamedArgs=e.Constants=e.MolScriptSymbols=e.SymbolTable=void 0,e.isMolScriptSymbol=_,e.transpileMolScript=u;const t=HD(),r=PT(),n=Mf(),i=$D(),c=tS(),o=WD(),s=dr(),h=Xie();function f(m,...v){return{kind:"alias",aliases:v,symbol:m}}function y(m,v,...b){return m.info.namespace="molscript-macro",m.id=`molscript-macro.${m.info.name}`,{kind:"macro",symbol:m,translate:v,aliases:[m.info.name,...b]}}function _(m){return m.kind==="alias"||m.kind==="macro"}e.SymbolTable=[["Core symbols",f(i.MolScriptSymbolTable.core.type.bool,"bool"),f(i.MolScriptSymbolTable.core.type.num,"num"),f(i.MolScriptSymbolTable.core.type.str,"str"),f(i.MolScriptSymbolTable.core.type.regex,"regex"),f(i.MolScriptSymbolTable.core.type.list,"list"),f(i.MolScriptSymbolTable.core.type.set,"set"),f(i.MolScriptSymbolTable.core.type.compositeKey,"composite-key"),f(i.MolScriptSymbolTable.core.logic.not,"not"),f(i.MolScriptSymbolTable.core.logic.and,"and"),f(i.MolScriptSymbolTable.core.logic.or,"or"),f(i.MolScriptSymbolTable.core.ctrl.if,"if"),f(i.MolScriptSymbolTable.core.ctrl.fn,"fn"),f(i.MolScriptSymbolTable.core.ctrl.eval,"eval"),f(i.MolScriptSymbolTable.core.math.add,"add","+"),f(i.MolScriptSymbolTable.core.math.sub,"sub","-"),f(i.MolScriptSymbolTable.core.math.mult,"mult","*"),f(i.MolScriptSymbolTable.core.math.div,"div","/"),f(i.MolScriptSymbolTable.core.math.pow,"pow","**"),f(i.MolScriptSymbolTable.core.math.mod,"mod"),f(i.MolScriptSymbolTable.core.math.min,"min"),f(i.MolScriptSymbolTable.core.math.max,"max"),f(i.MolScriptSymbolTable.core.math.cantorPairing,"cantor-pairing"),f(i.MolScriptSymbolTable.core.math.sortedCantorPairing,"sorted-cantor-pairing"),f(i.MolScriptSymbolTable.core.math.invertCantorPairing,"invert-cantor-pairing"),f(i.MolScriptSymbolTable.core.math.floor,"floor"),f(i.MolScriptSymbolTable.core.math.ceil,"ceil"),f(i.MolScriptSymbolTable.core.math.roundInt,"round"),f(i.MolScriptSymbolTable.core.math.trunc,"trunc"),f(i.MolScriptSymbolTable.core.math.abs,"abs"),f(i.MolScriptSymbolTable.core.math.sign,"sign"),f(i.MolScriptSymbolTable.core.math.sqrt,"sqrt"),f(i.MolScriptSymbolTable.core.math.cbrt,"cbrt"),f(i.MolScriptSymbolTable.core.math.sin,"sin"),f(i.MolScriptSymbolTable.core.math.cos,"cos"),f(i.MolScriptSymbolTable.core.math.tan,"tan"),f(i.MolScriptSymbolTable.core.math.asin,"asin"),f(i.MolScriptSymbolTable.core.math.acos,"acos"),f(i.MolScriptSymbolTable.core.math.atan,"atan"),f(i.MolScriptSymbolTable.core.math.sinh,"sinh"),f(i.MolScriptSymbolTable.core.math.cosh,"cosh"),f(i.MolScriptSymbolTable.core.math.tanh,"tanh"),f(i.MolScriptSymbolTable.core.math.exp,"exp"),f(i.MolScriptSymbolTable.core.math.log,"log"),f(i.MolScriptSymbolTable.core.math.log10,"log10"),f(i.MolScriptSymbolTable.core.math.atan2,"atan2"),f(i.MolScriptSymbolTable.core.rel.eq,"eq","="),f(i.MolScriptSymbolTable.core.rel.neq,"neq","!="),f(i.MolScriptSymbolTable.core.rel.lt,"lt","<"),f(i.MolScriptSymbolTable.core.rel.lte,"lte","<="),f(i.MolScriptSymbolTable.core.rel.gr,"gr",">"),f(i.MolScriptSymbolTable.core.rel.gre,"gre",">="),f(i.MolScriptSymbolTable.core.rel.inRange,"in-range"),f(i.MolScriptSymbolTable.core.str.concat,"concat"),f(i.MolScriptSymbolTable.core.str.match,"regex.match"),f(i.MolScriptSymbolTable.core.list.getAt,"list.get"),f(i.MolScriptSymbolTable.core.set.has,"set.has"),f(i.MolScriptSymbolTable.core.set.isSubset,"set.subset")],["Structure",["Types",f(i.MolScriptSymbolTable.structureQuery.type.entityType,"ent-type"),f(i.MolScriptSymbolTable.structureQuery.type.authResidueId,"auth-resid"),f(i.MolScriptSymbolTable.structureQuery.type.labelResidueId,"label-resid"),f(i.MolScriptSymbolTable.structureQuery.type.ringFingerprint,"ringfp"),f(i.MolScriptSymbolTable.structureQuery.type.bondFlags,"bond-flags")],["Slots",f(i.MolScriptSymbolTable.structureQuery.slot.elementSetReduce,"atom.set.reduce.value")],["Generators",f(i.MolScriptSymbolTable.structureQuery.generator.atomGroups,"sel.atom.atom-groups"),f(i.MolScriptSymbolTable.structureQuery.generator.queryInSelection,"sel.atom.query-in-selection"),f(i.MolScriptSymbolTable.structureQuery.generator.rings,"sel.atom.rings"),f(i.MolScriptSymbolTable.structureQuery.generator.empty,"sel.atom.empty"),f(i.MolScriptSymbolTable.structureQuery.generator.all,"sel.atom.all"),f(i.MolScriptSymbolTable.structureQuery.generator.bondedAtomicPairs,"sel.atom.bonded-pairs"),y((0,n.MSymbol)("sel.atom.atoms",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to each atom."})}),o.Types.ElementSelection,"A selection of singleton atom sets."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"atom-test":(0,h.tryGetArg)(m,0,!0)})),y((0,n.MSymbol)("sel.atom.res",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each residue."})}),o.Types.ElementSelection,"A selection of atom sets grouped by residue."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"residue-test":(0,h.tryGetArg)(m,0,!0),"group-by":s.MolScriptBuilder.ammp("residueKey")})),y((0,n.MSymbol)("sel.atom.chains",n.Arguments.Dictionary({0:(0,n.Argument)(c.Type.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each chain."})}),o.Types.ElementSelection,"A selection of atom sets grouped by chain."),m=>s.MolScriptBuilder.struct.generator.atomGroups({"chain-test":(0,h.tryGetArg)(m,0,!0),"group-by":s.MolScriptBuilder.ammp("chainKey")}))],["Modifiers",f(i.MolScriptSymbolTable.structureQuery.modifier.queryEach,"sel.atom.query-each"),f(i.MolScriptSymbolTable.structureQuery.modifier.intersectBy,"sel.atom.intersect-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.exceptBy,"sel.atom.except-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.unionBy,"sel.atom.union-by"),f(i.MolScriptSymbolTable.structureQuery.modifier.union,"sel.atom.union"),f(i.MolScriptSymbolTable.structureQuery.modifier.cluster,"sel.atom.cluster"),f(i.MolScriptSymbolTable.structureQuery.modifier.includeSurroundings,"sel.atom.include-surroundings"),f(i.MolScriptSymbolTable.structureQuery.modifier.surroundingLigands,"sel.atom.surrounding-ligands"),f(i.MolScriptSymbolTable.structureQuery.modifier.includeConnected,"sel.atom.include-connected"),f(i.MolScriptSymbolTable.structureQuery.modifier.expandProperty,"sel.atom.expand-property")],["Filters",f(i.MolScriptSymbolTable.structureQuery.filter.pick,"sel.atom.pick"),f(i.MolScriptSymbolTable.structureQuery.filter.first,"sel.atom.first"),f(i.MolScriptSymbolTable.structureQuery.filter.withSameAtomProperties,"sel.atom.with-same-atom-properties"),f(i.MolScriptSymbolTable.structureQuery.filter.intersectedBy,"sel.atom.intersected-by"),f(i.MolScriptSymbolTable.structureQuery.filter.within,"sel.atom.within"),f(i.MolScriptSymbolTable.structureQuery.filter.isConnectedTo,"sel.atom.is-connected-to")],["Combinators",f(i.MolScriptSymbolTable.structureQuery.combinator.intersect,"sel.atom.intersect"),f(i.MolScriptSymbolTable.structureQuery.combinator.merge,"sel.atom.merge"),f(i.MolScriptSymbolTable.structureQuery.combinator.distanceCluster,"sel.atom.dist-cluster")],["Atom Set Properties",f(i.MolScriptSymbolTable.structureQuery.atomSet.atomCount,"atom.set.atom-count"),f(i.MolScriptSymbolTable.structureQuery.atomSet.countQuery,"atom.set.count-query"),f(i.MolScriptSymbolTable.structureQuery.atomSet.reduce,"atom.set.reduce"),f(i.MolScriptSymbolTable.structureQuery.atomSet.propertySet,"atom.set.property")],["Atom Properties",f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.elementSymbol,"atom.el"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.vdw,"atom.vdw"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.mass,"atom.mass"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.atomicNumber,"atom.atomic-number"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.x,"atom.x"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.y,"atom.y"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.z,"atom.z"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.sourceIndex,"atom.src-index"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorName,"atom.op-name"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.instanceId,"atom.instance-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.operatorKey,"atom.op-key"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelIndex,"atom.model-index"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelLabel,"atom.model-label"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.modelEntryId,"atom.model-entry-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.atomKey,"atom.key"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.core.bondCount,"atom.bond-count"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.topology.connectedComponentKey,"atom.key.molecule"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.authResidueId,"atom.auth-resid"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.labelResidueId,"atom.label-resid"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.residueKey,"atom.key.res"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chainKey,"atom.key.chain"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityKey,"atom.key.entity"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isHet,"atom.is-het"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.id,"atom.id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_atom_id,"atom.label_atom_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_alt_id,"atom.label_alt_id","atom.altloc"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_comp_id,"atom.label_comp_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_asym_id,"atom.label_asym_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_entity_id,"atom.label_entity_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.label_seq_id,"atom.label_seq_id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_atom_id,"atom.auth_atom_id","atom.name"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_comp_id,"atom.auth_comp_id","atom.resname"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_asym_id,"atom.auth_asym_id","atom.chain"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.auth_seq_id,"atom.auth_seq_id","atom.resno"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,"atom.pdbx_PDB_ins_code","atom.inscode"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,"atom.pdbx_formal_charge"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.occupancy,"atom.occupancy"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,"atom.B_iso_or_equiv","atom.bfactor"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityType,"atom.entity-type"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entitySubtype,"atom.entity-subtype"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityPrdId,"atom.entity-prd-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.entityDescription,"atom.entity-description"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.objectPrimitive,"atom.object-primitive"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.chemCompType,"atom.chem-comp-type"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.secondaryStructureKey,"atom.key.sec-struct"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.isModified,"atom.is-modified"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.macromolecular.modifiedParentName,"atom.modified-parent"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.ihm.hasSeqId,"atom.ihm.has-seq-id"),f(i.MolScriptSymbolTable.structureQuery.atomProperty.ihm.overlapsSeqIdRange,"atom.ihm.overlaps-seq-id-range")],["Bond Properties",f(i.MolScriptSymbolTable.structureQuery.bondProperty.order,"bond.order"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.length,"bond.length"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.key,"bond.key"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.atomA,"bond.atom-a"),f(i.MolScriptSymbolTable.structureQuery.bondProperty.atomB,"bond.atom-b"),y((0,n.MSymbol)("bond.is",n.Arguments.List(o.Types.BondFlag),c.Type.Bool,`Test if the current bond has at least one (or all if partial = false) of the specified flags: ${c.Type.oneOfValues(o.Types.BondFlag).join(", ")}`),m=>
4123s.MolScriptBuilder.core.flags.hasAny([s.MolScriptBuilder.struct.bondProperty.flags(),s.MolScriptBuilder.struct.type.bondFlags((0,h.getPositionalArgs)(m))]))]]];const g=[];function a(m){for(const v of m)_(v)?g.push(v):v instanceof Array&&a(v)}a(e.SymbolTable);const d=(function(){const m=[],v=Object.create(null),b=t.UniqueArray.create(),P=t.UniqueArray.create();for(const C of g){for(const S of C.aliases){if(m.push([S,C]),v[S])throw new Error(`Alias '${S}' already in use.`);v[S]=C}const l=C.symbol.args;if(l.kind!=="dictionary"){l.type.kind==="oneof"&&c.Type.oneOfValues(l.type).forEach(S=>t.UniqueArray.add(P,S,S));continue}for(const S of Object.keys(l.map)){isNaN(S)&&t.UniqueArray.add(b,S,S);const T=l.map[S];T.type.kind==="oneof"&&c.Type.oneOfValues(T.type).forEach(A=>t.UniqueArray.add(P,A,A))}}return{symbolList:m,symbolMap:v,namedArgs:b.array,constants:P.array}})();e.MolScriptSymbols=g,e.Constants=d.constants,e.NamedArgs=d.namedArgs,e.SymbolMap=d.symbolMap,e.SymbolList=d.symbolList;function p(m){if(r.Expression.isLiteral(m))return m;if(r.Expression.isSymbol(m)){if(!e.SymbolMap[m.name])return m;const S=e.SymbolMap[m.name];if(S.kind==="alias")return r.Expression.Symbol(e.SymbolMap[m.name].symbol.id);throw S.translate([])}const v=r.Expression.isSymbol(m.head)&&!!e.SymbolMap[m.head.name]&&e.SymbolMap[m.head.name].kind==="macro",b=v?m.head:p(m.head),P=b!==m.head;if(!m.args)return v?p(m.head):P?r.Expression.Apply(b):m;let C=!1,l;if(r.Expression.isArgumentsArray(m.args)){l=[];for(let S=0,T=m.args.length;S<T;S++){const A=m.args[S],x=p(A);A!==x&&(C=!0),l[l.length]=x}if(C||(l=m.args),!v&&!P&&!C)return m}else{l={};for(const S of Object.keys(m.args)){const T=m.args[S],A=p(T);T!==A&&(C=!0),l[S]=A}if(!v&&!P&&!C)return m;C||(l=m.args)}if(v){const S=e.SymbolMap[m.head.name];return S.kind!=="macro"?r.Expression.Apply(b,l):S.translate(l)}return r.Expression.Apply(b,l)}function u(m){return p(m)}})(nA)),nA}var xP={},Md={},AG;function uc(){if(AG)return Md;AG=1,Object.defineProperty(Md,"__esModule",{value:!0}),Md.MonadicParser=void 0;class e{constructor(g){this._=g}parse(g){const a=this.skip(e.eof)._(g,0);return a.status?{success:!0,value:a.value}:{success:!1,index:c(g,a.furthest),expected:a.expected}}tryParse(g){const a=this.parse(g);if(a.success)return a.value;{const d=h(g,a);throw new Error(d)}}or(g){return e.alt(this,g)}trim(g){return this.wrap(g,g)}wrap(g,a){return t(1,typeof g=="string"?e.string(g):g,this,typeof a=="string"?e.string(a):a)}thru(g){return g(this)}then(g){return t(1,this,g)}many(){return new e((g,a)=>{const d=[];let p;for(;;)if(p=i(this._(g,a),p),p.status){if(a===p.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");a=p.index,d.push(p.value)}else return i(r(a,d),p)})}times(g,a){const d=typeof a>"u"?g:a;return new e((p,u)=>{const m=[];let v,b,P;for(P=0;P<g;P++)if(v=this._(p,u),b=i(v,b),v.status)u=v.index,m.push(v.value);else return b;for(;P<d&&(v=this._(p,u),b=i(v,b),v.status);P+=1)u=v.index,m.push(v.value);return i(r(u,m),b)})}result(g){return this.map(()=>g)}atMost(g){return this.times(0,g)}atLeast(g){return e.seq(this.times(g),this.many()).map(a=>[...a[0],...a[1]])}map(g){return new e((a,d)=>{const p=this._(a,d);return p.status?i(r(p.index,g(p.value)),p):p})}skip(g){return t(0,this,g)}mark(){return e.seq(e.index,this,e.index).map(g=>({start:g[0],value:g[1],end:g[2]}))}node(g){return e.seq(e.index,this,e.index).map(a=>({name:g,start:a[0],value:a[1],end:a[2]}))}sepBy(g){return e.sepBy(this,g)}sepBy1(g){return e.sepBy1(this,g)}lookahead(g){return this.skip(e.lookahead(g))}notFollowedBy(g){return this.skip(e.notFollowedBy(g))}desc(g){return new e((a,d)=>{const p=this._(a,d);return p.status||(p.expected=[g]),p})}fallback(g){return this.or(e.succeed(g))}ap(g){return e.seq(g,this).map(([a,d])=>a(d))}chain(g){return new e((a,d)=>{const p=this._(a,d);if(!p.status)return p;const u=g(p.value);return i(u._(a,p.index),p)})}}Md.MonadicParser=e,(function(_){function g(O,F,L){const U=[].slice.call(arguments);if(U.length===0)throw new Error("seqMap needs at least one argument");const q=U.pop();if(typeof q!="function")throw new Error("not a function: "+q);return d.apply(null,U).map(function(N){return q.apply(null,N)})}_.seqMap=g;function a(O){const F={};for(const L of Object.keys(O))(function(U){F[U]=E(()=>O[U](F))})(L);return F}_.createLanguage=a;function d(...O){const F=O.length;return new _((L,U)=>{let q;
4123const N=new Array(F);let k=U;for(let j=0;j<F;j++){if(q=i(O[j]._(L,k),q),!q.status)return q;N[j]=q.value,k=q.index}return i(r(k,N),q)})}_.seq=d;function p(...O){return O.length===0?S("zero alternates"):new _((L,U)=>{let q;for(let N=0;N<O.length;N++)if(q=i(O[N]._(L,U),q),q.status)return q;return q})}_.alt=p;function u(O,F){return m(O,F).or(l([]))}_.sepBy=u;function m(O,F){const L=F.then(O).many();return d(O,L).map(U=>[U[0],...U[1]])}_.sepBy1=m;function v(O){const F=`'${O}'`;if(O.length===1){const L=O.charCodeAt(0);return new _((U,q)=>U.charCodeAt(q)===L?r(q+1,O):n(q,F))}return new _((L,U)=>{const q=U+O.length;return L.slice(U,q)===O?r(q,O):n(U,F)})}_.string=v;function b(O){const F=""+O;return F.slice(F.lastIndexOf("/")+1)}function P(O){return RegExp("^(?:"+O.source+")",b(O))}function C(O,F=0){const L=P(O),U=""+O;return new _((q,N)=>{const k=L.exec(q.slice(N));if(k){if(0<=F&&F<=k.length){const H=k[0],G=k[F];return r(N+H.length,G)}const j=`invalid match group (0 to ${k.length}) in ${U}`;return n(N,j)}return n(N,U)})}_.regexp=C;function l(O){return new _((F,L)=>r(L,O))}_.succeed=l;function S(O){return new _((F,L)=>n(L,O))}_.fail=S;function T(O){if(y(O))return new _((F,L)=>{const U=O._(F,L);return U.status&&(U.index=L,U.value=null),U});if(typeof O=="string")return T(v(O));if(O instanceof RegExp)return T(C(O));throw new Error("not a string, regexp, or parser: "+O)}_.lookahead=T;function A(O){return new _((F,L)=>{const U=O._(F,L);return U.status?n(L,'not "'+F.slice(L,U.index)+'"'):r(L,null)})}_.notFollowedBy=A;function x(O){return new _((F,L)=>{const U=F.charAt(L);return L<F.length&&O(U)?r(L+1,U):n(L,"a character "+O)})}_.test=x;function M(O){return x(F=>O.indexOf(F)>=0)}_.oneOf=M;function D(O){return x(F=>O.indexOf(F)<0)}_.noneOf=D;function V(O,F){return x(L=>O<=L&&L<=F).desc(O+"-"+F)}_.range=V;function R(O){return new _((F,L)=>{let U=L;for(;U<F.length&&O(F.charAt(U));)U++;return r(U,F.slice(L,U))})}_.takeWhile=R;function E(O){const F=new _((L,U)=>{const q=O()._;return F._=q,q(L,U)});return F}_.lazy=E;function I(){return S("empty")}_.empty=I,_.index=new _(function(O,F){return r(F,c(O,F))}),_.anyChar=new _((O,F)=>F>=O.length?n(F,"any character"):r(F+1,O.charAt(F))),_.all=new _(function(O,F){return r(O.length,O.slice(F))}),_.eof=new _(function(O,F){return F<O.length?n(F,"EOF"):r(F,null)}),_.digit=C(/[0-9]/).desc("a digit"),_.digits=C(/[0-9]*/).desc("optional digits"),_.letter=C(/[a-z]/i).desc("a letter"),_.letters=C(/[a-z]*/i).desc("optional letters"),_.optWhitespace=C(/\s*/).desc("optional whitespace"),_.whitespace=C(/\s+/).desc("whitespace"),_.cr=v("\r"),_.lf=v(` 4124`),_.crlf=v(`\r 4125`),_.newline=p(_.crlf,_.lf,_.cr).desc("newline"),_.end=p(_.newline,_.eof);function B(O){return l(O)}_.of=B;function w(O){return C(O)}_.regex=w})(e||(Md.MonadicParser=e={}));function t(_,...g){const a=g.length;return new e((d,p)=>{let u,m,v=p;for(let b=0;b<a;b++){if(u=i(g[b]._(d,v),u),!u.status)return u;_===b&&(m=u.value),v=u.index}return i(r(v,m),u)})}function r(_,g){return{status:!0,index:_,value:g}}function n(_,g){return{status:!1,furthest:_,expected:[g]}}function i(_,g){if(!g||_.status||g.status||_.furthest>g.furthest)return _;const a=_.furthest===g.furthest?f(_.expected,g.expected):g.expected;return{status:_.status,furthest:g.furthest,expected:a}}function c(_,g){const a=_.slice(0,g).split(` 4126`),d=a.length,p=a[a.length-1].length+1;return{offset:g,line:d,column:p}}function o(_){return _.length===1?_[0]:"one of "+_.join(", ")}function s(_,g){const a=g.index,d=a.offset;if(d===_.length)return", got the end of the input";const p=d>0?"'...":"'",u=_.length-d>12?"...'":"'";return` at line ${a.line} column ${a.column}, got ${p}${_.slice(d,d+12)}${u}`}function h(_,g){return`expected ${o(g.expected)}${s(_,g)}`}function f(_,g){const a=_.length,d=g.length;if(a===0)return g;if(d===0)return _;const p=new Set,u=[];for(let m=0;m<a;m++)p.has(_[m])||(u[u.length]=_[m],p.add(_[m]));for(let m=0;m<d;m++)p.has(g[m])||(u[u.length]=g[m],p.add(g[m]));return u.sort(),u}function y(_){return _ instanceof e}return Md}var MG;function Yie(){if(MG)return xP;
4126MG=1,Object.defineProperty(xP,"__esModule",{value:!0}),xP.parseMolScript=i;const e=uc(),t=PT(),r=dr(),n=Gt();function i(o){return c.parse(o)}var c;return(function(o){let s;(function(x){function M(E){return{kind:"string",value:E}}x.str=M;function D(E){return{kind:"symbol",value:E}}x.symb=D;function V(E,I){return{kind:"list",bracket:E,nodes:I}}x.list=V;function R(E){return{kind:"comment",value:E}}x.comment=R})(s||(s={}));const h=e.MonadicParser.regexp(/[\n\r\s]*/),f=e.MonadicParser.lazy(()=>e.MonadicParser.alt(y,m,_,g).trim(h)),y=e.MonadicParser.takeWhile(x=>x!=="`").trim("`").map(s.str),_=e.MonadicParser.regexp(/[^()\[\]{};`,\n\r\s]+/).map(s.symb),g=e.MonadicParser.regexp(/\s*;+([^\n\r]*)\n/,1).map(s.comment),a=f.many(),d=a.wrap("(",")").map(x=>s.list("(",x)),p=a.wrap("[","]").map(x=>s.list("[",x)),u=a.wrap("{","}").map(x=>s.list("{",x)),m=e.MonadicParser.alt(d,p,u),v=f.many();function b(x){return v.tryParse(x)}function P(x){switch(x.kind){case"string":return x.value;case"symbol":{const M=x.value;if(M.length>1)switch(M.charAt(0)){case".":return r.MolScriptBuilder.atomName(M.substr(1));case"_":return r.MolScriptBuilder.struct.type.elementSymbol([M.substr(1)])}return M==="true"?!0:M==="false"?!1:T(M)?+M:t.Expression.Symbol(M)}case"list":switch(x.bracket){case"[":return r.MolScriptBuilder.core.type.list(S(x.nodes).map(P));case"{":return r.MolScriptBuilder.core.type.set(S(x.nodes).map(P));case"(":{if(x.nodes[0].kind==="comment")throw new Error("Invalid expression");const M=P(x.nodes[0]);return t.Expression.Apply(M,C(x.nodes))}default:(0,n.assertUnreachable)(x.bracket)}default:(0,n.assertUnreachable)(x)}}function C(x){if(x.length<=1)return;if(!l(x)){const R=[];for(let E=1,I=x.length;E<I;E++){const B=x[E];B.kind!=="comment"&&(R[R.length]=P(B))}return R}const M={};let D=!0,V=0;for(let R=1,E=x.length;R<E;R++){const I=x[R];if(I.kind!=="comment")if(I.kind==="symbol"&&I.value.length>1&&I.value.charAt(0)===":"){const B=I.value.substr(1);for(++R;R<E&&x[R].kind==="comment";)R++;if(R>=E)throw new Error(`There must be a value foolowed a named arg ':${B}'.`);if(x[R].kind==="comment")throw new Error("Invalid expression");M[B]=P(x[R]),isNaN(+B)&&(D=!1)}else M[V++]=P(I)}if(D){const R=Object.keys(M).map(I=>+I).sort((I,B)=>I-B);let E=!0;for(let I=0,B=R.length;I<B;I++)if(R[I]!==I){E=!1;break}if(E){const I=[];for(let B=0,w=R.length;B<w;B++)I[B]=M[B];return I}}return M}function l(x){for(let M=1,D=x.length;M<D;M++){const V=x[M];if(V.kind==="symbol"&&V.value.length>1&&V.value.charAt(0)===":")return!0}return!1}function S(x){let M=!1;for(let D=0,V=x.length;D<V;D++)if(x[D].kind==="comment"){M=!0;break}return M?x.filter(D=>D.kind!=="comment"):x}function T(x){return/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/.test(x)&&!isNaN(+x)}function A(x){const M=b(x),D=[];for(const V of M)V.kind!=="comment"&&(D[D.length]=P(V));return D}o.parse=A})(c||(c={})),xP}var AP={},Y1={},Q1={},iA={},DG;function fs(){return DG||(DG=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.escapeRegExp=void 0,e.prefix=o,e.postfix=s,e.binaryRight=h,e.binaryLeft=f,e.combineOperators=y,e.infixOp=_,e.prefixOp=g,e.postfixOp=a,e.ofOp=d,e.makeError=p,e.andExpr=u,e.orExpr=m,e.testExpr=v,e.invertExpr=b,e.strLenSortFn=P,e.getPropertyRules=l,e.getNamedPropertyRules=S,e.getKeywordRules=T,e.getFunctionRules=A,e.getPropertyNameRules=x,e.getReservedWords=M,e.atomNameSet=D,e.asAtoms=V,e.wrapValue=R,e.testLevel=O,e.valuesTest=L,e.resnameExpr=U;const r=At.__importStar(uc()),i=dr().MolScriptBuilder,c=ui();Object.defineProperty(e,"escapeRegExp",{enumerable:!0,get:function(){return c.escapeRegExp}});function o(q,N,k){const j=r.MonadicParser.lazy(()=>r.MonadicParser.seq(q,j).map(H=>k(...H)).or(N));return j}function s(q,N,k){return r.MonadicParser.seqMap(N,q.many(),(j,H)=>H.reduce((G,z)=>k(z,G),j))}function h(q,N,k){const j=r.MonadicParser.lazy(()=>N.chain(H=>r.MonadicParser.seq(q,r.MonadicParser.of(H),j).map(G=>G).or(r.MonadicParser.of(H))));return j}function f(q,N,k){return r.MonadicParser.seqMap(N,r.MonadicParser.seq(q,N).many(),(j,H)=>H.reduce((G,z)=>{const[W,X]=z;return k(W,G,X)}
4126,j))}function y(q,N){return q.reduce((j,H)=>{const G=H.isUnsupported?p(`operator '${H.name}' not supported`):H.map;return H.type(H.rule,j,G)},N)}function _(q,N=0){return r.MonadicParser.optWhitespace.then(r.MonadicParser.regexp(q,N).skip(r.MonadicParser.optWhitespace))}function g(q,N=0){return r.MonadicParser.regexp(q,N).skip(r.MonadicParser.optWhitespace)}function a(q,N=0){return r.MonadicParser.optWhitespace.then(r.MonadicParser.regexp(q,N))}function d(q,N){const k=N?`${q}|${(0,c.escapeRegExp)(N)}`:q,j=RegExp(`(${k})\\s+([-+]?[0-9]*\\.?[0-9]+)\\s+OF`,"i");return _(j,2).map(parseFloat)}function p(q){return function(){throw new Error(q)}}function u(q){return q.length===1?q[0]:q.length>1?i.core.logic.and(q):void 0}function m(q){return q.length===1?q[0]:q.length>1?i.core.logic.or(q):void 0}function v(q,N){if(N&&N.op!==void 0&&N.val!==void 0){const k=[q,N.val];switch(N.op){case"=":return i.core.rel.eq(k);case"!=":return i.core.rel.neq(k);case">":return i.core.rel.gr(k);case"<":return i.core.rel.lt(k);case">=":return i.core.rel.gre(k);case"<=":return i.core.rel.lte(k);default:throw new Error(`operator '${N.op}' not supported`)}}else return N&&N.flags!==void 0?i.core.flags.hasAny([q,N.flags]):N&&N.min!==void 0&&N.max!==void 0?i.core.rel.inRange([q,N.min,N.max]):Array.isArray(N)?N.length>1?i.core.set.has([i.core.type.set(N),q]):i.core.rel.eq([q,N[0]]):i.core.rel.eq([q,N])}function b(q){return i.struct.generator.queryInSelection({0:q,query:i.struct.generator.all(),"in-complement":!0})}function P(q,N){return q.length<N.length?1:-1}function C(q,N){const k=(N?[q].concat(N):[q]).sort(P).map(c.escapeRegExp).join("|");return RegExp(`${k}`,"i")}function l(q){const N={};return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=p(`property '${k}' not supported`),G=r.MonadicParser.regexp(j.regex).map(z=>(j.isUnsupported&&H(),v(j.property,j.map(z))));j.isNumeric||(N[k]=G)}),N}function S(q){const N=[];return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=p(`property '${k}' not supported`),G=r.MonadicParser.regexp(j.regex).map(X=>(j.isUnsupported&&H(),v(j.property,j.map(X)))),z=r.MonadicParser.regexp(C(k,j.abbr)).trim(r.MonadicParser.optWhitespace),W=X=>i.struct.generator.atomGroups({[j.level]:X});j.isNumeric?N.push(z.then(r.MonadicParser.seq(r.MonadicParser.regexp(/>=|<=|=|!=|>|</).trim(r.MonadicParser.optWhitespace),r.MonadicParser.regexp(j.regex).map(j.map))).map(X=>(j.isUnsupported&&H(),v(j.property,{op:X[0],val:X[1]}))).map(W)):N.push(z.then(G).map(W))}),N}function T(q){const N=[];return Object.keys(q).sort(P).forEach(k=>{const j=q[k],H=j.map?j.map:p(`keyword '${k}' not supported`),G=r.MonadicParser.regexp(C(k,j.abbr)).map(H);N.push(G)}),N}function A(q,N){const k=[],j=r.MonadicParser.regexp(/\(\s*/),H=r.MonadicParser.regexp(/\s*\)/);return Object.keys(q).sort(P).forEach(G=>{const z=q[G],W=z.map?z.map:p(`function '${G}' not supported`),X=r.MonadicParser.regexp(new RegExp(G,"i")).skip(j).then(N).skip(H).map(W);k.push(X)}),k}function x(q,N){const k=[];return Object.keys(q).sort(P).forEach(j=>{const H=q[j],G=p(`property '${j}' not supported`),z=r.MonadicParser.regexp(C(j,H.abbr)).lookahead(N).map(()=>(H.isUnsupported&&G(),H.property));k.push(z)}),k}function M(q,N,k,j){const H=[];for(const G in q)H.push(G),q[G].abbr&&H.push(...q[G].abbr);for(const G in N)H.push(G),N[G].abbr&&H.push(...N[G].abbr);return k.forEach(G=>{H.push(G.name),G.abbr&&H.push(...G.abbr)}),H}function D(q){return i.core.type.set(q.map(i.atomName))}function V(q){return i.struct.generator.queryInSelection({0:q,query:i.struct.generator.all()})}function R(q,N,k){switch(q.head.name){case"structure-query.atom-property.macromolecular.label_atom_id":return i.atomName(N);case"structure-query.atom-property.core.element-symbol":return i.es(N);case"structure-query.atom-property.macromolecular.secondary-structure-flags":return k&&(N=[k[N.toUpperCase()]||"none"]),i.struct.type.secondaryStructureFlags([N]);default:return N}}const E="structure-query.atom-property.macromolecular.",I=["entityKey","label_entity_id","entityType"],B=["chainKey","label_asym_id","label_entity_id","auth_asym_id","entityType"],w=["residueKey","label_comp_id","label_seq_id","auth_comp_id","auth_seq_id","pdbx_formal_charge","secondaryStructureKey","secondaryStructureFlags","isModified","modifiedParentName"];function O(q){if(q.head.name.startsWith(E)){const N=q.head.name.substr(E.length);if(I.includes(N))return"entity-test";if(B.includes(N))return"chain-test";if(w.includes(N))return"residue-test"}return"atom-test"}const F=["structure-query.atom-property.macromolecular.secondary-structure-flags"];function L(q,N){if(F.includes(q.head.name)){const k=N[0].head,j=[];
4126return N.forEach(H=>j.push(...H.args[0])),i.core.flags.hasAny([q,{head:k,args:j}])}else{if(N.length===1)return i.core.rel.eq([q,N[0]]);if(N.length>1)return i.core.set.has([i.core.type.set(N),q])}}function U(q){return i.struct.generator.atomGroups({"residue-test":i.core.set.has([i.core.type.set(q),i.ammp("label_comp_id")])})}})(iA)),iA}var Dd={},IG;function Qie(){if(IG)return Dd;IG=1,Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.properties=void 0,Dd.structureMap=o;const t=dr().MolScriptBuilder,r=/[-+]?[0-9]*\.?[0-9]+/,n=/[0-9]+/;function i(s){return s}const c={none:"none",turn:"turn",sheet:"beta",helix:"helix",dna:"dna",rna:"rna",carbohydrate:"carbohydrate",helix310:"3-10",helixalpha:"alpha",helixpi:"pi",0:"none",1:"turn",2:"beta",3:"helix",4:"dna",5:"rna",6:"carbohydrate",7:"3-10",8:"alpha",9:"pi"};function o(s){if(s.head){if(s.head.name&&s.head.name==="core.type.regex"&&(s=s.args[0].replace(/^\^|\$$/g,"")),s=c[s.toString().toLowerCase()]||"none",["dna","rna","carbohydrate"].indexOf(s)!==-1)throw new Error("values 'dna', 'rna', 'carbohydrate' not yet supported for 'structure' property");return t.struct.type.secondaryStructureFlags([s])}}return Dd.properties={adpmax:{"@desc":"the maximum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},adpmin:{"@desc":"the minimum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},altloc:{"@desc":"PDB alternate location identifier","@examples":["altloc = A"],regex:/[a-zA-Z0-9]/,map:i,level:"atom-test",property:t.ammp("label_alt_id")},altname:{"@desc":"an alternative name given to atoms by some file readers (for example, P2N)","@examples":[""],isUnsupported:!0,regex:/[a-zA-Z0-9]/,map:i,level:"atom-test"},atomID:{"@desc":"special atom IDs for PDB atoms assigned by Jmol","@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomIndex:{"@desc":"atom 0-based index; a unique number for each atom regardless of the number of models loaded","@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomName:{"@desc":"atom name","@examples":["atomName = CA"],regex:/[a-zA-Z0-9]+/,map:s=>t.atomName(s),level:"atom-test",property:t.ammp("label_atom_id")},atomno:{"@desc":'sequential number; you can use "@" instead of "atomno=" -- for example, select @33 or Var x = @33 or @35',"@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},atomType:{"@desc":"atom type (mol2, AMBER files) or atom name (other file types)","@examples":["atomType = OH"],regex:/[a-zA-Z0-9]+/,map:s=>t.atomName(s),level:"atom-test",property:t.ammp("label_atom_id")},atomX:{"@desc":"Cartesian X coordinate (or just X)","@examples":["x = 4.2"],abbr:["X"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("x")},atomY:{"@desc":"Cartesian Y coordinate (or just Y)","@examples":["y < 42"],abbr:["Y"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("y")},atomZ:{"@desc":"Cartesian Z coordinate (or just Z)","@examples":["Z > 10"],abbr:["Z"],isNumeric:!0,regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("z")},bondcount:{"@desc":"covalent bond count","@examples":["bondcount = 0"],isNumeric:!0,regex:n,map:s=>parseInt(s),level:"atom-test",property:t.acp("bondCount")},bondingRadius:{"@desc":"radius used for auto bonding; synonymous with ionic and ionicRadius","@examples":[""],abbr:["ionic","ionicRadius"],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},cell:{"@desc":'crystallographic unit cell, expressed either in lattice integer notation (111-999) or as a coordinate in ijk space, where {1 1 1} is the same as 555. ANDing two cells, for example select cell=555 and cell=556, selects the atoms on the common face. (Note: in the specifc case of CELL, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},configuration:{"@desc":'Only in the context {configuration=n}
4126, this option selects the set of atoms with either no ALTLOC specified or those atoms having this index into the array of altlocs within its model. So, for example, if the model has altloc "A" and "B", select configuration=1 is equivalent to select altloc="" or altloc="A", and print {configuration=2} is equivalent to print {altloc="" or altloc="B"}. Configuration 0 is "all atoms in a model having configurations", and an invalid configuration number gives no atoms. (Note: in the specifc case of CONFIGURATION, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:n,map:s=>parseInt(s),level:"atom-test"},chain:{"@desc":'protein chain. For newer CIF files allowing multicharacter chain specifications, use quotations marks: select chain="AA". For these multicharacter desigations, case is not checked unless the CIF file has lower-case chain designations.',"@examples":["chain = A",'chain = "AA"'],regex:/[a-zA-Z0-9]+/,map:i,level:"chain-test",property:t.ammp("auth_asym_id")},chainNo:{"@desc":'chain number; sequentially counted from 1 for each model; chainNo == 0 means"no chain" or PDB chain identifier indicated as a blank (Jmol 14.0).',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},color:{"@desc":"the atom color","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},covalentRadius:{"@desc":"covalent bonding radius, synonymous with covalent. Not used by Jmol, but could be used, for example, in {*}.spacefill={*}.covalentRadius.all.","@examples":[""],abbr:["covalent"],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},cs:{"@desc":"chemical shift calculated using computational results that include magnetic shielding tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},element:{"@desc":'element symbol. The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted element symbol, "H", "He", "Li", etc. or atomic number. In all other contexts, the value is the element symbol. When the atom is a specific isotope, the string will contain the isotope number -- "13C", for example.',"@examples":["element=Fe"],regex:/[a-zA-Z]+/,map:s=>t.es(s),level:"atom-test",property:t.acp("elementSymbol")},elemno:{"@desc":"atomic element number","@examples":["elemno=8"],regex:/[0-9\s{}-]+/,map:s=>parseInt(s),level:"atom-test",property:t.acp("atomicNumber")},eta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},theta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},file:{"@desc":"file number containing this atom","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},formalCharge:{"@desc":"formal charge","@examples":["formalCharge=1"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("pdbx_formal_charge")},format:{"@desc":"format (label) of the atom.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fXyz:{"@desc":"fractional XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fX:{"@desc":"fractional X coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fY:{"@desc":"fractional Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fZ:{"@desc":"fractional Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuxyz:{"@desc":"fractional XYZ coordinates in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fux:{"@desc":"fractional X coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuy:{"@desc":"fractional Y coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},fuz:{"@desc":"fractional Z coordinate in the unit cell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},group:{"@desc":"3-letter residue code","@examples":["group = ALA"],regex:/[a-zA-Z0-9]{1,3}/,map:i,level:"residue-test",property:t.ammp("label_comp_id")},group1:{"@desc":"single-letter residue code (amino acids only)","@examples":["group1 = G"],regex:/[a-zA-Z]/,map:i,level:"residue-test",property:t.ammp("label_comp_id")}
vendor: 4,789 bytes, line 4126
4126,groupID:{"@desc":"group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file. 0 noGroup 1-5 ALA, ARG, ASN, ASP, CYS 6-10 GLN, GLU, GLY, HIS, ILE 11-15 LEU, LYS, MET, PHE, PRO 16-20 SER, THR, TRP, TYR, VAL 21-23 ASX, GLX, UNK 24-29 A, +A, G, +G, I, +I 30-35 C, +C, T, +T, U, +U Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},groupindex:{"@desc":"overall group index","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},hydrophobicity:{"@desc":"Aminoacid residue scale of hydrophobicity based on Rose, G. D., Geselowitz, A. R., Lesser, G. J., Lee, R. H., and Zehfus, M. H. (1985). Hydrophobicity of amino acid residues in globular proteins, Science, 229(4716):834-838.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},identify:{"@desc":"for a PDB/mmCIF file, a label such as [ILE]7^1:A.CD1%A/3 #47, which includes the group ([ILE]), residue number with optional insertion code (7^1), chain (:A), atom name (CD1), alternate location if present (%A), PDB model number (/3, for NMR models when one file is loaded; /file.model such as /2.3 if more than one file is loaded), and atom number (#47). For non-PDB data, the information is shorter -- for example, H15/2.1 #6, indicating atom name (H15), full file.model number (/2.1), and atom number (#6). If only a single model is loaded, %[identify] does not include the model number.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},insertion:{"@desc":"protein residue insertion code","@examples":["insertion=A"],regex:/[a-zA-Z0-9]/,map:i,level:"atom-test",property:t.ammp("pdbx_PDB_ins_code")},label:{"@desc":"current atom label (same as format)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},mass:{"@desc":"atomic mass -- especially useful with appended .max or .sum","@examples":["mass > 13"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("mass")},model:{"@desc":"model number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modelindex:{"@desc":"a unique number for each model, starting with 0 and spanning all models in all files","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modO:{"@desc":"currently calculated occupancy from modulation (0 to 100; NaN if atom has no occupancy modulation)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},modXYZ:{"@desc":"currently calculated displacement modulation (for incommensurately modulated structures). Also modX, modY, modZ for individual components. For atoms without modultion, {xx}.modXYZ is -1 and {xx}.modX is NaN, and in a label %[modXYZ] and %[modX] are blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},molecule:{"@desc":"molecule number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},monomer:{"@desc":"monomer number (group number) in a polymer (usually a chain), starting with 1, or 0 if not part of a biopolymer -- that is, not a connected carbohydrate, amino acid, or nucleic acid (Jmol 14.3.15)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},ms:{"@desc":"magnetic shielding calculated from file-loaded tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},occupancy:{"@desc":'CIF file site occupancy. In SELECT command comparisons ("select occupancy < 90"), an integer n implies measurement on a 0-100 scale; also, in the context %[occupancy] or %q for a label, the reported number is a percentage. In all other cases, such as when %Q is used in a label or when a decimal number is used in a comparison, the scale is 0.0 - 1.0.',"@examples":["occupancy < 1"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("occupancy")},partialCharge:{"@desc":"partial charge","@examples":[""],isUnsupported:!0,regex:r,map:s=>parseFloat(s),level:"atom-test"},phi:{"@desc":"protein group PHI angle for atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},polymer:{"@desc":"sequential polymer number in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},polymerLength:{"@desc":"polymer length","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},property_xx:{"@desc":"a property created using the DATA command","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},psi:{"@desc":"protein group PSI angle for the atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,radius:{"@desc":'currently displayed radius -- In SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms; in all other cases or when a decimal number is used, the units are Angstroms.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},resno:{"@desc":"PDB residue number, not including insertion code (see also seqcode, below)","@examples":["resno = 100"],regex:/-?[0-9]+/,map:s=>parseInt(s),level:"residue-test",property:t.ammp("auth_seq_id")},selected:{"@desc":"1.0 if atom is selected; 0.0 if not","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},sequence:{"@desc":'PDB one-character sequence code, as a string of characters, with "?" indicated where single-character codes are not available',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},seqcode:{"@desc":'PDB residue number, including insertion code (for example, 234^2; "seqcode" option added in Jmol 14.3.16)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},seqid:{"@desc":"(mmCIF only) the value from _atom_site.label_seq_id; a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category specifying the sequence of monomers in a polymer. Allowance is made for the possibility of microheterogeneity in a sample by allowing a given sequence number to be correlated with more than one monomer id. (Jmol 14.2.3)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},shape:{"@desc":'hybridization geometry such as "tetrahedral"',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},site:{"@desc":"crystallographic site number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},spacefill:{"@desc":"currently displayed radius","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},straightness:{"@desc":'quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of quaternionFrame as "A" (alpha-carbon/phosphorus atom only), "C" (alpha-carbon/pyrimidine or purine base based), "P" (carbonyl-carbon peptide plane/phosphorus tetrahedron based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psii-1 - phii + psii + phii+1.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},strucno:{"@desc":"a unique number for each helix, sheet, or turn in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},structure:{"@desc":'The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", or "carbohydrate" or a respective number 0-6. In the context {*}.structure, the return value is a number; in the context label %[structure], the return is one of the six keywords.',"@examples":['structure="helix"',"structure=3"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|[0-6]/i,map:i,level:"residue-test",property:"structure"},substructure:{"@desc":'like structure, the value of this parameter depends upon the context. Used with select substructure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", "carbohydrate", "helix310", "helixalpha", or "helixpi", or the respective number 0-9. In the context {*}.substructure, the return value is a number; in the context label %[substructure], the return is one of the nine keywords.',"@examples":['substructure = "alphahelix"',"substructure =9"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|helix310|helixalpha|helixpi|[0-9]/i,map:i,level:"residue-test",property:"structure"},surfacedistance:{"@desc":"A value related to the distance of an atom to a nominal molecular surface. 0 indicates at the surface. Positive numbers are minimum distances in Angstroms from the given atom to the surface.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,symop:{"@desc":'the first symmetry operation code that generated this atom by Jmol; an integer starting with 1. See also symmetry, below. This operator is only present if the file contains space group information and the file was loaded using the {i, j, k} option so as to generate symmetry-based atoms. To select only the original atoms prior to application of symmetry, you can either use "SYMOP=n", where n is the symmetry operator corresponding to "x,y,z", or you can specify instead simply "NOT symmetry" the way you might specify "NOT hydrogen". Note that atoms in special positions will have multiple operator matches. These atoms can be selected using the keyword SPECIALPOSITION. The special form select SYMOP=nijk selects a specific translation of atoms from the given crystallographic symmetry operation. Comparators <, <=, >, >=, and != can be used and only apply to the ijk part of the designation. The ijk are relative, not absolute. Thus, symop=2555 selects for atoms that have been transformed by symop=2 but not subjected to any further translation. select symop=1555 is identical to select not symmetry. All other ijk are relative to these selections for 555. If the model was loaded using load "filename.cif" {444 666 1}, where the 1 indicates that all symmetry-generated atoms are to be packed within cell 555 and then translated to fill the other 26 specified cells, then select symop=3555 is nearly the same as select symop=3 and cell=555. (The difference being that cell=555 selects for all atoms that are on any edge of the cell, while symop=3555 does not.) However, the situation is different if instead the model was loaded using load "filename.cif" {444 666 0}, where the 0 indicates that symmetry-generated atoms are to be placed exactly where their symmetry operator would put them (x,-y,z being different then from x, 1-y, z). In that case, select symop=3555 is for all atoms that have been generated using symmetry operation 3 but have not had any additional translations applied to the x,y,z expression found in the CIF file. If, for example, symmetry operation 3 is -x,-y,-z, then load "filename.cif" {444 666 0} will place an atom originally at {1/2, 1/2, 1/2} at positions {-1/2, -1/2, -1/2} (symop=3555) and {-3/2, -3/2, -3/2} (symop=3444) and 24 other sites.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},symmetry:{"@desc":'as "symmetry" or in a label as lower-case "o" gives list of crystallographic symmetry operators generating this atom with lattice designations,such as 3555; upper-case "%O" in a label gives a list without the lattice designations. See also symop, above.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},temperature:{"@desc":"yes yes temperature factor (B-factor)","@examples":["temperature >= 20"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.ammp("B_iso_or_equiv")},unitXyz:{"@desc":"unit cell XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uX:{"@desc":"unit cell X coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uY:{"@desc":"unit cell Y coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},uZ:{"@desc":"unit cell Z coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},valence:{"@desc":"the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vanderwaals:{"@desc":"van der Waals radius","@examples":["vanderwaals >2"],regex:r,map:s=>parseFloat(s),level:"atom-test",property:t.acp("vdw")},vectorScale:{"@desc":"vibration vector scale","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},volume:{"@desc":"approximate van der Waals volume for this atom. Note, {*}.volume gives an average; use {*}.volume.sum to get total volume.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vXyz:{"@desc":"vibration vector, or individual components as %vx %vy %vz. For atoms without vibration vectors, {xx}.vXyz is -1; in a label, %[vxyz] is blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}
4126,vX:{"@desc":"vibration vector X coordinate; for atoms without vibration vector, {xx}.vX is NaN (same for vY and vZ)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vY:{"@desc":"vibration vector Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},vZ:{"@desc":"vibration vector Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"},xyz:{"@desc":"Cartesian XYZ coordinates; select xyz > 1.0 selects atoms more than one Angstrom from the origin.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:i,level:"atom-test"}},Dd}var Z1={},wG;function Zie(){if(wG)return Z1;wG=1,Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder;return Z1.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not ARG"],name:"not",type:r.prefix,rule:t.MonadicParser.alt(t.MonadicParser.regex(/NOT/i).skip(t.MonadicParser.whitespace),t.MonadicParser.string("!").skip(t.MonadicParser.optWhitespace)),map:(c,o)=>r.invertExpr(o)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["ASP and .CA"],name:"and",type:r.binaryLeft,rule:r.infixOp(/AND|&/i),map:(c,o,s)=>i.struct.modifier.intersectBy({0:o,by:s})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["ASP or GLU"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR|\||,/i),map:(c,o,s)=>i.struct.combinator.merge([o,s])}],Z1}var J1={},VG;function Jie(){if(VG)return J1;VG=1,Object.defineProperty(J1,"__esModule",{value:!0}),J1.keywords=void 0;const e=At,r=dr().MolScriptBuilder,n=e.__importStar(fs()),i={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],amino:["ALA","ARG","ASN","ASP","CYS","GLN","GLU","GLY","HIS","ILE","LEU","LYS","MET","PHE","PRO","SER","THR","TRP","TYR","VAL","ASX","GLX","UNK"],aromatic:["HIS","PHE","TRP","TYR"],basic:["ARG","HIS","LYS"],buried:["ALA","CYS","ILE","LEU","MET","PHE","TRP","VAL"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","GLY","ILE","LEU","MET","PHE","PRO","TRP","TYR","VAL"],large:["ARG","GLU","GLN","HIS","ILE","LEU","LYS","MET","PHE","TRP","TYR"],medium:["ASN","ASP","CYS","PRO","THR","VAL"],small:["ALA","GLY","SER"],nucleic:["G","C","A","T","U","I","DG","DC","DA","DT","DU","DI","+G","+C","+A","+T","+U","+I"]},c={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA"]};function o(){return r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set(...i.nucleic),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.and([r.core.rel.eq([r.struct.atomSet.atomCount(),1]),r.core.rel.eq([r.ammp("label_atom_id"),r.atomName("P")])])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.isSubset([n.atomNameSet(["C1'","C2'","O3'","C3'","C4'","C5'","O5'"]),r.ammpSet("label_atom_id")]),r.core.set.isSubset([n.atomNameSet(["C1*","C2*","O3*","C3*","C4*","C5*","O5*"]),r.ammpSet("label_atom_id")])])})])}function s(){return r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set(...i.amino),r.ammp("label_comp_id")])})}function h(){return r.struct.combinator.merge([r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.amino),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.protein),r.ammp("label_atom_id")])})}),r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.nucleic),r.ammp("label_atom_id")])})})])}return J1.keywords={all:{"@desc":"all atoms; same as *",abbr:["*"],map:()=>r.struct.generator.all()},bonded:{"@desc":"covalently bonded",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},clickable:{"@desc":"actually visible -- having some visible aspect such as wireframe, spacefill, or a label showing, or the alpha-carbon or phosphorus atom in a biomolecule that is rendered with only cartoon, rocket, or other biomolecule-specific shape."},connected:{"@desc":"bonded in any way, including hydrogen bonds",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags()}),0])})},displayed:{"@desc":"displayed using the display or hide command; not necessarily visible"}
vendor: 6,120 bytes, line 4126
4126,hidden:{"@desc":"hidden using the display or hide command"},none:{"@desc":"no atoms",map:()=>r.struct.generator.empty()},selected:{"@desc":"atoms that have been selected; defaults to all when a file is first loaded"},thisModel:{"@desc":'atoms in the current frame set, as defined by frame, model, or animation commands. If more than one model is in this set, "thisModel" refers to all of them, regardless of atom displayed/hidden status.'},visible:{"@desc":"visible in any way, including PDB residue atoms for which a cartoon or other such rendering makes their group visible, even if they themselves are not visible."},subset:{"@desc":"the currently defined subset. Note that if a subset is currently defined, then select/display all is the same as select/display subset, restrict none is the same as restrict not subset. In addition, select not subset selects nothing."},specialPosition:{"@desc":"atoms in crystal structures that are at special positions - that is, for which there is more than one operator that leads to them."},unitcell:{"@desc":"atoms within the current unitcell, which may be offset. This includes atoms on the faces and at the vertices of the unitcell."},polyhedra:{"@desc":"all central atoms for which polyhedra have been created. See also polyhera(n), below. (Jmol 14.4)"},nonmetal:{"@desc":"_H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(r.es)),r.acp("elementSymbol")])})},metal:{"@desc":"!nonmetal",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.logic.not([r.core.set.has([r.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(r.es)),r.acp("elementSymbol")])])})},alkaliMetal:{"@desc":"_Li,_Na,_K,_Rb,_Cs,_Fr",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["Li","Na","K","Rb","Cs","Fr"].map(r.es)),r.acp("elementSymbol")])})},alkalineEarth:{"@desc":"_Be,_Mg,_Ca,_Sr,_Ba,_Ra",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["Be","Mg","Ca","Sr","Ba","Ra"].map(r.es)),r.acp("elementSymbol")])})},nobleGas:{"@desc":"_He,_Ne,_Ar,_Kr,_Xe,_Rn",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["He","Ne","Ar","Kr","Xe","Rn"].map(r.es)),r.acp("elementSymbol")])})},metalloid:{"@desc":"_B,_Si,_Ge,_As,_Sb,_Te",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.set(...["B","Si","Ge","As","Sb","Te"].map(r.es)),r.acp("elementSymbol")])})},transitionMetal:{"@desc":"(includes La and Ac) elemno>=21 and elemno<=30, elemno=57, elemno=89, elemno>=39 and elemno<=48, elemno>=72 and elemno<=80, elemno>=104 and elemno<=112",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.logic.or([r.core.rel.inRange([r.acp("atomicNumber"),21,30]),r.core.rel.inRange([r.acp("atomicNumber"),39,48]),r.core.rel.inRange([r.acp("atomicNumber"),72,80]),r.core.rel.inRange([r.acp("atomicNumber"),104,112]),r.core.set.has([r.set(57,89),r.acp("atomicNumber")])])})},lanthanide:{"@desc":"(does not include La) elemno>57 and elemno<=71",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.inRange([r.acp("atomicNumber"),57,71])})},actinide:{"@desc":"(does not include Ac) elemno>89 and elemno<=103",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.inRange([r.acp("atomicNumber"),89,103])})},isaromatic:{"@desc":"atoms connected with the AROMATIC, AROMATICSINGLE, or AROMATICDOUBLE bond types",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["aromatic"])}),0])})},carbohydrate:{"@desc":""},ions:{"@desc":'(specifically the PDB designations "PO4" and "SO4")'},ligand:{"@desc":'(originally "hetero and not solvent"; changed to "!(protein,nucleic,water,UREA)" for Jmol 12.2)'},nucleic:{"@desc":`any group that (a) has one of the following group names: G, C, A, T, U, I, DG, DC, DA, DT, DU, DI, +G, +C, +A, +T, +U, +I; or (b) can be identified as a group that is only one atom, with name "P"; or (c) has all of the following atoms (prime, ', can replace * here): C1*, C2*, C3*, O3*, C4*, C5*, and O5*.`,map:()=>o()},purine:{"@desc":"any nucleic group that (a) has one of the following group names: A, G, I, DA, DG, DI, +A, +G, or +I; or (b) also has atoms N7, C8, and N9.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("A","G","I","DA","DG","DI","+A","+G","+I"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.set.isSubset([n.atomNameSet(["N7","C8","N9"]),r.ammpSet("label_atom_id")])})])})},pyrimidine:{"@desc":"any nucleic group that (a) has one of the following group names: C, T, U, DC, DT, DU, +C, +T, +U; or (b) also has atom O2.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("C","T","U","DC","DT","DU","+C","+T","+U"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])})])})},dna:{"@desc":"any nucleic group that (a) has one of the following group names: DG, DC, DA, DT, DU, DI, T, +G, +C, +A, +T; or (b) has neither atom O2* or O2'.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("DG","DC","DA","DT","DU","DI","T","+G","+C","+A","+T"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.not([r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])])})])})}
4126,rna:{"@desc":"any nucleic group that (a) has one of the following group names: G, C, A, U, I, +U, +I; or (b) has atom O2* or O2'.",map:()=>r.struct.modifier.intersectBy({0:o(),by:r.struct.combinator.merge([r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.set("G","C","A","U","I","+U","+I"),r.ammp("label_comp_id")])}),r.struct.filter.pick({0:r.struct.generator.atomGroups({"group-by":r.ammp("residueKey")}),test:r.core.logic.or([r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2*")]),r.core.set.has([r.ammpSet("label_atom_id"),r.atomName("O2'")])])})])})},protein:{"@desc":'defined as a group that (a) has one of the following group names: ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, ASX, GLX, or UNK; or (b) contains PDB atom designations [C, O, CA, and N] bonded correctly; or (c) does not contain "O" but contains [C, CA, and N] bonded correctly; or (d) has only one atom, which has name CA and does not have the group name CA (indicating a calcium atom).',map:()=>s()},acidic:{"@desc":"ASP GLU",map:()=>n.resnameExpr(i.acidic)},acyclic:{"@desc":"amino and not cyclic",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.cyclic))})},aliphatic:{"@desc":"ALA GLY ILE LEU VAL",map:()=>n.resnameExpr(i.aliphatic)},amino:{"@desc":"all twenty standard amino acids, plus ASX, GLX, UNK",map:()=>n.resnameExpr(i.amino)},aromatic:{"@desc":'HIS PHE TRP TYR (see also "isaromatic" for aromatic bonds)',map:()=>n.resnameExpr(i.aromatic)},basic:{"@desc":"ARG HIS LYS",map:()=>n.resnameExpr(i.basic)},buried:{"@desc":"ALA CYS ILE LEU MET PHE TRP VAL",map:()=>n.resnameExpr(i.buried)},charged:{"@desc":"same as acidic or basic -- ASP GLU, ARG HIS LYS",map:()=>n.resnameExpr(i.acidic.concat(i.basic))},cyclic:{"@desc":"HIS PHE PRO TRP TYR",map:()=>n.resnameExpr(i.cyclic)},helix:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["helix"]),r.ammp("secondaryStructureFlags")])})},helixalpha:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["alpha"]),r.ammp("secondaryStructureFlags")])})},helix310:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["3-10"]),r.ammp("secondaryStructureFlags")])})},helixpi:{"@desc":"secondary structure-related.",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["pi"]),r.ammp("secondaryStructureFlags")])})},hetero:{"@desc":"PDB atoms designated as HETATM",map:()=>r.struct.generator.atomGroups({"atom-test":r.ammp("isHet")})},hydrophobic:{"@desc":"ALA GLY ILE LEU MET PHE PRO TRP TYR VAL",map:()=>n.resnameExpr(i.hydrophobic)},large:{"@desc":"ARG GLU GLN HIS ILE LEU LYS MET PHE TRP TYR",map:()=>n.resnameExpr(i.large)},medium:{"@desc":"ASN ASP CYS PRO THR VAL",map:()=>n.resnameExpr(i.medium)},negative:{"@desc":"same as acidic -- ASP GLU",map:()=>n.resnameExpr(i.acidic)},neutral:{"@desc":"amino and not (acidic or basic)",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.acidic.concat(i.basic)))})},polar:{"@desc":"amino and not hydrophobic",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.hydrophobic))})},positive:{"@desc":"same as basic -- ARG HIS LYS",map:()=>n.resnameExpr(i.basic)},sheet:{"@desc":"secondary structure-related",map:()=>r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["sheet"]),r.ammp("secondaryStructureFlags")])})},small:{"@desc":"ALA GLY SER",map:()=>n.resnameExpr(i.small)},surface:{"@desc":"amino and not buried",map:()=>r.struct.modifier.intersectBy({0:n.resnameExpr(i.amino),by:n.invertExpr(n.resnameExpr(i.buried))})},turn:{"@desc":"secondary structure-related",map:()=>
4126r.struct.generator.atomGroups({"residue-test":r.core.flags.hasAny([r.struct.type.secondaryStructureFlags(["turn"]),r.ammp("secondaryStructureFlags")])})},alpha:{"@desc":"(*.CA)",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.atomName("CA"),r.ammp("label_atom_id")])})},base:{"@desc":"(nucleic bases)"},backbone:{"@desc":"(*.C, *.CA, *.N, and all nucleic other than the bases themselves)",abbr:["mainchain"],map:()=>h()},sidechain:{"@desc":"((protein or nucleic) and not backbone)"},spine:{"@desc":"(*.CA, *.N, *.C for proteins; *.P, *.O3', *.O5', *.C3', *.C4', *.C5 for nucleic acids)"},leadatom:{"@desc":"(*.CA, *.P, and terminal *.O5')"},solvent:{"@desc":'PDB "HOH", water, also the connected set of H-O-H in any model'}},J1}var EG;function eae(){if(EG)return Q1;EG=1,Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=Qie(),o=Zie(),s=Jie(),h=[{"@desc":"value comparisons","@examples":[],name:"=",abbr:["=="],type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(LIKE|>=|<=|=|!=|>|<)\s*/i,1),map:(g,a,d)=>{let p;if(a==="structure"?p=i.core.flags.hasAny([i.ammp("secondaryStructureFlags"),(0,c.structureMap)(d)]):d==="structure"?p=i.core.flags.hasAny([i.ammp("secondaryStructureFlags"),(0,c.structureMap)(a)]):a.head!==void 0?a.head.name==="core.type.regex"&&(p=i.core.str.match([a,i.core.type.str([d])])):d.head!==void 0?d.head.name==="core.type.regex"&&(p=i.core.str.match([d,i.core.type.str([a])])):g.toUpperCase()==="LIKE"&&(a.head?p=i.core.str.match([i.core.type.regex([`^${d}$`,"i"]),i.core.type.str([a])]):p=i.core.str.match([i.core.type.regex([`^${a}$`,"i"]),i.core.type.str([d])])),!p)switch(a.head&&(d=r.wrapValue(a,d)),d.head&&(a=r.wrapValue(d,a)),g){case"=":p=i.core.rel.eq([a,d]);break;case"!=":p=i.core.rel.neq([a,d]);break;case">":p=i.core.rel.gr([a,d]);break;case"<":p=i.core.rel.lt([a,d]);break;case">=":p=i.core.rel.gre([a,d]);break;case"<=":p=i.core.rel.lte([a,d]);break;default:throw new Error(`value operator '${g}' not supported`)}return i.struct.generator.atomGroups({"atom-test":p})}}];function f(g){const[a,d,p,u,m,v,b]=g[1],P={};m&&(P["chain-test"]=i.core.rel.eq([i.ammp("auth_asym_id"),m]));const C=[];a&&C.push(i.core.rel.eq([i.ammp("label_comp_id"),a])),d&&C.push(i.core.logic.and([i.core.rel.gre([i.ammp("auth_seq_id"),d[0]]),i.core.rel.lte([i.ammp("auth_seq_id"),d[1]])])),p&&C.push(i.core.rel.eq([i.ammp("auth_seq_id"),p])),u&&C.push(i.core.rel.eq([i.ammp("pdbx_PDB_ins_code"),u])),C.length&&(P["residue-test"]=r.andExpr(C));const l=[];return v&&l.push(i.core.rel.eq([i.ammp("auth_atom_id"),v])),b&&l.push(i.core.rel.eq([i.ammp("label_alt_id"),b])),l.length&&(P["atom-test"]=r.andExpr(l)),i.struct.generator.atomGroups(P)}const y=t.MonadicParser.createLanguage({Integer:()=>t.MonadicParser.regexp(/-?[0-9]+/).map(Number).desc("integer"),Parens:function(g){return t.MonadicParser.alt(g.Parens,g.Operator,g.Expression).wrap(t.MonadicParser.regexp(/\(\s*/),t.MonadicParser.regexp(/\s*\)/))},Expression:function(g){return t.MonadicParser.alt(g.Keywords,g.AtomExpression.map(f),g.Within.map(a=>i.struct.modifier.includeSurroundings({0:a[1],radius:a[0]})),g.ValueQuery,g.Element.map(a=>i.struct.generator.atomGroups({"atom-test":i.core.rel.eq([i.acp("elementSymbol"),i.struct.type.elementSymbol(a)])})),g.Resname.map(a=>i.struct.generator.atomGroups({"residue-test":i.core.rel.eq([i.ammp("label_comp_id"),a])})))},Operator:function(g){return r.combineOperators(o.operators,t.MonadicParser.alt(g.Parens,g.Expression))},AtomExpression:function(g){return t.MonadicParser.seq(t.MonadicParser.lookahead(g.AtomPrefix),t.MonadicParser.seq(g.BracketedResname.or(t.MonadicParser.of(null)),g.ResnoRange.or(t.MonadicParser.of(null)),g.Resno.or(t.MonadicParser.of(null)),g.Inscode.or(t.MonadicParser.of(null)),g.Chainname.or(t.MonadicParser.of(null)),g.Atomname.or(t.MonadicParser.of(null)),g.Altloc.or(t.MonadicParser.of(null)),g.Model.or(t.MonadicParser.of(null)))).desc("expression")},AtomPrefix:()=>t.MonadicParser.regexp(/[\[0-9:^%/.-]/).desc("atom-prefix"),Chainname:()=>t.MonadicParser.regexp(/:([A-Za-z]{1,3})/,1).desc("chainname"),Model:()=>t.MonadicParser.regexp(/\/([0-9]+)/,1).map(Number).desc("model"),Element:()=>t.MonadicParser.regexp(/_([A-Za-z]{1,3})/,1).desc("element"),Atomname:()=>t.MonadicParser.regexp(/\.([a-zA-Z0-9]{1,4})/,1).map(i.atomName).desc("atomname"),Resname:()=>t.MonadicParser.regexp(/[a-zA-Z0-9]{1,4}/).desc("resname"),Resno:g=>g.Integer.desc("resno"),Altloc:()=>t.MonadicParser.regexp(/%([a-zA-Z0-9])/,1).desc("altloc"),Inscode:()=>t.MonadicParser.regexp(/\^([a-zA-Z0-9])/,1).desc("inscode"),BracketedResname:()=>t.MonadicParser.regexp(/\[([a-zA-Z0-9]{1,4})\]/,1).desc("bracketed-resname"),ResnoRange:g=>
4126t.MonadicParser.seq(g.Integer.skip(t.MonadicParser.seq(t.MonadicParser.optWhitespace,t.MonadicParser.string("-"),t.MonadicParser.optWhitespace)),g.Integer).desc("resno-range"),Within:g=>t.MonadicParser.regexp(/within/i).skip(t.MonadicParser.regexp(/\s*\(\s*/)).then(t.MonadicParser.seq(g.Integer.skip(t.MonadicParser.regexp(/\s*,\s*/)),g.Query)).skip(t.MonadicParser.regexp(/\)/)),Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)).desc("keyword"),Query:function(g){return t.MonadicParser.alt(g.Operator,g.Parens,g.Expression).trim(t.MonadicParser.optWhitespace)},Number:function(){return t.MonadicParser.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const g=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.alt(t.MonadicParser.regexp(new RegExp(`(?!(${g}))[A-Z0-9_]+`,"i")),t.MonadicParser.regexp(/'((?:[^"\\]|\\.)*)'/,1),t.MonadicParser.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(a=>i.core.type.regex([`^${a}$`,"i"]))).desc("string")},Value:function(g){return t.MonadicParser.alt(g.Number,g.String)},ValueParens:function(g){return t.MonadicParser.alt(g.ValueParens,g.ValueOperator,g.ValueExpressions).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},ValuePropertyNames:function(){return t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/LIKE|>=|<=|=|!=|>|<|\)|\s/i))},ValueOperator:function(g){return r.combineOperators(h,t.MonadicParser.alt(g.ValueParens,g.ValueExpressions))},ValueExpressions:function(g){return t.MonadicParser.alt(g.Value,g.ValuePropertyNames)},ValueQuery:function(g){return t.MonadicParser.alt(g.ValueOperator.map(a=>{if(a.head){if(a.head.name.startsWith("structure-query.generator"))return a}else if(typeof a=="string"&&a.length<=4)return i.struct.generator.atomGroups({"residue-test":i.core.rel.eq([i.ammp("label_comp_id"),a])});throw new Error(`values must be part of an comparison, value '${a}'`)}))}}),_=g=>y.Query.tryParse(g);return Q1.transpiler=_,Q1}var ev={},tv={},BG;function tae(){if(BG)return tv;BG=1,Object.defineProperty(tv,"__esModule",{value:!0}),tv.properties=void 0;const t=dr().MolScriptBuilder,r=/[-+]?[0-9]*\.?[0-9]+/;function n(f){return f.split("+").map(t.atomName)}function i(f){return f.split("+").map(y=>y.replace(/^["']|["']$/g,""))}function c(f){if(f.includes("-")&&f.includes("+")){const y=f.split("+").map(g=>g.replace(/^["']|["']$/g,"")),_=[];return y.forEach(g=>{if(g.includes("-")&&!g.startsWith("-")){const[a,d]=g.split("-").map(p=>parseInt(p));for(let p=a;p<=d;p++)_.push(p)}else if(g.includes("-")&&g.startsWith("-")&&g.match(/[0-9]+-[-0-9]+/)){const a=-parseInt(g.split("-")[1]);let d;g.includes("--")?d=-parseInt(g.split("-")[3]):d=parseInt(g.split("-")[2]);for(let p=a;p<=d;p++)_.push(p)}else g.includes("-")&&g.startsWith("-")&&g.match(/[0-9]+-[-0-9]+/),_.push(parseInt(g))}),_}else if(f.includes("-")&&!f.includes("+")){const y=[];if(f.startsWith("-"))if(f.startsWith("-")&&f.match(/[0-9]+-[-0-9]+/)){const _=-parseInt(f.split("-")[1]);let g;f.includes("--")?g=-parseInt(f.split("-")[3]):g=parseInt(f.split("-")[2]);for(let a=_;a<=g;a++)y.push(a)}else f.startsWith("-")&&f.match(/[0-9]+-[-0-9]+/),y.push(parseInt(f));else{const[_,g]=f.split("-").map(a=>parseInt(a));for(let a=_;a<=g;a++)y.push(a)}return y}else return!f.includes("-")&&f.includes("+")?i(f).map(y=>parseInt(y)):[parseInt(f)]}function o(f){return f.split("+").map(t.struct.type.elementSymbol)}const s={H:"helix",S:"beta",L:"none"};function h(f){return{flags:t.struct.type.secondaryStructureFlags(f.toUpperCase().split("+").map(y=>s[y]||"none"))}}return tv.properties={symbol:{"@desc":"chemical-symbol-list: list of 1- or 2-letter chemical symbols from the periodic table","@examples":["symbol O+N"],abbr:["e."],regex:/[a-zA-Z'"+]+/,map:o,level:"atom-test",property:t.acp("elementSymbol")},name:{"@desc":"atom-name-list: list of up to 4-letter codes for atoms in proteins or nucleic acids","@examples":["name CA+CB+CG+CD"],abbr:["n."],regex:/[a-zA-Z0-9'"+]+/,map:n,level:"atom-test",property:t.ammp("label_atom_id")},resn:{"@desc":"residue-name-list: list of 3-letter codes for amino acids or list of up to 2-letter codes for nucleic acids","@examples":["resn ASP+GLU+ASN+GLN","resn A+G"],abbr:["resname","r."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"residue-test",property:t.ammp("label_comp_id")},resi:{"@desc":"residue-identifier-list list of up to 4-digit residue numbers or residue-identifier-range","@examples":["resi 1+10+100+1000","resi 1-10"],abbr:["resident","residue","resid","i."],regex:/[0-9+-]+/,map:c,level:"residue-test",property:t.ammp("auth_seq_id")},alt:{"@desc":"alternate-conformation-identifier-list list of single letters","@examples":["alt A+B",'alt ""','alt ""+A'],abbr:[],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"atom-test",property:t.ammp("label_alt_id")},chain:{"@desc":"chain-identifier-list list of single letters or sometimes numbers","@examples":["chain A"],abbr:["c."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"chain-test",property:t.ammp("auth_asym_id")}
4126,segi:{"@desc":"segment-identifier-list list of up to 4 letter identifiers","@examples":["segi lig"],abbr:["segid","s."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"chain-test",property:t.ammp("label_asym_id")},flag:{"@desc":"flag-number a single integer from 0 to 31","@examples":["flag 0"],isUnsupported:!0,abbr:["f."],regex:/[0-9]+/,map:f=>parseInt(f),level:"atom-test"},numeric_type:{"@desc":"type-number a single integer","@examples":["nt. 5"],isUnsupported:!0,abbr:["nt."],regex:/[0-9]+/,map:f=>parseInt(f),level:"atom-test"},text_type:{"@desc":"type-string a list of up to 4 letter codes","@examples":["text_type HA+HC"],isUnsupported:!0,abbr:["tt."],regex:/[a-zA-Z0-9'"+]+/,map:i,level:"atom-test"},id:{"@desc":"external-index-number a single integer","@examples":["id 23"],regex:/[0-9+-]+/,map:c,level:"atom-test",property:t.ammp("id")},index:{"@desc":"internal-index-number a single integer","@examples":["index 11"],regex:/[0-9+-]+/,map:c,level:"atom-test",property:t.ammp("id")},ss:{"@desc":"secondary-structure-type list of single letters. Helical regions should be assigned H and sheet regions S. Loop regions can either be assigned L or be blank.","@examples":["ss H+S+L",'ss S+""'],abbr:[],regex:/[a-zA-Z'"+]+/,map:h,level:"residue-test",property:t.ammp("secondaryStructureFlags")},b:{"@desc":"comparison-operator b-factor-value a real number","@examples":["b > 10"],isNumeric:!0,abbr:[],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("B_iso_or_equiv")},q:{"@desc":"comparison-operator occupancy-value a real number","@examples":["q <0.50"],isNumeric:!0,abbr:[],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("occupancy")},formal_charge:{"@desc":"comparison-operator formal charge-value an integer","@examples":["fc. = -1"],isNumeric:!0,abbr:["fc."],regex:r,map:f=>parseFloat(f),level:"atom-test",property:t.ammp("pdbx_formal_charge")},partial_charge:{"@desc":"comparison-operator partial charge-value a real number","@examples":["pc. > 1"],isUnsupported:!0,isNumeric:!0,abbr:["pc."],regex:r,map:f=>parseFloat(f),level:"atom-test"},elem:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["elem N"],regex:/[a-zA-Z0-9]{1,3}/,map:f=>t.es(f),level:"atom-test",property:t.acp("elementSymbol")}},tv}var rv={},RG;function rae(){if(RG)return rv;RG=1,Object.defineProperty(rv,"__esModule",{value:!0}),rv.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder;return rv.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["NOT resn ALA","not (resi 42 or chain A)","!resi 42 or chain A"],name:"not",type:r.prefix,rule:t.MonadicParser.alt(t.MonadicParser.regexp(/NOT/i).skip(t.MonadicParser.whitespace),t.MonadicParser.string("!").skip(t.MonadicParser.optWhitespace)),map:(c,o)=>r.invertExpr(o)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["chain A AND name CA"],name:"and",type:r.binaryLeft,rule:r.infixOp(/AND|&/i),map:(c,o,s)=>i.struct.modifier.intersectBy({0:o,by:s})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["chain A OR chain B"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR|\|/i),map:(c,o,s)=>i.struct.combinator.merge([o,s])},{"@desc":"Selects atoms in s1 whose identifiers name, resi, resn, chain and segi all match atoms in s2.","@examples":["chain A IN chain B"],name:"in",type:r.binaryLeft,rule:r.infixOp(/IN/i),map:(c,o,s)=>i.struct.filter.withSameAtomProperties({0:o,source:s,property:i.core.type.compositeKey([i.ammp("label_atom_id"),i.ammp("label_seq_id"),i.ammp("label_comp_id"),i.ammp("auth_asym_id"),i.ammp("label_asym_id")])})},{"@desc":"Selects atoms in s1 whose identifiers name and resi match atoms in s2.","@examples":["chain A LIKE chain B"],name:"like",type:r.binaryLeft,rule:r.infixOp(/LIKE|l\./i),map:(c,o,s)=>i.struct.filter.withSameAtomProperties({0:o,source:s,property:i.core.type.compositeKey([i.ammp("label_atom_id"),i.ammp("label_seq_id")])})},{"@desc":"Selects all atoms whose van der Waals radii are separated from the van der Waals radii of s1 by a minimum of X Angstroms.","@examples":["solvent GAP 2"],name:"gap",type:r.postfix,rule:r.postfixOp(/GAP\s+([-+]?[0-9]*\.?[0-9]+)/i,1).map(c=>parseFloat(c)),map:(c,o)=>i.struct.filter.within({0:i.struct.generator.all(),target:o,"atom-radius":i.acp("vdw"),"max-radius":c,invert:!0})},{"@desc":"Selects atoms with centers within X Angstroms of the center of any atom in s1.","@examples":["resname LIG AROUND 1"],name:"around",abbr:["a."],type:r.postfix,rule:r.postfixOp(/(AROUND|a\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(c=>parseFloat(c)),map:(c,o)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:i.struct.generator.all(),target:o,"max-radius":c}),by:o})},{"@desc":"Expands s1 by all atoms within X Angstroms of the center of any atom in s1.","@examples":["chain A EXPAND 3"],name:"expand",abbr:["x."],type:r.postfix,rule:r.postfixOp(/(EXPAND|x\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(c=>parseFloat(c)),map:(c,o)=>i.struct.modifier.includeSurroundings({0:o,radius:c})},{"@desc":"Selects atoms in s1 that are within X Angstroms of any atom in s2.","@examples":["chain A WITHIN 3 OF chain B"],name:"within",abbr:["w."],type:r.binaryLeft,rule:r.ofOp("WITHIN","w."),map:(c,o,s)=>i.struct.filter.within({0:o,target:s,"max-radius":c})},{"@desc":"Same as within, but excludes s2 from the selection (and thus is identical to s1 and s2 around X).","@examples":["chain A NEAR_TO 3 OF chain B"],name:"near_to",abbr:["nto."],type:r.binaryLeft,rule:r.ofOp("NEAR_TO","nto."),map:(c,o,s)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:o,target:s,"max-radius":c}),by:s})},{"@desc":"Selects atoms in s1 that are at least X Anstroms away from s2.","@examples":["solvent BEYOND 2 OF chain A"],name:"beyond",abbr:["be."],t
4126ype:r.binaryLeft,rule:r.ofOp("BEYOND","be."),map:(c,o,s)=>i.struct.modifier.exceptBy({0:i.struct.filter.within({0:o,target:s,"max-radius":c,invert:!0}),by:s})},{"@desc":"Expands selection to complete residues.","@examples":["BYRESIDUE name N"],name:"byresidue",abbr:["byresi","byres","br."],type:r.prefix,rule:r.prefixOp(/BYRESIDUE|byresi|byres|br\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("residueKey")}))},{"@desc":"Completely selects all alpha carbons in all residues covered by a selection.","@examples":["BYCALPHA chain A"],name:"bycalpha",abbr:["bca."],type:r.prefix,rule:r.prefixOp(/BYCALPHA|bca\./i),map:(c,o)=>i.struct.generator.queryInSelection({0:i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("residueKey")}),query:i.struct.generator.atomGroups({"atom-test":i.core.rel.eq([i.atomName("CA"),i.ammp("label_atom_id")])})})},{"@desc":"Expands selection to complete molecules.","@examples":["BYMOLECULE resi 20-30"],name:"bymolecule",isUnsupported:!0,abbr:["bymol","bm."],type:r.prefix,rule:r.prefixOp(/BYMOLECULE|bymol|bm\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.atp("connectedComponentKey")}))},{"@desc":"Expands selection to complete fragments.","@examples":["BYFRAGMENT resi 10"],name:"byfragment",abbr:["byfrag","bf."],isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYFRAGMENT|byfrag|bf\./i),map:(c,o)=>[c,o]},{"@desc":"Expands selection to complete segments.","@examples":["BYSEGMENT resn CYS"],name:"bysegment",abbr:["bysegi","byseg","bs."],type:r.prefix,rule:r.prefixOp(/BYSEGMENT|bysegi|byseg|bs\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.expandProperty({0:i.struct.modifier.union({0:o}),property:i.ammp("chainKey")}))},{"@desc":"Expands selection to complete objects.","@examples":["BYOBJECT chain A"],name:"byobject",abbr:["byobj","bo."],isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYOBJECT|byobj|bo\./i),map:(c,o)=>[c,o]},{"@desc":"Expands selection to unit cell.","@examples":["BYCELL chain A"],name:"bycell",isUnsupported:!0,type:r.prefix,rule:r.prefixOp(/BYCELL/i),map:(c,o)=>[c,o]},{"@desc":"All rings of size ⤠7 which have at least one atom in s1.","@examples":["BYRING resn HEM"],name:"byring",type:r.prefix,rule:r.prefixOp(/BYRING/i),map:(c,o)=>r.asAtoms(i.struct.modifier.intersectBy({0:i.struct.filter.pick({0:i.struct.generator.rings(),test:i.core.logic.and([i.core.rel.lte([i.struct.atomSet.atomCount(),7]),i.core.rel.gr([i.struct.atomSet.countQuery([o]),1])])}),by:o}))},{"@desc":"Selects atoms directly bonded to s1, excludes s1.","@examples":["NEIGHBOR resn CYS"],name:"neighbor",type:r.prefix,abbr:["nbr."],rule:r.prefixOp(/NEIGHBOR|nbr\./i),map:(c,o)=>i.struct.modifier.exceptBy({0:r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o}),"bond-test":!0})),by:o})},{"@desc":"Selects atoms directly bonded to s1, may include s1.","@examples":["BOUND_TO name CA"],name:"bound_to",abbr:["bto."],type:r.prefix,rule:r.prefixOp(/BOUND_TO|bto\./i),map:(c,o)=>r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o})}))},{"@desc":"Extends s1 by X bonds connected to atoms in s1.","@examples":["resname LIG EXTEND 3"],name:"extend",abbr:["xt."],type:r.postfix,rule:r.postfixOp(/(EXTEND|xt\.)\s+([0-9]+)/i,2).map(c=>parseInt(c)),map:(c,o)=>r.asAtoms(i.struct.modifier.includeConnected({0:i.struct.modifier.union({0:o}),"bond-test":!0,"layer-count":c}))}],rv}var nv={},OG;function nae(){if(OG)return nv;OG=1,Object.defineProperty(nv,"__esModule",{value:!0}),nv.keywords=void 0;const e=At,r=dr().MolScriptBuilder,n=e.__importStar(fs()),i={nucleic:["A","C","T","G","U","DA","DC","DT","DG","DU"],protein:["ALA","ARG","ASN","ASP","CYS","CYX","GLN","GLU","GLY","HIS","HID","HIE","HIP","ILE","LEU","LYS","MET","MSE","PHE","PRO","SER","THR","TRP","TYR","VAL"],solvent:["HOH","WAT","H20","TIP","SOL"]},c={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA","O"]};function o(){return r.struct.combinator.merge([r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.protein),r.ammp("label_atom_id")])})}),r.struct.modifier.intersectBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])}),by:r.struct.generator.atomGroups({"atom-test":r.core.set.has([r.core.type.set(c.nucleic),r.ammp("label_atom_id")])})})])}return nv.keywords={all:{"@desc":"All atoms currently loaded into PyMOL",abbr:["*"],map:()=>r.struct.generator.all()},none:{"@desc":"No atoms (empty selection)",map:()=>r.struct.generator.empty()},hydrogens:{"@desc":"All hydrogen atoms currently loaded into PyMOL",abbr:["hydro","h."],map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.acp("elementSymbol"),r.es("H")])})},hetatm:{"@desc":"All atoms loaded from Protein Data Bank HETATM records",abbr:["het"],map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.ammp("isHet"),!0])})},visible:{"@desc":"All atoms in enabled objects with at least one visible representation",abbr:["v."]},polymer:{"@desc":"All atoms on the polymer (not het). Finds atoms with residue identifiers matching a known polymer, such a peptide and DNA.",abbr:["pol."],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])})},sidechain:{"@desc":"Polymer non-backbone atoms (new in PyMOL 1.6.1)",abbr:["sc."],map:()=>r.struct.modifier.exceptBy({0:r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])}),by:o()})},present:{"@desc":"All atoms with defined coordinates in the current state (used in creating movies)",abbr:["pr."]},center:{"@desc":"Pseudo-atom at the center of the scene"},origin:{"@desc":"Pseudo-atom at the origin of rotation"},enabled:{"@desc":"All enabled objects or selections from the object list."},masked:{"@desc":"All masked atoms.",abbr:["msk."]},protected:{"@desc":"All protected atoms.",abbr:["pr."]},bonded:{"@desc":"All bonded atoms",map:()=>r.struct.generator.atomGroups({"atom-test":r.core.rel.gr([r.struct.atomProperty.core.bondCount({flags:r.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},donors:{"@desc":"All hydrogen bond donor atoms.",abbr:["don."]},acceptors:{"@desc":"All hydrogen bond acceptor atoms.",abbr:["acc."]},fixed:{"@desc":"All fixed atoms.",abbr:["fxd."]},restrained:{"@desc":"All restrained atoms.",abbr:["rst."]},organic:{"@desc":"All atoms in non-polymer organic compounds (e.g. ligands, buffers). Finds carbon-containing molecules that do not match known polymers.",abbr:["org."],map:()=>n.asAtoms(r.struct.modifier.expandProperty({0:r.struct.modifier.union([r.struct.generator.queryInSelection({0:r.struct.generator.atomGroups({"residue-test":r.core.logic.not([r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein)),r.ammp("label_comp_id")])])}),query:r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.es("C"),r.acp("elementSymbol")])})})]),property:r.ammp("residueKey")}))},inorganic:{"@desc":"All non-polymer inorganic atoms/ions. Finds atoms in molecules that do not contain carbon and do not match any known solvent residues.",abbr:["ino."],map:()=>n.asAtoms(r.struct.modifier.expandProperty({0:r.struct.modifier.union([r.struct.filter.pick({0:r.struct.generator.atomGroups({"residue-test":r.core.logic.not([r.core.set.has([r.core.type.set(i.nucleic.concat(i.protein).concat(i.solvent)),r.ammp("label_comp_id")])]),"group-by":r.ammp("residueKey")}),test:r.core.logic.not([r.core.set.has([r.struct.atomSet.propertySet([r.acp("elementSymbol")]),r.es("C")])])})]),property:r.ammp("residueKey")}))},solvent:{"@desc":"All water molecules. The hardcoded solvent residue identifiers are currently: HOH, WAT, H20, TIP, SOL.",abbr:["sol."],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.solvent),r.ammp("label_comp_id")])})},guide:{"@desc":"All protein CA and nucleic acid C4*/C4",map:()=>r.struct.combinator.merge([r.struct.generator.atomGroups({"atom-test":r.core.rel.eq([r.atomName("CA"),r.ammp("label_atom_id")]),"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])}),r.struct.generator.atomGroups({"atom-test":r.core.set.has([n.atomNameSet(["C4*","C4'"]),r.ammp("label_atom_id")]),"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])})])}
4126,metals:{"@desc":"All metal atoms (new in PyMOL 1.6.1)"},backbone:{"@desc":"Polymer backbone atoms (new in PyMOL 1.6.1)",abbr:["bb."],map:()=>o()},"polymer.protein":{"@desc":"Protein (New in PyMOL 2.1)",abbr:["polymer.protein"],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.protein),r.ammp("label_comp_id")])})},"polymer.nucleic":{"@desc":"Nucleic Acid (New in PyMOL 2.1)",abbr:["polymer.nucleic"],map:()=>r.struct.generator.atomGroups({"residue-test":r.core.set.has([r.core.type.set(i.nucleic),r.ammp("label_comp_id")])})}},nv}var kG;function iae(){if(kG)return ev;kG=1,Object.defineProperty(ev,"__esModule",{value:!0}),ev.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=tae(),o=rae(),s=nae(),h=r.getPropertyRules(c.properties),f=t.MonadicParser.string("/");function y(d){return d.or(t.MonadicParser.of(null))}function _(d){const p={},u={};for(const m in d){const v=c.properties[m];if(!v)throw new Error(`property '${m}' not supported, value '${d[m]}'`);d[m]!==null&&(u[v.level]||(u[v.level]=[]),u[v.level].push(d[m]))}for(const m in u)p[m]=r.andExpr(u[m]);return i.struct.generator.atomGroups(p)}const g=t.MonadicParser.createLanguage({Parens:function(d){return t.MonadicParser.alt(d.Parens,d.Operator,d.Expression).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},Expression:function(d){return t.MonadicParser.alt(d.Keywords,d.AtomSelectionMacro.map(_),d.NamedAtomProperties,d.Pepseq,d.Rep,d.Object)},AtomSelectionMacro:function(d){return t.MonadicParser.alt(f.then(t.MonadicParser.alt(t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3],name:p[4]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain)).map(p=>({object:p[0],segi:p[1],chain:p[2]})),t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi)).map(p=>({object:p[0],segi:p[1]})),t.MonadicParser.seq(y(d.ObjectProperty)).map(p=>({object:p[0]})))),t.MonadicParser.alt(t.MonadicParser.seq(y(d.ObjectProperty).skip(f),y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({object:p[0],segi:p[1],chain:p[2],resi:p[3],name:p[4]})),t.MonadicParser.seq(y(h.segi).skip(f),y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({segi:p[0],chain:p[1],resi:p[2],name:p[3]})),t.MonadicParser.seq(y(h.chain).skip(f),y(h.resi).skip(f),y(h.name)).map(p=>({chain:p[0],resi:p[1],name:p[2]})),t.MonadicParser.seq(y(h.resi).skip(f),y(h.name)).map(p=>({resi:p[0],name:p[1]}))))},NamedAtomProperties:function(){return t.MonadicParser.alt(...r.getNamedPropertyRules(c.properties))},Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)),ObjectProperty:()=>{const d=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.regexp(new RegExp(`(?!(${d}))[A-Z0-9_]+`,"i"))},Object:d=>d.ObjectProperty.notFollowedBy(f).map(p=>{throw new Error(`property 'object' not supported, value '${p}'`)}),Pepseq:()=>t.MonadicParser.regexp(/(PEPSEQ|ps\.)\s+([a-z]+)/i,2).map(r.makeError("operator 'pepseq' not supported")),Rep:()=>t.MonadicParser.regexp(/REP\s+(lines|spheres|mesh|ribbon|cartoon|sticks|dots|surface|labels|extent|nonbonded|nb_spheres|slice|extent|slice|dashes|angles|dihedrals|cgo|cell|callback|everything)/i,1).map(r.makeError("operator 'rep' not supported")),Operator:function(d){return r.combineOperators(o.operators,t.MonadicParser.alt(d.Parens,d.Expression,d.Operator))},Query:function(d){return t.MonadicParser.alt(d.Operator,d.Parens,d.Expression).trim(t.MonadicParser.optWhitespace)}}),a=d=>g.Query.tryParse(d);return ev.transpiler=a,ev}var iv={},aA={},FG;function kQ(){return FG||(FG=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.properties=e.sstrucDict=void 0,e.sstrucMap=s;const r=dr().MolScriptBuilder,n=/[-+]?[0-9]*\.?[0-9]+/,i=/[+]?[0-9]+/,c=/[-+]?[0-9]+/;function o(h){return h}
4126e.sstrucDict={T:"turn",E:"sheet",B:"strand",H:"alpha",G:"3-10",I:"pi",C:"none"};function s(h){return r.struct.type.secondaryStructureFlags([e.sstrucDict[h.toUpperCase()]||"none"])}e.properties={name:{"@desc":"str atom name","@examples":["name CA"],regex:/[a-zA-Z0-9]+/,map:r.atomName,level:"atom-test",property:r.ammp("label_atom_id")},type:{"@desc":"str atom type","@examples":["type C3"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:o,level:"atom-test"},index:{"@desc":"num the atom number, starting at 0","@examples":["index 10"],isNumeric:!0,regex:i,map:h=>parseInt(h)-1,level:"atom-test",property:r.ammp("id")},serial:{"@desc":"num the atom number, starting at 1","@examples":["serial 11"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.ammp("id")},atomicnumber:{"@desc":"num atomic number (0 if undefined)","@examples":["atomicnumber 13"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.acp("atomicNumber")},element:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["element N"],regex:/[a-zA-Z0-9]{1,3}/,map:h=>r.es(h),level:"atom-test",property:r.acp("elementSymbol")},altloc:{"@desc":"str alternate location/conformation identifier","@examples":["altloc C"],regex:/[a-zA-Z0-9]+/,map:o,level:"atom-test",property:r.ammp("label_alt_id")},chain:{"@desc":"str the one-character chain identifier","@examples":["chain A"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("auth_asym_id")},residue:{"@desc":"num a set of connected atoms with the same residue number","@examples":["residue < 11","residue 11"],isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test",property:r.ammp("auth_seq_id")},fragment:{"@desc":"num a set of connected residues","@examples":["fragment 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},pfrag:{"@desc":"num a set of connected protein residues","@examples":["pfrag 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},nfrag:{"@desc":"num a set of connected nucleic residues","@examples":["nfrag 42"],isUnsupported:!0,isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test"},sequence:{"@desc":"str a sequence given by one letter names","@examples":["sequence PGATTACA"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test"},numbonds:{"@desc":"num number of bonds","@examples":["numbonds = 2","numbonds >= 3"],isNumeric:!0,regex:i,map:h=>parseInt(h),level:"atom-test",property:r.acp("bondCount")},resname:{"@desc":"str residue name","@examples":["resname ALA"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("auth_comp_id")},resid:{"@desc":"num residue id","@examples":["resid 42"],isNumeric:!0,regex:c,map:h=>parseInt(h),level:"residue-test",property:r.ammp("auth_seq_id")},segname:{"@desc":"str segment name","@examples":["segname B"],regex:/[a-zA-Z0-9]+/,map:o,level:"residue-test",property:r.ammp("label_asym_id")},x:{"@desc":"float x coordinate","@examples":["x 42"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("x")},y:{"@desc":"float y coordinate","@examples":["y > 1.7"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("y")},z:{"@desc":"float z coordinate","@examples":["z < 11","z > -21"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("z")}
4126,radius:{"@desc":"float atomic radius","@examples":["radius > 1.3"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("vdw")},mass:{"@desc":"float atomic mass","@examples":["mass > 2"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.acp("mass")},charge:{"@desc":"float atomic charge","@examples":["charge > 0","charge 1"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("pdbx_formal_charge")},beta:{"@desc":"float temperature factor","@examples":["beta < 20","beta > 35"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("B_iso_or_equiv")},occupancy:{"@desc":"float occupancy","@examples":["occupancy 1","occupancy < 1"],isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test",property:r.ammp("occupancy")},user:{"@desc":"float time-varying user-specified value","@examples":["user < 0.1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"atom-test"},rasmol:{"@desc":"str translates Rasmol selection string to VMD","@examples":["rasmol 'all'"],isUnsupported:!0,regex:/[^']*/,map:o,level:"atom-test"},structure:{"@desc":"str single letter name for the secondary structure","@examples":["structure H","structure H E"],regex:/T|E|B|H|G|I|C/i,map:s,level:"atom-test",property:r.ammp("secondaryStructureFlags")},phi:{"@desc":"float phi backbone conformational angles","@examples":["phi < 160"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"residue-test"},psi:{"@desc":"float psi backbone conformational angles","@examples":["psi < 160"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseFloat(h),level:"residue-test"},ufx:{"@desc":"num force to apply in the x coordinate","@examples":["ufx 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"},ufy:{"@desc":"num force to apply in the y coordinate","@examples":["ufy 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"},ufz:{"@desc":"num force to apply in the z coordinate","@examples":["ufz 1"],isUnsupported:!0,isNumeric:!0,regex:n,map:h=>parseInt(h),level:"atom-test"}}})(aA)),aA}var av={},LG;function aae(){if(LG)return av;LG=1,Object.defineProperty(av,"__esModule",{value:!0}),av.operators=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=kQ(),o=Object.keys(c.properties).sort(r.strLenSortFn).filter(s=>!c.properties[s].isUnsupported).join("|");return av.operators=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not protein"],name:"not",type:r.prefix,rule:t.MonadicParser.regexp(/NOT/i).skip(t.MonadicParser.whitespace),map:(s,h)=>r.invertExpr(h)},{"@desc":"Selects atoms within a specified distance of a selection","@examples":["within 5 of name FE"],name:"within",type:r.prefix,rule:r.prefixOp(/WITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(s=>parseFloat(s)),map:(s,h)=>i.struct.modifier.includeSurroundings({0:h,radius:s})},{"@desc":"Exclusive within, equivalent to (within 3 of X) and not X","@examples":["exwithin 10 of resname HEM"],name:"exwithin",type:r.prefix,rule:r.prefixOp(/EXWITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(s=>parseFloat(s)),map:(s,h)=>i.struct.modifier.exceptBy({0:i.struct.modifier.includeSurroundings({0:h,radius:s}),by:h})},{"@desc":"Selects atoms which have the same keyword as the atoms in a given selection","@examples":["same resid as name FE"],name:"same",type:r.prefix,rule:r.prefixOp(new RegExp(`SAME\\s+(${o})\\s+AS`,"i"),1).map(s=>c.properties[s].property),map:(s,h)=>i.struct.filter.withSameAtomProperties({0:i.struct.generator.all(),source:h,property:s})},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["backbone and protein"],name:"and",type:r.binaryLeft,rule:t.MonadicParser.alt(r.infixOp(/AND/i),t.MonadicParser.whitespace),map:(s,h,f)=>i.struct.modifier.intersectBy({0:h,by:f})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["water or protein"],name:"or",type:r.binaryLeft,rule:r.infixOp(/OR/i),map:(s,h,f)=>i.struct.combinator.merge([h,f])}],av}var ov={},NG;function oae(){if(NG)return ov;
4126NG=1,Object.defineProperty(ov,"__esModule",{value:!0}),ov.keywords=void 0;const t=At.__importStar(fs()),n=dr().MolScriptBuilder;function i(){return n.struct.filter.pick({0:n.struct.generator.atomGroups({"group-by":n.ammp("residueKey")}),test:n.core.set.isSubset([t.atomNameSet(["C","N","CA","O"]),n.ammpSet("label_atom_id")])})}function c(){return n.struct.filter.pick({0:n.struct.generator.atomGroups({"group-by":n.ammp("residueKey")}),test:n.core.logic.and([n.core.set.isSubset([t.atomNameSet(["P"]),n.ammpSet("label_atom_id")]),n.core.logic.or([n.core.set.isSubset([t.atomNameSet(["O3'","C3'","C4'","C5'","O5'"]),n.ammpSet("label_atom_id")]),n.core.set.isSubset([t.atomNameSet(["O3*","C3*","C4*","C5*","O5*"]),n.ammpSet("label_atom_id")])])])})}function o(){return n.struct.combinator.merge([n.struct.generator.queryInSelection({0:i(),query:n.struct.generator.atomGroups({"atom-test":n.core.set.has([t.atomNameSet(h.protein),n.ammp("label_atom_id")])})}),n.struct.generator.queryInSelection({0:c(),query:n.struct.generator.atomGroups({"atom-test":n.core.set.has([t.atomNameSet(h.nucleic),n.ammp("label_atom_id")])})})])}function s(y){return n.struct.generator.atomGroups({"residue-test":n.core.flags.hasAll([n.ammp("secondaryStructureFlags"),n.struct.type.secondaryStructureFlags(y)])})}const h={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*"],protein:["C","N","CA","O"]},f={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],aromatic:["HIS","PHE","TRP","TYR"],at:["ADA","A","THY","T"],basic:["ARG","HIS","LYS"],buried:["ALA","LEU","VAL","ILE","PHE","CYS","MET","TRP"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","LEU","VAL","ILE","PRO","PHE","MET","TRP"],medium:["VAL","THR","ASP","ASN","PRO","CYS","ASX","PCA","HYP"],neutral:["VAL","PHE","GLN","TYR","HIS","CYS","MET","TRP","ASX","GLX","PCA","HYP"],purine:["ADE","A","GUA","G"],pyrimidine:["CYT","C","THY","T","URI","U"],small:["ALA","GLY","SER"],water:["H2O","HH0","OHH","HOH","OH2","SOL","WAT","TIP","TIP2","TIP3","TIP4"]};return ov.keywords={all:{"@desc":"everything",map:()=>n.struct.generator.all()},none:{"@desc":"nothing",map:()=>n.struct.generator.empty()},protein:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>i()},nucleic:{"@desc":"a residue with atoms named P, O1P, O2P and either O3', C3', C4', C5', O5' or O3*, C3*, C4*, C5*, O5*. This definition assumes that the base is phosphorylated, an assumption which will be corrected in the future.",map:()=>c()},backbone:{"@desc":"the C, N, CA, and O atoms of a protein and the equivalent atoms in a nucleic acid.",map:()=>o()},sidechain:{"@desc":"non-backbone atoms and bonds",map:()=>t.invertExpr(o())},water:{"@desc":"all atoms with the resname H2O, HH0, OHH, HOH, OH2, SOL, WAT, TIP, TIP2, TIP3 or TIP4",abbr:["waters"],map:()=>t.resnameExpr(f.water)},at:{"@desc":"residues named ADA A THY T",map:()=>t.resnameExpr(f.at)},acidic:{"@desc":"residues named ASP GLU",map:()=>t.resnameExpr(f.acidic)},acyclic:{"@desc":'"protein and not cyclic"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.cyclic))})},aliphatic:{"@desc":"residues named ALA GLY ILE LEU VAL",map:()=>t.resnameExpr(f.aliphatic)},alpha:{"@desc":"atom's residue is an alpha helix",map:()=>s(["alpha"])},amino:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>i()},aromatic:{"@desc":"residues named HIS PHE TRP TYR",map:()=>t.resnameExpr(f.aromatic)},basic:{"@desc":"residues named ARG HIS LYS",map:()=>t.resnameExpr(f.basic)},bonded:{"@desc":"atoms for which numbonds > 0",map:()=>t.asAtoms(n.struct.filter.pick({0:n.struct.modifier.includeConnected({0:n.struct.generator.all(),"bond-test":n.core.flags.hasAny([n.struct.bondProperty.flags(),n.struct.type.bondFlags(["covalent","metallic","sulfide"])])}),test:n.core.rel.gr([n.struct.atomSet.atomCount(),1])}))},buried:{"@desc":"residues named ALA LEU VAL ILE PHE CYS MET TRP",map:()=>t.resnameExpr(f.buried)},cg:{"@desc":"residues named CYT C GUA G",map:()=>t.resnameExpr(f.cg)},charged:{"@desc":'"basic or acidic"',map:()=>t.resnameExpr(f.basic.concat(f.acidic))},cyclic:{"@desc":"residues named HIS PHE PRO TRP TYR",map:()=>t.resnameExpr(f.cyclic)},hetero:{"@desc":'"not (protein or nucleic)"',map:()=>t.invertExpr(n.struct.combinator.merge([i(),c()]))},hydrogen:{"@desc":'name "[0-9]?H.*"',map:()=>n.struct.generator.atomGroups({"atom-test":n.core.str.match([n.core.type.regex(["^[0-9]?[H].*$","i"]),n.core.type.str([n.ammp("label_atom_id")])])})},large:{"@desc":'"protein and not (small or medium)"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.small.concat(f.medium)))})},medium:{"@desc":"residues named VAL THR ASP ASN PRO CYS ASX PCA HYP",map:()=>t.resnameExpr(f.medium)},neutral:{"@desc":"residues named VAL PHE GLN TYR HIS CYS MET TRP ASX GLX PCA HYP",map:()=>t.resnameExpr(f.neutral)},hydrophobic:{"@desc":"hydrophobic resname ALA LEU VAL ILE PRO PHE MET TRP",map:()=>t.resnameExpr(f.hydrophobic)},polar:{"@desc":'"protein and not hydrophobic"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.hydrophobic))})},purine:{"@desc":"residues named ADE A GUA G",map:()=>t.resnameExpr(f.purine)},pyrimidine:{"@desc":"residues named CYT C THY T URI U",map:()=>t.resnameExpr(f.pyrimidine)},small:{"@desc":"residues named ALA GLY SER",map:()=>t.resnameExpr(f.small)},surface:{"@desc":'"protein and not buried"',map:()=>n.struct.modifier.intersectBy({0:i(),by:t.invertExpr(t.resnameExpr(f.buried))})}
4126,alpha_helix:{"@desc":"atom's residue is in an alpha helix",map:()=>s(["alpha"])},pi_helix:{"@desc":"atom's residue is in a pi helix",map:()=>s(["pi"])},helix_3_10:{"@desc":"atom's residue is in a 3-10 helix",map:()=>s(["3-10"])},helix:{"@desc":"atom's residue is in an alpha or pi or 3-10 helix",map:()=>s(["helix"])},extended_beta:{"@desc":"atom's residue is a beta sheet",map:()=>s(["sheet"])},bridge_beta:{"@desc":"atom's residue is a beta sheet",map:()=>s(["strand"])},sheet:{"@desc":"atom's residue is a beta sheet",map:()=>s(["beta"])},turn:{"@desc":"atom's residue is in a turn conformation",map:()=>s(["turn"])},coil:{"@desc":"atom's residue is in a coil conformation",map:()=>n.struct.modifier.intersectBy({0:i(),by:s(["none"])})}},ov}var sv={},qG;function sae(){if(qG)return sv;qG=1,Object.defineProperty(sv,"__esModule",{value:!0}),sv.functions=void 0;const t=dr().MolScriptBuilder;return sv.functions={sqr:{"@desc":"square of x","@examples":["sqr(2)"],map:r=>t.core.math.pow([r,2])},sqrt:{"@desc":"square root of x","@examples":["sqrt(2)"],map:r=>t.core.math.sqrt([r])},abs:{"@desc":"absolute value of x","@examples":["abs(2)"],map:r=>t.core.math.abs([r])},floor:{"@desc":"largest integer not greater than x","@examples":["floor(2)"],map:r=>t.core.math.floor([r])},ceil:{"@desc":"smallest integer not less than x","@examples":["ceil(2)"],map:r=>t.core.math.ceil([r])},sin:{"@desc":"sine of x","@examples":["sin(2)"],map:r=>t.core.math.sin([r])},cos:{"@desc":"cosine of x","@examples":["cos(2)"],map:r=>t.core.math.cos([r])},tan:{"@desc":"tangent of x","@examples":["tan(2)"],map:r=>t.core.math.tan([r])},atan:{"@desc":"arctangent of x","@examples":["atan(2)"],map:r=>t.core.math.atan([r])},asin:{"@desc":"arcsin of x","@examples":["asin(2)"],map:r=>t.core.math.asin([r])},acos:{"@desc":"arccos of x","@examples":["acos(2)"],map:r=>t.core.math.acos([r])},sinh:{"@desc":"hyperbolic sine of x","@examples":["sinh(2)"],map:r=>t.core.math.sinh([r])},cosh:{"@desc":"hyperbolic cosine of x","@examples":["cosh(2)"],map:r=>t.core.math.cosh([r])},tanh:{"@desc":"hyperbolic tangent of x","@examples":["tanh(2)"],map:r=>t.core.math.tanh([r])},exp:{"@desc":"e to the power x","@examples":["exp(2)"],map:r=>t.core.math.exp([r])},log:{"@desc":"natural log of x","@examples":["log(2)"],map:r=>t.core.math.log([r])},log10:{"@desc":"log base 10 of x","@examples":["log10(2)"],map:r=>t.core.math.log10([r])}},sv}var UG;function cae(){if(UG)return iv;UG=1,Object.defineProperty(iv,"__esModule",{value:!0}),iv.transpiler=void 0;const e=At,t=e.__importStar(uc()),r=e.__importStar(fs()),i=dr().MolScriptBuilder,c=kQ(),o=aae(),s=oae(),h=sae(),f=[{"@desc":"multiplication, division","@examples":[],name:"mul-div",type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(\*|\/)\s*/,1),map:(g,a,d)=>{switch(g){case"*":return i.core.math.mult([a,d]);case"/":return i.core.math.div([a,d]);default:throw new Error(`value operator '${g}' not supported`)}}},{"@desc":"addition, substraction","@examples":[],name:"add-sub",type:r.binaryLeft,rule:t.MonadicParser.regexp(/\s*(-|\+)\s*/,1),map:(g,a,d)=>{switch(g){case"-":return i.core.math.sub([a,d]);case"+":return i.core.math.add([a,d]);default:throw new Error(`value operator '${g}' not supported`)}}},{"@desc":"value comparisons","@examples":[],name:"comparison",type:r.binaryLeft,rule:t.MonadicParser.alt(t.MonadicParser.regexp(/\s*(=~|==|>=|<=|=|!=|>|<)\s*/,1),t.MonadicParser.whitespace.result("=")),map:(g,a,d)=>{let p;if(a.head!==void 0?(a.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(p=i.core.flags.hasAny([a,(0,c.sstrucMap)(d)])),a.head.name==="core.type.regex"&&(p=i.core.str.match([a,i.core.type.str([d])]))):d.head!==void 0?(d.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(p=i.core.flags.hasAny([d,(0,c.sstrucMap)(a)])),d.head.name==="core.type.regex"&&(p=i.core.str.match([d,i.core.type.str([a])]))):g==="=~"&&(a.head?p=i.core.str.match([i.core.type.regex([`^${d}$`,"i"]),i.core.type.str([a])]):p=i.core.str.match([i.core.type.regex([`^${a}$`,"i"]),i.core.type.str([d])])),!p)switch(a.head&&(d=r.wrapValue(a,d)),d.head&&(a=r.wrapValue(d,a)),g){case"=":case"==":p=i.
4126core.rel.eq([a,d]);break;case"!=":p=i.core.rel.neq([a,d]);break;case">":p=i.core.rel.gr([a,d]);break;case"<":p=i.core.rel.lt([a,d]);break;case">=":p=i.core.rel.gre([a,d]);break;case"<=":p=i.core.rel.lte([a,d]);break;default:throw new Error(`value operator '${g}' not supported`)}return i.struct.generator.atomGroups({"atom-test":p})}}],y=t.MonadicParser.createLanguage({Parens:function(g){return t.MonadicParser.alt(g.Parens,g.Operator,g.Expression).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},Expression:function(g){return t.MonadicParser.alt(g.RangeListProperty,g.ValueQuery,g.Keywords)},NamedAtomProperties:function(){return t.MonadicParser.alt(...r.getNamedPropertyRules(c.properties))},Keywords:()=>t.MonadicParser.alt(...r.getKeywordRules(s.keywords)),ValueRange:function(g){return t.MonadicParser.seq(g.Value.skip(t.MonadicParser.regexp(/\s+TO\s+/i)),g.Value).map(a=>({range:a}))},RangeListProperty:function(g){return t.MonadicParser.seq(t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/\s/)).skip(t.MonadicParser.whitespace),t.MonadicParser.alt(g.ValueRange,g.Value).sepBy1(t.MonadicParser.whitespace)).map(a=>{const[d,p]=a,u=[],m=[];p.forEach(C=>{C.range?m.push(i.core.rel.inRange([d,C.range[0],C.range[1]])):u.push(r.wrapValue(d,C,c.sstrucDict))});const v=r.orExpr(m),b=r.valuesTest(d,u);let P;return v&&b?P=i.core.logic.or([v,b]):P=v||b,i.struct.generator.atomGroups({[r.testLevel(d)]:P})})},Operator:function(g){return r.combineOperators(o.operators,t.MonadicParser.alt(g.Parens,g.Expression,g.ValueQuery))},Query:function(g){return t.MonadicParser.alt(g.Operator,g.Parens,g.Expression).trim(t.MonadicParser.optWhitespace)},Number:function(){return t.MonadicParser.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const g=r.getReservedWords(c.properties,s.keywords,o.operators).sort(r.strLenSortFn).map(r.escapeRegExp).join("|");return t.MonadicParser.alt(t.MonadicParser.regexp(new RegExp(`(?!(${g}))[A-Z0-9_]+`,"i")),t.MonadicParser.regexp(/'((?:[^"\\]|\\.)*)'/,1),t.MonadicParser.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(a=>i.core.type.regex([`^${a}$`,"i"]))).desc("string")},Value:function(g){return t.MonadicParser.alt(g.Number,g.String)},ValueParens:function(g){return t.MonadicParser.alt(g.ValueParens,g.ValueOperator,g.ValueExpressions).wrap(t.MonadicParser.string("("),t.MonadicParser.string(")"))},ValuePropertyNames:function(){return t.MonadicParser.alt(...r.getPropertyNameRules(c.properties,/=~|==|>=|<=|=|!=|>|<|\)|\s|\+|-|\*|\//i))},ValueOperator:function(g){return r.combineOperators(f,t.MonadicParser.alt(g.ValueParens,g.ValueExpressions))},ValueExpressions:function(g){return t.MonadicParser.alt(g.ValueFunctions,g.Value,g.ValuePropertyNames)},ValueFunctions:function(g){return t.MonadicParser.alt(...r.getFunctionRules(h.functions,g.ValueOperator))},ValueQuery:function(g){return t.MonadicParser.alt(g.ValueOperator.map(a=>{if(!a.head.name||!a.head.name.startsWith("structure-query.generator"))throw new Error(`values must be part of an comparison, value '${a}'`);return a}))}}),_=g=>y.Query.tryParse(g);return iv.transpiler=_,iv}var jG;function uae(){if(jG)return Y1;jG=1,Object.defineProperty(Y1,"__esModule",{value:!0}),Y1._transpiler=void 0;const e=eae(),t=iae(),r=cae();return Y1._transpiler={pymol:t.transpiler,vmd:r.transpiler,jmol:e.transpiler},Y1}var GG;function lae(){if(GG)return AP;GG=1,Object.defineProperty(AP,"__esModule",{value:!0}),AP.parse=r;const t=uae()._transpiler;function r(n,i){try{return t[n](i)}catch(c){throw console.error(c.message),c}}return AP}var zG;function va(){if(zG)return K1;zG=1,Object.defineProperty(K1,"__esModule",{value:!0}),K1.Script=s;const e=Kie(),t=Yie(),r=lae(),n=Ke(),i=LS(),c=dr(),o=Gt();function s(h,f){return{expression:h,language:f}}return(function(h){h.Info={"mol-script":"Mol-Script",pymol:"PyMOL",vmd:"VMD",jmol:"Jmol"};function f(p){return!!p&&typeof p.expression=="string"&&!!p.language}h.is=f;function y(p,u){return p.language===u.language&&p.expression===u.expression}h.areEqual=y;function _(p){switch(p.language){case"mol-script":const u=(0,t.parseMolScript)(p.expression);if(u.length===0)throw new Error("No query");return(0,e.transpileMolScript)(u[0]);
4126case"pymol":case"jmol":case"vmd":return(0,r.parse)(p.language,p.expression);default:(0,o.assertUnreachable)(p.language)}}h.toExpression=_;function g(p){const u=_(p);return(0,i.compile)(u)}h.toQuery=g;function a(p,u){const v=g(p)(new n.QueryContext(u));return n.StructureSelection.toLociWithSourceUnits(v)}h.toLoci=a;function d(p,u,m){const v=typeof p=="function"?p(c.MolScriptBuilder):p;return(0,i.compile)(v)(new n.QueryContext(u,m))}h.getStructureSelection=d})(s||(K1.Script=s={})),K1}var cv={},HG;function Dw(){if(HG)return cv;HG=1,Object.defineProperty(cv,"__esModule",{value:!0}),cv.RootStructureDefinition=void 0;const e=Ke(),t=ui(),r=rt(),n=Ne(),i=Ge(),c=tI(),o=jt(),s=Qn(),h=Gt(),f={dynamicBonds:n.ParamDefinition.Optional(n.ParamDefinition.Boolean(!1,{description:"Ensure bonds are recalculated upon model changes. Also enables calculation of inter-unit bonds in water molecules and ions."}))};var y;return(function(_){function g(b,P){const C=b&&s.ModelSymmetry.Provider.get(b),l=C?C.assemblies.map(D=>[D.id,`${D.id}: ${(0,t.stringToWords)(D.details)}`]):[],S=C?!r.SpacegroupCell.isZero(C.spacegroup.cell):!0,T=[];if(C){const{operators:D}=C.spacegroup;for(let V=0,R=D.length;V<R;V++)T.push([V,`${V+1}: ${r.Spacegroup.getOperatorXyz(D[V])}`])}const A=[];b&&b.properties.structAsymMap.forEach(D=>{const V=D.id===D.auth_id?D.id:`${D.id} [auth ${D.auth_id}]`;A.push([D.id,V])});const x={auto:n.ParamDefinition.Group(f),model:n.ParamDefinition.Group(f),assembly:n.ParamDefinition.Group({id:n.ParamDefinition.Optional(b?n.ParamDefinition.Select(l.length?l[0][0]:"",l,{label:"Asm Id",description:"Assembly Id"}):n.ParamDefinition.Text("",{label:"Asm Id",description:"Assembly Id (use empty for the 1st assembly)"})),...f},{isFlat:!0}),"symmetry-mates":n.ParamDefinition.Group({radius:n.ParamDefinition.Numeric(5,{min:0,max:50,step:1}),...f},{isFlat:!0}),symmetry:n.ParamDefinition.Group({ijkMin:n.ParamDefinition.Vec3(i.Vec3.create(-1,-1,-1),{step:1},{label:"Min IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),ijkMax:n.ParamDefinition.Vec3(i.Vec3.create(1,1,1),{step:1},{label:"Max IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),...f},{isFlat:!0}),"symmetry-assembly":n.ParamDefinition.Group({generators:n.ParamDefinition.ObjectList({operators:n.ParamDefinition.ObjectList({index:n.ParamDefinition.Select(0,T),shift:n.ParamDefinition.Vec3((0,i.Vec3)(),{step:1},{label:"IJK",fieldLabels:{x:"I",y:"J",z:"K"}})},D=>`${D.index+1}_${D.shift.map(V=>V+5).join("")}`,{defaultValue:[]}),asymIds:n.ParamDefinition.MultiSelect([],A)},D=>`${D.asymIds.length} asym ids, ${D.operators.length} operators`,{defaultValue:[]}),...f},{isFlat:!0})},M=[];return P==="auto"&&M.push(["auto","Auto"]),M.push(["model","Model"]),l.length>0&&M.push(["assembly","Assembly"]),S&&(M.push(["symmetry-mates","Symmetry Mates"]),M.push(["symmetry","Symmetry (indices)"]),M.push(["symmetry-assembly","Symmetry (assembly)"])),{type:n.ParamDefinition.MappedStatic(P||"model",x,{options:M})}}_.getParams=g;function a(b,P){return!(P.name==="symmetry-assembly"||P.name==="symmetry"&&b.name==="symmetry")}_.canAutoUpdate=a;async function d(b,P,C,l,S){let T;const A=s.ModelSymmetry.Provider.get(C);!l&&A&&A.assemblies.length!==0&&(l=A.assemblies[0].id),!A||A.assemblies.length===0?b.log.warn(`Model '${C.entryId}' has no assembly, returning model structure.`):(T=c.Symmetry.findAssembly(C,l||""),T||b.log.warn(`Model '${C.entryId}' has no assembly called '${l}', returning model structure.`));const x=e.Structure.ofModel(C,S);if(!T){const V={label:"Model",description:e.Structure.elementDescription(x)};return new o.PluginStateObject.Molecule.Structure(x,V)}l=T.id;const M=await e.StructureSymmetry.buildAssembly(x,l).runInContext(P),D={label:`Assembly ${l}`,description:e.Structure.elementDescription(M)};return new o.PluginStateObject.Molecule.Structure(M,D)}async function p(b,P,C,l,S){const T=e.Structure.ofModel(P,S),A=await e.StructureSymmetry.buildSymmetryRange(T,C,l).runInContext(b),x={label:`Symmetry [${C}] to [${l}]`,description:e.Structure.elementDescription(A)};return new o.PluginStateObject.Molecule.Structure(A,x)}async function u(b,P,C,l){const S=e.Structure.ofModel(P,l),T=await e.StructureSymmetry.builderSymmetryMates(S,C).runInContext(b),A={label:"Symmetry Mates",description:e.Structure.elementDescription(T)};return new o.PluginStateObject.Molecule.Structure(T,A)}async function m(b,P,C,l,S){const T=e.Structure.ofModel(P,S),A=await e.StructureSymmetry.buildSymmetryAssembly(T,C,l).runInContext(b),x={label:"Symmetry Assembly",description:e.Structure.elementDescription(A)};return new o.PluginStateObject.Molecule.Structure(A,x)}async function v(b,P,C,l){const S=l?.params,T=s.ModelSymmetry.Provider.get(C);if(!T||!l||l.name==="model"){const A=e.Structure.ofModel(C,S);return new o.PluginStateObject.Molecule.Structure(A,{label:"Model",description:e.Structure.elementDescription(A)})}if(l.name==="auto")if(T.assemblies.length===0){const A=e.Structure.ofModel(C,S);return new o.PluginStateObject.Molecule.Structure(A,{label:"Model",description:e.Structure.elementDescription(A)})}else return d(b,P,C,void 0,S);if(l.name==="assembly")return d(b,P,C,l.params.id,S);if(l.name==="symmetry")return p(P,C,l.params.ijkMin,l.params.ijkMax,S);if(l.name==="symmetry-mates")return u(P,C,l.params.radius,S);if(l.name==="symmetry-assembly")return m(P,C,l.params.generators,T,S);(0,h.assertUnreachable)(l)}_.create=v})(y||(cv.RootStructureDefinition=y={})),cv}var Ho={},uv={},WG;function FQ(){if(WG)return uv;
4126WG=1,Object.defineProperty(uv,"__esModule",{value:!0}),uv.StructureQueryHelper=void 0;const e=Ke(),t=va(),r=LS();var n;return(function(i){function c(_,g,a){return _.currentStructure!==a?!1:t.Script.is(g)?!!_.script&&t.Script.areEqual(_.script,g):_.expression===g}i.isUnchanged=c;function o(_,g){const a=t.Script.is(g)?g:void 0,d=t.Script.is(g)?t.Script.toExpression(g):g,p=(0,r.compile)(d);return{script:a,expression:d,compiled:p,originalStructure:_,currentStructure:_}}i.create=o;function s(_,g){return _.compiled(new e.QueryContext(g))}i.run=s;function h(_,g){const a=o(_,g);return{entry:a,selection:s(a,_)}}i.createAndRun=h;function f(_,g){return _.currentStructure=g,_.compiled(new e.QueryContext(g))}i.updateStructure=f;function y(_,g,a){const d=e.StructureSelection.unionStructure(g);_.label=`${a||"Selection"}`,_.description=e.Structure.elementDescription(d),_.data=d}i.updateStructureObject=y})(n||(uv.StructureQueryHelper=n={})),uv}var $G;function dae(){if($G)return Ho;$G=1,Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.StructureComponentParams=Ho.StaticStructureComponentTypes=void 0,Ho.createStructureComponent=y,Ho.updateStructureComponent=_;const e=Ne(),t=dr(),r=Ke(),n=FQ(),i=jt(),c=jl(),o=Et(),s=va(),h=Gt();Ho.StaticStructureComponentTypes=["all","polymer","protein","nucleic","water","ion","lipid","branched","ligand","non-standard","coarse"];const f=()=>({type:e.ParamDefinition.MappedStatic("static",{static:e.ParamDefinition.Text("polymer"),expression:e.ParamDefinition.Value(t.MolScriptBuilder.struct.generator.all),bundle:e.ParamDefinition.Value(r.StructureElement.Bundle.Empty),script:e.ParamDefinition.Script({language:"mol-script",expression:"(sel.atom.all)"})},{isHidden:!0}),nullIfEmpty:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!0,{isHidden:!0})),label:e.ParamDefinition.Text("",{isHidden:!0})});Ho.StructureComponentParams=f;function y(g,a,d){d.source=g;let p=r.Structure.Empty,u;switch(a.type.name){case"static":{let v;switch(a.type.params){case"all":v=c.StructureSelectionQueries.all.query,u="All";break;case"polymer":v=c.StructureSelectionQueries.polymer.query,u="Polymer";break;case"protein":v=c.StructureSelectionQueries.protein.query,u="Protein";break;case"nucleic":v=c.StructureSelectionQueries.nucleic.query,u="Nucleic";break;case"water":v=r.Queries.internal.water(),u="Water";break;case"ion":v=c.StructureSelectionQueries.ion.query,u="Ion";break;case"lipid":v=c.StructureSelectionQueries.lipid.query,u="Lipid";break;case"branched":v=c.StructureSelectionQueries.branchedPlusConnected.query,u="Branched";break;case"ligand":v=c.StructureSelectionQueries.ligandPlusConnected.query,u="Ligand";break;case"non-standard":v=c.StructureSelectionQueries.nonStandardPolymer.query,u="Non-standard";break;case"coarse":v=c.StructureSelectionQueries.coarse.query,u="Coarse";break;default:(0,h.assertUnreachable)(a.type)}const b=v(new r.QueryContext(g));p=r.StructureSelection.unionStructure(b);break}case"script":case"expression":{const{selection:v,entry:b}=n.StructureQueryHelper.createAndRun(g,a.type.params);d.entry=b,p=r.StructureSelection.unionStructure(v);break}case"bundle":{if(a.type.params.hash!==g.hashCode)break;p=r.StructureElement.Bundle.toStructure(a.type.params,g);break}}if(a.nullIfEmpty&&p.elementCount===0)return o.StateObject.Null;const m={label:`${a.label||u||"Component"}`,description:r.Structure.elementDescription(p)};return new i.PluginStateObject.Molecule.Structure(p,m)}function _(g,a,d,p,u){if(d.type.name!==p.type.name)return o.StateTransformer.UpdateResult.Recreate;let m=!1;switch(p.type.name){case"static":return d.type.params!==p.type.params||!r.Structure.areEquivalent(g,u.source)?o.StateTransformer.UpdateResult.Recreate:a.data.model===g.model||!a.data.model?o.StateTransformer.UpdateResult.Unchanged:r.Model.areHierarchiesEqual(g.model,a.data.model)?(a.data=a.data.remapModel(g.model),o.StateTransformer.UpdateResult.Updated):o.StateTransformer.UpdateResult.Recreate;case"script":if(!s.Script.areEqual(d.type.params,p.type.params))return o.StateTransformer.UpdateResult.Recreate;case"expression":{if(d.type.params!==p.type.params)return o.StateTransformer.Upd
4126ateResult.Recreate;if(g===u.source)break;const v=u.entry,b=n.StructureQueryHelper.updateStructure(v,g);u.source=g,a.data=r.StructureSelection.unionStructure(b),n.StructureQueryHelper.updateStructureObject(a,b,p.label),m=!0;break}case"bundle":{if(g===u.source&&r.StructureElement.Bundle.areEqual(d.type.params,p.type.params))break;u.source=g,p.type.params.hash!==g.hashCode?(m=a.data.elementCount!==0,a.data=a.data.elementCount===0?a.data:r.Structure.Empty):(m=!0,a.data=r.StructureElement.Bundle.toStructure(p.type.params,g));break}}if(m){if(p.nullIfEmpty&&a.data.elementCount===0)return o.StateTransformer.UpdateResult.Null;a.description=r.Structure.elementDescription(a.data)}return d.label!==p.label&&(m=!0,a.label=`${p.label||a.label}`),m?o.StateTransformer.UpdateResult.Updated:o.StateTransformer.UpdateResult.Unchanged}return Ho}var Wo={},XG;function Iw(){if(XG)return Wo;XG=1,Object.defineProperty(Wo,"__esModule",{value:!0}),Wo.formalChargeMapper=c,Wo.handleAtoms=o,Wo.handleBonds=s,Wo.handleFormalCharges=h,Wo.handlePropertiesBlock=y,Wo.parseMol=g;const e=lt(),t=nt(),r=Wi(),n=Or(),i=Tr();function c(a){switch(a){case 7:return-3;case 6:return-2;case 5:return-1;case 0:return 0;case 3:return 1;case 2:return 2;case 1:return 3;case 4:return 0;default:return console.error(`Value ${a} is outside the 0-7 range, defaulting to 0.`),0}}function o(a,d){const p=n.TokenBuilder.create(a.data,d*2),u=n.TokenBuilder.create(a.data,d*2),m=n.TokenBuilder.create(a.data,d*2),v=n.TokenBuilder.create(a.data,d*2),b=n.TokenBuilder.create(a.data,d*2);for(let P=0;P<d;++P){n.Tokenizer.markLine(a);const{tokenStart:C,position:l}=a;n.Tokenizer.trim(a,C,C+10),n.TokenBuilder.addUnchecked(p,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+10,C+20),n.TokenBuilder.addUnchecked(u,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+20,C+30),n.TokenBuilder.addUnchecked(m,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+31,C+34),n.TokenBuilder.addUnchecked(v,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,C+36,C+39),n.TokenBuilder.addUnchecked(b,a.tokenStart,a.tokenEnd),a.position=l}return{count:d,x:(0,r.TokenColumnProvider)(p)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(u)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(m)(e.Column.Schema.float),type_symbol:(0,r.TokenColumnProvider)(v)(e.Column.Schema.str),formal_charge:(0,r.TokenColumnProvider)(b)(e.Column.Schema.int)}}function s(a,d){const p=n.TokenBuilder.create(a.data,d*2),u=n.TokenBuilder.create(a.data,d*2),m=n.TokenBuilder.create(a.data,d*2);for(let v=0;v<d;++v){n.Tokenizer.markLine(a);const{tokenStart:b,position:P}=a;n.Tokenizer.trim(a,b,b+3),n.TokenBuilder.addUnchecked(p,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,b+3,b+6),n.TokenBuilder.addUnchecked(u,a.tokenStart,a.tokenEnd),n.Tokenizer.trim(a,b+6,b+9),n.TokenBuilder.addUnchecked(m,a.tokenStart,a.tokenEnd),a.position=P}return{count:d,atomIdxA:(0,r.TokenColumnProvider)(p)(e.Column.Schema.int),atomIdxB:(0,r.TokenColumnProvider)(u)(e.Column.Schema.int),order:(0,r.TokenColumnProvider)(m)(e.Column.Schema.int)}}function h(a,d,p){n.Tokenizer.trim(a,d+6,d+9);const u=parseInt(n.Tokenizer.getTokenString(a));for(let m=0;m<u;++m){const v=9+m*8;n.Tokenizer.trim(a,d+v,d+v+4);const b=n.Tokenizer.getTokenString(a);p.atomIdx.push(+b),n.Tokenizer.trim(a,d+v+4,d+v+8);const P=n.Tokenizer.getTokenString(a);p.charge.push(+P)}n.Tokenizer.eatLine(a)}function f(a){const d=a.trim().split(/\s+/g),p=[];for(let u=1;u<d.length;u+=2){const m=+d[u],v=+d[u+1]||0;p.push({atomIdx:m,kind:v})}return p}function y(a){const u={atomIdx:[],charge:[]};let m;for(;a.position<a.length;){const{position:b}=a;n.Tokenizer.trim(a,b+3,b+6);const P=n.Tokenizer.getTokenString(a);if(P==="END")break;switch(n.Tokenizer.eatLine(a),P){case"CHG":h(a,b,u);break;case"APO":m=f(n.Tokenizer.getTokenString(a).substring(3));break}}return{formalCharges:{atomIdx:e.Column.ofIntArray(u.atomIdx),charge:e.Column.ofIntArray(u.charge)},attachmentPoints:m}}function _(a){const d=(0,n.Tokenizer)(a),p=n.Tokenizer.readLine(d).trim(),u=n.Tokenizer.readLine(d).trim(),m=n.Tokenizer.readLine(d).trim(),v=n.Tokenizer.readLine(d),b=+v.substr(0,3),P=+v.substr(3,3),C=o(d,b),l=s(d,P),S={title:p,program:u,comment:m,atoms:C,bonds:l,...y(d)};return i.ReaderResult.success(S)}
4126function g(a){return t.Task.create("Parse Mol",async()=>_(a))}return Wo}var Vu={},KG;function LQ(){if(KG)return Vu;KG=1,Object.defineProperty(Vu,"__esModule",{value:!0}),Vu.MolFormat=void 0,Vu.getMolModels=f,Vu.trajectoryFromMol=_;const e=lt(),t=Iw(),r=dt(),n=nt(),i=ga(),c=vn(),o=Ai(),s=xi(),h=Ua();async function f(g,a,d){const{atoms:p,bonds:u,formalCharges:m}=g,v=e.Column.ofConst("MOL",g.atoms.count,e.Column.Schema.str),b=e.Column.ofConst("A",g.atoms.count,e.Column.Schema.str),P=e.Column.asArrayColumn(p.type_symbol),C=e.Column.ofConst(1,p.count,e.Column.Schema.int),l=new Int32Array(g.atoms.count);if(m.atomIdx.rowCount>0)for(let D=0;D<m.atomIdx.rowCount;D++)l[m.atomIdx.value(D)-1]=m.charge.value(D);else for(let D=0;D<g.atoms.count;D++)l[D]=(0,t.formalChargeMapper)(p.formal_charge.value(D));const S=e.Table.ofPartialColumns(c.BasicSchema.atom_site,{auth_asym_id:b,auth_atom_id:P,auth_comp_id:v,auth_seq_id:C,Cartn_x:e.Column.asArrayColumn(p.x,Float32Array),Cartn_y:e.Column.asArrayColumn(p.y,Float32Array),Cartn_z:e.Column.asArrayColumn(p.z,Float32Array),id:e.Column.range(1,p.count),label_asym_id:b,label_atom_id:P,label_comp_id:v,label_seq_id:C,label_entity_id:e.Column.ofConst("1",p.count,e.Column.Schema.str),occupancy:e.Column.ofConst(1,p.count,e.Column.Schema.float),type_symbol:P,pdbx_PDB_model_num:e.Column.ofConst(1,p.count,e.Column.Schema.int),pdbx_formal_charge:e.Column.ofIntArray(l)},p.count),T=new s.EntityBuilder;T.setNames([["MOL","Unknown Entity"]]),T.getEntityId("MOL",r.MoleculeType.Unknown,"A");const A=new o.ComponentBuilder(C,P);A.setNames([["MOL","Unknown Molecule"]]),A.add("MOL",0);const x=(0,c.createBasic)({entity:T.getEntityTable(),chem_comp:A.getChemCompTable(),atom_site:S}),M=await(0,i.createModels)(x,a??y.create(g),d);if(M.frameCount>0){const D=e.Column.ofIntArray(e.Column.mapToArray(u.atomIdxA,I=>I-1,Int32Array)),V=e.Column.ofIntArray(e.Column.mapToArray(u.atomIdxB,I=>I-1,Int32Array)),R=e.Column.asArrayColumn(u.order,Int32Array),E=h.IndexPairBonds.fromData({pairs:{indexA:D,indexB:V,order:R},count:p.count},{maxDistance:1/0});h.IndexPairBonds.Provider.set(M.representative,E)}return M}var y;(function(g){function a(p){return p?.kind==="mol"}g.is=a;function d(p){return{kind:"mol",name:p.title,data:p}}g.create=d})(y||(Vu.MolFormat=y={}));function _(g){return n.Task.create("Parse MOL",a=>f(g,void 0,a))}return Vu}var Id={},YG;function fae(){if(YG)return Id;YG=1,Object.defineProperty(Id,"__esModule",{value:!0}),Id.CifCoreFormat=void 0,Id.trajectoryFromCifCore=C;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi(),s=Ti(),h=rt(),f=Ge(),y=Qn(),_=Ua(),g=FT(),a=cc(),d=_t();function p(l){const S=l.it_number.value(0),T=l["name_h-m_full"].isDefined?l["name_h-m_full"]:l["name_h-m_alt"],A=T.value(0).replace("_"," ");return l.it_number.isDefined?(T.isDefined,S):A}function u(l){const{cell:S,space_group:T}=l,A=p(T),x=h.SpacegroupCell.create(A,f.Vec3.create(S.length_a.value(0),S.length_b.value(0),S.length_c.value(0)),f.Vec3.scale((0,f.Vec3)(),f.Vec3.create(S.angle_alpha.value(0),S.angle_beta.value(0),S.angle_gamma.value(0)),Math.PI/180));return{spacegroup:h.Spacegroup.create(x),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}async function m(l,S,T){var A;const x=l.atom_site._rowCount,M=e.Column.ofConst("MOL",x,e.Column.Schema.str),D=e.Column.ofConst("A",x,e.Column.Schema.str),V=e.Column.ofConst(1,x,e.Column.Schema.int),R=u(l),E=R.spacegroup.cell.fromFractional,{fract_x:I,fract_y:B,fract_z:w}=l.atom_site,O=new Float32Array(x),F=new Float32Array(x),L=new Float32Array(x),U=(0,f.Vec3)();for(let K=0;K<x;++K)f.Vec3.set(U,I.value(K),B.value(K),w.value(K)),f.Vec3.transformMat4(U,U,E),O[K]=U[0],F[K]=U[1],L[K]=U[2];const{type_symbol:q,label:N}=l.atom_site;let k,j;if(q.isDefined){const K=new Array(x),Q=new Int8Array(x);for(let J=0;J<x;++J){const ae=q.value(J),te=ae.length;if(ae[te-1]==="+"){const ne=ae.charCodeAt(te-2);te>=2&&ne>=49&&ne<=57?(K[J]=ae.substring(0,te-2),Q[J]=ne-48):(K[J]=ae.substring(0,te-1),Q[J]=1)}else if(te>=2&&ae[te-2]==="+")K[J]=ae.substring(0,te-2),Q[J]=ae.charCodeAt(te-1)-48;else if(ae[te-1]==="-"){const ne=ae.charCodeAt(te-2);te>=2&&ne>=48&&ne<=57?(K[J]=ae.substring(0,te-2),Q[J]=-(ne-48)):(K[J]=ae.substring(0,te-1),Q[J]=-1)}else te>=2&&ae[te-2]==="-"?(K[J]=ae.substring(0,te-2),Q[J]=-(ae.charCodeAt(te-1)-48)):(K[J]=ae,Q[J]=0)}k=e.Column.ofStringArray(K),j=e.Column.ofIntArray(Q)}else{const K=new Array(x);for(let Q=0;Q<x;++Q)K[Q]=(0,a.guessElementSymbolString)(N.value(Q),"");
4126k=e.Column.ofStringArray(K),j=e.Column.Undefined(x,e.Column.Schema.int)}const H=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:D,auth_atom_id:N,auth_comp_id:M,auth_seq_id:V,Cartn_x:e.Column.ofFloatArray(O),Cartn_y:e.Column.ofFloatArray(F),Cartn_z:e.Column.ofFloatArray(L),id:e.Column.range(0,x-1),label_asym_id:D,label_atom_id:N,label_comp_id:M,label_seq_id:V,label_entity_id:e.Column.ofConst("1",x,e.Column.Schema.str),occupancy:l.atom_site.occupancy.isDefined?l.atom_site.occupancy:e.Column.ofConst(1,x,e.Column.Schema.float),type_symbol:k,pdbx_formal_charge:j,pdbx_PDB_model_num:e.Column.ofConst(1,x,e.Column.Schema.int),B_iso_or_equiv:l.atom_site.u_iso_or_equiv},x),G=l.chemical.name_common.value(0)||l.chemical.name_systematic.value(0)||l.chemical_formula.sum.value(0),z=new o.EntityBuilder;z.setNames([["MOL",G||"Unknown Entity"]]),z.getEntityId("MOL",t.MoleculeType.Unknown,"A");const W=new c.ComponentBuilder(V,l.atom_site.type_symbol);W.setNames([["MOL",G||"Unknown Molecule"]]),W.add("MOL",0);const X=(0,i.createBasic)({entity:z.getEntityTable(),chem_comp:W.getChemCompTable(),atom_site:H}),Y=await(0,n.createModels)(X,S,T);if(Y.frameCount>0){const K=Y.representative;y.ModelSymmetry.Provider.set(K,R);const Q=l.geom_bond._rowCount;if(Q>0){const J={},{label:ae}=l.atom_site;for(let de=0,ge=ae.rowCount;de<ge;++de)J[ae.value(de)]=de;const te=(A=S.data.frame.categories.ccdc_geom_bond_type)===null||A===void 0?void 0:A.getField(""),ne=[],$=[],ie=[],Z=[],re=[],oe=new Set;let ce=0;const{atom_site_label_1:ue,atom_site_label_2:pe,valence:he,distance:fe}=l.geom_bond;for(let de=0;de<Q;++de){const ge=J[ue.value(de)],Ce=J[pe.value(de)],ve=ge<Ce?(0,d.cantorPairing)(ge,Ce):(0,d.cantorPairing)(Ce,ge);if(!oe.has(ve)){if(oe.add(ve),ne[ce]=ge,$[ce]=Ce,Z[ce]=fe.value(de)||-1,te){const le=te.str(de);le==="D"?(ie[ce]=2,re[ce]=t.BondType.Flag.Covalent):le==="A"?(ie[ce]=1,re[ce]=t.BondType.Flag.Covalent|t.BondType.Flag.Aromatic):(ie[ce]=1,re[ce]=t.BondType.Flag.Covalent)}else re[ce]=t.BondType.Flag.Covalent,ie[ce]=he.isDefined?he.value(de):1;ce+=1}}_.IndexPairBonds.Provider.set(K,_.IndexPairBonds.fromData({pairs:{indexA:e.Column.ofIntArray(ne),indexB:e.Column.ofIntArray($),order:e.Column.ofIntArray(ie),distance:e.Column.ofFloatArray(Z),flag:e.Column.ofIntArray(re)},count:x}))}}return Y}function v(l){if(!P.is(l.sourceData))return;const{atom_site:S,atom_site_aniso:T}=l.sourceData.data.db,A=e.Table.ofPartialColumns(g.AtomSiteAnisotrop.Schema,{U:T.u},T._rowCount),x=g.AtomSiteAnisotrop.getElementToAnsiotropFromLabel(S.label,T.label);return{data:A,elementToAnsiotrop:x}}function b(l){return P.is(l.sourceData)?l.sourceData.data.db.atom_site_aniso.u.isDefined:!1}g.AtomSiteAnisotrop.Provider.formatRegistry.add("cifCore",v,b);var P;(function(l){function S(A){return A?.kind==="cifCore"}l.is=S;function T(A,x){return x||(x=s.CIF.schema.cifCore(A)),{kind:"cifCore",name:x.database_code.depnum_ccdc_archive.value(0)||x.database_code.depnum_ccdc_fiz.value(0)||x.database_code.icsd.value(0)||x.database_code.mdf.value(0)||x.database_code.nbs.value(0)||x.database_code.csd.value(0)||x.database_code.cod.value(0)||x._name,data:{db:x,frame:A}}}l.fromFrame=T})(P||(Id.CifCoreFormat=P={}));function C(l){const S=P.fromFrame(l);return r.Task.create("Parse CIF Core",T=>m(S.data.db,S,T))}return Id}var wd={},QG;function mae(){if(QG)return wd;QG=1,Object.defineProperty(wd,"__esModule",{value:!0}),wd.CubeFormat=void 0,wd.trajectoryFromCube=f;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi();async function s(y,_){const{atoms:g}=y,a=e.Column.ofConst("MOL",y.atoms.count,e.Column.Schema.str),d=e.Column.ofConst("A",y.atoms.count,e.Column.Schema.str),p=e.Column.ofArray({array:e.Column.mapToArray(g.number,C=>(0,t.getElementFromAtomicNumber)(C)),schema:e.Column.Schema.Aliased(e.Column.Schema.str)}),u=e.Column.ofConst(1,g.count,e.Column.Schema.int),m=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:d,auth_atom_id:p,auth_comp_id:a,auth_seq_id:u,Cartn_x:e.Column.asArrayColumn(g.x,Float32Array),Cartn_y:e.Column.asArrayColumn(g.y,Float32Array),Cartn_z:e.Column.asArrayColumn(g.z,Float32Array),id:e.Column.range(0,g.count-1),label_asym_id:d,label_atom_id:p,label_comp_id:a,label_seq_id:u,label_entity_id:e.Column.ofConst("1",g.count,e.Column.Schema.str),occupancy:e.Column.ofConst(1,g.count,e.Column.Schema.float),t
4126ype_symbol:p,pdbx_PDB_model_num:e.Column.ofConst(1,g.count,e.Column.Schema.int)},g.count),v=new o.EntityBuilder;v.setNames([["MOL","Unknown Entity"]]),v.getEntityId("MOL",t.MoleculeType.Unknown,"A");const b=new c.ComponentBuilder(u,p);b.setNames([["MOL","Unknown Molecule"]]),b.add("MOL",0);const P=(0,i.createBasic)({entity:v.getEntityTable(),chem_comp:b.getChemCompTable(),atom_site:m});return await(0,n.createModels)(P,h.create(y),_)}var h;(function(y){function _(a){return a?.kind==="cube"}y.is=_;function g(a){return{kind:"cube",name:a.header.comment1,data:a}}y.create=g})(h||(wd.CubeFormat=h={}));function f(y){return r.Task.create("Parse Cube",_=>s(y,_))}return wd}var MP={},ZG;function pae(){if(ZG)return MP;ZG=1,Object.defineProperty(MP,"__esModule",{value:!0}),MP.parseMol2=P;const e=lt(),t=Or(),r=Wi(),n=Tr(),i=nt(),{skipWhitespace:c,eatValue:o,markLine:s,getTokenString:h,skipStrictWhitespace:f}=t.Tokenizer;function y(){return{mol_name:"",num_atoms:0,num_bonds:0,num_subst:0,num_feat:0,num_sets:0,mol_type:"",charge_type:"",status_bits:"",mol_comment:""}}function _(C,l){return{tokenizer:C,molecule:y(),runtimeCtx:l}}const g=/\s+/g;function a(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>MOLECULE"&&l.position<l.data.length;)s(l);s(l),S.mol_name=h(l),s(l);const T=h(l).trim().split(g);S.num_atoms=parseInt(T[0]),S.num_bonds=parseInt(T[1]),S.num_subst=parseInt(T[2]),S.num_feat=parseInt(T[3]),S.num_sets=parseInt(T[4]),s(l);const A=h(l);if(A.startsWith("@<TRIPOS>"))return;S.mol_type=A,s(l);const x=h(l);if(x.startsWith("@<TRIPOS>"))return;S.charge_type=x,s(l);const M=h(l);if(M.startsWith("@<TRIPOS>"))return;S.status_bits=M,s(l);const D=h(l);D.startsWith("@<TRIPOS>")||(S.mol_comment=D)}function d(C,l,S){let T=0;for(let A=0;A<C;A++){let x=0;for(c(S);f(S),S.tokenStart=S.position,o(S),S.tokenStart!==S.tokenEnd;){const M=l[x++];M&&t.TokenBuilder.addUnchecked(M,S.tokenStart,S.tokenEnd)}x>T&&(T=x);for(let M=x;M<l.length;M++)t.TokenBuilder.addUnchecked(l[M],0,0)}return T+1}async function p(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>ATOM"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_atoms*2),M=t.TokenBuilder.create(l.data,S.num_atoms*2),D=t.TokenBuilder.create(l.data,S.num_atoms*2),V=t.TokenBuilder.create(l.data,S.num_atoms*2),R=t.TokenBuilder.create(l.data,S.num_atoms*2),E=t.TokenBuilder.create(l.data,S.num_atoms*2),I=t.TokenBuilder.create(l.data,S.num_atoms*2),B=t.TokenBuilder.create(l.data,S.num_atoms*2),w=t.TokenBuilder.create(l.data,S.num_atoms*2),O=t.TokenBuilder.create(l.data,S.num_atoms*2),F=e.Column.Undefined(S.num_atoms,e.Column.Schema.float),L=e.Column.Undefined(S.num_atoms,e.Column.Schema.int),U=e.Column.Undefined(S.num_atoms,e.Column.Schema.str);l.position=T,l.lineNumber=A;let q=0;const N=[x,M,D,V,R,E,I,B,w,O],{length:k}=l;let j=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,G=>{const z=Math.min(S.num_atoms-j,G);return q=Math.max(q,d(z,N,l)),j+=z,z},G=>G.update({message:"Parsing...",current:l.position,max:k})),{count:S.num_atoms,atom_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),atom_name:(0,r.TokenColumnProvider)(M)(e.Column.Schema.str),x:(0,r.TokenColumnProvider)(D)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(V)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(R)(e.Column.Schema.float),atom_type:q>5?(0,r.TokenColumnProvider)(E)(e.Column.Schema.str):U,subst_id:q>6?(0,r.TokenColumnProvider)(I)(e.Column.Schema.int):L,subst_name:q>7?(0,r.TokenColumnProvider)(B)(e.Column.Schema.str):U,charge:q>8?(0,r.TokenColumnProvider)(w)(e.Column.Schema.float):F,status_bits:q>9?(0,r.TokenColumnProvider)(O)(e.Column.Schema.str):U}}async function u(C){const{tokenizer:l,molecule:S}=C;for(;h(l)!=="@<TRIPOS>BOND"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_bonds*2),M=t.TokenBuilder.create(l.data,S.num_bonds*2),D=t.TokenBuilder.create(l.data,S.num_bonds*2),V=t.TokenBuilder.create(l.data,S.num_bonds*2),R=t.TokenBuilder.create(l.data,S.num_bonds*2),E=e.Column.Undefined(S.num_bonds,e.Column.Schema.str);l.position=T,l.lineNumber=A;let I=0;const B=[x,M,D,V,R],{length:w}=l;let O=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,L=>{const U=Math.min(S.num_bonds-O,L);return I=Math.max(I,d(U,B,l)),O+=U,U},L=>L.update({message:"Parsing...",current:l.position,max:w}
4126)),{count:S.num_bonds,bond_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),origin_atom_id:(0,r.TokenColumnProvider)(M)(e.Column.Schema.int),target_atom_id:(0,r.TokenColumnProvider)(D)(e.Column.Schema.int),bond_type:(0,r.TokenColumnProvider)(V)(e.Column.Schema.str),status_bits:I>4?(0,r.TokenColumnProvider)(R)(e.Column.Schema.str):E}}async function m(C){const{tokenizer:l,molecule:S}=C;if(S.num_subst===0)return;for(;h(l)!=="@<TRIPOS>SUBSTRUCTURE"&&l.position<l.data.length;)s(l);const T=l.position,A=l.lineNumber,x=t.TokenBuilder.create(l.data,S.num_subst*2),M=t.TokenBuilder.create(l.data,S.num_subst*2),D=t.TokenBuilder.create(l.data,S.num_subst*2),V=t.TokenBuilder.create(l.data,S.num_subst*2),R=t.TokenBuilder.create(l.data,S.num_subst*2),E=t.TokenBuilder.create(l.data,S.num_subst*2),I=t.TokenBuilder.create(l.data,S.num_subst*2),B=t.TokenBuilder.create(l.data,S.num_subst*2),w=t.TokenBuilder.create(l.data,S.num_subst*2),O=e.Column.Undefined(S.num_subst,e.Column.Schema.int),F=e.Column.Undefined(S.num_subst,e.Column.Schema.str);l.position=T,l.lineNumber=A;let L=0;const U=[x,M,D,V,R,E,I,B,w],{length:q}=l;let N=0;return await(0,i.chunkedSubtask)(C.runtimeCtx,1e5,void 0,j=>{const H=Math.min(S.num_subst-N,j);return L=Math.max(L,d(H,U,l)),N+=H,H},j=>j.update({message:"Parsing...",current:l.position,max:q})),{count:S.num_subst,subst_id:(0,r.TokenColumnProvider)(x)(e.Column.Schema.int),subst_name:(0,r.TokenColumnProvider)(M)(e.Column.Schema.str),root_atom:(0,r.TokenColumnProvider)(D)(e.Column.Schema.int),subst_type:L>3?(0,r.TokenColumnProvider)(V)(e.Column.Schema.str):F,dict_type:L>4?(0,r.TokenColumnProvider)(R)(e.Column.Schema.str):F,chain:L>
41265?(0,r.TokenColumnProvider)(E)(e.Column.Schema.str):F,sub_type:L>6?(0,r.TokenColumnProvider)(I)(e.Column.Schema.str):F,inter_bonds:L>7?(0,r.TokenColumnProvider)(B)(e.Column.Schema.int):O,status_bits:L>8?(0,r.TokenColumnProvider)(w)(e.Column.Schema.str):F}}function v(C){const{tokenizer:l}=C;for(;l.position<l.data.length;){const T=h(l);if(T==="@<TRIPOS>MOLECULE")return;if(T==="@<TRIPOS>CRYSIN")break;s(l)}if(l.position>=l.data.length)return;s(l);const S=h(l).trim().split(g);return{a:parseFloat(S[0]),b:parseFloat(S[1]),c:parseFloat(S[2]),alpha:parseFloat(S[3]),beta:parseFloat(S[4]),gamma:parseFloat(S[5]),spaceGroup:parseInt(S[6],10),setting:parseInt(S[7],10)}}async function b(C,l,S){const T=(0,t.Tokenizer)(l);C.update({message:"Parsing...",current:0,max:l.length});const A=[];for(;T.position<l.length;){const M=_(T,C);a(M);const D=await p(M),V=await u(M),R=await m(M),E=v(M);for(A.push({molecule:M.molecule,atoms:D,bonds:V,substructures:R,crysin:E}),c(T);h(T)!=="@<TRIPOS>MOLECULE"&&T.position<T.data.length;)s(T)}const x={name:S,structures:A};return n.ReaderResult.success(x)}function P(C,l){return i.Task.create("Parse MOL2",async S=>await b(S,C,l))}return MP}var Vd={},JG;function hae(){if(JG)return Vd;JG=1,Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.Mol2Format=void 0,Vd.trajectoryFromMol2=v;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi(),s=Ua(),h=c2(),f=Ke(),y=cc(),_=Qn(),g=rt(),a=Ge(),d=qS();async function p(b,P){const C=[];for(let l=0,S=b.structures.length;l<S;++l){const{molecule:T,atoms:A,bonds:x,substructures:M,crysin:D}=b.structures[l],V=new Array(A.count),R=new Array(A.count),E=new Array(A.count),I=new Array(A.count),B=new Array(A.count);let w=!1;for(let te=0;te<A.count;++te)if(A.atom_type.value(te).includes(".")){w=!0;break}const O=new Map;if(M)for(let te=0;te<M.count;++te){const ne=M.root_atom.value(te),$=M.chain.value(te),ie=M.sub_type.value(te);O.set(ne,{chain:$,subType:ie})}const F=new o.EntityBuilder,L=new c.ComponentBuilder(A.subst_id,A.atom_name);let U,q="",N=0,k="",j=t.MoleculeType.Unknown,H=-1;for(let te=0;te<A.count;++te){const ne=A.subst_name.value(te),$=A.subst_id.value(te);let ie=ne.replace(/\d+$/,"")||"MOL";const Z=ne.match(/(\d+)$/);B[te]=Z?parseInt(Z[1]):$;const re=O.get(A.atom_id.value(te));if(re&&(U=re),U&&U.subType&&U.subType!=="UNK"&&(ie=U.subType),E[te]=w?A.atom_type.value(te).split(".")[0].toUpperCase():(0,y.guessElementSymbolString)(A.atom_name.value(te),ie),I[te]=ie,$!==H){const oe=(0,t.getMoleculeType)(L.add(ie,te).type,ie);U?.chain?k=U.chain:(oe!==j||$!==H+1)&&(k=(0,d.getChainId)(N),N+=1),q=F.getEntityId(ie,oe,k),H=$,j=oe}V[te]=q,R[te]=k}const G=e.Column.ofStringArray(E),z=e.Column.ofStringArray(I),W=e.Column.ofStringArray(V),X=e.Column.ofStringArray(R),Y=e.Column.asArrayColumn(A.atom_name),K=e.Column.ofIntArray(B),Q=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:X,auth_atom_id:Y,auth_comp_id:z,auth_seq_id:K,Cartn_x:e.Column.asArrayColumn(A.x,Float32Array),Cartn_y:e.Column.asArrayColumn(A.y,Float32Array),Cartn_z:e.Column.asArrayColumn(A.z,Float32Array),id:e.Column.asArrayColumn(A.atom_id),label_asym_id:X,label_atom_id:Y,label_comp_id:z,label_seq_id:A.subst_id,label_entity_id:W,occupancy:e.Column.ofConst(1,A.count,e.Column.Schema.float),type_symbol:G,pdbx_PDB_model_num:e.Column.ofConst(l,A.count,e.Column.Schema.int)},A.count),J=(0,i.createBasic)({entity:F.getEntityTable(),chem_comp:L.getChemCompTable(),atom_site:Q}),ae=await(0,n.createModels)(J,m.create(b),P);if(ae.frameCount>0){const te=e.Column.ofIntArray(e.Column.mapToArray(x.origin_atom_id,ce=>ce-1,Int32Array)),ne=e.Column.ofIntArray(e.Column.mapToArray(x.target_atom_id,ce=>ce-1,Int32Array)),$=x.bond_id,ie=e.Column.ofIntArray(e.Column.mapToArray(x.bond_type,ce=>{switch(ce){case"ar":case"am":case"un":return 1;case"du":case"nc":return 0;default:return parseInt(ce)}},Int8Array)),Z=e.Column.ofIntArray(e.Column.mapToArray(x.bond_type,ce=>{switch(ce){case"ar":case"am":return t.BondType.Flag.Aromatic|t.BondType.Flag.Covalent;case"du":case"nc":return t.BondType.Flag.None;default:return t.BondType.Flag.Covalent}},Int8Array)),re=s.IndexPairBonds.fromData({pairs:{key:$,indexA:te,indexB:ne,order:ie,flag:Z},count:A.count},{maxDistance:D?-1:1/0}),oe=ae.representative;if(s.IndexPairBonds.Provider.set(oe,re),h.AtomPartialCharge.Provider.set(oe,{data:A.charge,type:T.charge_type}),D){const ce=u(D);ce&&_.ModelSymmetry.Provider.set(oe,ce)}C.push(oe)}}return new f.ArrayTrajectory(C)}function u(b){if(b.setting!==1)return;const P=g.SpacegroupCell.create(b.spaceGroup,a.Vec3.create(b.a,b.b,b.c),a.Vec3.scale((0,a.Vec3)(),a.Vec3.create(b.alpha,b.beta,b.gamma),Math.PI/180)
4126);return{spacegroup:g.Spacegroup.create(P),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}var m;(function(b){function P(l){return l?.kind==="mol2"}b.is=P;function C(l){return{kind:"mol2",name:l.name,data:l}}b.create=C})(m||(Vd.Mol2Format=m={}));function v(b){return r.Task.create("Parse MOL2",P=>p(b,P))}return Vd}var DP={},ez;function gae(){if(ez)return DP;ez=1,Object.defineProperty(DP,"__esModule",{value:!0}),DP.parseXtc=s;const e=nt(),t=Tr(),r=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]),n=9;var i;(function(h){function f(v){let b=1,P=0;for(;v>=b&&P<32;)P++,b<<=1;return P}h.sizeOfInt=f;const y=new Uint8Array(32);function _(v,b){let P=1,C=0;y[0]=1;for(let S=0;S<v;S++){let T,A=0;for(T=0;T<P;T++)A+=y[T]*b[S],y[T]=A&255,A>>=8;for(;A!==0;)y[T++]=A&255,A>>=8;P=T}let l=1;for(P--;y[P]>=l;)C++,l*=2;return C+P*8}h.sizeOfInts=_;const g=new ArrayBuffer(24);h.buf=new Int32Array(g);const a=new Uint32Array(g);function d(v,b,P){let C=P;const l=(1<<C)-1;let S=a[1],T=a[2],A=h.buf[0],x=0;for(;C>=8;)T=T<<8|v[b+A++],x|=T>>S<<C-8,C-=8;return C>0&&(S<C&&(S+=8,T=T<<8|v[b+A++]),S-=C,x|=T>>S&(1<<C)-1),x&=l,h.buf[0]=A,h.buf[1]=S,h.buf[2]=T,x}h.decodeBits=d;function p(v,b){let P=a[2];const C=h.buf[0];return P=P<<8|v[b+C],h.buf[0]=C+1,h.buf[2]=P,P>>a[1]&255}const u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function m(v,b,P,C,l){let S=P,T=0;for(u[0]=0,u[1]=0,u[2]=0,u[3]=0;S>8;)u[T++]=p(v,b),S-=8;S>0&&(u[T++]=d(v,b,S));for(let A=2;A>0;A--){let x=0;const M=C[A];for(let D=T-1;D>=0;D--){x=x<<8|u[D];const V=x/M|0;u[D]=V,x=x-V*M}l[A]=x}l[0]=u[0]|u[1]<<8|u[2]<<16|u[3]<<24}h.decodeInts=m})(i||(i={}));function c(){throw new Error("(xdrfile error) Undefined error.")}async function o(h,f){const y=new DataView(f.buffer,f.byteOffset),_={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},g=_.frames,a=_.boxes,d=_.times,p=[0,0,0,0,0,0],u=[0,0,0],m=[0,0,0],v=[0,0,0],b=[.1,.1,.1],P=[.1,.1,.1];let C=0;const l=i.buf;for(;;){let S;const T=y.getInt32(C+4);C+=12,d.push(y.getFloat32(C)),C+=4;const A=new Float32Array(9);for(let x=0;x<9;++x)A[x]=y.getFloat32(C)*10,C+=4;if(a.push(A),T<=9){S={count:T,x:new Float32Array(T),y:new Float32Array(T),z:new Float32Array(T)},C+=4;for(let x=0;x<T;++x)S.x[x]=y.getFloat32(C),S.y[x]=y.getFloat32(C+4),S.z[x]=y.getFloat32(C+8),C+=12}else{l[0]=l[1]=l[2]=0,u[0]=u[1]=u[2]=0,v[0]=v[1]=v[2]=0,m[0]=m[1]=m[2]=0,b[0]=b[1]=b[2]=0,P[0]=P[1]=P[2]=0,S={count:T,x:new Float32Array(T),y:new Float32Array(T),z:new Float32Array(T)};let x=0;const M=y.getInt32(C);C+=4;const D=y.getFloat32(C);C+=4,p[0]=y.getInt32(C),p[1]=y.getInt32(C+4),p[2]=y.getInt32(C+8),p[3]=y.getInt32(C+12),p[4]=y.getInt32(C+16),p[5]=y.getInt32(C+20),u[0]=p[3]-p[0]+1,u[1]=p[4]-p[1]+1,u[2]=p[5]-p[2]+1,C+=24;let V;(u[0]|u[1]|u[2])>16777215?(m[0]=i.sizeOfInt(u[0]),m[1]=i.sizeOfInt(u[1]),m[2]=i.sizeOfInt(u[2]),V=0):V=i.sizeOfInts(3,u);let R=y.getInt32(C);C+=4;let E=R-1;E=n>E?n:E;let I=r[E]/2|0,B=r[R]/2|0;v[0]=v[1]=v[2]=r[R];const w=Math.ceil(y.getInt32(C)/4)*4;C+=4;const O=1/D;let F=0,L=0;for(b[0]=b[1]=b[2]=0;L<M;){V===0?(b[0]=i.decodeBits(f,C,m[0]),b[1]=i.decodeBits(f,C,m[1]),b[2]=i.decodeBits(f,C,m[2])):i.decodeInts(f,C,V,u,b),L++,b[0]+=p[0],b[1]+=p[1],b[2]+=p[2],P[0]=b[0],P[1]=b[1],P[2]=b[2];const U=i.decodeBits(f,C,1);let q=0;if(U===1&&(F=i.decodeBits(f,C,5),q=F%3,F-=q,q--),F>0){b[0]=b[1]=b[2]=0;for(let N=0;N<F;N+=3){if(i.decodeInts(f,C,R,v,b),L++,b[0]+=P[0]-B,b[1]+=P[1]-B,b[2]+=P[2]-B,N===0){let k=b[0];b[0]=P[0],P[0]=k,k=b[1],b[1]=P[1],P[1]=k,k=b[2],b[2]=P[2],P[2]=k,S.x[x]=P[0]*O,S.y[x]=P[1]*O,S.z[x]=P[2]*O,x++}else P[0]=b[0],P[1]=b[1],P[2]=b[2];S.x[x]=b[0]*O,S.y[x]=b[1]*O,S.z[x]=b[2]*O,x++}}else S.x[x]=b[0]*O,S.y[x]=b[1]*O,S.z[x]=b[2]*O,x++;R+=q,q<0?(B=I,R>n?I=r[R-1]/2|0:I=0):q>0&&(I=B,B=r[R]/2|0),v[0]=v[1]=v[2]=r[R],(v[0]===0||v[1]===0||v[2]===0)&&c()}C+=w}for(let x=0;x<T;x++)S.x[x]*=10,S.y[x]*=10,S.z[x]*=10;if(g.push(S),h.shouldUpdate&&await h.update({current:C,max:f.length}),C>=f.length)break}return d.length>=1&&(_.timeOffset=d[0]),d.length>=2&&(_.deltaTime=d[1]-d[0]),_}function s(h){return e.Task.create("Parse XTC",async f=>{try{f.update({canAbort:!0,message:"Parsing trajectory..."});const y=await o(f,h);return t.ReaderResult.success(y)}catch(y){return t.ReaderResult.error(""+y)}})}return DP}var IP={},tz;function yae(){if(tz)return IP;
4126tz=1,Object.defineProperty(IP,"__esModule",{value:!0}),IP.coordinatesFromXtc=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse XTC",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.frames.length;y<_;++y){const g=c.boxes[y],a=n.Vec3.fromArray((0,n.Vec3)(),g,0),d=n.Vec3.fromArray((0,n.Vec3)(),g,3),p=n.Vec3.fromArray((0,n.Vec3)(),g,6);f.push({elementCount:c.frames[y].count,cell:r.Cell.fromBasis(a,d,p),x:c.frames[y].x,y:c.frames[y].y,z:c.frames[y].z,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)})}return t.Coordinates.create(f,s,h)})}return IP}var wP={},rz;function vae(){if(rz)return wP;rz=1,Object.defineProperty(wP,"__esModule",{value:!0}),wP.parseXyz=o;const e=lt(),t=nt(),r=Or(),n=Tr();function i(s){let h=s.position>=s.data.length-1?0:+r.Tokenizer.readLine(s);isNaN(h)&&(h=0);const f=r.Tokenizer.readLine(s),y=new Float64Array(h),_=new Float64Array(h),g=new Float64Array(h),a=new Array(h);for(let d=0;d<h;++d){const u=r.Tokenizer.readLineTrim(s).split(/\s+/g);a[d]=u[0],y[d]=+u[1],_[d]=+u[2],g[d]=+u[3]}return{count:h,comment:f,x:e.Column.ofFloatArray(y),y:e.Column.ofFloatArray(_),z:e.Column.ofFloatArray(g),type_symbol:e.Column.ofStringArray(a)}}function c(s){const h=(0,r.Tokenizer)(s),f=[];for(;;){const _=i(h);if(_.count===0)break;f.push(_)}const y={molecules:f};return n.ReaderResult.success(y)}function o(s){return t.Task.create("Parse Mol",async()=>c(s))}return wP}var Ed={},nz;function bae(){if(nz)return Ed;nz=1,Object.defineProperty(Ed,"__esModule",{value:!0}),Ed.XyzFormat=void 0,Ed.trajectoryFromXyz=f;const e=lt(),t=dt(),r=nt(),n=ga(),i=vn(),c=Ai(),o=xi();function s(y,_){const{molecules:g}=y;let a=0;for(const V of g)a+=V.count;const d=new Array(a),p=new Int32Array(a),u=new Float32Array(a),m=new Float32Array(a),v=new Float32Array(a),b=new Int32Array(a);let P=0;for(let V=0;V<g.length;V++){const R=g[V];for(let E=0;E<R.count;E++)d[P]=R.type_symbol.value(E),u[P]=R.x.value(E),m[P]=R.y.value(E),v[P]=R.z.value(E),p[P]=E,b[P]=V,P++}const C=e.Column.ofConst("MOL",a,e.Column.Schema.str),l=e.Column.ofConst("A",a,e.Column.Schema.str),S=e.Column.ofConst(1,a,e.Column.Schema.int),T=e.Column.ofStringArray(d),A=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:l,auth_atom_id:T,auth_comp_id:C,auth_seq_id:S,Cartn_x:e.Column.ofFloatArray(u),Cartn_y:e.Column.ofFloatArray(m),Cartn_z:e.Column.ofFloatArray(v),id:e.Column.ofIntArray(p),label_asym_id:l,label_atom_id:T,label_comp_id:C,label_seq_id:S,label_entity_id:e.Column.ofConst("1",a,e.Column.Schema.str),occupancy:e.Column.ofConst(1,a,e.Column.Schema.float),type_symbol:T,pdbx_PDB_model_num:e.Column.ofIntArray(b)},a),x=new o.EntityBuilder;x.setNames([["MOL","Unknown Entity"]]),x.getEntityId("MOL",t.MoleculeType.Unknown,"A");const M=new c.ComponentBuilder(S,T);M.setNames([["MOL","Unknown Molecule"]]),M.add("MOL",0);const D=(0,i.createBasic)({entity:x.getEntityTable(),chem_comp:M.getChemCompTable(),atom_site:A});return(0,n.createModels)(D,h.create(y),_)}var h;(function(y){function _(a){return a?.kind==="xyz"}y.is=_;function g(a){return{kind:"xyz",name:"xyz",data:a}}y.create=g})(h||(Ed.XyzFormat=h={}));function f(y){return r.Task.create("Parse XYZ",_=>s(y,_))}return Ed}var Eu={},iz;function ww(){return iz||(iz=1,Object.defineProperty(Eu,"__esModule",{value:!0}),Eu.UnitStyles=Eu.lammpsUnitStyles=void 0,Eu.lammpsUnitStyles={lj:{mass:"unitless",distance:"unitless",time:"unitless",energy:"unitless",velocity:"unitless",force:"unitless",torque:"unitless",temperature:"unitless",pressure:"unitless",viscosity:"unitless",charge:"unitless",density:"unitless",scale:1},real:{mass:"grams/mole",distance:"Angstroms",time:"femtoseconds",energy:"Kcal/mol",velocity:"Angstroms/femtosecond",force:"Kcal/mol-Angstrom",torque:"Kcal/mol",temperature:"Kelvin",pressure:"atmospheres",viscosity:"Poise",charge:"multiple of electron charge",dipole:"charge*Angstroms",electricField:"volts/Angstrom",density:"g/cm^3",scale:1},metal:{mass:"grams/mole",distance:"Angstroms",time:"picoseconds",energy:"eV",velocity:"Angstroms/picosecond",force:"eV/Angstrom",torque:"eV",temperature:"Kelvin",pressure:"bars",viscosity:"Poise",charge:"multiple of electron charge",di
4126pole:"charge*Angstroms",electricField:"volts/Angstrom",density:"g/cm^3",scale:1},si:{mass:"kilograms",distance:"meters",time:"seconds",energy:"Joules",velocity:"meters/second",force:"Newtons",torque:"Newton-meters",temperature:"Kelvin",pressure:"Pascals",viscosity:"Pascal*second",charge:"Coulombs",dipole:"Coulombs*meters",electricField:"volts/meter",density:"kg/m^3",scale:1},cgs:{mass:"grams",distance:"centimeters",time:"seconds",energy:"ergs",velocity:"centimeters/second",force:"dynes",torque:"dyne-centimeters",temperature:"Kelvin",pressure:"dyne/cm^2",viscosity:"Poise",charge:"statcoulombs",dipole:"statcoul-cm",electricField:"statvolt/cm",density:"g/cm^3",scale:1},electron:{mass:"atomic mass units",distance:"Bohr",time:"femtoseconds",energy:"Hartrees",velocity:"Bohr/atomic time units",force:"Hartrees/Bohr",temperature:"Kelvin",pressure:"Pascals",charge:"multiple of electron charge",dipole:"Debye",electricField:"volts/cm",density:"unitless",torque:"",viscosity:"",scale:.529177},micro:{mass:"picograms",distance:"micrometers",time:"microseconds",energy:"picogram-micrometer^2/microsecond^2",velocity:"micrometers/microsecond",force:"picogram-micrometer/microsecond^2",torque:"picogram-micrometer^2/microsecond^2",temperature:"Kelvin",pressure:"picogram/(micrometer-microsecond^2)",viscosity:"picogram/(micrometer-microsecond)",charge:"picocoulombs",dipole:"picocoulomb-micrometer",electricField:"volt/micrometer",density:"pg/μm^3",scale:1},nano:{mass:"attograms",distance:"nanometers",time:"nanoseconds",energy:"attogram-nanometer^2/nanosecond^2",velocity:"nanometers/nanosecond",force:"attogram-nanometer/nanosecond^2",torque:"attogram-nanometer^2/nanosecond^2",temperature:"Kelvin",pressure:"attogram/(nanometer-nanosecond^2)",viscosity:"attogram/(nanometer-nanosecond)",charge:"multiple of electron charge",dipole:"charge-nanometer",electricField:"volt/nanometer",density:"ag/nm^3",scale:10}},Eu.UnitStyles=["real","metal","si","cgs","electron","micro","nano","lj"]),Eu}var VP={},az;function _ae(){if(az)return VP;az=1,Object.defineProperty(VP,"__esModule",{value:!0}),VP.parseLammpsData=u;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer,y=/\s+/;function _(m,v){return{tokenizer:m,runtimeCtx:v}}async function g(m,v,b){const{tokenizer:P}=m,C=t.TokenBuilder.create(P.data,v*2),l=t.TokenBuilder.create(P.data,v*2),S=t.TokenBuilder.create(P.data,v*2),T=t.TokenBuilder.create(P.data,v*2),A=t.TokenBuilder.create(P.data,v*2),x=t.TokenBuilder.create(P.data,v*2),M=t.TokenBuilder.create(P.data,v*2),D={full:[C,l,S,T,A,x,M],atomic:[C,S,A,x,M],bond:[C,l,S,A,x,M]},V=D[b].length,{position:R}=P;c(P).trim(),P.position=R;const{length:E}=P;let I=0;return await(0,e.chunkedSubtask)(m.runtimeCtx,1e5,void 0,B=>{const w=Math.min(v-I,B);for(let O=0;O<w;++O){for(let F=0;F<V;++F){o(P),f(P),s(P);const L=D[b][F];L&&t.TokenBuilder.addUnchecked(L,P.tokenStart,P.tokenEnd)}h(P),f(P)}return I+=w,w},B=>B.update({message:"Parsing...",current:P.position,max:E})),{count:v,atomId:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),moleculeId:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int),atomType:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),charge:(0,n.TokenColumnProvider)(T)(i.Column.Schema.float),x:(0,n.TokenColumnProvider)(A)(i.Column.Schema.float),y:(0,n.TokenColumnProvider)(x)(i.Column.Schema.float),z:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float)}}async function a(m,v){const{tokenizer:b}=m,P=t.TokenBuilder.create(b.data,v*2),C=t.TokenBuilder.create(b.data,v*2),l=t.TokenBuilder.create(b.data,v*2),S=t.TokenBuilder.create(b.data,v*2),{length:T}=b;let A=0;return await(0,e.chunkedSubtask)(m.runtimeCtx,10,void 0,x=>{const M=Math.min(v-A,x);for(let D=0;D<M;++D)for(let V=0;V<4;++V)switch(o(b),f(b),s(b),V){case 0:t.TokenBuilder.addUnchecked(P,b.tokenStart,b.tokenEnd);break;case 1:t.TokenBuilder.addUnchecked(C,b.tokenStart,b.tokenEnd);break;case 2:t.TokenBuilder.addUnchecked(l,b.tokenStart,b.tokenEnd);break;case 3:t.TokenBuilder.addUnchecked(S,b.tokenStart,b.tokenEnd);break}return A+=M,M},x=>x.update({message:"Parsing...",current:b.position,max:T}
4126)),{count:v,bondId:(0,n.TokenColumnProvider)(P)(i.Column.Schema.int),bondType:(0,n.TokenColumnProvider)(C)(i.Column.Schema.int),atomIdA:(0,n.TokenColumnProvider)(l)(i.Column.Schema.int),atomIdB:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int)}}const d=["full","atomic","bond"];async function p(m,v){const b=(0,t.Tokenizer)(m),P=_(b,v);let C,l,S=0,T=0,A="full",x=NaN,M=NaN,D=NaN,V=NaN,R=NaN,E=NaN;for(;b.tokenEnd<b.length;){const w=c(P.tokenizer).trim();if(w.includes("atoms"))S=parseInt(w.split(y)[0]);else if(w.includes("bonds"))T=parseInt(w.split(y)[0]);else if(w.includes("xlo xhi")){const O=w.split(y);x=parseFloat(O[0]),M=parseFloat(O[1])}else if(w.includes("ylo yhi")){const O=w.split(y);D=parseFloat(O[0]),V=parseFloat(O[1])}else if(w.includes("zlo zhi")){const O=w.split(y);R=parseFloat(O[0]),E=parseFloat(O[1])}else if(!w.includes("Masses"))if(w.includes("Atoms")){const O=w.split("#");if(O.length>1){const F=O[1].trim();d.includes(F)?A=F:console.warn(`Unknown atom style: ${F}`)}C=await g(P,S,A)}else w.includes("Bonds")&&(l=await a(P,T))}if(C===void 0)return r.ReaderResult.error("no atoms data");l===void 0&&(l={count:0,bondId:i.Column.ofIntArray([]),bondType:i.Column.ofIntArray([]),atomIdA:i.Column.ofIntArray([]),atomIdB:i.Column.ofIntArray([])});const I=!isNaN(x)&&!isNaN(M)&&!isNaN(D)&&!isNaN(V)&&!isNaN(R)&&!isNaN(E)?{lower:[x,D,R],length:[M-x,V-D,E-R],periodicity:["p","p","p"]}:void 0,B={atoms:C,bonds:l,box:I};return r.ReaderResult.success(B)}function u(m){return e.Task.create("Parse LammpsData",async v=>await p(m,v))}return VP}var Bd={},oz;function Sae(){if(oz)return Bd;oz=1,Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.LammpsDataFormat=void 0,Bd.trajectoryFromLammpsData=p;const e=lt(),t=Ge(),r=ww(),n=Ke(),i=dt(),c=nt(),o=ga(),s=vn(),h=Ai(),f=xi(),y=Ua(),_=c2(),g=Qn();async function a(u,m,v="real"){const{atoms:b,bonds:P}=u,C=[],l=b.count,S=r.lammpsUnitStyles[v].scale,T=new Array(l),A=new Float32Array(l),x=new Float32Array(l),M=new Float32Array(l);let D=0;for(let q=0;q<l;q++){const N=b.atomId.value(q);T[q]=b.atomType.value(q).toString(),A[q]=b.x.value(q)*S,x[q]=b.y.value(q)*S,M[q]=b.z.value(q)*S,N>D&&(D=N)}const V=new Int32Array(D+1).fill(-1);for(let q=0;q<l;q++)V[b.atomId.value(q)]=q;const R=e.Column.ofConst("MOL",l,e.Column.Schema.str),E=e.Column.ofLambda({value:q=>b.moleculeId.value(q).toString(),rowCount:l,schema:e.Column.Schema.str}),I=e.Column.ofConst(1,l,e.Column.Schema.int),B=e.Column.ofStringArray(T),w=e.Table.ofPartialColumns(s.BasicSchema.atom_site,{auth_asym_id:E,auth_atom_id:B,auth_comp_id:R,auth_seq_id:I,Cartn_x:e.Column.ofFloatArray(A),Cartn_y:e.Column.ofFloatArray(x),Cartn_z:e.Column.ofFloatArray(M),id:b.atomId,label_asym_id:E,label_atom_id:B,label_comp_id:R,label_seq_id:I,label_entity_id:e.Column.ofConst("1",l,e.Column.Schema.str),occupancy:e.Column.ofConst(1,l,e.Column.Schema.float),type_symbol:B,pdbx_PDB_model_num:e.Column.ofConst(0,l,e.Column.Schema.int)},l),O=new f.EntityBuilder;O.setNames([["MOL","Unknown Entity"]]),O.getEntityId("MOL",i.MoleculeType.Unknown,"A");const F=new h.ComponentBuilder(I,B);F.setNames([["MOL","Unknown Molecule"]]),F.add("MOL",0);const L=(0,s.createBasic)({entity:O.getEntityTable(),chem_comp:F.getChemCompTable(),atom_site:w}),U=await(0,o.createModels)(L,d.create(u),m);if(U.frameCount>0){const q=U.representative;if(P.count!==0){const N=[],k=[],j=[];for(let K=0;K<P.count;K++){const Q=P.atomIdA.value(K),J=P.atomIdB.value(K);if(Q>D||J>D)continue;const ae=V[Q],te=V[J];ae<0||te<0||(N.push(ae),k.push(te),j.push(P.bondId.value(K)))}const H=e.Column.ofIntArray(new Int32Array(N)),G=e.Column.ofIntArray(new Int32Array(k)),z=e.Column.ofIntArray(new Int32Array(j)),W=e.Column.ofConst(1,N.length,e.Column.Schema.int),X=e.Column.ofConst(i.BondType.Flag.Covalent,N.length,e.Column.Schema.int),Y=y.IndexPairBonds.fromData({pairs:{key:z,indexA:H,indexB:G,order:W,flag:X},count:b.count},{maxDistance:1/0});y.IndexPairBonds.Provider.set(q,Y)}if(_.AtomPartialCharge.Provider.set(q,{data:b.charge,type:"NO_CHARGES"}),u.box){const[N,k,j]=u.box.length,H=g.ModelSymmetry.fromCell(t.Vec3.create(N*S,k*S,j*S),t.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));g.ModelSymmetry.Provider.set(q,H)}C.push(q)}return new n.ArrayTrajectory(C)}var d;(function(u){function m(b){return b?.kind==="data"}u.is=m;function v(b){return{kind:"data",name:"data",data:b}}u.create=v})(d||(Bd.LammpsDataFormat=d={}));function p(u,m){return m===void 0&&(m="real"),c.Task.create("Parse Lammps Data",v=>a(u,v,m))}return Bd}var EP={},sz;function Cae(){if(sz)return EP;
4126sz=1,Object.defineProperty(EP,"__esModule",{value:!0}),EP.parseLammpsTrajectory=a;const e=nt(),t=Or(),r=Tr(),n=Wi(),i=lt(),{readLine:c,skipWhitespace:o,eatValue:s,eatLine:h,markStart:f}=t.Tokenizer;function y(d,p){return{tokenizer:d,runtimeCtx:p}}async function _(d,p,u){const{tokenizer:m}=d,v=Object.fromEntries(u.map((B,w)=>[B,w])),b=u.findIndex(B=>B[0]==="x"),P=u.findIndex(B=>B[0]==="y"),C=u.findIndex(B=>B[0]==="z"),l=u[b],S=t.TokenBuilder.create(m.data,p*2),T=t.TokenBuilder.create(m.data,p*2),A=t.TokenBuilder.create(m.data,p*2),x=t.TokenBuilder.create(m.data,p*2),M=t.TokenBuilder.create(m.data,p*2),D=t.TokenBuilder.create(m.data,p*2),{position:V}=m;m.position=V;const R=u.length,{length:E}=m;let I=0;return await(0,e.chunkedSubtask)(d.runtimeCtx,1e5,void 0,B=>{const w=Math.min(p-I,B);for(let O=0;O<w;++O){for(let F=0;F<R;++F)switch(o(m),f(m),s(m),F){case v.id:t.TokenBuilder.addUnchecked(S,m.tokenStart,m.tokenEnd);break;case v.mol:t.TokenBuilder.addUnchecked(T,m.tokenStart,m.tokenEnd);break;case v.type:t.TokenBuilder.addUnchecked(A,m.tokenStart,m.tokenEnd);break;case b:t.TokenBuilder.addUnchecked(x,m.tokenStart,m.tokenEnd);break;case P:t.TokenBuilder.addUnchecked(M,m.tokenStart,m.tokenEnd);break;case C:t.TokenBuilder.addUnchecked(D,m.tokenStart,m.tokenEnd);break}h(m),f(m)}return I+=w,w},B=>B.update({message:"Parsing...",current:m.position,max:E})),{count:p,atomMode:l,atomId:(0,n.TokenColumnProvider)(S)(i.Column.Schema.int),moleculeId:(0,n.TokenColumnProvider)(T)(i.Column.Schema.int),atomType:(0,n.TokenColumnProvider)(A)(i.Column.Schema.int),x:(0,n.TokenColumnProvider)(x)(i.Column.Schema.float),y:(0,n.TokenColumnProvider)(M)(i.Column.Schema.float),z:(0,n.TokenColumnProvider)(D)(i.Column.Schema.float)}}async function g(d,p){const u=(0,t.Tokenizer)(d),m=y(u,p),v={frames:[],times:[],bounds:[],timeOffset:0,deltaTime:0},b=v.frames;let P=0,C=0;for(;u.tokenEnd<u.length;){const l=c(m.tokenizer).trim();if(l.includes("ITEM: TIMESTEP"))C=parseInt(c(m.tokenizer).trim()),v.times.push(C);else if(l.includes("ITEM: NUMBER OF ATOMS"))P=parseInt(c(m.tokenizer).trim());else if(l.includes("ITEM: ATOMS")){const S=l.split(" ").slice(2),T=await _(m,P,S);b.push(T)}else if(l.includes("ITEM: BOX BOUNDS")){const S=l.split("ITEM: BOX BOUNDS ")[1].split(" "),T=S[0],A=S[1],x=S[2],M=c(m.tokenizer).trim().split(" "),D=c(m.tokenizer).trim().split(" "),V=c(m.tokenizer).trim().split(" "),R=parseFloat(M[0]),E=parseFloat(M[1]),I=parseFloat(D[0]),B=parseFloat(D[1]),w=parseFloat(V[0]),O=parseFloat(V[1]);
4126v.bounds.push({lower:[R,I,w],length:[E-R,B-I,O-w],periodicity:[T,A,x]})}}return v.times.length>=1&&(v.timeOffset=v.times[0]),v.times.length>=2&&(v.deltaTime=v.times[1]-v.times[0]),r.ReaderResult.success(v)}function a(d){return e.Task.create("Parse Lammp Trajectory",async p=>await g(d,p))}return EP}var Os={},cz;function Pae(){if(cz)return Os;cz=1,Object.defineProperty(Os,"__esModule",{value:!0}),Os.LammpsTrajectoryFormat=void 0,Os.getCanonicalOrder=g,Os.coordinatesFromLammpsTrajectory=a,Os.trajectoryFromLammpsTrajectory=u;const e=vl(),t=ww(),r=Al(),n=nt(),i=lt(),c=Ge(),o=vn(),s=Ai(),h=xi(),f=ga(),y=dt(),_=Qn();function g(m){const{count:v,atomId:b}=m;let P,C;for(let l=0;l<v;l++){const S=b.value(l)-1;if(S<0||S>=v)return;if(!P){if(S===l)continue;if(S<l)return;P=new Int32Array(v),C=new Uint8Array(v);for(let T=0;T<l;T++)P[T]=T,C[T]=1}if(C[S])return;C[S]=1,P[l]=S}return P}function a(m,v="real"){return n.Task.create("Parse Lammps Trajectory",async b=>{await b.update("Converting to coordinates");const P=t.lammpsUnitStyles[v].scale,C=(0,e.Time)(m.deltaTime,"step"),l=(0,e.Time)(m.timeOffset,C.unit),S={x:0,y:0,z:0},T={x:1,y:1,z:1},x=m.frames[0].atomMode.includes("s"),M=[];for(let D=0,V=m.frames.length;D<V;++D){const R=m.bounds[D];x&&(T.x=R.length[0],T.y=R.length[1],T.z=R.length[2],S.x=R.lower[0],S.y=R.lower[1],S.z=R.lower[2]);const E=m.frames[D],I=E.count,B=g(E),w=new Float32Array(I),O=new Float32Array(I),F=new Float32Array(I),L=T.x*P,U=T.y*P,q=T.z*P,N=S.x*P,k=S.y*P,j=S.z*P;for(let H=0;H<I;H++){const G=B?B[H]:H;w[G]=E.x.value(H)*L+N,O[G]=E.y.value(H)*U+k,F[G]=E.z.value(H)*q+j}M.push({elementCount:I,x:w,y:O,z:F,xyzOrdering:{isIdentity:!0},time:(0,e.Time)(l.value+C.value*D,C.unit)})}return e.Coordinates.create(M,C,l)})}async function d(m,v,b="real"){const P=m.frames[0],C=P.count,l=P.atomMode,S=m.bounds[0],T={x:0,y:0,z:0},A={x:1,y:1,z:1},x=t.lammpsUnitStyles[b].scale;l.includes("s")&&(A.x=S.length[0],A.y=S.length[1],A.z=S.length[2],T.x=S.lower[0],T.y=S.lower[1],T.z=S.lower[2]);const M=new Array(C),D=new Array(C),V=new Int32Array(C),R=new Float32Array(C),E=new Float32Array(C),I=new Float32Array(C),B=A.x*x,w=A.y*x,O=A.z*x,F=T.x*x,L=T.y*x,U=T.z*x,q=g(P);for(let J=0;J<C;J++){const ae=q?q[J]:J;M[ae]=P.atomType.value(J).toString(),D[ae]=P.moleculeId.value(J).toString(),R[ae]=P.x.value(J)*B+F,E[ae]=P.y.value(J)*w+L,I[ae]=P.z.value(J)*O+U,V[ae]=P.atomId.value(J)}const N=i.Column.ofConst("MOL",C,i.Column.Schema.str),k=i.Column.ofStringArray(D),j=i.Column.ofConst(1,C,i.Column.Schema.int),H=i.Column.ofStringArray(M),G=i.Table.ofPartialColumns(o.BasicSchema.atom_site,{auth_asym_id:k,auth_atom_id:H,auth_comp_id:N,auth_seq_id:j,Cartn_x:i.Column.ofFloatArray(R),Cartn_y:i.Column.ofFloatArray(E),Cartn_z:i.Column.ofFloatArray(I),id:i.Column.ofIntArray(V),label_asym_id:k,label_atom_id:H,label_comp_id:N,label_seq_id:j,label_entity_id:i.Column.ofConst("1",C,i.Column.Schema.str),occupancy:i.Column.ofConst(1,C,i.Column.Schema.float),type_symbol:H,pdbx_PDB_model_num:i.Column.ofConst(0,C,i.Column.Schema.int)},C),z=new h.EntityBuilder;z.setNames([["MOL","Unknown Entity"]]),z.getEntityId("MOL",y.MoleculeType.Unknown,"A");const W=new s.ComponentBuilder(j,H);W.setNames([["MOL","Unknown Molecule"]]),W.add("MOL",0);const X=(0,o.createBasic)({entity:z.getEntityTable(),chem_comp:W.getChemCompTable(),atom_site:G}),K=(await(0,f.createModels)(X,p.create(m),v)).representative;if(m.bounds.length>0){const J=m.bounds[0],[ae,te,ne]=J.length,$=_.ModelSymmetry.fromCell(c.Vec3.create(ae*x,te*x,ne*x),c.Vec3.create(Math.PI/2,Math.PI/2,Math.PI/2));_.ModelSymmetry.Provider.set(K,$)}const Q=await a(m,b).runInContext(v);return r.Model.trajectoryFromModelAndCoordinates(K,Q)}var p;(function(m){function v(P){return P?.kind==="lammpstrj"}m.is=v;function b(P){return{kind:"lammpstrj",name:"lammpstrj",data:P}}m.create=b})(p||(Os.LammpsTrajectoryFormat=p={}));function u(m,v){return v===void 0&&(v="real"),n.Task.create("Parse Lammps Traj Data",b=>d(m,b,v))}return Os}var BP={},Bu={},uz;function Tae(){if(uz)return Bu;uz=1,Object.defineProperty(Bu,"__esModule",{value:!0}),Bu.isV3=n,Bu.handleCountsV3=i,Bu.handleAtomsV3=c,Bu.handleBondsV3=o;const e=lt(),t=Or(),r=Wi();function n(f){return f.trim().endsWith("V3000")}function i(f){const y=t.TokenBuilder.create(f.data,1),_=t.TokenBuilder.create(f.data,1);return t.Tokenizer.eatLine(f),s(f),s(f),s(f),h(f,y),h(f,_),t.Tokenizer.eatLine(f),{atomCount:(0,r.TokenColumnProvi
4126der)(y)(e.Column.Schema.int).value(0),bondCount:(0,r.TokenColumnProvider)(_)(e.Column.Schema.int).value(0)}}function c(f,y){const _=t.TokenBuilder.create(f.data,y*2),g=t.TokenBuilder.create(f.data,y*2),a=t.TokenBuilder.create(f.data,y*2),d=t.TokenBuilder.create(f.data,y*2);for(let p=0;p<y;++p){t.Tokenizer.markLine(f),s(f),s(f),s(f);const{position:u}=f;h(f,d),h(f,_),h(f,g),h(f,a),f.position=u}return t.Tokenizer.eatLine(f),t.Tokenizer.eatLine(f),{count:y,x:(0,r.TokenColumnProvider)(_)(e.Column.Schema.float),y:(0,r.TokenColumnProvider)(g)(e.Column.Schema.float),z:(0,r.TokenColumnProvider)(a)(e.Column.Schema.float),type_symbol:(0,r.TokenColumnProvider)(d)(e.Column.Schema.str),formal_charge:e.Column.ofConst(0,y,e.Column.Schema.int)}}function o(f,y){const _=t.TokenBuilder.create(f.data,y*2),g=t.TokenBuilder.create(f.data,y*2),a=t.TokenBuilder.create(f.data,y*2);for(let d=0;d<y;++d){t.Tokenizer.markLine(f),s(f),s(f),s(f);const{position:p}=f;h(f,a),h(f,_),h(f,g),f.position=p}return t.Tokenizer.eatLine(f),t.Tokenizer.eatLine(f),{count:y,atomIdxA:(0,r.TokenColumnProvider)(_)(e.Column.Schema.float),atomIdxB:(0,r.TokenColumnProvider)(g)(e.Column.Schema.float),order:(0,r.TokenColumnProvider)(a)(e.Column.Schema.float)}}function s(f){t.Tokenizer.skipWhitespace(f),t.Tokenizer.eatValue(f)}function h(f,y){const{position:_}=f;t.Tokenizer.skipWhitespace(f),t.Tokenizer.eatValue(f),t.Tokenizer.trim(f,_,f.position),t.TokenBuilder.addUnchecked(y,f.tokenStart,f.tokenEnd)}return Bu}var lz;
4126function xae(){if(lz)return BP;lz=1,Object.defineProperty(BP,"__esModule",{value:!0}),BP.parseSdf=g;const e=lt(),t=Iw(),r=nt(),n=Tr(),i=Or(),c=Wi(),o=Tae(),s="$$$$";function h(a){const d=i.TokenBuilder.create(a.data,32),p=i.TokenBuilder.create(a.data,32);for(;a.position<a.length;){const u=i.Tokenizer.readLine(a);if(u.startsWith(s))break;if(u&&u.startsWith("> ")){i.TokenBuilder.add(d,a.tokenStart+2,a.tokenEnd),i.Tokenizer.markLine(a);const m=a.tokenStart;let v=a.tokenEnd,b=!1;for(;a.position<a.length;){const P=i.Tokenizer.readLine(a);if(!P||P.startsWith(s)||P.startsWith("> ")){i.TokenBuilder.add(p,m,v),b=!0;break}v=a.tokenEnd}b||i.TokenBuilder.add(p,m,v)}}return{dataHeader:(0,c.TokenColumnProvider)(d)(e.Column.Schema.str),data:(0,c.TokenColumnProvider)(p)(e.Column.Schema.str)}}function f(a){return{atomCount:+a.substr(0,3),bondCount:+a.substr(3,3)}}function y(a){const d=i.Tokenizer.readLine(a).trim(),p=i.Tokenizer.readLine(a).trim(),u=i.Tokenizer.readLine(a).trim(),m=i.Tokenizer.readLine(a),v=(0,o.isV3)(m),{atomCount:b,bondCount:P}=v?(0,o.handleCountsV3)(a):f(m);if(Number.isNaN(b)||Number.isNaN(P)){for(;a.position<a.length&&!i.Tokenizer.readLine(a).startsWith(s););return}const C={atomIdx:e.Column.ofConst(0,b,e.Column.Schema.int),charge:e.Column.ofConst(0,b,e.Column.Schema.int)},l=v?(0,o.handleAtomsV3)(a,b):(0,t.handleAtoms)(a,b),S=v?(0,o.handleBondsV3)(a,P):(0,t.handleBonds)(a,P),T=v?{formalCharges:C}:(0,t.handlePropertiesBlock)(a),A=h(a);return{molFile:{title:d,program:p,comment:u,atoms:l,bonds:S,...T},dataItems:A}}function _(a){const d=(0,i.Tokenizer)(a),p=[];for(;d.position<d.length;){const u=y(d);u&&p.push(u)}return n.ReaderResult.success({compounds:p})}function g(a){return r.Task.create("Parse Sdf",async()=>_(a))}return BP}var Rd={},dz;function Aae(){if(dz)return Rd;dz=1,Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.SdfFormat=void 0,Rd.trajectoryFromSdf=n;const e=nt(),t=LQ();var r;(function(i){function c(s){return s?.kind==="sdf"}i.is=c;function o(s){return{kind:"sdf",name:s.molFile.title,data:s}}i.create=o})(r||(Rd.SdfFormat=r={}));function n(i){return e.Task.create("Parse SDF",c=>(0,t.getMolModels)(i.molFile,r.create(i),c))}return Rd}var RP={},fz;function Mae(){if(fz)return RP;fz=1,Object.defineProperty(RP,"__esModule",{value:!0}),RP.parseTrr=n;const e=nt(),t=Tr();async function r(i){const c=new DataView(i.buffer),o={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},s=o.frames,h=o.boxes,f=o.times;let y=0;for(;;){y+=8;const _=c.getInt32(y);y+=4,y+=_;const g=c.getInt32(y+8),a=c.getInt32(y+12),d=c.getInt32(y+16),p=c.getInt32(y+28),u=c.getInt32(y+32),m=c.getInt32(y+36),v=c.getInt32(y+40);y+=52;const b=g/9,P=v*3;if(b===8?f.push(c.getFloat64(y)):f.push(c.getFloat32(y)),y+=2*b,g){const C=new Float32Array(9);if(b===8)for(let l=0;l<9;++l)C[l]=c.getFloat64(y)*10,y+=8;else for(let l=0;l<9;++l)C[l]=c.getFloat32(y)*10,y+=4;h.push(C)}if(y+=a,y+=d,p){const C=new Float32Array(v),l=new Float32Array(v),S=new Float32Array(v);if(b===8)for(let T=0;T<v;++T)C[T]=c.getFloat64(y)*10,l[T]=c.getFloat64(y+8)*10,S[T]=c.getFloat64(y+16)*10,y+=24;else{const T=new Uint32Array(i.buffer,y,P);for(let x=0;x<P;++x){const M=T[x];T[x]=(M&255)<<24|(M&65280)<<8|M>>8&65280|M>>24&255}const A=new Float32Array(i.buffer,y,P);for(let x=0;x<v;++x)C[x]=A[x*3]*10,l[x]=A[x*3+1]*10,S[x]=A[x*3+2]*10,y+=12}s.push({count:v,x:C,y:l,z:S})}if(y+=u,y+=m,y>=i.byteLength)break}return f.length>=1&&(o.timeOffset=f[0]),f.length>=2&&(o.deltaTime=f[1]-f[0]),o}function n(i){return e.Task.create("Parse TRR",async c=>{try{c.update({canAbort:!0,message:"Parsing trajectory..."});const o=await r(i);return t.ReaderResult.success(o)}catch(o){return t.ReaderResult.error(""+o)}})}return RP}var OP={},mz;function Dae(){if(mz)return OP;mz=1,Object.defineProperty(OP,"__esModule",{value:!0}),OP.coordinatesFromTrr=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse TRR",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.frames.length;y<_;++y){const g=c.boxes[y],a=n.Vec3.fromArray((0,n.Vec3)(),g,0),d=n.Vec3.fromArray((0,n.Vec3)(),g,3),p=n.Vec3.fromArray((0,n.Vec3)(),g,6);f.push({elementCount:c.frames[y].count,cell:r.Cell.fromBasis(a,d,p),x:c.frames[y].x,y:c.frames[y].y,z:c.frames[y].z,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)})}return t.Coordinates.create(f,s,h)})}return OP}var kP={},lv={},dv={},pz;
4126function Iae(){if(pz)return dv;pz=1,Object.defineProperty(dv,"__esModule",{value:!0}),dv.IOBuffer=void 0;const e=1024*8,t=[];class r{constructor(i,c={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let o=!1;i===void 0&&(i=e),typeof i=="number"?i=new ArrayBuffer(i):o=!0;const s=c.offset?c.offset>>>0:0,h=i.byteLength-s;let f=s;!(i instanceof ArrayBuffer)&&!(i instanceof SharedArrayBuffer)&&(i.byteLength!==i.buffer.byteLength&&(f=i.byteOffset+s),i=i.buffer),o?this._lastWrittenByte=h:this._lastWrittenByte=0,this.buffer=i,this.length=h,this.byteLength=h,this.byteOffset=f,this._data=new DataView(this.buffer,f,h)}available(i=1){return this.offset+i<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(i){return i===void 0&&(i=1),this.offset+=i,this}seek(i){return this.offset=i,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const i=this._marks.pop();if(i===void 0)throw new Error("Mark stack empty");return this.seek(i),this}rewind(){return this.offset=0,this}ensureAvailable(i){if(i===void 0&&(i=1),!this.available(i)){const o=(this.offset+i)*2,s=new Uint8Array(o);s.set(new Uint8Array(this.buffer)),this.buffer=s.buffer,this.length=this.byteLength=o,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(i){i===void 0&&(i=1);const c=new Uint8Array(i);for(let o=0;o<i;o++)c[o]=this.readByte();return c}readInt16(){const i=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}readUint16(){const i=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,i}readInt32(){const i=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}readUint32(){const i=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat32(){const i=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat64(){const i=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}readChar(){return String.fromCharCode(this.readInt8())}readChars(i=1){t.length=i;for(let c=0;c<i;c++)t[c]=this.readChar();return t.join("")}writeBoolean(i=!1){return this.writeUint8(i?255:0),this}writeInt8(i){return this.ensureAvailable(1),this._data.setInt8(this.offset++,i),this._updateLastWrittenByte(),this}writeUint8(i){return this.ensureAvailable(1),this._data.setUint8(this.offset++,i),this._updateLastWrittenByte(),this}writeByte(i){return this.writeUint8(i)}writeBytes(i){this.ensureAvailable(i.length);for(let c=0;c<i.length;c++)this._data.setUint8(this.offset++,i[c]);return this._updateLastWrittenByte(),this}writeInt16(i){return this.ensureAvailable(2),this._data.setInt16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(i){return this.ensureAvailable(2),this._data.setUint16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(i){return this.ensureAvailable(4),this._data.setInt32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(i){return this.ensureAvailable(4),this._data.setUint32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(i){return this.ensureAvailable(4),this._data.setFloat32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(i){return this.ensureAvailable(8),this._data.setFloat64(this.offset,i,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(i){return this.writeUint8(i.charCodeAt(0))}writeChars(i){for(let c=0;c<i.length;c++)this.writeUint8(i.charCodeAt(c));return this}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this._lastWrittenByte)}_updateLastWrittenByte(){this.offset>this._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}return dv.IOBuffer=r,dv}var hz;function wae(){if(hz)return lv;
4126hz=1,Object.defineProperty(lv,"__esModule",{value:!0}),lv.NetcdfReader=void 0;const e=Iae();function t(l,S){if(l)throw new TypeError("Not a valid NetCDF v3.x file: "+S)}function r(l){l.offset%4!==0&&l.skip(4-l.offset%4)}function n(l){const S=l.readUint32(),T=l.readChars(S);return r(l),T}const i={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function c(l){switch(Number(l)){case i.BYTE:return"byte";case i.CHAR:return"char";case i.SHORT:return"short";case i.INT:return"int";case i.FLOAT:return"float";case i.DOUBLE:return"double";default:return"undefined"}}function o(l){switch(Number(l)){case i.BYTE:return 1;case i.CHAR:return 1;case i.SHORT:return 2;case i.INT:return 4;case i.FLOAT:return 4;case i.DOUBLE:return 8;default:return-1}}function s(l){switch(String(l)){case"byte":return i.BYTE;case"char":return i.CHAR;case"short":return i.SHORT;case"int":return i.INT;case"float":return i.FLOAT;case"double":return i.DOUBLE;default:return-1}}function h(l,S){if(l!==1){const T=new Array(l);for(let A=0;A<l;A++)T[A]=S();return T}else return S()}function f(l,S,T){switch(S){case i.BYTE:return l.readBytes(T);case i.CHAR:return y(l.readChars(T));case i.SHORT:return h(T,l.readInt16.bind(l));case i.INT:return h(T,l.readInt32.bind(l));case i.FLOAT:return h(T,l.readFloat32.bind(l));case i.DOUBLE:return h(T,l.readFloat64.bind(l));default:t(!0,"non valid type "+S);return}}function y(l){return l.charCodeAt(l.length-1)===0?l.substring(0,l.length-1):l}function _(l,S){const T=s(S.type),A=S.size/o(T),x=new Array(A);for(let M=0;M<A;M++)x[M]=f(l,T,1);return x}function g(l,S,T){const A=s(S.type),x=S.size?S.size/o(A):1,M=T.length,D=new Array(M),V=T.recordStep;for(let R=0;R<M;R++){const E=l.offset;D[R]=f(l,A,x),l.seek(E+V)}return D}const a=0,d=10,p=11,u=12;function m(l,S){const T={recordDimension:{length:l.readUint32()}};T.version=S;const A=v(l);T.recordDimension.id=A.recordId,T.recordDimension.name=A.recordName,T.dimensions=A.dimensions,T.globalAttributes=b(l);const x=P(l,A.recordId,S);return T.variables=x.variables,T.recordDimension.recordStep=x.recordStep,T}function v(l){let S,T,A;const x=l.readUint32();if(x===a)return t(l.readUint32()!==a,"wrong empty tag for list of dimensions"),[];{t(x!==d,"wrong tag for list of dimensions");const M=l.readUint32();S=new Array(M);for(let D=0;D<M;D++){const V=n(l),R=l.readUint32();R===0&&(T=D,A=V),S[D]={name:V,size:R}}return{dimensions:S,recordId:T,recordName:A}}}function b(l){let S;const T=l.readUint32();if(T===a)return t(l.readUint32()!==a,"wrong empty tag for list of attributes"),[];{t(T!==u,"wrong tag for list of attributes");const A=l.readUint32();S=new Array(A);for(let x=0;x<A;x++){const M=n(l),D=l.readUint32();t(D<1||D>6,"non valid type "+D);const V=l.readUint32(),R=f(l,D,V);r(l),S[x]={name:M,type:c(D),value:R}}}return S}function P(l,S,T){const A=l.readUint32();let x=0,M;if(A===a)return t(l.readUint32()!==a,"wrong empty tag for list of variables"),[];{t(A!==p,"wrong tag for list of variables");const D=l.readUint32();M=new Array(D);for(let V=0;V<D;V++){const R=n(l),E=l.readUint32(),I=new Array(E);for(let L=0;L<E;L++)I[L]=l.readUint32();const B=b(l),w=l.readUint32();t(w<1&&w>6,"non valid type "+w);const O=l.readUint32();let F=l.readUint32();T===2&&(t(F>0,"offsets larger than 4GB not supported"),F=l.readUint32()),I[0]===S&&(x+=O),M[V]={name:R,dimensions:I,attributes:B,type:c(w),size:O,offset:F,record:I[0]===S}}}return{variables:M,recordStep:x}}class C{constructor(S){const T=new e.IOBuffer(S);T.setBigEndian(),t(T.readChars(3)!=="CDF","should start with CDF");const A=T.readByte();t(A>2,"unknown version"),this.header=m(T,A),this.buffer=T}get version(){return this.header.version===1?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(S){return this.header.variables&&this.header.variables.findIndex(T=>T.name===S)!==-1}getDataVariable(S){var T;let A;if(typeof S=="string"?A=(T=this.header.variables)===null||T===void 0?void 0:T.find(x=>x.name===S):A=S,A===void 0)throw new Error("variable not found");return this.buffer.seek(A.offset),A.record?g(this.buffer,A,this.header.recordDimension):_(this.buffer,A)}}return lv.NetcdfReader=C,lv}var gz;function Vae(){if(gz)return kP;
4126gz=1,Object.defineProperty(kP,"__esModule",{value:!0}),kP.parseNctraj=i;const e=nt(),t=wae(),r=Tr();async function n(c){const o=new t.NetcdfReader(c.buffer),s={coordinates:[],time:[],timeOffset:0,deltaTime:1};for(const h of o.getDataVariable("coordinates"))s.coordinates.push(h);if(o.hasDataVariable("velocities")){const h=[];for(const f of o.getDataVariable("velocities"))h.push(f);s.velocities=h}if(o.hasDataVariable("forces")){const h=[];for(const f of o.getDataVariable("forces"))h.push(f);s.forces=h}if(o.hasDataVariable("cell_lengths")){const h=[];for(const f of o.getDataVariable("cell_lengths"))h.push(f);s.cell_lengths=h}if(o.hasDataVariable("cell_angles")){const h=[];for(const f of o.getDataVariable("cell_angles"))h.push(f);s.cell_angles=h}if(o.hasDataVariable("time")){const h=[];for(const f of o.getDataVariable("time"))h.push(f);s.time=h}return s.time&&(s.time.length>=1&&(s.timeOffset=s.time[0]),s.time.length>=2&&(s.deltaTime=s.time[1]-s.time[0])),s}function i(c){return e.Task.create("Parse NCTRAJ",async o=>{try{o.update({canAbort:!0,message:"Parsing trajectory..."});const s=await n(c);return r.ReaderResult.success(s)}catch(s){return r.ReaderResult.error(""+s)}})}return kP}var FP={},yz;function Eae(){if(yz)return FP;yz=1,Object.defineProperty(FP,"__esModule",{value:!0}),FP.coordinatesFromNctraj=i;const e=nt(),t=vl(),r=d2(),n=Ge();function i(c){return e.Task.create("Parse NCTRAJ",async o=>{await o.update("Converting to coordinates");const s=(0,t.Time)(c.deltaTime,"step"),h=(0,t.Time)(c.timeOffset,s.unit),f=[];for(let y=0,_=c.coordinates.length;y<_;++y){const g=c.coordinates[y],a=g.length/3,d=new Float32Array(a),p=new Float32Array(a),u=new Float32Array(a);for(let v=0,b=g.length;v<b;v+=3)d[v/3]=g[v],p[v/3]=g[v+1],u[v/3]=g[v+2];const m={elementCount:a,x:d,y:p,z:u,xyzOrdering:{isIdentity:!0},time:(0,t.Time)(h.value+s.value*y,s.unit)};if(c.cell_lengths){const v=c.cell_lengths[y],b=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitX,v[0]),P=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitY,v[1]),C=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitZ,v[2]);m.cell=r.Cell.fromBasis(b,P,C)}f.push(m)}return t.Coordinates.create(f,s,h)})}return FP}var Od={},vz;function Bae(){if(vz)return Od;vz=1,Object.defineProperty(Od,"__esModule",{value:!0}),Od.PrmtopFormat=void 0,Od.topologyFromPrmtop=_;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(g){const{pointers:a,residuePointer:d,residueLabel:p,atomName:u}=g,m=a.NATOM,v=a.NRES,b=new Uint32Array(m),P=[],C=(k,j,H)=>{const G=p.value(k);for(let z=j,W=H;z<W;++z)b[z]=k+1,P[z]=G};for(let k=0,j=v-1;k<j;++k)C(k,d.value(k)-1,d.value(k+1)-1);C(v-1,d.value(v-1)-1,m);const l=e.Column.ofIntArray(b),S=e.Column.ofStringArray(P),T=new Array(m),A=new Array(m),x=new Uint32Array(m),M=new Uint32Array(m),D=new o.EntityBuilder,V=new c.ComponentBuilder(l,u);let R="",E=0,I="",B=0,w=t.MoleculeType.Unknown,O=-1;for(let k=0,j=m;k<j;++k){const H=l.value(k);if(H!==O){const G=S.value(k),z=(0,t.getMoleculeType)(V.add(G,k).type,G);z!==w&&(I=(0,s.getChainId)(E),E+=1,B=0),R=D.getEntityId(G,z,I),B+=1,O=H,w=z}T[k]=R,A[k]=I,x[k]=B,M[k]=k}const F=e.Column.ofIntArray(M),L=e.Column.ofStringArray(A),U=new Array(m);for(let k=0;k<m;++k)U[k]=(0,h.guessElementSymbolString)(u.value(k),S.value(k));const q=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:L,auth_atom_id:e.Column.asArrayColumn(u),auth_comp_id:S,auth_seq_id:l,id:e.Column.asArrayColumn(F),label_asym_id:L,label_atom_id:e.Column.asArrayColumn(u),label_comp_id:S,label_seq_id:e.Column.ofIntArray(x),label_entity_id:e.Column.ofStringArray(T),occupancy:e.Column.ofConst(1,m,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(U),pdbx_PDB_model_num:e.Column.ofConst(1,m,e.Column.Schema.int)},m);return(0,i.createBasic)({entity:D.getEntityTable(),chem_comp:V.getChemCompTable(),atom_site:q})}var y;(function(g){function a(p){return p?.kind==="prmtop"}g.is=a;function d(p){return{kind:"prmtop",name:p.title.join(" ")||"PRMTOP",data:p}}g.fromPrmtop=d})(y||(Od.PrmtopFormat=y={}));function _(g){return n.Task.create("Parse PRMTOP",async a=>{const d=y.fromPrmtop(g),p=f(g),{pointers:{NBONH:u,NBONA:m},bondsIncHydrogen:v,bondsWithoutHydrogen:b}=g,P=u+m,C={indexA:e.Column.ofLambda({value:l=>l<u?v.value(l*3)/3:b.value((l-u)*3)/3,rowCount:P,schema:e.Column.Schema.int}),indexB:e.Column.ofLambda({value:l=>l<u?v.value(l*3+1)/3:b.value((l-u)*3+1)/3,rowCount:P,schema:e.Column.Schema.int}),order:e.Column.ofConst(1,P,e.Column.Schema.int)};return r.Topology.create(g.title.join(" ")||"PRMTOP",p,C,d)})}return Od}var kd={},bz;
4126function Rae(){if(bz)return kd;bz=1,Object.defineProperty(kd,"__esModule",{value:!0}),kd.TopFormat=void 0,kd.topologyFromTop=g;const e=lt(),t=dt(),r=yT(),n=nt(),i=vn(),c=Ai(),o=xi(),s=qS(),h=cc();function f(a){const{molecules:d,compounds:p}=a,u={};let m=0;for(let j=0,H=d._rowCount;j<H;++j){const G=d.compound.value(j),z=d.molCount.value(j),{atoms:W}=p[G];e.Column.asArrayColumn(W.atom),e.Column.asArrayColumn(W.resnr),e.Column.asArrayColumn(W.residu),m+=z*W._rowCount;let X=W.resnr.value(0);u[G]=!0;for(let Y=1,K=W._rowCount;Y<K;++Y){const Q=W.resnr.value(Y);if(Q!==X){u[G]=!1;break}X=Q}}const v=new Array(m),b=new Uint32Array(m),P=new Array(m);let C=0;for(let j=0,H=d._rowCount;j<H;++j){const G=d.compound.value(j),z=d.molCount.value(j),{atoms:W}=p[G],X=u[G];for(let Y=0;Y<z;++Y)for(let K=0,Q=W._rowCount;K<Q;++K)v[C]=W.atom.value(K),b[C]=W.resnr.value(K),P[C]=W.residu.value(K),X&&(b[C]+=Y),C+=1}const l=e.Column.ofStringArray(v),S=e.Column.ofIntArray(b),T=e.Column.ofStringArray(P),A=new Array(m),x=new Array(m),M=new Uint32Array(m),D=new Uint32Array(m),V=new o.EntityBuilder,R=new c.ComponentBuilder(S,l);let E="",I=0,B="",w=0,O=t.MoleculeType.Unknown,F=-1;for(let j=0,H=m;j<H;++j){const G=S.value(j);if(G!==F){const z=T.value(j),W=(0,t.getMoleculeType)(R.add(z,j).type,z);W!==O&&(B=(0,s.getChainId)(I),I+=1,w=0),E=V.getEntityId(z,W,B),w+=1,F=G,O=W}A[j]=E,x[j]=B,M[j]=w,D[j]=j}const L=e.Column.ofIntArray(D),U=e.Column.ofStringArray(x),q=new Array(m);for(let j=0;j<m;++j)q[j]=(0,h.guessElementSymbolString)(l.value(j),T.value(j));const N=e.Table.ofPartialColumns(i.BasicSchema.atom_site,{auth_asym_id:U,auth_atom_id:e.Column.asArrayColumn(l),auth_comp_id:T,auth_seq_id:S,id:e.Column.asArrayColumn(L),label_asym_id:U,label_atom_id:e.Column.asArrayColumn(l),label_comp_id:T,label_seq_id:e.Column.ofIntArray(M),label_entity_id:e.Column.ofStringArray(A),occupancy:e.Column.ofConst(1,m,e.Column.Schema.float),type_symbol:e.Column.ofStringArray(q),pdbx_PDB_model_num:e.Column.ofConst(1,m,e.Column.Schema.int)},m);return(0,i.createBasic)({entity:V.getEntityTable(),chem_comp:R.getChemCompTable(),atom_site:N})}function y(a){const{molecules:d,compounds:p}=a,u=[],m=[];let v=0;for(let b=0,P=d._rowCount;b<P;++b){const C=d.compound.value(b),l=d.molCount.value(b),{atoms:S,bonds:T}=p[C];if(T)for(let A=0;A<l;++A){for(let x=0,M=T._rowCount;x<M;++x)u.push(T.ai.value(x)-1+v),m.push(T.aj.value(x)-1+v);v+=S._rowCount}else if(C==="TIP3")for(let A=0;A<l;++A)u.push(0+v),m.push(1+v),u.push(0+v),m.push(2+v),v+=S._rowCount;else v+=l*S._rowCount}return{indexA:e.Column.ofIntArray(u),indexB:e.Column.ofIntArray(m),order:e.Column.ofConst(1,u.length,e.Column.Schema.int)}}var _;(function(a){function d(u){return u?.kind==="top"}a.is=d;function p(u){return{kind:"top",name:u.system||"TOP",data:u}}a.fromTop=p})(_||(kd.TopFormat=_={}));function g(a){return n.Task.create("Parse TOP",async d=>{const p=_.fromTop(a),u=f(a),m=y(a);return r.Topology.create(a.system||"TOP",u,m,p)})}return kd}var yi={},_z;function Vw(){if(_z)return yi;_z=1,Object.defineProperty(yi,"__esModule",{value:!0}),yi.TransformParam=void 0,yi.getDistanceDataFromStructureSelections=r,yi.getAngleDataFromStructureSelections=n,yi.getDihedralDataFromStructureSelections=i,yi.getLabelDataFromStructureSelections=c,yi.getOrientationDataFromStructureSelections=o,yi.getPlaneDataFromStructureSelections=s,yi.transformParamsNeedCentroid=f,yi.getTransformFromParams=y;const e=Ne(),t=Ge();function r(_){const g=_[0].loci,a=_[1].loci;return{pairs:[{loci:[g,a]}]}}function n(_){const g=_[0].loci,a=_[1].loci,d=_[2].loci;return{triples:[{loci:[g,a,d]}]}}function i(_){const g=_[0].loci,a=_[1].loci,d=_[2].loci,p=_[3].loci;return{quads:[{loci:[g,a,d,p]}]}}function c(_){return{infos:[{loci:_[0].loci}]}}function o(_){return{locis:_.map(g=>g.loci)}}function s(_){return{locis:_.map(g=>g.loci)}}const h={center:(0,t.Vec3)(),rotation:(0,t.Mat4)(),translationToCenter:(0,t.Mat4)(),translationFromCenter:(0,t.Mat4)(),translation:(0,t.Mat4)(),local:(0,t.Mat4)()};function f(_){var g;return _.name==="components"&&((g=_.params.rotationCenter)===null||g===void 0?void 0:g.name)==="centroid"}function y(_,g){var a,d;if(_.name==="matrix"){const p=(0,t.Mat4)();return t.Mat4.copy(p,_.params.data),_.params.transpose&&t.Mat4.transpose(p,p),p}else{((a=_.params.rotationCenter)===null||a===void 0?void 0:a.name)==="centroid"?t.Vec3.copy(h.center,g):((d=_.params.rotationCenter)===null||d===void 0?void 0:d.name)==="point"?t.Vec3.copy(h.center,_.params.rotationCenter.params.point):t.Vec3.set(h.center,0,0,0),t.Mat4.fromTranslation(h.translationToCenter,h.center),t.Mat4.fromRotation(h.rotation,_.params.angle*Math.PI/180,_.params.axis),t.Mat4.fromTranslation(h.translationFromCenter,t.Vec3.negate(h.center,h.center));const p=t.Mat4.mul3((0,t.Mat4)(),h.translationToCenter,h.rotation,h.translationFromCenter);return t.Mat4.fromTranslation(h.translation,_.params.translation),t.Mat4.mul(p,h.translation,p),p}}return yi.TransformParam=e.ParamDefinition.MappedStatic("matrix",{matrix:e.ParamDefinition.Group({data:e.ParamDefinition.Mat4(t.Mat4.identity()),transpose:e.ParamDefinition.Boolean(!1)},{isFlat:!0}),components:e.ParamDefinition.Group({translation:e.ParamDefinition.Vec3(t.Vec3.create(0,0,0)),axis:e.ParamDefinition.Vec3(t.Vec3.create(1,0,0)),angle:e.ParamDefinition.Numeric(0,{min:-360,max:360,step:1},{description:"Angle in Degrees"}),rotationCenter:e.ParamDefinition.MappedStatic("point",{point:e.ParamDefinition.Group({point:e.ParamDefinition.Vec3(t.Vec3.create(0,0,0))},{isFlat:!0}),centroid:e.ParamDefinition.Group({})})},{isFlat:!0})},{label:"Kind"}),yi}var Sz;function NQ(){return Sz||(Sz=1,(function(e){Object.defineProperty(e,"__esMo
4126dule",{value:!0}),e.StructureComplexElementTypes=e.CustomStructureProperties=e.CustomModelProperties=e.StructureComponent=e.StructureComplexElement=e.StructureSelectionFromBundle=e.StructureSelectionFromScript=e.MultiStructureSelectionFromBundle=e.MultiStructureSelectionFromExpression=e.StructureSelectionFromExpression=e.StructureInstances=e.TransformStructureConformation=e.StructureFromModel=e.StructureFromTrajectory=e.ModelWithCoordinates=e.ModelFromTrajectory=e.TrajectoryFromCifCore=e.TrajectoryFromCube=e.TrajectoryFromMOL2=e.TrajectoryFromSDF=e.TrajectoryFromMOL=e.TrajectoryFromLammpsTrajData=e.TrajectoryFromLammpsData=e.TrajectoryFromXYZ=e.TrajectoryFromGRO=e.TrajectoryFromPDB=e.TrajectoryFromMmCif=e.TrajectoryFromBlob=e.TrajectoryFromModelAndCoordinates=e.TopologyFromTop=e.TopologyFromPrmtop=e.TopologyFromPsf=e.CoordinatesFromLammpstraj=e.CoordinatesFromNctraj=e.CoordinatesFromTrr=e.CoordinatesFromXtc=e.CoordinatesFromDcd=void 0,e.getTrajectory=$;const t=wie(),r=Eie(),n=Bie(),i=Ge(),c=Rie(),o=Oie(),s=Mi(),h=Wie(),f=$ie(),y=Ke(),_=dr(),g=va(),a=Et(),d=nt(),p=et(),u=Ne(),m=Dw(),v=dae(),b=FQ(),P=jl(),C=jt(),l=Iw(),S=LQ(),T=fae(),A=mae(),x=pae(),M=hae(),D=gae(),V=yae(),R=vae(),E=bae(),I=ww(),B=_ae(),w=Sae(),O=Cae(),F=Pae(),L=xae(),U=Aae(),q=Gt(),N=Mae(),k=Dae(),j=Vae(),H=Eae(),G=Bae(),z=Rae(),W=Vw(),X=C.PluginStateTransform.BuiltIn({name:"coordinates-from-dcd",display:{name:"Parse DCD",description:"Parse DCD binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse DCD",async Oe=>{const Fe=await(0,t.parseDcd)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,c.coordinatesFromDcd)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromDcd=X;const Y=C.PluginStateTransform.BuiltIn({name:"coordinates-from-xtc",display:{name:"Parse XTC",description:"Parse XTC binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse XTC",async Oe=>{const Fe=await(0,D.parseXtc)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,V.coordinatesFromXtc)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromXtc=Y;const K=C.PluginStateTransform.BuiltIn({name:"coordinates-from-trr",display:{name:"Parse TRR",description:"Parse TRR binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse TRR",async Oe=>{const Fe=await(0,N.parseTrr)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,k.coordinatesFromTrr)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromTrr=K;const Q=C.PluginStateTransform.BuiltIn({name:"coordinates-from-nctraj",display:{name:"Parse NCTRAJ",description:"Parse NCTRAJ binary data."},from:[C.PluginStateObject.Data.Binary],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse NCTRAJ",async Oe=>{const Fe=await(0,j.parseNctraj)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,H.coordinatesFromNctraj)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromNctraj=Q;const J=C.PluginStateTransform.BuiltIn({name:"coordinates-from-lammpstraj",display:{name:"Parse LAMMPSTRAJ",description:"Parse LAMMPSTRAJ data."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Coordinates})({apply({a:De}){return d.Task.create("Parse LAMMPSTRAJ",async Oe=>{const Fe=await(0,O.parseLammpsTrajectory)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,F.coordinatesFromLammpsTrajectory)(Fe.result).runInContext(Oe);return new C.PluginStateObject.Molecule.Coordinates(Le,{label:De.label,description:"Coordinates"})})}});e.CoordinatesFromLammpstraj=J;const ae=C.PluginStateTransform.BuiltIn({name:"topology-from-psf",display:{name:"PSF Topology",description:"Create topology from PSF."},from:[C.PluginStateObject.Format.Psf],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}
4126){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,f.topologyFromPsf)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromPsf=ae;const te=C.PluginStateTransform.BuiltIn({name:"topology-from-prmtop",display:{name:"PRMTOP Topology",description:"Create topology from PRMTOP."},from:[C.PluginStateObject.Format.Prmtop],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,G.topologyFromPrmtop)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromPrmtop=te;const ne=C.PluginStateTransform.BuiltIn({name:"topology-from-top",display:{name:"TOP Topology",description:"Create topology from TOP."},from:[C.PluginStateObject.Format.Top],to:C.PluginStateObject.Molecule.Topology})({apply({a:De}){return d.Task.create("Create Topology",async Oe=>{const Fe=await(0,z.topologyFromTop)(De.data).runInContext(Oe);return new C.PluginStateObject.Molecule.Topology(Fe,{label:Fe.label||De.label,description:"Topology"})})}});e.TopologyFromTop=ne;async function $(De,Oe,Fe){if(Oe.type===C.PluginStateObject.Molecule.Topology.type){const Le=Oe.data;return await y.Model.trajectoryFromTopologyAndCoordinates(Le,Fe).runInContext(De)}else if(Oe.type===C.PluginStateObject.Molecule.Model.type){const Le=Oe.data;return y.Model.trajectoryFromModelAndCoordinates(Le,Fe)}throw new Error("no model/topology found")}const ie=C.PluginStateTransform.BuiltIn({name:"trajectory-from-model-and-coordinates",display:{name:"Trajectory from Topology & Coordinates",description:"Create a trajectory from existing model/topology and coordinates."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Trajectory,params:{modelRef:u.ParamDefinition.Text("",{isHidden:!0}),coordinatesRef:u.ParamDefinition.Text("",{isHidden:!0})}})({getDependencies:({modelRef:De,coordinatesRef:Oe})=>{const Fe=[];return De&&Fe.push(De),Oe&&Fe.push(Oe),Fe},apply({params:De,dependencies:Oe}){return d.Task.create("Create trajectory from model/topology and coordinates",async Fe=>{const Le=Oe[De.coordinatesRef].data,He=await $(Fe,Oe[De.modelRef],Le),Pe={label:"Trajectory",description:`${He.frameCount} model${He.frameCount===1?"":"s"}`};return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromModelAndCoordinates=ie;const Z=C.PluginStateTransform.BuiltIn({name:"trajectory-from-blob",display:{name:"Parse Blob",description:"Parse format blob into a single trajectory."},from:C.PluginStateObject.Format.Blob,to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse Format Blob",async Oe=>{const Fe=[];for(const He of De.data){if(He.kind!=="cif")continue;const Pe=He.data.blocks[0],Ie=await(0,s.trajectoryFromMmCIF)(Pe).runInContext(Oe);if(Ie.frameCount===0)throw new Error("No models found.");for(let Ee=0;Ee<Ie.frameCount;Ee++){const Ue=await d.Task.resolveInContext(Ie.getFrameAtIndex(Ee),Oe);Fe.push(Ue)}}for(let He=0;He<Fe.length;He++)y.Model.TrajectoryInfo.set(Fe[He],{index:He,size:Fe.length});const Le={label:"Trajectory",description:`${Fe.length} model${Fe.length===1?"":"s"}`};return new C.PluginStateObject.Molecule.Trajectory(new y.ArrayTrajectory(Fe),Le)})}});e.TrajectoryFromBlob=Z;function re(De){return{label:`${De.representative.entry}`,description:`${De.frameCount} model${De.frameCount===1?"":"s"}`}}const oe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mmcif",display:{name:"Trajectory from mmCIF",description:"Identify and create all separate models in the specified CIF data block"},from:C.PluginStateObject.Format.Cif,to:C.PluginStateObject.Molecule.Trajectory,params(De){if(!De)return{loadAllBlocks:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all datablocks into a single trajectory."})),blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:Le=>Le.loadAllBlocks===!0})),blockIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,{min:0,step:1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Le=>Le.loadAllBlocks===!0||Le.blockHeader}))};const{blocks:Oe}=De.data,Fe=Oe.map(Le=>[Le.header,Le.header]);return Fe.push(["","[Use Block Index]"]),{loadAllBlocks:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all data blocks into a single trajectory."})),blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Select(Oe[0]&&Oe[0].header,Fe,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:Le=>Le.loadAllBlocks===!0})),blockIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,{min:0,step:1,max:Oe.length-1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Le=>Le.loadAllBlocks===!0||Le.blockHeader}))}}})({isApplicable:De=>De.data.blocks.length>0,apply({a:De,params:Oe}){return d.Task.create("Parse mmCIF",async Fe=>{var Le;let He;if(Oe.loadAllBlocks){const Ie=[];for(const Ee of De.data.blocks){Fe.shouldUpdate&&await Fe.update(`Parsing ${Ee.header}...`);const Ue=await(0,s.trajectoryFromMmCIF)(Ee).runInContext(Fe);for(let $e=0;$e<Ue.frameCount;$e++)Ie.push(await d.Task.resolveInContext(Ue.getFrameAtIndex($e),Fe))}He=new y.ArrayTrajectory(Ie)}else{const Ie=Oe.blockHeader||De.data.blocks[(Le=Oe.blockIndex)!==null&&Le!==void 0?Le:0].header,Ee=De.data.blocks.find($e=>$e.header===Ie);if(!Ee)throw new Error(`Data block '${[Ie]}' not found.`);He=Ee.categoryNames.includes("chem_comp_atom")&&!Ee.categoryNames.includes("atom_site")&&!Ee.categoryNames.includes("ihm_sphere_obj_site")&&!Ee.categoryNames.includes("ihm_gaussian_obj_site")?await(0,s.trajectoryFromCCD)(Ee).runInContext(Fe):await(0,s.trajectoryFromMmCIF)(Ee,De.data).runInContext(Fe)}if(He.frameCount===0)throw new Error("No models found.");const Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromMmCif=oe;const ce=C.PluginStateTransform.BuiltIn({name:"trajectory-from-pdb",display:{name:"Parse PDB",description:"Parse PDB string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{variant:u.ParamDefinition.Select("pdb",u.ParamDefinition.arrayToOptions(["pdb","pdbqt","pqr"]))}})({apply({a:De,params:Oe}){return d.Task.create("Parse PDB",async Fe=>{const Le=await(0,n.parsePDB)(De.data,De.label,Oe.variant).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,h.trajectoryFromPDB)(Le.result).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromPDB=ce;const ue=C.PluginStateTransform.BuiltIn({name:"trajectory-from-gro",display:{name:"Parse GRO",description:"Parse GRO string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse GRO",async Oe=>{const Fe=await(0,r.parseGRO)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,o.trajectoryFromGRO)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromGRO=ue;const pe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-xyz",display:{name:"Parse XYZ",description:"Parse XYZ string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse XYZ",async Oe=>{const Fe=await(0,R.parseXyz)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,E.trajectoryFromXyz)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromXYZ=pe;const he=C.PluginStateTransform.BuiltIn({name:"trajectory-from-lammps-data",display:{name:"Parse Lammps Data",description:"Parse Lammps Data from string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{unitsStyle:u.ParamDefinition.Select("real",u.ParamDefinition.arrayToOptions(I.UnitStyles))}})({apply({a:De,params:Oe}){return d.Task.create("Parse Lammps Data",async Fe=>{const Le=await(0,B.parseLammpsData)(De.data).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,w.trajectoryFromLammpsData)(Le.result,Oe.unitsStyle).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromLammpsData=he;const fe=C.PluginStateTransform.BuiltIn({name:"trajectory-from-lammps-traj-data",display:{name:"Parse Lammps traj Data",description:"Parse Lammps Traj Data string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory,params:{unitsStyle:u.ParamDefinition.Select("real",u.ParamDefinition.arrayToOptions(I.UnitStyles))}})({apply({a:De,params:Oe}){return d.Task.create("Parse Lammps Data",async Fe=>{const Le=await(0,O.parseLammpsTrajectory)(De.data).runInContext(Fe);if(Le.isError)throw new Error(Le.message);const He=await(0,F.trajectoryFromLammpsTrajectory)(Le.result,Oe.unitsStyle).runInContext(Fe),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromLammpsTrajData=fe;const de=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mol",display:{name:"Parse MOL",description:"Parse MOL string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL",async Oe=>{const Fe=await(0,l.parseMol)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,S.trajectoryFromMol)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromMOL=de;const ge=C.PluginStateTransform.BuiltIn({name:"trajectory-from-sdf",display:{name:"Parse SDF",description:"Parse SDF string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse SDF",async Oe=>{const Fe=await(0,L.parseSdf)(De.data).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=[];for(const Ie of Fe.result.compounds){const Ee=await(0,U.trajectoryFromSdf)(Ie).runInContext(Oe);for(let Ue=0;Ue<Ee.frameCount;Ue++)Le.push(await d.Task.resolveInContext(Ee.getFrameAtIndex(Ue),Oe))}const He=new y.ArrayTrajectory(Le),Pe=re(He);return new C.PluginStateObject.Molecule.Trajectory(He,Pe)})}});e.TrajectoryFromSDF=ge;const Ce=C.PluginStateTransform.BuiltIn({name:"trajectory-from-mol2",display:{name:"Parse MOL2",description:"Parse MOL2 string and create trajectory."},from:[C.PluginStateObject.Data.String],to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL2",async Oe=>{const Fe=await(0,x.parseMol2)(De.data,De.label).runInContext(Oe);if(Fe.isError)throw new Error(Fe.message);const Le=await(0,M.trajectoryFromMol2)(Fe.result).runInContext(Oe),He=re(Le);return new C.PluginStateObject.Molecule.Trajectory(Le,He)})}});e.TrajectoryFromMOL2=Ce;const ve=C.PluginStateTransform.BuiltIn({name:"trajectory-from-cube",display:{name:"Parse Cube",description:"Parse Cube file to create a trajectory."},from:C.PluginStateObject.Format.Cube,to:C.PluginStateObject.Molecule.Trajectory})({apply({a:De}){return d.Task.create("Parse MOL",async Oe=>{const Fe=await(0,A.trajectoryFromCube)(De.data).runInContext(Oe),Le=re(Fe);return new C.PluginStateObject.Molecule.Trajectory(Fe,Le)})}});e.TrajectoryFromCube=ve;const le=C.PluginStateTransform.BuiltIn({name:"trajectory-from-cif-core",display:{name:"Parse CIF Core",description:"Identify and create all separate models in the specified CIF data block"},from:C.PluginStateObject.Format.Cif,to:C.PluginStateObject.Molecule.Trajectory,params(De){if(!De)return{blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."}))};const{blocks:Oe}=De.data;return{blockHeader:u.ParamDefinition.Optional(u.ParamDefinition.Select(Oe[0]&&Oe[0].header,Oe.map(Fe=>[Fe.header,Fe.header]),{description:"Header of the block to parse"}))}}})({apply({a:De,params:Oe}){return d.Task.create("Parse CIF Core",async Fe=>{const Le=Oe.blockHeader||De.data.blocks[0].header,He=De.data.blocks.find(Ee=>Ee.header===Le);if(!He)throw new Error(`Data block '${[Le]}' not found.`);const Pe=await(0,T.trajectoryFromCifCore)(He).runInContext(Fe);if(Pe.frameCount===0)throw new Error("No models found.");const Ie=re(Pe);return new C.PluginStateObject.Molecule.Trajectory(Pe,Ie)})}});e.TrajectoryFromCifCore=le;const me=De=>De+1,ee=De=>De-1,se=C.PluginStateTransform.BuiltIn({name:"model-from-trajectory",display:{name:"Molecular Model",description:"Create a molecular model from specified index in a trajectory."},from:C.PluginStateObject.Molecule.Trajectory,to:C.PluginStateObject.Molecule.Model,params:De=>De?{modelIndex:u.ParamDefinition.Converted(me,ee,u.ParamDefinition.Numeric(1,{min:1,max:De.data.frameCount,step:1},{description:"Model Index",immediateUpdate:!0}))}:{modelIndex:u.ParamDefinition.Numeric(0,{},{description:"Zero-based index of the model",immediateUpdate:!0})}})({isApplicable:De=>De.data.frameCount>0,apply({a:De,params:Oe}){return d.Task.create("Model from Trajectory",async Fe=>{let Le=Math.round(Oe.modelIndex)%De.data.frameCount;Le<0&&(Le+=De.data.frameCount);const He=await d.Task.resolveInContext(De.data.getFrameAtIndex(Le),Fe),Pe=`Model ${Le+1}`,Ie=De.data.frameCount===1?void 0:`of ${De.data.frameCount}`;return new C.PluginStateObject.Molecule.Model(He,{label:Pe,description:Ie})})},interpolate(De,Oe,Fe){return{modelIndex:Fe>=1?Oe.modelIndex:De.modelIndex+Math.floor((Oe.modelIndex-De.modelIndex+1)*Fe)}},dispose({b:De}){De?.data.customProperties.dispose()}});e.ModelFromTrajectory=se;const ye=C.PluginStateTransform.BuiltIn({name:"structure-from-trajectory",display:{name:"Structure from Trajectory",description:"Create a molecular structure from a trajectory."},from:C.PluginStateObject.Molecule.Trajectory,to:C.PluginStateObject.Molecule.Structure})({apply({a:De}){return d.Task.create("Build Structure",async Oe=>{const Fe=await y.Structure.ofTrajectory(De.data,Oe),Le={label:"Ensemble",description:y.Structure.elementDescription(Fe)};return new C.PluginStateObject.Molecule.Structure(Fe,Le)}
4126)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureFromTrajectory=ye;const Se=C.PluginStateTransform.BuiltIn({name:"structure-from-model",display:{name:"Structure",description:"Create a molecular structure (model, assembly, or symmetry) from the specified model."},from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Structure,params(De){return m.RootStructureDefinition.getParams(De&&De.data)}})({canAutoUpdate({oldParams:De,newParams:Oe}){return m.RootStructureDefinition.canAutoUpdate(De.type,Oe.type)},apply({a:De,params:Oe},Fe){return d.Task.create("Build Structure",async Le=>m.RootStructureDefinition.create(Fe,Le,De.data,Oe&&Oe.type))},update:({a:De,b:Oe,oldParams:Fe,newParams:Le})=>(0,p.deepEqual)(Fe,Le)?Oe.data.model===De.data?a.StateTransformer.UpdateResult.Unchanged:y.Model.areHierarchiesEqual(De.data,Oe.data.model)?(Oe.data=Oe.data.remapModel(De.data),a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Recreate:a.StateTransformer.UpdateResult.Recreate,dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureFromModel=Se;const Ae=C.PluginStateTransform.BuiltIn({name:"transform-structure-conformation",display:{name:"Transform Conformation"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{transform:W.TransformParam}})({canAutoUpdate({newParams:De}){return De.transform.name!=="matrix"},apply({a:De,params:Oe}){const Fe=(0,W.transformParamsNeedCentroid)(Oe.transform)?De.data.boundary.sphere.center:i.Vec3.unit,Le=(0,W.getTransformFromParams)(Oe.transform,Fe),He=y.Structure.transform(De.data,Le);return new C.PluginStateObject.Molecule.Structure(He,{label:De.label,description:`${De.description} [Transformed]`})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.TransformStructureConformation=Ae;const _e=C.PluginStateTransform.BuiltIn({name:"structure-instances",display:{name:"Structure Instances"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{transforms:u.ParamDefinition.ObjectList({transform:W.TransformParam},()=>"Transform")}})({canAutoUpdate(){return!0},apply({a:De,params:Oe}){const Fe=Oe.transforms.some(Pe=>(0,W.transformParamsNeedCentroid)(Pe.transform))?De.data.boundary.sphere.center:i.Vec3.unit,Le=Oe.transforms.map(Pe=>(0,W.getTransformFromParams)(Pe.transform,Fe));if(!Le.length)return De;const He=y.Structure.instances(De.data,Le);return new C.PluginStateObject.Molecule.Structure(He,{label:De.label,description:`${De.description} [Instanced]`})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureInstances=_e;const be=C.PluginStateTransform.BuiltIn({name:"model-with-coordinates",display:{name:"Model With Coordinates",description:"Updates the current model with provided coordinate frame"},from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Model,params:{frameIndex:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(0,void 0,{isHidden:!0})),frameCount:u.ParamDefinition.Optional(u.ParamDefinition.Numeric(1,void 0,{isHidden:!0})),atomicCoordinateFrame:u.ParamDefinition.Optional(u.ParamDefinition.Value(void 0,{isHidden:!0}))},isDecorator:!0})({apply({a:De,params:Oe}){var Fe,Le;if(!Oe.atomicCoordinateFrame)return De;const He={...De.data,atomicConformation:y.Model.getAtomicConformationFromFrame(De.data,Oe.atomicCoordinateFrame)};return y.Model.TrajectoryInfo.set(He,{index:(Fe=Oe.frameIndex)!==null&&Fe!==void 0?Fe:0,size:(Le=Oe.frameCount)!==null&&Le!==void 0?Le:1}),new C.PluginStateObject.Molecule.Model(He,{label:De.label,description:De.description})},update:({a:De,b:Oe,oldParams:Fe,newParams:Le})=>{var He,Pe;return Fe.atomicCoordinateFrame===Le.atomicCoordinateFrame?a.StateTransformer.UpdateResult.Unchanged:(Le.atomicCoordinateFrame?Oe.data={...Oe.data,atomicConformation:y.Model.getAtomicConformationFromFrame(Oe.data,Le.atomicCoordinateFrame)}:Oe.data=De.data,y.Model.TrajectoryInfo.set(Oe.data,{index:(He=Le.frameIndex)!==null&&He!==void 0?He:0,size:(Pe=Le.frameCount)!==null&&Pe!==void 0?Pe:1}
4126),a.StateTransformer.UpdateResult.Updated)}});e.ModelWithCoordinates=be;const xe=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-expression",display:{name:"Selection",description:"Create a molecular structure from the specified expression."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({expression:u.ParamDefinition.Value(_.MolScriptBuilder.struct.generator.all,{isHidden:!0}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({a:De,params:Oe,cache:Fe}){const{selection:Le,entry:He}=b.StructureQueryHelper.createAndRun(De.data,Oe.expression);if(Fe.entry=He,y.StructureSelection.isEmpty(Le))return a.StateObject.Null;const Pe=y.StructureSelection.unionStructure(Le),Ie={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Pe)};return new C.PluginStateObject.Molecule.Structure(Pe,Ie)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>{if(Fe.expression!==Le.expression)return a.StateTransformer.UpdateResult.Recreate;const Pe=He.entry;if(Pe.currentStructure===De.data)return a.StateTransformer.UpdateResult.Unchanged;const Ie=b.StructureQueryHelper.updateStructure(Pe,De.data);return y.StructureSelection.isEmpty(Ie)?a.StateTransformer.UpdateResult.Null:(b.StructureQueryHelper.updateStructureObject(Oe,Ie,Le.label),a.StateTransformer.UpdateResult.Updated)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromExpression=xe;const we=C.PluginStateTransform.BuiltIn({name:"structure-multi-selection-from-expression",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Structure.Selections,params:()=>({selections:u.ParamDefinition.ObjectList({key:u.ParamDefinition.Text(void 0,{description:"A unique key."}),ref:u.ParamDefinition.Text(),groupId:u.ParamDefinition.Optional(u.ParamDefinition.Text()),expression:u.ParamDefinition.Value(_.MolScriptBuilder.struct.generator.empty)},De=>De.ref,{isHidden:!0}),isTransitive:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({params:De,cache:Oe,dependencies:Fe}){const Le=new Map,He=[];let Pe=0;for(const Ee of De.selections){const{selection:Ue,entry:$e}=b.StructureQueryHelper.createAndRun(Fe[Ee.ref].data,Ee.expression);Le.set(Ee.key,$e);const Ye=y.StructureSelection.toLociWithSourceUnits(Ue);He.push({key:Ee.key,structureRef:Ee.ref,loci:Ye,groupId:Ee.groupId}),Pe+=y.StructureElement.Loci.size(Ye)}Oe.entries=Le;const Ie={label:`${De.label||"Multi-selection"}`,description:`${De.selections.length} source(s), ${Pe} element(s) total`};return new C.PluginStateObject.Molecule.Structure.Selections(He,Ie)},update:({b:De,oldParams:Oe,newParams:Fe,cache:Le,dependencies:He})=>{if(!!Oe.isTransitive!=!!Fe.isTransitive)return a.StateTransformer.UpdateResult.Recreate;const Pe=Le.entries,Ie=new Map,Ee=new Map;for(const Qe of De.data)Ee.set(Qe.key,Qe);let Ue=!1,$e=0;const Ye=[];for(const Qe of Fe.selections){const it=He[Qe.ref].data;let ht=!1;if(Pe.has(Qe.key)){const mt=Pe.get(Qe.key);if(b.StructureQueryHelper.isUnchanged(mt,Qe.expression,it)&&Ee.has(Qe.key)){const St=Ee.get(Qe.key);St.groupId!==Qe.groupId&&(St.groupId=Qe.groupId,Ue=!0),Ie.set(Qe.key,mt),Ye.push(St),$e+=y.StructureElement.Loci.size(St.loci);continue}if(mt.expression!==Qe.expression)ht=!0;else{let St=!1;if(Fe.isTransitive)if(y.Structure.areUnitIdsAndIndicesEqual(mt.originalStructure,it)){const Bt=b.StructureQueryHelper.run(mt,mt.originalStructure);mt.currentStructure=it,Ie.set(Qe.key,mt);const Ot=y.StructureElement.Loci.remap(y.StructureSelection.toLociWithSourceUnits(Bt),it);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Ot,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Ot),Ue=!0}else St=!0;else St=!0;if(St){Ue=!0;const Bt=b.StructureQueryHelper.updateStructure(mt,it);Ie.set(Qe.key,mt);const Ot=y.StructureSelection.toLociWithSourceUnits(Bt);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Ot,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Ot)}}}else ht=!0;if(ht){Ue=!0;const{selection:mt,entry:St}=b.StructureQueryHelper.createAndRun(it,Qe.expression);Ie.set(Qe.key,St);const Bt=y.StructureSelection.toLociWithSourceUnits(mt);Ye.push({key:Qe.key,structureRef:Qe.ref,loci:Bt,groupId:Qe.groupId}),$e+=y.StructureElement.Loci.size(Bt)}}return Ue?(Le.entries=Ie,De.data=Ye,De.label=`${Fe.label||"Multi-selection"}`,De.description=`${Ye.length} source(s), ${$e}
4126 element(s) total`,a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Unchanged}});e.MultiStructureSelectionFromExpression=we;const Be=C.PluginStateTransform.BuiltIn({name:"structure-multi-selection-from-bundle",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:C.PluginStateObject.Root,to:C.PluginStateObject.Molecule.Structure.Selections,params:()=>({selections:u.ParamDefinition.ObjectList({key:u.ParamDefinition.Text(void 0,{description:"A unique key."}),ref:u.ParamDefinition.Text(),groupId:u.ParamDefinition.Optional(u.ParamDefinition.Text()),bundle:u.ParamDefinition.Value(y.StructureElement.Bundle.Empty)},De=>De.ref,{isHidden:!0}),isTransitive:u.ParamDefinition.Optional(u.ParamDefinition.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({params:De,cache:Oe,dependencies:Fe}){const Le=new Map,He=[];let Pe=0;for(const Ee of De.selections){const Ue=Fe[Ee.ref].data,$e=y.StructureElement.Bundle.toLoci(Ee.bundle,Ue);He.push({key:Ee.key,structureRef:Ee.ref,loci:$e,groupId:Ee.groupId}),Pe+=y.StructureElement.Loci.size($e),Le.set(Ee.key,{source:Ue})}Oe.entries=Le;const Ie={label:`${De.label||"Multi-selection"}`,description:`${De.selections.length} source(s), ${Pe} element(s) total`};return new C.PluginStateObject.Molecule.Structure.Selections(He,Ie)},update:({b:De,oldParams:Oe,newParams:Fe,cache:Le,dependencies:He})=>{if(!!Oe.isTransitive!=!!Fe.isTransitive)return a.StateTransformer.UpdateResult.Recreate;const Pe=Le.entries,Ie=new Map,Ee=new Map;for(const it of Oe.selections)Ee.set(it.key,it.bundle);const Ue=new Map;for(const it of De.data)Ue.set(it.key,it);let $e=!1,Ye=0;const Qe=[];for(const it of Fe.selections){let ht=!1;if(Pe.has(it.key)){const mt=He[it.ref].data,St=Pe.get(it.key),Bt=Ee.get(it.key);if(Bt&&mt===St.source&&it.bundle.hash===St.source.hashCode&&y.StructureElement.Bundle.areEqual(it.bundle,Bt)){const Ot=Ue.get(it.key);Ot.groupId!==it.groupId&&(Ot.groupId=it.groupId,$e=!0),Ie.set(it.key,St),Qe.push(Ot),Ye+=y.StructureElement.Loci.size(Ot.loci);continue}ht=!0}else ht=!0;if(ht){$e=!0;const mt=He[it.ref].data,St=y.StructureElement.Bundle.toLoci(it.bundle,mt);Qe.push({key:it.key,structureRef:it.ref,loci:St,groupId:it.groupId}),Ye+=y.StructureElement.Loci.size(St),Ie.set(it.key,{source:mt})}}return $e?(Le.entries=Ie,De.data=Qe,De.label=`${Fe.label||"Multi-selection"}`,De.description=`${Qe.length} source(s), ${Ye} element(s) total`,a.StateTransformer.UpdateResult.Updated):a.StateTransformer.UpdateResult.Unchanged}});e.MultiStructureSelectionFromBundle=Be;const Me=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-script",display:{name:"Selection",description:"Create a molecular structure from the specified script."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({script:u.ParamDefinition.Script({language:"mol-script",expression:"(sel.atom.atom-groups :residue-test (= atom.resname ALA))"}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text(""))})})({apply({a:De,params:Oe,cache:Fe}){const{selection:Le,entry:He}=b.StructureQueryHelper.createAndRun(De.data,Oe.script);Fe.entry=He;const Pe=y.StructureSelection.unionStructure(Le),Ie={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Pe)};return new C.PluginStateObject.Molecule.Structure(Pe,Ie)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>{if(!g.Script.areEqual(Fe.script,Le.script))return a.StateTransformer.UpdateResult.Recreate;const Pe=He.entry;if(Pe.currentStructure===De.data)return a.StateTransformer.UpdateResult.Unchanged;const Ie=b.StructureQueryHelper.updateStructure(Pe,De.data);return b.StructureQueryHelper.updateStructureObject(Oe,Ie,Le.label),a.StateTransformer.UpdateResult.Updated},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromScript=Me;const Re=C.PluginStateTransform.BuiltIn({name:"structure-selection-from-bundle",display:{name:"Selection",description:"Create a molecular structure from the specified structure-element bundle."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:()=>({bundle:u.ParamDefinition.Value(y.StructureElement.Bundle.Empty,{isHidden:!0}),label:u.ParamDefinition.Optional(u.ParamDefinition.Text("",{isHidden:!0}))})})({apply({a:De,params:Oe,cache:Fe}){if(Oe.bundle.hash!==De.data.hashCode)return a.StateObject.Null;Fe.source=De.data;const Le=y.StructureElement.Bundle.toStructure(Oe.bundle,De.data);if(Le.elementCount===0)return a.StateObject.Null;const He={label:`${Oe.label||"Selection"}`,description:y.Structure.elementDescription(Le)};return new C.PluginStateObject.Molecule.Structure(Le,He)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>
4126{if(!y.StructureElement.Bundle.areEqual(Fe.bundle,Le.bundle))return a.StateTransformer.UpdateResult.Recreate;if(Le.bundle.hash!==De.data.hashCode)return a.StateTransformer.UpdateResult.Null;if(He.source===De.data)return a.StateTransformer.UpdateResult.Unchanged;He.source=De.data;const Pe=y.StructureElement.Bundle.toStructure(Le.bundle,De.data);return Pe.elementCount===0?a.StateTransformer.UpdateResult.Null:(Oe.label=`${Le.label||"Selection"}`,Oe.description=y.Structure.elementDescription(Pe),Oe.data=Pe,a.StateTransformer.UpdateResult.Updated)},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureSelectionFromBundle=Re,e.StructureComplexElementTypes={polymer:"polymer",protein:"protein",nucleic:"nucleic",water:"water",branched:"branched",ligand:"ligand","non-standard":"non-standard",coarse:"coarse","atomic-sequence":"atomic-sequence","atomic-het":"atomic-het",spheres:"spheres"};const Te=u.ParamDefinition.objectToOptions(e.StructureComplexElementTypes),Ve=C.PluginStateTransform.BuiltIn({name:"structure-complex-element",display:{name:"Complex Element",description:"Create a molecular structure from the specified model."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:{type:u.ParamDefinition.Select("atomic-sequence",Te,{isHidden:!0})}})({apply({a:De,params:Oe}){let Fe,Le;switch(Oe.type){case"polymer":Fe=P.StructureSelectionQueries.polymer.query,Le="Polymer";break;case"protein":Fe=P.StructureSelectionQueries.protein.query,Le="Protein";break;case"nucleic":Fe=P.StructureSelectionQueries.nucleic.query,Le="Nucleic";break;case"water":Fe=y.Queries.internal.water(),Le="Water";break;case"branched":Fe=P.StructureSelectionQueries.branchedPlusConnected.query,Le="Branched";break;case"ligand":Fe=P.StructureSelectionQueries.ligandPlusConnected.query,Le="Ligand";break;case"non-standard":Fe=P.StructureSelectionQueries.nonStandardPolymer.query,Le="Non-standard";break;case"coarse":Fe=P.StructureSelectionQueries.coarse.query,Le="Coarse";break;case"atomic-sequence":Fe=y.Queries.internal.atomicSequence(),Le="Sequence";break;case"atomic-het":Fe=y.Queries.internal.atomicHet(),Le="HET Groups/Ligands";break;case"spheres":Fe=y.Queries.internal.spheres(),Le="Coarse Spheres";break;default:(0,q.assertUnreachable)(Oe.type)}const He=Fe(new y.QueryContext(De.data)),Pe=y.StructureSelection.unionStructure(He);return Pe.elementCount===0?a.StateObject.Null:new C.PluginStateObject.Molecule.Structure(Pe,{label:Le,description:y.Structure.elementDescription(Pe)})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureComplexElement=Ve;const qe=C.PluginStateTransform.BuiltIn({name:"structure-component",display:{name:"Component",description:"A molecular structure component."},from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:v.StructureComponentParams})({apply({a:De,params:Oe,cache:Fe}){return(0,v.createStructureComponent)(De.data,Oe,Fe)},update:({a:De,b:Oe,oldParams:Fe,newParams:Le,cache:He})=>(0,v.updateStructureComponent)(De.data,Oe,Fe,Le,He),dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.StructureComponent=qe;const ke=C.PluginStateTransform.BuiltIn({name:"custom-model-properties",display:{name:"Custom Model Properties"},isDecorator:!0,from:C.PluginStateObject.Molecule.Model,to:C.PluginStateObject.Molecule.Model,params:(De,Oe)=>Oe.customModelProperties.getParams(De?.data)})({apply({a:De,params:Oe},Fe){return d.Task.create("Custom Props",async Le=>(await ze(De.data,Fe,Le,Oe),new C.PluginStateObject.Molecule.Model(De.data,{label:De.label,description:De.description})))},update({a:De,b:Oe,oldParams:Fe,newParams:Le},He){return d.Task.create("Custom Props",async Pe=>{Oe.data=De.data,Oe.label=De.label,Oe.description=De.description;for(const Ie of Fe.autoAttach){const Ee=He.customModelProperties.get(Ie);Ee&&De.data.customProperties.reference(Ee.descriptor,!1)}return await ze(De.data,He,Pe,Le),a.StateTransformer.UpdateResult.Updated})},dispose({b:De}){De?.data.customProperties.dispose()}});e.CustomModelProperties=ke;async function ze(De,Oe,Fe,Le){const He={runtime:Fe,assetManager:Oe.managers.asset,errorContext:Oe.errorContext},{autoAttach:Pe,properties:Ie}=Le;for(const Ee of Object.keys(Ie)){const Ue=Oe.customModelProperties.get(Ee),$e=Ie[Ee];if(Pe.includes(Ee)||Ue.isHidden)try{await Ue.attach(He,De,$e,!0)}catch(Ye){Oe.log.warn(`Error attaching model prop '${Ee}': ${Ye}`)}else Ue.set(De,$e)}}const We=C.PluginStateTransform.BuiltIn({name:"custom-structure-properties",display:{name:"Custom Structure Properties"},isDecorator:!0,from:C.PluginStateObject.Molecule.Structure,to:C.PluginStateObject.Molecule.Structure,params:(De,Oe)=>Oe.customStructureProperties.getParams(De?.data.root)})({apply({a:De,params:Oe},Fe){return d.Task.create("Custom Props",async Le=>(await Je(De.data.root,Fe,Le,Oe),new C.PluginStateObject.Molecule.Structure(De.data,{label:De.label,description:De.description})))},update({a:De,b:Oe,oldParams:Fe,newParams:Le}
4126,He){return De.data!==Oe.data?a.StateTransformer.UpdateResult.Recreate:d.Task.create("Custom Props",async Pe=>{Oe.data=De.data,Oe.label=De.label,Oe.description=De.description;for(const Ie of Fe.autoAttach){const Ee=He.customStructureProperties.get(Ie);Ee&&De.data.customPropertyDescriptors.reference(Ee.descriptor,!1)}return await Je(De.data.root,He,Pe,Le),a.StateTransformer.UpdateResult.Updated})},dispose({b:De}){De?.data.customPropertyDescriptors.dispose()}});e.CustomStructureProperties=We;async function Je(De,Oe,Fe,Le){const He={runtime:Fe,assetManager:Oe.managers.asset,errorContext:Oe.errorContext},{autoAttach:Pe,properties:Ie}=Le;for(const Ee of Object.keys(Ie)){const Ue=Oe.customStructureProperties.get(Ee),$e=Ie[Ee];if(Pe.includes(Ee)||Ue.isHidden)try{await Ue.attach(He,De,$e,!0)}catch(Ye){Oe.log.warn(`Error attaching structure prop '${Ee}': ${Ye}`)}else Ue.set(De,$e)}}})(rA)),rA}var sr={},ks={},Cz;function Oae(){if(Cz)return ks;Cz=1,Object.defineProperty(ks,"__esModule",{value:!0}),ks.Ccp4Format=void 0,ks.getCcp4Origin=h,ks.getCcp4Size=f,ks.volumeFromCcp4=_;const e=nt(),t=rt(),r=Ge(),n=er(),i=RQ(),c=BQ(),o=Vt(),s=Pr();function h(a){return a.originX===0&&a.originY===0&&a.originZ===0?r.Vec3.create(a.NCSTART,a.NRSTART,a.NSSTART):r.Vec3.create(a.originX/(a.xLength/a.NX),a.originY/(a.yLength/a.NY),a.originZ/(a.zLength/a.NZ))}function f(a){return a.xLength===0&&a.yLength===0&&a.zLength===0?r.Vec3.create(a.NX,a.NY,a.NZ):r.Vec3.create(a.xLength,a.yLength,a.zLength)}function y(a){const d=(0,i.getCcp4ValueType)(a);switch(d){case c.TypedArrayValueType.Float32:return Float32Array;case c.TypedArrayValueType.Int8:return Int8Array;case c.TypedArrayValueType.Int16:return Int16Array;case c.TypedArrayValueType.Uint16:return Uint16Array}throw Error(`${d} is not a supported value format.`)}function _(a,d){return e.Task.create("Create Volume",async p=>{const{header:u,values:m}=a,v=f(u);d&&d.voxelSize&&r.Vec3.mul(v,v,d.voxelSize);const b=r.Vec3.create((0,n.degToRad)(u.alpha),(0,n.degToRad)(u.beta),(0,n.degToRad)(u.gamma)),P=u.ISPG>65536?0:u.ISPG,C=t.SpacegroupCell.create(P||"P 1",v,b),l=r.Vec3.create(u.MAPC-1,u.MAPR-1,u.MAPS-1),S=r.Tensor.convertToCanonicalAxisIndicesFastToSlow(l),T=[u.NX,u.NY,u.NZ],A=S([u.NC,u.NR,u.NS]),x=h(u);d?.offset&&r.Vec3.add(x,x,d.offset);const M=S(x),D=r.Vec3.create(M[0]/T[0],M[1]/T[1],M[2]/T[2]),V=r.Vec3.create(A[0]/T[0],A[1]/T[1],A[2]/T[2]),R=r.Tensor.Space(A,r.Tensor.invertAxisOrder(l),y(u)),E=r.Tensor.create(R,r.Tensor.Data1(m)),I=u.AMIN===0&&u.AMAX===0&&u.AMEAN===0&&u.ARMS===0,B={transform:{kind:"spacegroup",cell:C,fractionalBox:t.Box3D.create(D,r.Vec3.add((0,r.Vec3)(),D,V))},cells:E,stats:{min:Number.isNaN(u.AMIN)||I?(0,o.arrayMin)(m):u.AMIN,max:Number.isNaN(u.AMAX)||I?(0,o.arrayMax)(m):u.AMAX,mean:Number.isNaN(u.AMEAN)||I?(0,o.arrayMean)(m):u.AMEAN,sigma:Number.isNaN(u.ARMS)||u.ARMS===0?(0,o.arrayRms)(m):u.ARMS},periodicity:r.Vec3.isInteger(V)?"xyz":"none"};return{label:d?.label,entryId:d?.entryId,grid:B,instances:[{transform:r.Mat4.identity()}],sourceData:g.create(a),customProperties:new s.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var g;return(function(a){function d(u){return u?.kind==="ccp4"}a.is=d;function p(u){return{kind:"ccp4",name:u.name,data:u}}a.create=p})(g||(ks.Ccp4Format=g={})),ks}var Fd={},Pz;function kae(){if(Pz)return Fd;Pz=1,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.Dsn6Format=void 0,Fd.volumeFromDsn6=o;const e=nt(),t=rt(),r=Ge(),n=er(),i=Vt(),c=Pr();function o(h,f){return e.Task.create("Create Volume",async y=>{const{header:_,values:g}=h,a=r.Vec3.create(_.xlen,_.ylen,_.zlen);f&&f.voxelSize&&r.Vec3.mul(a,a,f.voxelSize);const d=r.Vec3.create((0,n.degToRad)(_.alpha),(0,n.degToRad)(_.beta),(0,n.degToRad)(_.gamma)),p=t.SpacegroupCell.create("P 1",a,d),u=[_.xRate,_.yRate,_.zRate],m=[_.xExtent,_.yExtent,_.zExtent],v=[_.xStart,_.yStart,_.zStart],b=r.Vec3.create(v[0]/u[0],v[1]/u[1],v[2]/u[2]),P=r.Vec3.create(m[0]/u[0],m[1]/u[1],m[2]/u[2]),C=r.Tensor.Space(m,[0,1,2],Float32Array),l=r.Tensor.create(C,r.Tensor.Data1(g));return{label:f?.label,entryId:f?.entryId,grid:{transform:{kind:"spacegroup",cell:p,fractionalBox:t.Box3D.create(b,r.Vec3.add(r.Vec3.zero(),b,P))},cells:l,stats:{min:(0,i.arrayMin)(g),max:(0,i.arrayMax)(g),mean:(0,i.arrayMean)(g),sigma:_.sigma!==void 0?_.sigma:(0,i.arrayRms)(g)},periodicity:r.Vec3.isInteger(P)?"xyz":"none"},instances:[{transform:r.Mat4.identity()}],sourceData:s.create(h),customProperties:new c.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var s;return(function(h){function f(_){return _?.kind==="dsn6"}h.is=f;
4126function y(_){return{kind:"dsn6",name:_.name,data:_}}h.create=y})(s||(Fd.Dsn6Format=s={})),Fd}var Ld={},Tz;function Fae(){if(Tz)return Ld;Tz=1,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.DxFormat=void 0,Ld.volumeFromDx=i;const e=Ge(),t=nt(),r=Vt(),n=Pr();function i(o,s){return t.Task.create("Create Volume",async()=>{const{header:h,values:f}=o,y=e.Tensor.Space(h.dim,[0,1,2],Float64Array),_=e.Tensor.create(y,e.Tensor.Data1(f)),g=e.Mat4.fromTranslation((0,e.Mat4)(),h.min),a=e.Mat4.fromScaling((0,e.Mat4)(),h.h);return e.Mat4.mul(g,g,a),{label:s?.label,entryId:s?.entryId,grid:{transform:{kind:"matrix",matrix:g},cells:_,stats:{min:(0,r.arrayMin)(f),max:(0,r.arrayMax)(f),mean:(0,r.arrayMean)(f),sigma:(0,r.arrayRms)(f)}},instances:[{transform:e.Mat4.identity()}],sourceData:c.create(o),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var c;return(function(o){function s(f){return f?.kind==="dx"}o.is=s;function h(f){return{kind:"dx",name:f.name,data:f}}o.create=h})(c||(Ld.DxFormat=c={})),Ld}var Nd={},xz;function Lae(){if(xz)return Nd;xz=1,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.SegcifFormat=void 0,Nd.volumeFromSegmentationData=o;const e=sn(),t=nt(),r=rt(),n=Ge(),i=Pr(),c=vr();function o(h,f){return t.Task.create("Create Segmentation Volume",async y=>{var _;const{volume_data_3d_info:g,segmentation_data_3d:a}=h,d=r.SpacegroupCell.create(g.spacegroup_number.value(0)||"P 1",n.Vec3.ofArray(g.spacegroup_cell_size.value(0)),n.Vec3.scale((0,n.Vec3)(),n.Vec3.ofArray(g.spacegroup_cell_angles.value(0)),Math.PI/180)),p=g.axis_order.value(0),u=n.Tensor.convertToCanonicalAxisIndicesFastToSlow(p),m=u(g.sample_count.value(0)),v=n.Tensor.Space(m,n.Tensor.invertAxisOrder(p),Float32Array),b=n.Tensor.create(v,n.Tensor.Data1(a.values.toArray({array:Float32Array}))),P=n.Vec3.ofArray(u(g.origin.value(0))),C=n.Vec3.ofArray(u(g.dimensions.value(0))),l={label:f?.label,entryId:void 0,grid:{transform:{kind:"spacegroup",cell:d,fractionalBox:r.Box3D.create(P,n.Vec3.add((0,n.Vec3)(),P,C))},cells:b,stats:{min:0,max:1,mean:0,sigma:1}},instances:[{transform:n.Mat4.identity()}],sourceData:s.create(h),customProperties:new i.CustomProperties,_propertyData:{ownerId:f?.ownerId},_localPropertyData:Object.create(null)};e.Volume.PickingGranularity.set(l,"object");const S=new Map,T=new Map,{segment_id:A,set_id:x}=h.segmentation_data_table;for(let U=0,q=A.rowCount;U<q;++U){const N=A.value(U),k=x.value(U);k===0||N===0||(T.has(k)||T.set(k,new Set),T.get(k).add(N))}T.forEach((U,q)=>{U.forEach(N=>{S.has(N)||S.set(N,new Set),S.get(N).add(q)})});const M=[0,0,0],D=b.space.getCoords,V=b.data,[R,E,I]=l.grid.cells.space.dimensions,B=R-1,w=E-1,O=I-1,F={};T.forEach((U,q)=>{F[q]=[B,w,O,-1,-1,-1]});for(let U=0,q=V.length;U<q;++U){const N=V[U];if(N===0)continue;D(U,M);const k=F[N];M[0]<k[0]&&(k[0]=M[0]),M[1]<k[1]&&(k[1]=M[1]),M[2]<k[2]&&(k[2]=M[2]),M[0]>k[3]&&(k[3]=M[0]),M[1]>k[4]&&(k[4]=M[1]),M[2]>k[5]&&(k[5]=M[2])}const L={};return S.forEach((U,q)=>{L[q]=r.Box3D.create(n.Vec3.create(B,w,O),n.Vec3.create(-1,-1,-1))}),(0,c.objectForEach)(F,(U,q)=>{T.get(parseInt(q)).forEach(N=>{const k=L[N];U[0]<k.min[0]&&(k.min[0]=U[0]),U[1]<k.min[1]&&(k.min[1]=U[1]),U[2]<k.min[2]&&(k.min[2]=U[2]),U[3]>k.max[0]&&(k.max[0]=U[3]),U[4]>k.max[1]&&(k.max[1]=U[4]),U[5]>k.max[2]&&(k.max[2]=U[5])})}),e.Volume.Segmentation.set(l,{segments:S,sets:T,bounds:L,labels:(_=f?.segmentLabels)!==null&&_!==void 0?_:{}}),l})}var s;return(function(h){function f(_){return _?.kind==="segcif"}h.is=f;function y(_){return{kind:"segcif",name:_._name,data:_}}h.create=y})(s||(Nd.SegcifFormat=s={})),Nd}var qd={},LP={},Ru={},Az;function Nae(){if(Az)return Ru;Az=1,Object.defineProperty(Ru,"__esModule",{value:!0}),Ru.nextPow2=e,Ru.fft1d=h,Ru.fft3d=d,Ru.fft3dHermitian=p;function e(u){if(u<=1)return 1;let m=1;for(;m<u;)m<<=1;return m}const t=new Map;function r(u){let m=t.get(u);if(!m){const v=new Float64Array(u),b=new Float64Array(u);for(let l=0;l<u;l++){const S=-2*Math.PI*l/u;v[l]=Math.cos(S),b[l]=Math.sin(S)}const P=new Uint32Array(u);let C=0;for(let l=1;l<u;l++){let S=u>>1;for(;C&S;S>>=1)C^=S;C^=S,P[l]=C}m=[v,b,P],t.set(u,m)}return m}let n=new Float32Array(0),i=new Float32Array(0),c=new Float64Array(0),o=new Float64Array(0);function s(u,m){return m instanceof Float32Array?(n.length<u&&(n=new Float32Array(u),i=new Float32Array(u)),[n,i]):(c.length<u&&(c=new Float64Array(u),o=new Float64Array(u)),[c,o])}function h(u,m,v,b,P){const[C,l,S]=r(b);for(let x=1;x<b;x++){const M=S[x];if(x<M){const D=v+x*P,V=v+M*P;let R=u[D];u[D]=u[V],u[V]=R,R=m[D],m[D]=m[V],m[V]=R}}let T=0;for(let x=b;x>1;x>>=1)T++;let A=1;if((T&1)===1){for(let x=0;x<b;x+=2){const M=v+x*P,D=v+(x+1)*P,V=u[M],R=m[M],E=u[D],I=m[D];u[M]=V+E,m[M]=R+I,u[D]=V-E,m[D]=R-I}A=2}for(;A<b;A<<=2){const x=A<<2,M=b/x|0,D=M<<1,V=D+M;for(let R=0;R<b;R+=x){let E=0,I=0,B=0;for(let w=0;w<A;w++){const O=v+(R+w)*P,F=O+A*P,L=F+A*P,U=L+A*P,q=u[O],N=m[O],k=u[F],j=m[F],H=u[L],G=m[L],z=u[U],W=m[U],X=C[E],Y=l[E],K=C[I],Q=l[I],J=C[B],ae=l[B],te=k*K-j*Q,ne=k*Q+j*K,$=H*X-G*Y,ie=H*Y+G*X,Z=z*J-W*ae,re=z*ae+W*J,oe=q+te,ce=N+ne,ue=q-te,pe=N-ne,he=$+Z,fe=ie+re,de=$-Z,ge=ie-re;u[O]=oe+he,m[O]=ce+fe,u[L]=oe-he,m[L]=ce-fe,u[F]=ue+ge,m[F]=pe-de,u[U]=ue-ge,m[U]=pe+de,E+=M,I+=D,B+=V}}}}const f=16;function y(u,m,v,b,P,C,l,S){const T=f;for(let A=0;A<P;A+=T){const x=A+T<P?A+T:P;for(let M=0;M<C;M+=T){const D=M+T<C?M+T:C;for(let V=A;V<x;V++){const R=l+V*C;for(let E=M;E<D;E++){const I=R+E,B=S+E*P+V;v[B]=u[I],b[B]=m[I]}}}}}function _(u,m,v,b,P,C,l){const S=C*l;for(let T=0;T<P;T++)y(u,m,v,b,C,l,T*S,T*S)}function g(u,m,v,b,P,C,l){y(u,m,v,b,P,C*l,0,0)}function a(u,m,v,b,P,C,l){y(u,m,v,b,C*l,P,0,0)}function d(u,m,v,b,P){const[C,l]=s(v*b*P,u);for(let S=0;S<v;S++)for(let T=0;T<b;T++)h(u,m,S*b*P+T*P,P,1);_(u,m,C,l,v,b,P);for(let S=0;S<v;S++)for(let T=0;T<P;T++)h(C,l,S*P*b+T*b,b,1);_(C,l,u,m,v,P,b),g(u,m,C,l,v,b,P);for(let S=0;S<b;S++)for(let T=0;T<P;T++)h(C,l,S*P*v+T*v,v,1);a(C,l,u,m,v,b,P)}function p(u,m,v,b,P,C){const l=P>>1,S=l+1,T=v*b,[A,x]=s(T*S,u);_(u,m,A,x,v,b,S);for(let R=0;R<v;R++)for(let E=0;E<S;E++)h(A,x,R*S*b+E*b,b,1);_(A,x,u,m,v,S,b),g(u,m,A,x,v,b,S);for(let R=0;R<b;R++)for(let E=0;E<S;E++)h(A,x,R*S*v+E*v,v,1);a(A,x,u,m,v,b,S);const M=u instanceof Float32Array?new Float32Array(P):new Float64Array(P),D=u instanceof Float32Array?new Float32Array(P):new Float64Array(P);let V=0;for(;V+1<T;V+=2){const R=V*S,E=(V+1)*S;M[0]=u[R]-m[E],D[0]=m[R]+u[E];for(let w=1;w<l;w++){const O=u[R+w],F=m[R+w],L=u[E+w],U=m[E+w];M[w]=O-U,D[w]=F+L;const q=P-w;M[q]=O+U,D[q]=L-F}M[l]=u[R+l]-m[E+l],D[l]=m[R+l]+u[E+l],h(M,D,0,P,1);const I=V*P,B=(V+1)*P;for(let w=0;w<P;w++)C[I+w]=M[w],C[B+w]=D[w]}if(V<T){const R=V*S;M[0]=u[R],D[0]=m[R];for(let I=1;I<l;I++){const B=u[R+I],w=m[R+I];M[I]=B,D[I]=w;const O=P-I;M[O]=B,D[O]=-w}M[l]=u[R+l],D[l]=m[R+l],h(M,D,0,P,1);const E=V*P;for(let I=0;I<P;I++)C[E+I]=M[I]}}return Ru}var Mz;function qQ(){if(Mz)return LP;
4126Mz=1,Object.defineProperty(LP,"__esModule",{value:!0}),LP.computeElectronDensityFromReflections=t;const e=Nae();async function t(r,n,i,c,o,s,h){const f=r.length,y=s.operators;let _=0,g=0,a=0;for(let x=0;x<f;x++){const M=r[x],D=n[x],V=i[x],R=c[x],E=o[x];if(!(!isFinite(R)||!isFinite(E)))for(let I=0;I<y.length;I++){const B=y[I],w=Math.round(B[0]*M+B[1]*D+B[2]*V),O=Math.round(B[4]*M+B[5]*D+B[6]*V),F=Math.round(B[8]*M+B[9]*D+B[10]*V),L=Math.abs(w),U=Math.abs(O),q=Math.abs(F);L>_&&(_=L),U>g&&(g=U),q>a&&(a=q)}}const d=(0,e.nextPow2)(2*_+2),p=(0,e.nextPow2)(2*g+2),u=(0,e.nextPow2)(2*a+2);await h.update({message:"Expanding structure factors..."});const m=d*p*u,v=u>>1,b=v+1,P=d*p*b,C=new Float32Array(P),l=new Float32Array(P),S=new Uint8Array(P),T=(x,M,D,V,R)=>{let E=(x%d+d)%d,I=(M%p+p)%p,B=(D%u+u)%u,w=R*(Math.PI/180);B>v&&(E=(d-E)%d,I=(p-I)%p,B=u-B,w=-w);const O=E*p*b+I*b+B;S[O]||(C[O]=V*Math.cos(w),l[O]=V*Math.sin(w),S[O]=1)};for(let x=0;x<f;x++){const M=r[x],D=n[x],V=i[x],R=c[x],E=o[x];if(!(!isFinite(R)||!isFinite(E)))for(let I=0;I<y.length;I++){const B=y[I],w=Math.round(B[0]*M+B[1]*D+B[2]*V),O=Math.round(B[4]*M+B[5]*D+B[6]*V),F=Math.round(B[8]*M+B[9]*D+B[10]*V),L=360*(M*B[12]+D*B[13]+V*B[14]),U=E+L;T(w,O,F,R,U),T(-w,-O,-F,R,-U)}}await h.update({message:"Computing Fourier transform..."});const A=new Float32Array(m);return(0,e.fft3dHermitian)(C,l,d,p,u,A),{density:A,N0:d,N1:p,N2:u}}return LP}var Dz;function qae(){if(Dz)return qd;Dz=1,Object.defineProperty(qd,"__esModule",{value:!0}),qd.SfFormat=void 0,qd.volumeFromStructureFactors=o;const e=nt(),t=rt(),r=Ge(),n=Pr(),i=er(),c=qQ();function o(h,f){return e.Task.create("Compute Structure Factor Map",async y=>{var _;const g=(_=f?.mapType)!==null&&_!==void 0?_:"2fo-fc",{cell:a,symmetry:d,refln:p}=h,u=d.Int_Tables_number.value(0)||d["space_group_name_H-M"].value(0)||"P 1",m=r.Vec3.create(a.length_a.value(0),a.length_b.value(0),a.length_c.value(0)),v=r.Vec3.create((0,i.degToRad)(a.angle_alpha.value(0)),(0,i.degToRad)(a.angle_beta.value(0)),(0,i.degToRad)(a.angle_gamma.value(0))),b=t.SpacegroupCell.create(u,m,v),P=t.Spacegroup.create(b);if(await y.update({message:"Reading reflections..."}),p.index_h.rowCount===0)throw new Error("No reflection data found in the _refln category.");const l=p.index_h.toArray({array:Int16Array}),S=p.index_k.toArray({array:Int16Array}),T=p.index_l.toArray({array:Int16Array}),A=g==="2fo-fc"?p.pdbx_FWT:p.pdbx_DELFWT,x=g==="2fo-fc"?p.pdbx_PHWT:p.pdbx_DELPHWT;if(!A.isDefined||!x.isDefined){const j=g==="2fo-fc"?"pdbx_FWT":"pdbx_DELFWT",H=g==="2fo-fc"?"pdbx_PHWT":"pdbx_DELPHWT";throw new Error(`Structure factor CIF is missing required _refln.${j}/_refln.${H} map coefficients.`)}const M=A.toArray({array:Float32Array}),D=x.toArray({array:Float32Array}),{density:V,N0:R,N1:E,N2:I}=await(0,c.computeElectronDensityFromReflections)(l,S,T,M,D,P,y);await y.update({message:"Finalizing volume..."});const B=R*E*I;let w=1/0,O=-1/0,F=0,L=0;for(let j=0;j<B;j++){const H=V[j];H<w&&(w=H),H>O&&(O=H),F+=H,L+=H*H}const U=F/B,q=Math.sqrt(Math.max(0,L/B-U*U)),N=r.Tensor.Space([R,E,I],[0,1,2],Float32Array),k=r.Tensor.create(N,r.Tensor.Data1(V));return{label:f?.label,entryId:f?.entryId,grid:{transform:{kind:"spacegroup",cell:b,fractionalBox:t.Box3D.create(r.Vec3.zero(),r.Vec3.create(1,1,1))},cells:k,stats:{min:w,max:O,mean:U,sigma:q},periodicity:"xyz"},instances:[{transform:r.Mat4.identity()}],sourceData:s.create(h),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var s;return(function(h){function f(_){return _?.kind==="sf"}h.is=f;function y(_){return{kind:"sf",name:_._name,data:_}}h.create=y})(s||(qd.SfFormat=s={})),qd}var Ou={},Iz;function UQ(){if(Iz)return Ou;Iz=1,Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.MtzFormat=void 0,Ou.detectMtzColumnPairs=s,Ou.volumeFromMtz=h;const e=nt(),t=rt(),r=Ge(),n=Pr(),i=er(),c=qQ(),o=[{label:"2fo-fc",amp:"FWT",phi:"PHWT"},{label:"fo-fc",amp:"DELFWT",phi:"DELPHWT"},{label:"fo-fc",amp:"DELFWT",phi:"PHDELWT"},{label:"2fo-fc",amp:"2FOFCWT",phi:"PH2FOFCWT"},{label:"fo-fc",amp:"FOFCWT",phi:"PHFOFCWT"},{label:"2fo-fc",amp:"FWT",phi:"PHIC"}];function s(y){const _=new Set(y.columns.map(d=>d.label)),g=[],a=new Set;for(const d of o)if(_.has(d.amp)&&_.has(d.phi)){const p=`${d.amp}|${d.phi}`;a.has(p)||(a.add(p),g.push({label:d.label,ampLabel:d.amp,phiLabel:d.phi}))}return g}function h(y,_){return e.Task.create("Compute MTZ Map",async g=>{var a,d;const p=(a=_?.ampLabel)!==null&&a!==void 0?a:"FWT",u=(d=_?.phiLabel)!==null&&d!==void 0?d:"PHWT",{header:m,data:v}=y;let b=m.cell;for(const le of m.datasets)if(le.id>0&&le.cell){b=le.cell;break}const[P,C,l,S,T,A]=b,x=r.Vec3.create(P,C,l),M=r.Vec3.create((0,i.degToRad)(S),(0,i.degToRad)(T),(0,i.degToRad)(A)),D=m.spaceGroupNumber||m.spaceGroupName||"P 1",V=t.SpacegroupCell.create(D,x,M),R=t.Spacegroup.create(V);await g.update({message:"Locating MTZ columns..."});const E=m.columns.find(le=>le.type==="H"&&le.label==="H"),I=m.columns.find(le=>le.type==="H"&&le.label==="K"),B=m.columns.find(le=>le.type==="H"&&le.label==="L"),w=m.columns.find(le=>le.label===p),O=m.columns.find(le=>le.label===u);
4126if(!E||!I||!B)throw new Error("MTZ file does not contain H, K, L index columns.");if(!w)throw new Error(`MTZ amplitude column '${p}' not found.`);if(!O)throw new Error(`MTZ phase column '${u}' not found.`);const F=E.index,L=I.index,U=B.index,q=w.index,N=O.index,k=m.nColumns,j=m.nReflections,H=m.missingNumber,G=le=>isNaN(H)?!isFinite(le):le===H||!isFinite(le);await g.update({message:"Extracting MTZ reflections..."});const z=new Int16Array(j),W=new Int16Array(j),X=new Int16Array(j),Y=new Float32Array(j),K=new Float32Array(j);let Q=0;for(let le=0;le<j;le++){const me=le*k,ee=v[me+q],se=v[me+N];G(ee)||G(se)||(z[Q]=Math.round(v[me+F]),W[Q]=Math.round(v[me+L]),X[Q]=Math.round(v[me+U]),Y[Q]=ee,K[Q]=se,Q++)}if(Q===0)throw new Error(`MTZ file contains no valid reflections for columns '${p}' and '${u}'.`);const J=z.subarray(0,Q),ae=W.subarray(0,Q),te=X.subarray(0,Q),ne=Y.subarray(0,Q),$=K.subarray(0,Q),{density:ie,N0:Z,N1:re,N2:oe}=await(0,c.computeElectronDensityFromReflections)(J,ae,te,ne,$,R,g);await g.update({message:"Finalizing volume..."});const ce=Z*re*oe;let ue=1/0,pe=-1/0,he=0,fe=0;for(let le=0;le<ce;le++){const me=ie[le];me<ue&&(ue=me),me>pe&&(pe=me),he+=me,fe+=me*me}const de=he/ce,ge=Math.sqrt(Math.max(0,fe/ce-de*de)),Ce=r.Tensor.Space([Z,re,oe],[0,1,2],Float32Array),ve=r.Tensor.create(Ce,r.Tensor.Data1(ie));return{label:_?.label,entryId:_?.entryId,grid:{transform:{kind:"spacegroup",cell:V,fractionalBox:t.Box3D.create(r.Vec3.zero(),r.Vec3.create(1,1,1))},cells:ve,stats:{min:ue,max:pe,mean:de,sigma:ge},periodicity:"xyz"},instances:[{transform:r.Mat4.identity()}],sourceData:f.create(y),customProperties:new n.CustomProperties,_propertyData:Object.create(null),_localPropertyData:Object.create(null)}})}var f;return(function(y){function _(a){return a?.kind==="mtz"}y.is=_;function g(a){return{kind:"mtz",name:a.name,data:a}}y.create=g})(f||(Ou.MtzFormat=f={})),Ou}var wz;function Uae(){if(wz)return sr;wz=1,Object.defineProperty(sr,"__esModule",{value:!0}),sr.CustomVolumeProperties=sr.VolumeInstances=sr.VolumeTransform=sr.VolumeFromMtz=sr.VolumeFromStructureFactorsCif=sr.VolumeFromSegmentationCif=sr.VolumeFromDensityServerCif=sr.AssignColorVolume=sr.VolumeFromDx=sr.VolumeFromCube=sr.VolumeFromDsn6=sr.VolumeFromCcp4=void 0;const e=Ti(),t=Ge(),r=Oae(),n=Tw(),i=kae(),c=nt(),o=Ne(),s=jt(),h=bQ(),f=Fae(),y=sn(),_=Et(),g=Lae(),a=qae(),d=UQ(),p=Vw(),u=s.PluginStateTransform.BuiltIn({name:"volume-from-ccp4",display:{name:"Volume from CCP4/MRC/MAP",description:"Create Volume from CCP4/MRC/MAP data"},from:s.PluginStateObject.Format.Ccp4,to:s.PluginStateObject.Volume.Data,params(V){return{voxelSize:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1)),offset:o.ParamDefinition.Vec3(t.Vec3.create(0,0,0)),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from CCP4/MRC/MAP",async E=>{const I=await(0,r.volumeFromCcp4)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.NX}Ã${V.data.header.NX}Ã${V.data.header.NX}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromCcp4=u;const m=s.PluginStateTransform.BuiltIn({name:"volume-from-dsn6",display:{name:"Volume from DSN6/BRIX",description:"Create Volume from DSN6/BRIX data"},from:s.PluginStateObject.Format.Dsn6,to:s.PluginStateObject.Volume.Data,params(V){return{voxelSize:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1)),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from DSN6/BRIX",async E=>{const I=await(0,i.volumeFromDsn6)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.xExtent}Ã${V.data.header.yExtent}Ã${V.data.header.zExtent}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDsn6=m;const v=s.PluginStateTransform.BuiltIn({name:"volume-from-cube",display:{name:"Volume from Cube",description:"Create Volume from Cube data"},from:s.PluginStateObject.Format.Cube,to:s.PluginStateObject.Volume.Data,params(V){return{dataIndex:V?o.ParamDefinition.Select(0,V.data.header.dataSetIds.map((E,I)=>[I,`${E}`])):o.ParamDefinition.Numeric(0),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Create volume from Cube",async E=>{const I=await(0,h.volumeFromCube)(V.data,{...R,label:V.data.name||V.label}).runInContext(E),B={label:I.label||"Volume",description:`Volume ${V.data.header.dim[0]}Ã${V.data.header.dim[1]}Ã${V.data.header.dim[2]}`};return new s.PluginStateObject.Volume.Data(I,B)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromCube=v;const b=s.PluginStateTransform.BuiltIn({name:"volume-from-dx",display:{name:"Parse DX",description:"Create volume from DX data."},from:s.PluginStateObject.Format.Dx,to:s.PluginStateObject.Volume.Data})({apply({a:V}){return c.Task.create("Parse DX",async R=>{const E=await(0,f.volumeFromDx)(V.data,{label:V.data.name||V.label}).runInContext(R),I={label:E.label||"Volume",description:`Volume ${V.data.header.dim[0]}Ã${V.data.header.dim[1]}Ã${V.data.header.dim[2]}`};return new s.PluginStateObject.Volume.Data(E,I)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDx=b;const P=s.PluginStateTransform.BuiltIn({name:"volume-from-density-server-cif",display:{name:"Volume from density-server CIF",description:"Identify and create all separate models in the specified CIF data block"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){if(!V)return{blockHeader:o.ParamDefinition.Optional(o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),entryId:o.ParamDefinition.Text("")};const R=V.data.blocks.slice(1);return{blockHeader:o.ParamDefinition.Optional(o.ParamDefinition.Select(R[0]&&R[0].header,R.map(E=>[E.header,E.header]),{description:"Header of the block to parse"})),entryId:o.ParamDefinition.Text("")}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse density-server CIF",async E=>{var I;const B=R.blockHeader||V.data.blocks[1].header,w=V.data.blocks.find(k=>k.header===B);if(!w)throw new Error(`Data block '${[B]}' not found.`);const O=e.CIF.schema.densityServer(w),F=await(0,n.volumeFromDensityServerData)(O,{entryId:R.entryId}).runInContext(E),[L,U,q]=F.grid.cells.space.dimensions,N={label:(I=R.entryId)!==null&&I!==void 0?I:O.volume_data_3d_info.name.value(0),description:`Volume ${L}Ã${U}Ã${q}`};return new s.PluginStateObject.Volume.Data(F,N)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromDensityServerCif=P;const C=s.PluginStateTransform.BuiltIn({name:"volume-from-segmentation-cif",display:{name:"Volume from Segmentation CIF"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){const R=V?.data.blocks.slice(1);return{blockHeader:R?o.ParamDefinition.Optional(o.ParamDefinition.Select(R[0]&&R[0].header,R.map(I=>[I.header,I.header]),{description:"Header of the block to parse"})):o.ParamDefinition.Optional(o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),segmentLabels:o.ParamDefinition.ObjectList({id:o.ParamDefinition.Numeric(-1),label:o.ParamDefinition.Text("")},I=>`${I.id} = ${I.label}`,{description:"Mapping of segment IDs to segment labels"}),ownerId:o.ParamDefinition.Text("",{isHidden:!0,description:"Reference to the object which manages this volume"})}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse segmentation CIF",async E=>{const I=R.blockHeader||V.data.blocks[1].header,B=V.data.blocks.find(k=>k.header===I);if(!B)throw new Error(`Data block '${[I]}' not found.`);
4126const w=e.CIF.schema.segmentation(B),O={};for(const k of R.segmentLabels)O[k.id]=k.label;const F=await(0,g.volumeFromSegmentationData)(w,{segmentLabels:O,ownerId:R.ownerId}).runInContext(E),[L,U,q]=F.grid.cells.space.dimensions,N={label:w.volume_data_3d_info.name.value(0),description:`Segmentation ${L}Ã${U}Ã${q}`};return new s.PluginStateObject.Volume.Data(F,N)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromSegmentationCif=C;const l=s.PluginStateTransform.BuiltIn({name:"volume-from-structure-factors-cif",display:{name:"Volume from Structure Factors CIF",description:"Compute electron density map from structure factor reflection data (pdbx_FWT/pdbx_PHWT or pdbx_DELFWT/pdbx_DELPHWT)"},from:s.PluginStateObject.Format.Cif,to:s.PluginStateObject.Volume.Data,params(V){const R=V?V.data.blocks.map(E=>[E.header,E.header]):[];return{blockHeader:o.ParamDefinition.Optional(R.length>0?o.ParamDefinition.Select(R[0][0],R,{description:"Header of the data block to use"}):o.ParamDefinition.Text(void 0,{description:"Header of the block to parse. Defaults to first block."})),entryId:o.ParamDefinition.Text(""),mapType:o.ParamDefinition.Select("2fo-fc",[["2fo-fc","2Fo-Fc (pdbx_FWT/PHWT)"],["fo-fc","Fo-Fc (pdbx_DELFWT/DELPHWT)"]])}}})({isApplicable:V=>V.data.blocks.length>0,apply({a:V,params:R}){return c.Task.create("Parse structure factors CIF",async E=>{const I=R.blockHeader||V.data.blocks[0].header,B=V.data.blocks.find(j=>j.header===I);if(!B)throw new Error(`Data block '${I}' not found.`);const w=e.CIF.schema.SF(B),O=await(0,a.volumeFromStructureFactors)(w,{entryId:R.entryId,mapType:R.mapType}).runInContext(E),[F,L,U]=O.grid.cells.space.dimensions,q=R.entryId||I,N=R.mapType==="fo-fc"?"Fo-Fc":"2Fo-Fc",k={label:q,description:`${N} Volume ${F}Ã${L}Ã${U}`};return new s.PluginStateObject.Volume.Data(O,k)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromStructureFactorsCif=l;const S=s.PluginStateTransform.BuiltIn({name:"volume-from-mtz",display:{name:"Volume from MTZ",description:"Compute electron density map from MTZ reflection data"},from:s.PluginStateObject.Format.Mtz,to:s.PluginStateObject.Volume.Data,params(V){if(!V)return{ampLabel:o.ParamDefinition.Text("FWT",{description:"Column label of the structure-factor amplitude (type F)"}),phiLabel:o.ParamDefinition.Text("PHWT",{description:"Column label of the phase in degrees (type P)"}),entryId:o.ParamDefinition.Text("")};const R=V.data.header.columns.filter(I=>I.type==="F").map(I=>[I.label,I.label]),E=V.data.header.columns.filter(I=>I.type==="P").map(I=>[I.label,I.label]);return{ampLabel:R.length>0?o.ParamDefinition.Select(R[0][0],R,{description:"Structure-factor amplitude column (type F)"}):o.ParamDefinition.Text("FWT",{description:"Structure-factor amplitude column label (type F)"}),phiLabel:E.length>0?o.ParamDefinition.Select(E[0][0],E,{description:"Phase column in degrees (type P)"}):o.ParamDefinition.Text("PHWT",{description:"Phase column label in degrees (type P)"}),entryId:o.ParamDefinition.Text("")}}})({apply({a:V,params:R}){return c.Task.create("Compute volume from MTZ",async E=>{const I=await(0,d.volumeFromMtz)(V.data,{ampLabel:R.ampLabel,phiLabel:R.phiLabel,entryId:R.entryId||void 0,label:R.entryId||V.data.name||void 0}).runInContext(E),[B,w,O]=I.grid.cells.space.dimensions,L={label:R.entryId||V.data.name||"Volume",description:`Volume ${B}Ã${w}Ã${O}`};return new s.PluginStateObject.Volume.Data(I,L)})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.VolumeFromMtz=S;const T=s.PluginStateTransform.BuiltIn({name:"assign-color-volume",display:{name:"Assign Color Volume",description:"Assigns another volume to be available for coloring."},from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,isDecorator:!0,params(V,R){if(!V)return{ref:o.ParamDefinition.Text()};const E=R.state.data.select(_.StateSelection.Generators.root.subtree().ofType(s.PluginStateObject.Volume.Data).filter(I=>{var B;return!!I.obj&&!(!((B=I.obj)===null||B===void 0)&&B.data.colorVolume)&&I.obj!==V}));return E.length===0?{ref:o.ParamDefinition.Text("",{isHidden:!0})}:{ref:o.ParamDefinition.Select(E[0].transform.ref,E.map(I=>[I.transform.ref,I.obj.label]))}}})({apply({a:V,params:R,dependencies:E}){return c.Task.create("Assign Color Volume",async I=>{if(!E||!E[R.ref])throw new Error("Dependency not available.");const B=E[R.ref].data,w={...V.data,colorVolume:B,_localPropertyData:Object.create(null)},O={label:V.label,description:"Volume + Colors"};return new s.PluginStateObject.Volume.Data(w,O)})},getDependencies:({ref:V})=>V?[V]:[]});sr.AssignColorVolume=T;const A=s.PluginStateTransform.BuiltIn({name:"volume-transform",display:{name:"Transform Volume"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:{transform:p.TransformParam}})({canAutoUpdate(){return!1},apply({a:V,params:R}){const E=(0,p.transformParamsNeedCentroid)(R.transform)?y.Grid.getBoundingSphere(V.data.grid).center:t.Vec3.unit,I=(0,p.getTransformFromParams)(R.transform,E),B={kind:"matrix",matrix:t.Mat4.mul((0,t.Mat4)(),I,y.Grid.getGridToCartesianTransform(V.data.grid))};return new s.PluginStateObject.Volume.Data({...V.data,grid:{...V.data.grid,transform:B},_localPropertyData:Object.create(null)},{label:V.label,description:`${V.description} [Transformed]`})}});sr.VolumeTransform=A;const x=s.PluginStateTransform.BuiltIn({name:"volume-instances",display:{name:"Volume Instances"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:{mode:o.ParamDefinition.Select("transforms",o.ParamDefinition.arrayToOptions(["transforms","periodicRange"])),transforms:o.ParamDefinition.ObjectList({transform:p.TransformParam},()=>"Transform",{hideIf:V=>V.mode!=="transforms"}),periodicRange:o.ParamDefinition.Group({min:o.ParamDefinition.Vec3(t.Vec3.create(0,0,0),{min:-10,max:10,step:1},{label:"Min",description:"Inclusive lower bound of the translation range (x, y, z)"}),max:o.ParamDefinition.Vec3(t.Vec3.create(1,1,1),{min:-10,max:10,step:1},{label:"Max",description:"Exclusive upper bound of the translation range (x, y, z)"})},{hideIf:V=>V.mode!=="periodicRange",isFlat:!0})}})({canAutoUpdate(){return!0},apply({a:V,params:R}){let E=[];if(R.mode==="transforms"){const I=R.transforms.some(B=>(0,p.transformParamsNeedCentroid)(B.transform))?y.Grid.getBoundingSphere(V.data.grid).center:t.Vec3.unit;E=R.transforms.map(B=>({transform:(0,p.getTransformFromParams)(B.transform,I)}))}else if(R.mode==="periodicRange"&&y.Volume.isPeriodic(V.data)){const I=V.data.grid.cells.space.dimensions,B=y.Grid.getGridToCartesianTransform(V.data.grid),{min:w,max:O}=R.periodicRange,[F,L,U]=w,[q,N,k]=O,j=(0,t.Vec3)();for(let H=F;H<q;H++)for(let G=L;G<N;G++)for(let z=U;z<k;z++)t.Vec3.set(j,I[0]*H,I[1]*G,I[2]*z),t.Vec3.transformMat4(j,j,B),E.push({transform:t.Mat4.fromTranslation((0,t.Mat4)(),j)})}return E.length?new s.PluginStateObject.Volume.Data({...V.data,instances:E,_localPropertyData:Object.create(null)},{label:V.label,description:`${V.description} [Instanced]`}):V}});sr.VolumeInstances=x;const M=s.PluginStateTransform.BuiltIn({name:"custom-volume-properties",display:{name:"Custom Volume Properties"},isDecorator:!0,from:s.PluginStateObject.Volume.Data,to:s.PluginStateObject.Volume.Data,params:(V,R)=>R.customVolumeProperties.getParams(V?.data)})({apply({a:V,params:R},E){return c.Task.create("Custom Volume Props",async I=>(await D(V.data,E,I,R),new s.PluginStateObject.Volume.Data(V.data,{label:V.label,description:V.description})))},update({a:V,b:R,oldParams:E,newParams:I},B){return c.Task.create("Custom Volume Props",async w=>{R.data=V.data,R.label=V.label,R.description=V.description;for(const O of E.autoAttach){const F=B.customVolumeProperties.get(O);F&&V.data.customProperties.reference(F.descriptor,!1)}
4126return await D(V.data,B,w,I),_.StateTransformer.UpdateResult.Updated})},dispose({b:V}){V?.data.customProperties.dispose()}});sr.CustomVolumeProperties=M;async function D(V,R,E,I){const B={runtime:E,assetManager:R.managers.asset,errorContext:R.errorContext},{autoAttach:w,properties:O}=I;for(const F of Object.keys(O)){const L=R.customVolumeProperties.get(F),U=O[F];if(w.includes(F)||L.isHidden)try{await L.attach(B,V,U,!0)}catch(q){R.log.warn(`Error attaching volume prop '${F}': ${q}`)}else L.set(V,U)}}return sr}var yt={},NP={},oA={},Ud={},Vz;function Ew(){if(Vz)return Ud;Vz=1,Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.isMobileBrowser=e,Ud.is_iOS=t,Ud.isStandaloneHmd=r;function e(){if(typeof navigator>"u"||typeof window>"u")return!1;let n=!1;return(function(i){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(i)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(i.substr(0,4)))&&(n=!0)})(navigator.userAgent||navigator.vendor||window.opera),n}function t(){if(typeof navigator>"u"||typeof window>"u")return!1;const n=/iPad|iPhone|iPod/.test(navigator.userAgent),i=navigator.userAgent.includes("Macintosh"),c=navigator.maxTouchPoints>=4;return!window.MSStream&&(n||i&&c)}function r(){if(typeof navigator>"u"||!("xr"in navigator))return!1;const n=navigator.userAgent||"";return/OculusBrowser\//.test(n)||/PicoBrowser\//.test(n)}return Ud}var Ez;function ql(){return Ez||(Ez=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultQualityThresholds=e.VisualUpdateState=void 0,e.getStructureQuality=y,e.getQualityProps=g;const t=et(),r=Ke(),n=rt(),i=Qn(),c=sn(),o=Ew();var s;(function(a){function d(){return{updateTransform:!1,updateMatrix:!1,updateColor:!1,updateSize:!1,updateLocation:!1,createGeometry:!1,createNew:!1,info:{}}}a.create=d;function p(u){u.updateTransform=!1,u.updateMatrix=!1,u.updateColor=!1,u.updateSize=!1,u.updateLocation=!1,u.createGeometry=!1,u.createNew=!1}a.reset=p})(s||(e.VisualUpdateState=s={})),e.DefaultQualityThresholds={lowestElementCount:1e6,lowerElementCount:5e5,lowElementCount:1e5,mediumElementCount:2e4,highElementCount:2e3,coarseGrainedFactor:10,elementCountFactor:1};var h;(function(a){a[a.Lowest=0]="Lowest",a[a.Lower=1]="Lower",a[a.Low=2]="Low",a[a.Medium=3]="Medium",a[a.High=4]="High",a[a.Higher=5]="Higher",a[a.Highest=6]="Highe
4126st"})(h||(h={}));function f(a){switch(a){case"lowest":return h.Lowest;case"lower":return h.Lower;case"low":return h.Low;case"medium":return h.Medium;case"high":return h.High;case"higher":return h.Higher;case"highest":return h.Highest}}function y(a,d={}){const p={...e.DefaultQualityThresholds,...d};let u=a.elementCount*p.elementCountFactor;return(a.isCoarseGrained||a.isCoarse)&&(u*=p.coarseGrainedFactor),u>p.lowestElementCount?"lowest":u>p.lowerElementCount?"lower":u>p.lowElementCount?"low":u>p.mediumElementCount?"medium":u>p.highElementCount?"high":"higher"}function _(a){if(a.root.models.length===1){const d=i.ModelSymmetry.Provider.get(a.root.model);if(d&&d.spacegroup.name==="P 1"&&!n.SpacegroupCell.isZero(d.spacegroup.cell))return d.spacegroup.cell.volume}return n.Box3D.volume(a.root.boundary.box)}function g(a,d){let p=(0,t.defaults)(a.quality,"auto"),u=(0,t.defaults)(a.detail,1),m=(0,t.defaults)(a.radialSegments,12),v=(0,t.defaults)(a.linearSegments,8),b=(0,t.defaults)(a.resolution,2),P=(0,t.defaults)(a.imageResolution,1),C=(0,t.defaults)(a.probePositions,12),l=(0,t.defaults)(a.doubleSided,!0),S=0;if(p==="auto"){if(d instanceof r.Structure)p=y(d.root),S=_(d);else if(c.Volume.is(d)){const[T,A,x]=d.grid.cells.space.dimensions;S=T*A*x,p=S<1e7?"medium":"low"}}if(p!=="custom"&&p!=="auto"){let T=f(p);switch((0,o.isStandaloneHmd)()&&(T=Math.max(T-1,h.Lowest)),T){case h.Highest:u=3,m=36,v=18,b=.1,P=.01,C=72,l=!0;break;case h.Higher:u=3,m=28,v=14,b=.3,P=.05,C=48,l=!0;break;case h.High:u=2,m=20,v=10,b=.5,P=.1,C=36,l=!0;break;case h.Medium:u=1,m=12,v=8,b=.8,P=.2,C=24,l=!0;break;case h.Low:u=0,m=8,v=3,b=1.3,P=.4,C=24,l=!1;break;case h.Lower:u=0,m=4,v=2,b=3,P=.7,C=12,l=!1;break;case h.Lowest:u=0,m=2,v=1,b=8,P=1,C=12,l=!1;break}}return S>0&&(b=Math.max(b,S/3e8),b=Math.min(b,20)),a.transparentBackfaces==="off"&&(a.alpha!==void 0&&a.alpha<1||a.xrayShaded)&&(l=!1),{detail:u,radialSegments:m,linearSegments:v,resolution:b,imageResolution:P,probePositions:C,doubleSided:l}}})(oA)),oA}var Ni={},Bz;function cn(){if(Bz)return Ni;Bz=1,Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.MarkerActions=Ni.MarkerAction=void 0,Ni.setMarkerValue=c,Ni.applyMarkerActionAtPosition=o,Ni.applyMarkerAction=s,Ni.getMarkerInfo=h,Ni.getPartialMarkerAverage=f;const e=In(),t=Y_(),r=Gt();var n;(function(y){y[y.None=0]="None",y[y.Highlight=1]="Highlight",y[y.RemoveHighlight=2]="RemoveHighlight",y[y.Select=4]="Select",y[y.Deselect=8]="Deselect",y[y.Toggle=16]="Toggle",y[y.Clear=32]="Clear"})(n||(Ni.MarkerAction=n={}));var i;(function(y){y.is=t.BitFlags.has,y.All=n.Highlight|n.RemoveHighlight|n.Select|n.Deselect|n.Toggle|n.Clear,y.Highlighting=n.Highlight|n.RemoveHighlight|n.Clear,y.Selecting=n.Select|n.Deselect|n.Toggle|n.Clear;function _(g,a){return g===n.Highlight&&a===n.RemoveHighlight||g===n.RemoveHighlight&&a===n.Highlight||g===n.Select&&a===n.Deselect||g===n.Deselect&&a===n.Select||g===n.Toggle&&a===n.Toggle}y.isReverse=_})(i||(Ni.MarkerActions=i={}));function c(y,_,g){y.fill(_,0,g)}function o(y,_,g){switch(g){case n.Highlight:y[_]|=1;break;case n.RemoveHighlight:y[_]&=-2;break;case n.Select:y[_]|=2;break;case n.Deselect:y[_]&=-3;break;case n.Toggle:y[_]^=2;break;case n.Clear:y[_]=0;break}}function s(y,_,g){if(g===n.None)return!1;if(e.Interval.is(_)){const a=e.Interval.start(_),d=e.Interval.end(_),p=a+3>>2,u=p+(d-4*p>>2);if(u<=p){for(let l=a;l<d;++l)o(y,l,g);return!0}const m=new Uint32Array(y.buffer,0,y.buffer.byteLength>>2),v=a,b=Math.min(4*p,d),P=Math.max(a,4*u),C=d;switch(g){case n.Highlight:for(let l=p;l<u;++l)m[l]|=16843009;break;case n.RemoveHighlight:for(let l=p;l<u;++l)m[l]&=-16843010;break;case n.Select:for(let l=p;l<u;++l)m[l]|=33686018;break;case n.Deselect:for(let l=p;l<u;++l)m[l]&=-33686019;break;case n.Toggle:for(let l=p;l<u;++l)m[l]^=33686018;break;case n.Clear:for(let l=p;l<u;++l)m[l]=0;break;default:(0,r.assertUnreachable)(g)}for(let l=v;l<b;++l)o(y,l,g);for(let l=P;l<C;++l)o(y,l,g)}else switch(g){case n.Highlight:for(let a=0,d=_.length;a<d;++a)y[_[a]]|=1;break;case n.RemoveHighlight:for(let a=0,d=_.length;a<d;++a)y[_[a]]&=-2;break;case n.Select:for(let a=0,d=_.length;a<d;++a)y[_[a]]|=2;break;case n.Deselect:for(let a=0,d=_.length;a<d;++a)y[_[a]]&=-3;break;case n.Toggle:for(let a=0,d=_.length;a<d;++a)y[_[a]]^=2;break;case n.Clear:for(let a=0,d=_.length;a<d;++a)y[_[a]]=0;break;default:(0,r.assertUnreachable)(g)}return!0}function h(y,_){let g=-1,a=-1;switch(y){case n.Highlight:_===0||_===1?(g=1,a=1):_===2||_===3?(g=1,a=3):g=1;break;case n.RemoveHighlight:_===0||_===1?(g=0,a=0):(_===2||_===3)&&(g=1,a=2);break;
4126case n.Select:_===1||_===3?(g=1,a=3):_===0||_===2?(g=1,a=2):g=1;break;case n.Deselect:_===1||_===3?(g=1,a=1):(_===0||_===2)&&(g=0,a=0);break;case n.Toggle:_===1?(g=1,a=3):_===2?(g=0,a=0):_===3?(g=1,a=1):_===0&&(g=1,a=2);break;case n.Clear:g=0,a=0;break}return{average:g,status:a}}function f(y,_){switch(y){case n.Highlight:return .5;case n.RemoveHighlight:return _===0?0:_===2||_===3?.5:-1;case n.Select:return .5;case n.Deselect:return _===1||_===3?.5:_===0?0:-1;case n.Toggle:return _===-1?-1:.5;case n.Clear:return _===-1?-1:_===0?0:.5;case n.None:return-1;default:(0,r.assertUnreachable)(y)}}return Ni}var Gn={},Rz;function gt(){if(Rz)return Gn;Rz=1,Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.Loci=Gn.EmptyLoci=Gn.EveryLoci=void 0,Gn.isEveryLoci=g,Gn.isEmptyLoci=a,Gn.isDataLoci=d,Gn.areDataLociEqual=p,Gn.isDataLociEmpty=u,Gn.DataLoci=m;const e=Ke(),t=IT(),r=pn(),n=rt(),i=Ge(),c=jr(),o=Ne(),s=et(),h=Ki(),f=ui(),y=oc(),_=at();Gn.EveryLoci={kind:"every-loci"};function g(b){return!!b&&b.kind==="every-loci"}Gn.EmptyLoci={kind:"empty-loci"};function a(b){return!!b&&b.kind==="empty-loci"}function d(b){return!!b&&b.kind==="data-loci"}function p(b,P){if(!(0,s.shallowEqual)(b.data,P.data)||b.tag!==P.tag||b.elements.length!==P.elements.length)return!1;for(let C=0,l=b.elements.length;C<l;++C)if(!(0,s.shallowEqual)(b.elements[C],P.elements[C]))return!1;return!0}function u(b){return b.elements.length===0}function m(b,P,C,l,S){return{kind:"data-loci",tag:b,data:P,elements:C,getBoundingSphere:l,getLabel:S}}var v;return(function(b){const P=new h.BoundaryHelper("98");function C(w){const O=w.loci.map(F=>x(F)).filter(F=>!!F);P.reset();for(const F of O)P.includePositionRadius(F.center,F.radius);P.finishedIncludeStep();for(const F of O)P.radiusPositionRadius(F.center,F.radius);return P.getSphere()}b.getBundleBoundingSphere=C;function l(w,O){return g(w)&&g(O)||a(w)&&a(O)?!0:d(w)&&d(O)?p(w,O):c.Structure.isLoci(w)&&c.Structure.isLoci(O)?c.Structure.areLociEqual(w,O):e.StructureElement.Loci.is(w)&&e.StructureElement.Loci.is(O)?e.StructureElement.Loci.areEqual(w,O):t.Bond.isLoci(w)&&t.Bond.isLoci(O)?t.Bond.areLociEqual(w,O):r.Shape.isLoci(w)&&r.Shape.isLoci(O)?r.Shape.areLociEqual(w,O):r.ShapeGroup.isLoci(w)&&r.ShapeGroup.isLoci(O)?r.ShapeGroup.areLociEqual(w,O):y.Volume.isLoci(w)&&y.Volume.isLoci(O)?y.Volume.areLociEqual(w,O):y.Volume.Isosurface.isLoci(w)&&y.Volume.Isosurface.isLoci(O)?y.Volume.Isosurface.areLociEqual(w,O):y.Volume.Cell.isLoci(w)&&y.Volume.Cell.isLoci(O)?y.Volume.Cell.areLociEqual(w,O):y.Volume.Segment.isLoci(w)&&y.Volume.Segment.isLoci(O)?y.Volume.Segment.areLociEqual(w,O):!1}b.areEqual=l;function S(w){return!!w&&w.kind==="every-loci"}b.isEvery=S;function T(w){return g(w)?!1:a(w)?!0:d(w)?u(w):c.Structure.isLoci(w)?c.Structure.isLociEmpty(w):e.StructureElement.Loci.is(w)?e.StructureElement.Loci.isEmpty(w):t.Bond.isLoci(w)?t.Bond.isLociEmpty(w):r.Shape.isLoci(w)?r.Shape.isLociEmpty(w):r.ShapeGroup.isLoci(w)?r.ShapeGroup.isLociEmpty(w):y.Volume.isLoci(w)?y.Volume.isLociEmpty(w):y.Volume.Isosurface.isLoci(w)?y.Volume.Isosurface.isLociEmpty(w):y.Volume.Cell.isLoci(w)?y.Volume.Cell.isLociEmpty(w):y.Volume.Segment.isLoci(w)?y.Volume.Segment.isLociEmpty(w):!1}b.isEmpty=T;function A(w,O){return O instanceof c.Structure&&(e.StructureElement.Loci.is(w)?w=e.StructureElement.Loci.remap(w,O):c.Structure.isLoci(w)?w=c.Structure.remapLoci(w,O):t.Bond.isLoci(w)&&(w=t.Bond.remapLoci(w,O))),w}b.remap=A;function x(w,O){var F;if(!(w.kind==="every-loci"||w.kind==="empty-loci")){if(O||(O=(0,n.Sphere3D)()),w.kind==="structure-loci")return n.Sphere3D.copy(O,w.structure.boundary.sphere);if(w.kind==="element-loci")return e.StructureElement.Loci.getBoundingSphere(w,O);if(w.kind==="bond-loci")return t.Bond.getBoundingSphere(w,O);if(w.kind==="shape-loci")return n.Sphere3D.copy(O,w.shape.geometry.boundingSphere);if(w.kind==="group-loci")return r.ShapeGroup.getBoundingSphere(w,O);if(w.kind==="data-loci")return(F=w.getBoundingSphere)===null||F===void 0?void 0:F.call(w,O);if(w.kind==="volume-loci")return y.Volume.getBoundingSphere(w.volume,w.instances,O);if(w.kind==="isosurface-loci")return y.Volume.Isosurface.getBoundingSphere(w.volume,w.isoValue,w.instances,O);if(w.kind==="cell-loci")return y.Volume.Cell.getBoundingSphere(w.volume,w.elements,O);if(w.kind==="segment-loci")return y.Volume.Segment.getBoundingSphere(w.volume,w.elements,O)}}b.getBoundingSphere=x;const M=n.Sphere3D.zero();function D(w,O){const F=x(w,M);return F?i.Vec3.copy(O||(0,i.Vec3)(),F.center):void 0}b.getCenter=D;
4126function V(w){if(!(w.kind==="every-loci"||w.kind==="empty-loci")){if(w.kind==="structure-loci")return e.StructureElement.Loci.getPrincipalAxes(c.Structure.toStructureElementLoci(w.structure));if(w.kind==="element-loci")return e.StructureElement.Loci.getPrincipalAxes(w);if(w.kind==="bond-loci")return;if(w.kind==="shape-loci")return;if(w.kind==="group-loci")return;if(w.kind==="data-loci")return;if(w.kind==="volume-loci")return;if(w.kind==="isosurface-loci")return;if(w.kind==="cell-loci")return;if(w.kind==="segment-loci")return}}b.getPrincipalAxes=V;const R={element:w=>w,residue:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeResidues(w,!0):w,chain:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeChains(w):w,entity:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeEntities(w):w,model:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeModels(w):w,operator:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToWholeOperators(w):w,structure:w=>e.StructureElement.Loci.is(w)?c.Structure.toStructureElementLoci(w.structure):r.ShapeGroup.isLoci(w)?r.Shape.Loci(w.shape):y.Volume.Cell.isLoci(w)||y.Volume.Isosurface.isLoci(w)?y.Volume.Loci(w.volume,_.Interval.ofLength(w.volume.instances.length)):w,elementInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(w):w,residueInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(e.StructureElement.Loci.extendToWholeResidues(w,!0)):w,chainInstances:w=>e.StructureElement.Loci.is(w)?e.StructureElement.Loci.extendToAllInstances(e.StructureElement.Loci.extendToWholeChains(w)):w};b.GranularityOptions=o.ParamDefinition.objectToOptions(R,w=>{switch(w){case"element":return"Atom/Coarse Element";case"elementInstances":return["Atom/Coarse Element Instances","With Symmetry"];case"structure":return"Structure/Shape";default:return w.indexOf("Instances")?[(0,f.stringToWords)(w),"With Symmetry"]:(0,f.stringToWords)(w)}});function E(w){return w.replace("Instances","")}b.simpleGranularity=E;function I(w,O){return R[O](w)}b.applyGranularity=I;function B(w,O,F=!1){return(O!=="element"||F)&&t.Bond.isLoci(w)&&(w=t.Bond.toStructureElementLoci(w)),c.Structure.isLoci(w)&&(w=c.Structure.toStructureElementLoci(w.structure)),e.StructureElement.Loci.is(w)&&(w=e.StructureElement.Loci.remap(w,w.structure.root)),O&&(w=I(w,O)),w}b.normalize=B})(v||(Gn.Loci=v={})),Gn}var fv={},Oz;function _n(){if(Oz)return fv;Oz=1,Object.defineProperty(fv,"__esModule",{value:!0}),fv.PickingId=void 0;var e;return(function(t){t.Null=16777214;function r(n,i){return n.objectId===i.objectId&&n.instanceId===i.instanceId&&n.groupId===i.groupId}t.areSame=r})(e||(fv.PickingId=e={})),fv}var mv={},wa={},vi={},pv={},kz;function jae(){if(kz)return pv;kz=1,Object.defineProperty(pv,"__esModule",{value:!0}),pv.toHalfFloat=n,pv.fromHalfFloat=i;const e=ir(),t=r();function r(){const c=new ArrayBuffer(4),o=new Float32Array(c),s=new Uint32Array(c),h=new Uint32Array(512),f=new Uint32Array(512);for(let a=0;a<256;++a){const d=a-127;d<-27?(h[a]=0,h[a|256]=32768,f[a]=24,f[a|256]=24):d<-14?(h[a]=1024>>-d-14,h[a|256]=1024>>-d-14|32768,f[a]=-d-1,f[a|256]=-d-1):d<=15?(h[a]=d+15<<10,h[a|256]=d+15<<10|32768,f[a]=13,f[a|256]=13):d<128?(h[a]=31744,h[a|256]=64512,f[a]=24,f[a|256]=24):(h[a]=31744,h[a|256]=64512,f[a]=13,f[a|256]=13)}const y=new Uint32Array(2048),_=new Uint32Array(64),g=new Uint32Array(64);for(let a=1;a<1024;++a){let d=a<<13,p=0;for(;(d&8388608)===0;)d<<=1,p-=8388608;d&=-8388609,p+=947912704,y[a]=d|p}for(let a=1024;a<2048;++a)y[a]=939524096+(a-1024<<13);for(let a=1;a<31;++a)_[a]=a<<23;_[31]=1199570944,_[32]=2147483648;for(let a=33;a<63;++a)_[a]=2147483648+(a-32<<23);_[63]=3347054592;for(let a=1;a<64;++a)a!==32&&(g[a]=1024);return{floatView:o,uint32View:s,baseTable:h,shiftTable:f,mantissaTable:y,exponentTable:_,offsetTable:g}}function n(c){c=(0,e.clamp)(c,-65504,65504),t.floatView[0]=c;const o=t.uint32View[0],s=o>>23&511;return t.baseTable[s]+((o&8388607)>>t.shiftTable[s])}function i(c){const o=c>>10;return t.uint32View[0]=t.mantissaTable[t.offsetTable[o]+(c&1023)]+t.exponentTable[o],t.floatView[0]}return pv}var Fz;function $f(){if(Fz)return vi;Fz=1,Object.defineProperty(vi,"__esModule",{value:!0}
4126),vi.eachVolumeLoci=v,vi.createVolumeCellLocationIterator=b,vi.createVolumeSliceCellLocationIterator=P,vi.getVolumeTexture2dLayout=C,vi.createVolumeTexture2d=l,vi.createVolumeTexture3d=S,vi.createSegmentTexture2d=T,vi.createWrappedTensor=A,vi.createWrappedVolume=x,vi.createPeriodicVolume=M;const e=sn(),t=rn(),r=wt(),n=nc(),i=Hi(),c=rt(),o=jae(),s=ir(),h=zt(),f=In(),y=nn(),_=Xr(),g=r.Vec3.set,a=r.Vec3.normalize,d=r.Vec3.sub,p=r.Vec3.addScalar,u=r.Vec3.scale,m=r.Vec3.toArray;function v(D,V,R,E){let I=!1;const B=V.grid.cells.data.length;if(e.Volume.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(f.Interval.is(D.instances)){const w=f.Interval.start(D.instances)*B,O=f.Interval.end(D.instances)*B;E(f.Interval.ofBounds(w,O))&&(I=!0)}else for(let w=0,O=D.instances.length;w<O;++w){const F=D.instances[w]*B;E(f.Interval.ofBounds(F,F+B))&&(I=!0)}}else if(e.Volume.Isosurface.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(R?.isoValue){if(!e.Volume.IsoValue.areSame(D.isoValue,R.isoValue,V.grid.stats))return!1;if(f.Interval.is(D.instances)){const w=f.Interval.start(D.instances)*B,O=f.Interval.end(D.instances)*B;E(f.Interval.ofBounds(w,O))&&(I=!0)}else for(let w=0,O=D.instances.length;w<O;++w){const F=D.instances[w]*B;E(f.Interval.ofBounds(F,F+B))&&(I=!0)}}else{const{stats:w,cells:{data:O}}=V.grid,F=w.sigma,L=e.Volume.IsoValue.toAbsolute(D.isoValue,w).absoluteValue;for(let U=0,q=O.length;U<q;++U)(0,t.equalEps)(L,O[U],F)&&y.OrderedSet.forEach(D.instances,N=>{const k=N*B;E(f.Interval.ofSingleton(k+U))&&(I=!0)})}}else if(e.Volume.Cell.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;for(const{indices:w,instances:O}of D.elements)f.Interval.is(w)?y.OrderedSet.forEach(O,F=>{const L=F*B;E(f.Interval.offset(w,L))&&(I=!0)}):y.OrderedSet.forEach(w,F=>{y.OrderedSet.forEach(O,L=>{const U=L*B;E(f.Interval.ofSingleton(U+F))&&(I=!0)})})}else if(e.Volume.Segment.isLoci(D)){if(!e.Volume.areEquivalent(D.volume,V))return!1;if(R?.segments)for(const{segments:w,instances:O}of D.elements)y.OrderedSet.areIntersecting(w,R.segments)&&y.OrderedSet.forEach(O,F=>{const L=F*B;E(f.Interval.ofBounds(L,L+B))&&(I=!0)});else{const w=e.Volume.Segmentation.get(V);if(w){const O=new Set;for(const{segments:F,instances:L}of D.elements){for(let N=0,k=y.OrderedSet.size(F);N<k;N++){const j=y.OrderedSet.getAt(F,N);i.SetUtils.add(O,w.segments.get(j))}const U=Array.from(O.values()),q=V.grid.cells.data;for(let N=0,k=q.length;N<k;++N)if(U.includes(q[N]))for(let j=0,H=y.OrderedSet.size(L);j<H;j++){const G=j*B;E(f.Interval.ofSingleton(N+G))&&(I=!0)}}}}}return I}function b(D,V){const[R,E,I]=D.grid.cells.space.dimensions,B=R*E*I,w=D.instances.length,O=e.Volume.Cell.Location(D),F=(L,U)=>(O.cell=L,O.instance=U,O);return(0,h.LocationIterator)(B,w,1,F)}function P(D,V,R){const E=R.meta.mapping;if(!E)return b(D);const I=E.cell.length,B=e.Volume.isPeriodic(D)?1:D.instances.length,w=e.Volume.Cell.Location(D),O=(L,U)=>(w.cell=L,w.instance=U,w),F=e.Volume.isPeriodic(D);return(0,h.LocationIterator)(I,B,1,O,F)}function C(D,V=0){const R=D[0]*D[1]*D[2],E=Math.sqrt(R),I=Math.pow(2,Math.ceil(Math.log(E)/Math.log(2)));let B=D[0]+V,w=D[1]+V,O=1,F=B;return I<B*D[2]?(F=Math.floor(I/B),O=Math.ceil(D[2]/F),B*=F,w*=O):B*=D[2],{width:B,height:w,columns:F,rows:O,powerOfTwoSize:w<I?I:I*2}}function l(D,V,R=0,E="byte"){const{cells:{space:I,data:B},stats:{max:w,min:O}}=D.grid,F=I.dimensions,{dataOffset:L}=I,{width:U,height:q}=C(F,R),N=V==="data"?1:4,k=E==="byte"?new Uint8Array(U*q*N):E==="halfFloat"?new Uint16Array(U*q*N):new Float32Array(U*q*N),j={array:k,width:U,height:q},H=w-O,[G,z,W]=F,X=G+R,Y=z+R,K=(0,r.Vec3)(),Q=(0,r.Vec3)(),J=G-1,ae=z-1,te=W-1;for(let ne=0;ne<W;++ne)for(let $=0;$<z;++$)for(let ie=0;ie<G;++ie){const Z=Math.floor(ne*X%U/X),re=Math.floor(ne*X/U),oe=Z*X+ie,ce=N*(re*Y*U+$*U+oe),ue=L(ie,$,ne);let pe;if(E==="byte"?pe=Math.round((B[ue]-O)/H*255):E==="halfFloat"?pe=(0,o.toHalfFloat)((B[ue]-O)/H):pe=(B[ue]-O)/H,V==="data")k[ce]=pe;else{if(V==="groups")if(E==="halfFloat"){let he=(0,s.clamp)(Math.round(ue),0,16777215)+1;k[ce+2]=(0,o.toHalfFloat)(he%256),he=Math.floor(he/256),k[ce+1]=(0,o.toHalfFloat)(he%256),he=Math.floor(he/256),k[ce]=(0,o.toHalfFloat)(he%256)}else(0,n.packIntToRGBArray)(ue,k,ce);else g(K,B[L(Math.max(0,ie-1),$,ne)],B[L(ie,Math.max(0,$-1),ne)],B[L(ie,$,Math.max(0,ne-1))]),g(Q,B[L(Math.min(J,ie+1),$,ne)],B[L(ie,Math.min(ae,$+1),ne)],B[L(ie,$,Math.min(te,ne+1))]),a(K,d(K,K,Q)),p(K,u(K,K,.5),.5),E==="byte"?m(u(K,K,255),k,ce):E==="halfFloat"?(k[ce]=(0,o.toHalfFloat)(K[0]),k[ce+1]=(0,o.toHalfFloat)(K[1]),k[ce+2]=(0,o.toHalfFloat)(K[2])):m(K,k,ce);k[ce+3]=pe}}return j}function S(D,V="byte"){const{cells:{space:R,data:E},stats:{max:I,min:B}}=D.grid,[w,O,F]=R.dimensions,{dataOffset:L}=R,U=V==="byte"?new Uint8Array(w*O*F*4):V==="halfFloat"?new Uint16Array(w*O*F*4):new Float32Array(w*O*F*4),q={array:U,width:w,height:O,depth:F},N=I-B,k=(0,r.Vec3)(),j=(0,r.Vec3)(),H=w-1,G=O-1,z=F-1;let W=0;for(let X=0;X<F;++X)for(let Y=0;Y<O;++Y)for(let K=0;K<w;++K){const Q=L(K,Y,X);g(k,E[L(Math.max(0,K-1),Y,X)],E[L(K,Math.max(0,Y-1),X)],E[L(K,Y,Math.max(0,X-1))]),g(j,E[L(Math.min(H,K+1),Y,X)],E[L(K,Math.min(G,Y+1),X
4126)],E[L(K,Y,Math.min(z,X+1))]),a(k,d(k,k,j)),p(k,u(k,k,.5),.5),V==="byte"?(m(u(k,k,255),U,W),U[W+3]=Math.round((E[Q]-B)/N*255)):V==="halfFloat"?(U[W]=(0,o.toHalfFloat)(k[0]),U[W+1]=(0,o.toHalfFloat)(k[1]),U[W+2]=(0,o.toHalfFloat)(k[2]),U[W+3]=(0,o.toHalfFloat)((E[Q]-B)/N)):(m(k,U,W),U[W+3]=(E[Q]-B)/N),W+=4}return q}function T(D,V,R,E=0){const I=D.grid.cells.data,B=c.Box3D.size((0,r.Vec3)(),R),w=D.grid.cells.space.dataOffset,{width:O,height:F}=C(B,E),L=1,U=new Uint8Array(O*F*L),q={array:U,width:O,height:F},[N,k,j]=B,H=N-1,G=k-1,z=j-1,W=N+E,X=k+E,[Y,K,Q]=R.min,[J,ae,te]=R.max;for(let ne=0;ne<j;++ne)for(let $=0;$<k;++$)for(let ie=0;ie<N;++ie){const Z=Math.floor(ne*W%O/W),re=Math.floor(ne*W/O),oe=Z*W+ie,ce=L*(re*X*O+$*O+oe),ue=V.includes(I[w(ie+Y,$+K,ne+Q)])?255:0,pe=V.includes(I[w(Math.min(H+J,ie+1+Y),$+K,ne+Q)])?255:0,he=V.includes(I[w(Math.max(0,ie-1+Y),$+K,ne+Q)])?255:0,fe=V.includes(I[w(ie+Y,Math.min(G+ae,$+1+K),ne+Q)])?255:0,de=V.includes(I[w(ie+Y,Math.max(0,$-1+K),ne+Q)])?255:0,ge=V.includes(I[w(ie+Y,$+K,Math.min(z+te,ne+1+Q))])?255:0,Ce=V.includes(I[w(ie+Y,$+K,Math.max(0,ne-1+Q))])?255:0;U[ce]=Math.round((ue+ue+pe+he+fe+de+ge+Ce)/8)}return q}function A(D){const{space:V,data:R}=D,{get:E,set:I,add:B,dataOffset:w}=V,[O,F,L]=V.dimensions,U=r.Vec3.create(O+1,F+1,L+1),H={...V,dimensions:U,get:(G,z,W,X)=>E(G,z%O,W%F,X%L),set:(G,z,W,X,Y)=>I(G,z%O,W%F,X%L,Y),add:(G,z,W,X,Y)=>B(G,z%O,W%F,X%L,Y),dataOffset:(G,z,W)=>w(G%O,z%F,W%L)};return{data:R,space:H}}function x(D){const{grid:V}=D,R=e.Grid.getGridToCartesianTransform(V),E={...V,transform:{kind:"matrix",matrix:R},cells:A(V.cells)};return{...D,grid:E,parent:D}}function M(D,V,R){const{grid:E}=D,{space:I}=E.cells,{get:B,set:w,add:O,dataOffset:F}=I,[L,U,q]=I.dimensions,N=r.Vec3.sub((0,r.Vec3)(),R,V),k=r.Vec3.create(L*N[0],U*N[1],q*N[2]),W={...I,dimensions:k,get:(ae,te,ne,$)=>B(ae,te%L,ne%U,$%q),set:(ae,te,ne,$,ie)=>w(ae,te%L,ne%U,$%q,ie),add:(ae,te,ne,$,ie)=>O(ae,te%L,ne%U,$%q,ie),dataOffset:(ae,te,ne)=>F(ae%L,te%U,ne%q)},X=e.Grid.getGridToCartesianTransform(D.grid),Y=_.Mat4.getScaling((0,r.Vec3)(),X);r.Vec3.mul(Y,Y,I.dimensions);const K=r.Vec3.mul((0,r.Vec3)(),V,Y);_.Mat4.setTranslation(X,K);const J={...E,transform:{kind:"matrix",matrix:X},cells:{...E.cells,space:W}};return{...D,grid:J,parent:D,instances:[{transform:_.Mat4.identity()}]}}return vi}var Lz;function Bw(){if(Lz)return wa;Lz=1,Object.defineProperty(wa,"__esModule",{value:!0}),wa.calcMeshColorSmoothing=o,wa.getTrilinearlyInterpolated=s,wa.applyMeshColorSmoothing=f,wa.applyMeshOverpaintSmoothing=_,wa.applyMeshTransparencySmoothing=a,wa.applyMeshEmissiveSmoothing=p,wa.applyMeshSubstanceSmoothing=m;const e=kr(),t=rt(),r=ir(),n=Ge(),i=$f(),c=et();function o(v,b,P,C){const{colorType:l,vertexCount:S,groupCount:T,positionBuffer:A,instanceBuffer:x,transformBuffer:M,groupBuffer:D,itemSize:V}=v,{resolution:R,stride:E}=b,I=l.endsWith("Instance"),B=t.Box3D.fromSphere3D((0,t.Box3D)(),I?v.boundingSphere:v.invariantBoundingSphere),w=1+R,O=t.Box3D.expand((0,t.Box3D)(),B,n.Vec3.create(w,w,w)),F=1/R,L=t.Box3D.scale((0,t.Box3D)(),O,F),U=t.Box3D.size((0,n.Vec3)(),L);n.Vec3.ceil(U,U),n.Vec3.add(U,U,n.Vec3.create(2,2,2));const{min:q}=O,[N,k]=U,{width:j,height:H}=(0,i.getVolumeTexture2dLayout)(U),G=new Float32Array(j*H*V),z=new Float32Array(j*H),W=new Uint8Array(j*H*V),X={array:W,width:j,height:H,filter:"linear"},Y=I?v.instanceCount:1,K=v.colorData.array;function Q(oe,ce,ue){const pe=Math.floor(ue*N%j/N),he=Math.floor(ue*N/j),fe=pe*N+oe;return V*(he*k*j+ce*j+fe)}const J=2,[ae,te,ne]=U,$=(0,n.Vec3)();for(let oe=0;oe<Y;++oe){const ce=P&&I?x[oe]:oe;for(let ue=0;ue<S;ue+=E){n.Vec3.fromArray($,A,ue*3),I&&n.Vec3.transformMat4Offset($,$,M,0,0,oe*16),n.Vec3.sub($,$,q),n.Vec3.scale($,$,F);const[pe,he,fe]=$,de=Math.floor(pe),ge=Math.floor(he),Ce=Math.floor(fe),ve=(ce*T+D[ue])*V,le=Math.max(0,de-J),me=Math.max(0,ge-J),ee=Math.max(0,Ce-J),se=Math.min(ae,de+J+2),ye=Math.min(te,ge+J+2),Se=Math.min(ne,Ce+J+2);for(let Ae=le;Ae<se;++Ae){const _e=Ae-pe;for(let be=me;be<ye;++be){const xe=be-he;for(let we=ee;we<Se;++we){const Be=we-fe,Me=Math.sqrt(_e*_e+xe*xe+Be*Be);if(Me>J)continue;const Re=J-Me,Te=Q(Ae,be,we);for(let Ve=0;Ve<V;++Ve)G[Te+Ve]+=K[ve+Ve]*Re;z[Te/V]+=Re}}}}}for(let oe=0,ce=z.length;oe<ce;++oe){const ue=oe*V,pe=z[oe];for(let he=0;he<V;++he)W[ue+he]=Math.round(G[ue+he]/pe)}const ie=n.Vec2.create(j,H),Z=n.Vec4.create(q[0],q[1],q[2],F),re=I?"volumeInstance":"volume";if(P){if(!C){const oe=V===4?"rgba":V===3?"rgb":"alpha";C=P.resources.texture("image-uint8",oe,"ubyte","linear")}return C.load(X),{kind:"volume",texture:C,gridTexDim:ie,gridDim:U,gridTransform:Z,type:re}}else{const oe=s({vertexCount:S,instanceCount:Y,transformBuffer:M,positionBuffer:A,colorType:re,grid:W,gridDim:U,gridTexDim:ie,gridTransform:Z,vertexStride:3,colorStride:V,outputStride:V});
4126return{kind:"vertex",texture:oe,texDim:n.Vec2.create(oe.width,oe.height),type:I?"vertexInstance":"vertex"}}}function s(v){const{vertexCount:b,positionBuffer:P,transformBuffer:C,grid:l,gridDim:S,gridTexDim:T,gridTransform:A,vertexStride:x,colorStride:M}=v,D=v.itemOffset||0,V=v.outputStride;if(V+D>M)throw new Error("outputStride + itemOffset must NOT be larger than colorStride");const R=v.colorType.endsWith("Instance"),E=R?v.instanceCount:1,I=(0,e.createTextureImage)(Math.max(1,E*b),V,Uint8Array),{array:B}=I,[w,O]=S,F=T[0],L=n.Vec3.fromArray((0,n.Vec3)(),A,0),U=A[3];function q(G,z,W){const X=Math.floor(W*w%F/w),Y=Math.floor(W*w/F),K=X*w+G;return M*(Y*O*F+z*F+K)}const N=(0,n.Vec3)(),k=(0,n.Vec3)(),j=(0,n.Vec3)(),H=(0,n.Vec3)();for(let G=0;G<E;++G)for(let z=0;z<b;++z){n.Vec3.fromArray(N,P,z*x),R&&n.Vec3.transformMat4Offset(N,N,C,0,0,G*16),n.Vec3.sub(N,N,L),n.Vec3.scale(N,N,U),n.Vec3.floor(k,N),n.Vec3.ceil(j,N),n.Vec3.sub(H,N,k),n.Vec3.sub(N,j,k),n.Vec3.div(H,H,N);const[W,X,Y]=k,[K,Q,J]=j,[ae,te,ne]=H,$=q(W,X,Y)+D,ie=q(K,X,Y)+D,Z=q(W,X,J)+D,re=q(K,X,J)+D,oe=q(W,Q,Y)+D,ce=q(K,Q,Y)+D,ue=q(W,Q,J)+D,pe=q(K,Q,J)+D,he=(G*b+z)*V;for(let fe=0;fe<V;++fe){const de=l[$+fe],ge=l[ie+fe],Ce=l[Z+fe],ve=l[re+fe],le=l[oe+fe],me=l[ce+fe],ee=l[ue+fe],se=l[pe+fe],ye=(0,r.lerp)(de,ge,ae),Se=(0,r.lerp)(Ce,ve,ae),Ae=(0,r.lerp)(le,me,ae),_e=(0,r.lerp)(ee,se,ae),be=(0,r.lerp)(ye,Ae,te),xe=(0,r.lerp)(Se,_e,te);B[he+fe]=(0,r.lerp)(be,xe,ne)}}return I}function h(v){return v==="group"||v==="groupInstance"}function f(v,b,P,C){if(!h(v.dColorType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tColor.ref.value,colorType:v.dColorType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:3},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dColorType,l.type),c.ValueCell.update(v.tColorGrid,l.texture),c.ValueCell.update(v.uColorTexDim,l.gridTexDim),c.ValueCell.update(v.uColorGridDim,l.gridDim),c.ValueCell.update(v.uColorGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dColorType,l.type),c.ValueCell.update(v.tColor,l.texture),c.ValueCell.update(v.uColorTexDim,l.texDim))}function y(v){return v==="groupInstance"}function _(v,b,P,C){if(!y(v.dOverpaintType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tOverpaint.ref.value,colorType:v.dOverpaintType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:4},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dOverpaintType,l.type),c.ValueCell.update(v.tOverpaintGrid,l.texture),c.ValueCell.update(v.uOverpaintTexDim,l.gridTexDim),c.ValueCell.update(v.uOverpaintGridDim,l.gridDim),c.ValueCell.update(v.uOverpaintGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dOverpaintType,l.type),c.ValueCell.update(v.tOverpaint,l.texture),c.ValueCell.update(v.uOverpaintTexDim,l.texDim))}function g(v){return v==="groupInstance"}function a(v,b,P,C){if(!g(v.dTransparencyType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tTransparency.ref.value,colorType:v.dTransparencyType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:1},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dTransparencyType,l.type),c.ValueCell.update(v.tTransparencyGri
4126d,l.texture),c.ValueCell.update(v.uTransparencyTexDim,l.gridTexDim),c.ValueCell.update(v.uTransparencyGridDim,l.gridDim),c.ValueCell.update(v.uTransparencyGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dTransparencyType,l.type),c.ValueCell.update(v.tTransparency,l.texture),c.ValueCell.update(v.uTransparencyTexDim,l.texDim))}function d(v){return v==="groupInstance"}function p(v,b,P,C){if(!d(v.dEmissiveType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tEmissive.ref.value,colorType:v.dEmissiveType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:1},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dEmissiveType,l.type),c.ValueCell.update(v.tEmissiveGrid,l.texture),c.ValueCell.update(v.uEmissiveTexDim,l.gridTexDim),c.ValueCell.update(v.uEmissiveGridDim,l.gridDim),c.ValueCell.update(v.uEmissiveGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dEmissiveType,l.type),c.ValueCell.update(v.tEmissive,l.texture),c.ValueCell.update(v.uEmissiveTexDim,l.texDim))}function u(v){return v==="groupInstance"}function m(v,b,P,C){if(!u(v.dSubstanceType.ref.value))return;const l=o({vertexCount:v.uVertexCount.ref.value,instanceCount:v.uInstanceCount.ref.value,groupCount:v.uGroupCount.ref.value,transformBuffer:v.aTransform.ref.value,instanceBuffer:v.aInstance.ref.value,positionBuffer:v.aPosition.ref.value,groupBuffer:v.aGroup.ref.value,colorData:v.tSubstance.ref.value,colorType:v.dSubstanceType.ref.value,boundingSphere:v.boundingSphere.ref.value,invariantBoundingSphere:v.invariantBoundingSphere.ref.value,itemSize:4},b,P,C);l.kind==="volume"?(c.ValueCell.updateIfChanged(v.dSubstanceType,l.type),c.ValueCell.update(v.tSubstanceGrid,l.texture),c.ValueCell.update(v.uSubstanceTexDim,l.gridTexDim),c.ValueCell.update(v.uSubstanceGridDim,l.gridDim),c.ValueCell.update(v.uSubstanceGridTransform,l.gridTransform)):l.kind==="vertex"&&(c.ValueCell.updateIfChanged(v.dSubstanceType,l.type),c.ValueCell.update(v.tSubstance,l.texture),c.ValueCell.update(v.uSubstanceTexDim,l.texDim))}return wa}var sA={},hv={},Nz;function Gae(){return Nz||(Nz=1,Object.defineProperty(hv,"__esModule",{value:!0}),hv.normalize_frag=void 0,hv.normalize_frag=` 4127precision highp float; 4128precision highp sampler2D; 4129 4130uniform sampler2D tColor; 4131uniform sampler2D tCount; 4132uniform vec2 uTexSize; 4133 4134void main(void) { 4135 vec2 coords = gl_FragCoord.xy / uTexSize; 4136 vec4 color = texture2D(tColor, coords); 4137 float count = texture2D(tCount, coords).r; 4138 4139 gl_FragColor = color / count; 4140} 4141`),hv}var gv={},qz;function zae(){return qz||(qz=1,Object.defineProperty(gv,"__esModule",{value:!0}),gv.accumulate_frag=void 0,gv.accumulate_frag=` 4142precision highp float; 4143 4144varying vec3 vPosition; 4145varying vec4 vColor; 4146 4147uniform float uCurrentSlice; 4148uniform float uCurrentX; 4149uniform float uCurrentY; 4150uniform float uResolution; 4151 4152const float p = 2.0; 4153 4154void main() { 4155 vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5; 4156 vec3 fragPos = vec3(v.x, v.y, uCurrentSlice); 4157 float dist = distance(fragPos, vPosition); 4158 if (dist > p) discard; 4159 4160 float f = p - dist; 4161 gl_FragColor = vColor * f; 4162 gl_FragData[1] = vec4(f); 4163} 4164`),gv}var yv={},Uz;function Hae(){return Uz||(Uz=1,Object.defineProperty(yv,"__esModule",{value:!0}),yv.accumulate_vert=void 0,yv.accumulate_vert=` 4165precision highp float; 4166 4167#include common 4168#include read_from_texture 4169 4170uniform int uGroupCount; 4171 4172attribute float aSample; 4173#define SampleID int(aSample) 4174 4175attribute mat4 aTransform; 4176attribute float aInstance; 4177 4178uniform vec2 uGeoTexDim; 4179uniform sampler2D tPosition; 4180uniform sampler2D tGroup; 4181 4182uniform vec2 uColorTexDim; 4183uniform sampler2D tColor; 4184 4185varying vec3 vPosition; 4186varying vec4 vColor; 4187 4188uniform vec3 uBboxSize; 4189uniform vec3 uBboxMin; 4190uniform float uResolution; 4191 4192void main() { 4193 vec3 position = readFromTexture(tPosition, SampleID, uGeoTexDim).xyz; 4194 float group = unpackRGBToInt(readFromTexture(tGroup, SampleID, uGeoTexDim).rgb); 4195
4196 position = (aTransform * vec4(position, 1.0)).xyz; 4197 gl_PointSize = 7.0; 4198 vPosition = (position - uBboxMin) / uResolution; 4199 gl_Position = vec4(((position - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0); 4200 4201 #if defined(dColorType_group) 4202 vColor = readFromTexture(tColor, group, uColorTexDim); 4203 #elif defined(dColorType_groupInstance) 4204 vColor = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim); 4205 #endif 4206} 4207`),yv}var jz;function jQ(){return jz||(jz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorNormalizeSchema=e.ColorAccumulateSchema=void 0,e.calcTextureMeshColorSmoothing=M,e.applyTextureMeshColorSmoothing=I,e.applyTextureMeshOverpaintSmoothing=w,e.applyTextureMeshTransparencySmoothing=F,e.applyTextureMeshEmissiveSmoothing=U,e.applyTextureMeshSubstanceSmoothing=N;const t=et(),r=Jt(),n=bn(),i=Kt(),c=Zt(),o=Yt(),s=Gr(),h=Gae(),f=Mr(),y=Ge(),_=rt(),g=zae(),a=Hae(),d=on(),p=Ct();e.ColorAccumulateSchema={drawCount:(0,o.ValueSpec)("number"),instanceCount:(0,o.ValueSpec)("number"),stride:(0,o.ValueSpec)("number"),uGroupCount:(0,o.UniformSpec)("i","material"),aTransform:(0,o.AttributeSpec)("float32",16,1),aInstance:(0,o.AttributeSpec)("float32",1,1),aSample:(0,o.AttributeSpec)("float32",1,0),uGeoTexDim:(0,o.UniformSpec)("v2","material"),tPosition:(0,o.TextureSpec)("texture","rgba","float","nearest","material"),tGroup:(0,o.TextureSpec)("texture","rgba","float","nearest","material"),uColorTexDim:(0,o.UniformSpec)("v2","material"),tColor:(0,o.TextureSpec)("texture","rgba","ubyte","nearest","material"),dColorType:(0,o.DefineSpec)("string",["group","groupInstance","vertex","vertexInstance"]),uCurrentSlice:(0,o.UniformSpec)("f"),uCurrentX:(0,o.UniformSpec)("f"),uCurrentY:(0,o.UniformSpec)("f"),uBboxMin:(0,o.UniformSpec)("v3","material"),uBboxSize:(0,o.UniformSpec)("v3","material"),uResolution:(0,o.UniformSpec)("f","material")};const u="color-accumulate",m="color-count";function v(k,j){const H=new Float32Array(k);for(let G=0;G<k;++G)H[G]=G*j;return H}function b(k,j,H,G,z){if(k.namedComputeRenderables[u]){const W=y.Vec3.sub((0,y.Vec3)(),H.max,H.min),X=k.namedComputeRenderables[u].values,Y=Math.round(j.vertexCount/z);(Y>X.drawCount.ref.value||z!==X.stride.ref.value)&&t.ValueCell.update(X.aSample,v(Y,z)),t.ValueCell.updateIfChanged(X.drawCount,Y),t.ValueCell.updateIfChanged(X.instanceCount,j.instanceCount),t.ValueCell.updateIfChanged(X.stride,z),t.ValueCell.updateIfChanged(X.uGroupCount,j.groupCount),t.ValueCell.update(X.aTransform,j.transformBuffer),t.ValueCell.update(X.aInstance,j.instanceBuffer),t.ValueCell.update(X.uGeoTexDim,y.Vec2.set(X.uGeoTexDim.ref.value,j.positionTexture.getWidth(),j.positionTexture.getHeight())),t.ValueCell.update(X.tPosition,j.positionTexture),t.ValueCell.update(X.tGroup,j.groupTexture),t.ValueCell.update(X.uColorTexDim,y.Vec2.set(X.uColorTexDim.ref.value,j.colorData.getWidth(),j.colorData.getHeight())),t.ValueCell.update(X.tColor,j.colorData),t.ValueCell.updateIfChanged(X.dColorType,j.colorType),t.ValueCell.updateIfChanged(X.uCurrentSlice,0),t.ValueCell.updateIfChanged(X.uCurrentX,0),t.ValueCell.updateIfChanged(X.uCurrentY,0),t.ValueCell.update(X.uBboxMin,H.min),t.ValueCell.update(X.uBboxSize,W),t.ValueCell.updateIfChanged(X.uResolution,G),k.namedComputeRenderables[u].update()}else k.namedComputeRenderables[u]=P(k,j,H,G,z);return k.namedComputeRenderables[u]}function P(k,j,H,G,z){const W=y.Vec3.sub((0,y.Vec3)(),H.max,H.min),X=Math.round(j.vertexCount/z),Y={drawCount:t.ValueCell.create(X),instanceCount:t.ValueCell.create(j.instanceCount),stride:t.ValueCell.create(z),uGroupCount:t.ValueCell.create(j.groupCount),aTransform:t.ValueCell.create(j.transformBuffer),aInstance:t.ValueCell.create(j.instanceBuffer),aSample:t.ValueCell.create(v(X,z)),uGeoTexDim:t.ValueCell.create(y.Vec2.create(j.positionTexture.getWidth(),j.positionTexture.getHeight())),tPosition:t.ValueCell.create(j.positionTexture),tGroup:t.ValueCell.create(j.groupTexture),uColorTexDim:t.ValueCell.create(y.Vec2.create(j.colorData.getWidth(),j.colorData.getHeight())),tColor:t.ValueCell.create(j.colorData),dColorType:t.ValueCell.create(j.colorType),uCurrentSlice:t.ValueCell.create(0),uCurrentX:t.ValueCell.create(0),uCurrentY:t.ValueCell.create(0),uBboxMin:t.ValueCell.create(H.min),uBboxSize:t.ValueCell.create(W),uResolution:t.ValueCell.create(G)},K={...e.ColorAccumulateSchema},Q=(0,i.ShaderCode)("accumulate",a.accumulate_vert,g.accumulate_frag,{drawBuffers:"required"}),J=(0,c.createComputeRenderItem)(k,"points",Q,K,Y);return(0,r.createComputeRenderable)(J,Y)}function C(k){const{gl:j,state:H}=k;H.disable(j.CULL_FACE),H.enable(j.BLEND),H.disable(j.DEPTH_TEST),H.enable(j.SCISSOR_TEST),H.depthMask(!1),H.clearColor(0,0,0,0),H.blendFunc(j.ONE,j.ONE),H.blendEquation(j.FUNC_ADD)}e.ColorNormalizeSchema={...f.QuadSchema,tColor:(0,o.TextureSpec)("texture","rgba","float","nearest"),tCount:(0,o.TextureSpec)("texture","alpha","float","nearest"),uTexSize:(0,o.UniformSpec)("v2")};const l="color-normalize";function S(k,j,H){if(k.namedComputeRenderables[l]){const G=k.namedComputeRenderables[l].values;t.ValueCell.update(G.tColor,j),t.ValueCell.update(G.tCount,H),t.ValueCell.update(G.uTexSize,y.Vec2.set(G.uTexSize.ref.value,j.getWidth(),j.getHeight())),k.namedComputeRenderables[l].update()}else k.namedComputeRenderables[l]=T(k,j,H);return k.namedComputeRenderables[l]}function T(k,j,H){const G={...f.QuadValues,tColor:t.ValueCell.create(j),tCount:t.ValueCell.create(H),uTexSize:t.ValueCell.create(y.Vec2.create(j.getWidth(),j.getHeight()))},z={...e.ColorNormalizeSchema},W=(0,i.ShaderCode)("normalize",s.quad_vert,h.normalize_frag),X=(0,c.createComputeRenderItem)(k,"triangles",W,z,G);return(0,r.createComputeRenderable)(X,G)}function A(k){const{gl:j,state:H}=k;H.disable(j.CULL_FACE),H.enable(j.BLEND),H.disable(j.DEPTH_TEST),H.enable(j.SCISSOR_TEST),H.depthMask(!1),H.clearColor(0,0,0,0),H.blendFunc(j.ONE,j.ONE),H.blendEquation(j.FUNC_ADD)}function x(k){const j=k[0]*k[1]*k[2],H=Math.sqrt(j),G=Math.pow(2,Math.ceil(Math.log(H)/Math.log(2)));let z=0,W=k[1],X=1,Y=k[2];return G<k[0]*k[2]?(Y=Math.floor(G/k[0]),X=Math.ceil(k[2]/Y),z=Y*k[0],W*=X):z=k[0]*k[2],{texDimX:z,texDimY:W,texRows:X,texCols:Y,powerOfTwoSize:W<G?G:G*2}}function M(k,j,H,G){const{drawBuffers:z}=H.extensions;
4207if(!z)throw new Error("need WebGL draw buffers");p.isTimingMode&&H.timer.mark("calcTextureMeshColorSmoothing");const{gl:W,resources:X,state:Y,extensions:{colorBufferHalfFloat:K,textureHalfFloat:Q}}=H,{resolution:J,stride:ae}=j,te=k.colorType.endsWith("Instance"),ne=_.Box3D.fromSphere3D((0,_.Box3D)(),te?k.boundingSphere:k.invariantBoundingSphere),$=1+J,ie=_.Box3D.expand((0,_.Box3D)(),ne,y.Vec3.create($,$,$));te||(k.instanceCount=1,k.instanceBuffer=new Float32Array([0]),k.transformBuffer=new Float32Array(y.Mat4.id));const Z=1/J,re=_.Box3D.scale((0,_.Box3D)(),ie,Z),oe=_.Box3D.size((0,y.Vec3)(),re);y.Vec3.ceil(oe,oe),y.Vec3.add(oe,oe,y.Vec3.create(2,2,2));const{min:ce}=ie,[ue,pe,he]=oe,{texDimX:fe,texDimY:de,texCols:ge}=x(oe);H.namedFramebuffers[u]||(H.namedFramebuffers[u]=H.resources.framebuffer());const Ce=H.namedFramebuffers[u];(0,d.isWebGL2)(W)?(H.namedTextures[u]||(H.namedTextures[u]=K&&Q?X.texture("image-float16","rgba","fp16","nearest"):X.texture("image-float32","rgba","float","nearest")),H.namedTextures[m]||(H.namedTextures[m]=X.texture("image-float32","alpha","float","nearest"))):(H.namedTextures[u]||(H.namedTextures[u]=X.texture("image-float32","rgba","float","nearest")),H.namedTextures[m]||(H.namedTextures[m]=X.texture("image-float32","rgba","float","nearest")));const ve=H.namedTextures[u],le=H.namedTextures[m];ve.define(fe,de),le.define(fe,de),ve.attachFramebuffer(Ce,0),le.attachFramebuffer(Ce,1);const me=b(H,k,ie,J,ae);Y.currentRenderItemId=-1,Ce.bind(),z.drawBuffers([z.COLOR_ATTACHMENT0,z.COLOR_ATTACHMENT1]);const{uCurrentSlice:ee,uCurrentX:se,uCurrentY:ye}=me.values;p.isTimingMode&&H.timer.mark("ColorAccumulate.render"),C(H),Y.viewport(0,0,fe,de),Y.scissor(0,0,fe,de),W.clear(W.COLOR_BUFFER_BIT),t.ValueCell.update(ye,0);let Se=0,Ae=0,_e=0;for(let Be=0;Be<he;++Be)Se>=ge&&(Se-=ge,Ae+=pe,_e=0,t.ValueCell.update(ye,Ae)),t.ValueCell.update(se,_e),t.ValueCell.update(ee,Be),Y.viewport(_e,Ae,ue,pe),Y.scissor(_e,Ae,ue,pe),me.render(),++Se,_e+=ue;ve.detachFramebuffer(Ce,0),le.detachFramebuffer(Ce,1),z.drawBuffers([W.COLOR_ATTACHMENT0,W.NONE]),p.isTimingMode&&H.timer.markEnd("ColorAccumulate.render"),p.isTimingMode&&H.timer.mark("ColorNormalize.render"),(!G||(0,n.isNullTexture)(G))&&(G=X.texture("image-uint8","rgba","ubyte","linear")),G.define(fe,de);const be=S(H,ve,le);Y.currentRenderItemId=-1,A(H),G.attachFramebuffer(Ce,0),Y.viewport(0,0,fe,de),Y.scissor(0,0,fe,de),W.clear(W.COLOR_BUFFER_BIT),be.render(),p.isTimingMode&&H.timer.markEnd("ColorNormalize.render");const xe=y.Vec4.create(ce[0],ce[1],ce[2],Z),we=te?"volumeInstance":"volume";return p.isTimingMode&&H.timer.markEnd("calcTextureMeshColorSmoothing"),{texture:G,gridDim:oe,gridTexDim:y.Vec2.create(fe,de),gridTransform:xe,type:we}}const D="color-smoothing-rgb",V="color-smoothing-rgba",R="color-smoothing-alpha";function E(k){return k==="group"||k==="groupInstance"}function I(k,j,H,G){if(!E(k.dColorType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[D]||(H.namedTextures[D]=H.resources.texture("image-uint8","rgb","ubyte","nearest"));const z=H.namedTextures[D];z.load(k.tColor.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dColorType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dColorType,W.type),t.ValueCell.update(k.tColorGrid,W.texture),t.ValueCell.update(k.uColorTexDim,W.gridTexDim),t.ValueCell.update(k.uColorGridDim,W.gridDim),t.ValueCell.update(k.uColorGridTransform,W.gridTransform)}function B(k){return k==="groupInstance"}function w(k,j,H,G){if(!B(k.dOverpaintType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[V]||(H.namedTextures[V]=H.resources.texture("image-uint8","rgba","ubyte","nearest"));const z=H.namedTextures[V];z.load(k.tOverpaint.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dOverpaintType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dOverpaintType,W.type),t.ValueCell.update(k.tOverpaintGrid,W.texture),t.ValueCell.update(k.uOverpaintTexDim,W.gridTexDim),t.ValueCell.update(k.uOverpaintGridDim,W.gridDim),t.ValueCell.update(k.uOverpaintGridTransform,W.gridTransform)}function O(k){return k==="groupInstance"}function F(k,j,H,G){if(!O(k.dTransparencyType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[R]||(H.namedTextures[R]=H.resources.texture("image-uint8","alpha","ubyte","nearest"));const z=H.namedTextures[R];z.load(k.tTransparency.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dTransparencyType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dTransparencyType,W.type),t.ValueCell.update(k.tTransparencyGri
4207d,W.texture),t.ValueCell.update(k.uTransparencyTexDim,W.gridTexDim),t.ValueCell.update(k.uTransparencyGridDim,W.gridDim),t.ValueCell.update(k.uTransparencyGridTransform,W.gridTransform)}function L(k){return k==="groupInstance"}function U(k,j,H,G){if(!L(k.dEmissiveType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[R]||(H.namedTextures[R]=H.resources.texture("image-uint8","alpha","ubyte","nearest"));const z=H.namedTextures[R];z.load(k.tEmissive.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dEmissiveType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dEmissiveType,W.type),t.ValueCell.update(k.tEmissiveGrid,W.texture),t.ValueCell.update(k.uEmissiveTexDim,W.gridTexDim),t.ValueCell.update(k.uEmissiveGridDim,W.gridDim),t.ValueCell.update(k.uEmissiveGridTransform,W.gridTransform)}function q(k){return k==="groupInstance"}function N(k,j,H,G){if(!q(k.dSubstanceType.ref.value))return;j={...j,stride:j.stride*3},H.namedTextures[V]||(H.namedTextures[V]=H.resources.texture("image-uint8","rgba","ubyte","nearest"));const z=H.namedTextures[V];z.load(k.tSubstance.ref.value);const W=M({vertexCount:k.uVertexCount.ref.value,instanceCount:k.uInstanceCount.ref.value,groupCount:k.uGroupCount.ref.value,transformBuffer:k.aTransform.ref.value,instanceBuffer:k.aInstance.ref.value,positionTexture:k.tPosition.ref.value,groupTexture:k.tGroup.ref.value,colorData:z,colorType:k.dSubstanceType.ref.value,boundingSphere:k.boundingSphere.ref.value,invariantBoundingSphere:k.invariantBoundingSphere.ref.value},j,H,G);t.ValueCell.updateIfChanged(k.dSubstanceType,W.type),t.ValueCell.update(k.tSubstanceGrid,W.texture),t.ValueCell.update(k.uSubstanceTexDim,W.gridTexDim),t.ValueCell.update(k.uSubstanceGridDim,W.gridDim),t.ValueCell.update(k.uSubstanceGridTransform,W.gridTransform)}})(sA)),sA}var Gz;function Ul(){if(Gz)return mv;Gz=1,Object.defineProperty(mv,"__esModule",{value:!0}),mv.Visual=void 0;const e=gt(),t=cn(),r=Ge(),n=kl(),i=kr(),c=et(),o=Ka(),s=In(),h=Ya(),f=Qa(),y=li(),_=Tt(),g=Bw(),a=jQ(),d=Za(),p=Ja(),u=eo();var m;return(function(v){function b(I,B){I&&(I.state.visible=B)}v.setVisibility=b;function P(I,B){I&&(I.state.alphaFactor=B)}v.setAlphaFactor=P;function C(I,B){I&&(I.state.pickable=B)}v.setPickable=C;function l(I,B){I&&(I.state.colorOnly=B)}v.setColorOnly=l;function S(I,B,w,O,F){if(!I||(0,e.isEmptyLoci)(B))return!1;const{tMarker:L,uMarker:U,markerAverage:q,markerStatus:N,uGroupCount:k,instanceCount:j,instanceGranularity:H}=I.values,G=H.ref.value?j.ref.value:k.ref.value*j.ref.value,{array:z}=L.ref.value,W=N.ref.value;if(!(0,e.isEveryLoci)(B)){let Q=0;if(O(B,J=>(Q+=s.Interval.size(J),!0),!0),Q===0)return!1;Q===G&&(B=e.EveryLoci)}let X=!1,Y=-1,K=-1;if((0,e.isEveryLoci)(B)){const Q=(0,t.getMarkerInfo)(w,W);Q.status!==-1?(X=W!==Q.status,X&&(0,t.setMarkerValue)(z,Q.status,G)):X=(0,t.applyMarkerAction)(z,s.Interval.ofLength(G),w),Y=Q.average,K=Q.status}else X=O(B,Q=>(0,t.applyMarkerAction)(z,Q,w),!0),X&&(Y=(0,t.getPartialMarkerAverage)(w,W),F&&F.status!==-1&&Y===-1&&t.MarkerActions.isReverse(F.action,w)&&e.Loci.areEqual(B,F.loci)&&(K=F.status,Y=K===0?0:.5));return X&&(Y===-1&&(Y=(0,y.getMarkersAverage)(z,G),Y===0&&(K=0)),F&&(F.action=w,F.loci=B,F.status=W),c.ValueCell.updateIfChanged(U,K),K===-1&&c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,Y),c.ValueCell.updateIfChanged(N,K)),X}v.mark=S;function T(I,B,w,O,F){if(!I)return;const{tOverpaint:L,dOverpaintType:U,dOverpaint:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,o.createOverpaint)(B.layers.length?H:0,G,I.values);const{array:z}=L.ref.value;O&&(0,o.clearOverpaint)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,color:K,clear:Q}=B.layers[W];
4207w(Y,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return Q?(0,o.clearOverpaint)(z,te,ne):(0,o.applyOverpaintColor)(z,te,ne,K)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(U,G),c.ValueCell.updateIfChanged(q,B.layers.length>0),B.layers.length!==0&&G!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:W,props:X,webgl:Y}=F;if(W.kind==="mesh"){const{resolution:K,overpaintTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,g.applyMeshOverpaintSmoothing)(I.values,J,Y,Q),W.meta.overpaintTexture=I.values.tOverpaintGrid.ref.value)}else if(Y&&W.kind==="texture-mesh"){const{resolution:K,overpaintTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,a.applyTextureMeshOverpaintSmoothing)(I.values,J,Y,Q),W.meta.overpaintTexture=I.values.tOverpaintGrid.ref.value)}}}v.setOverpaint=T;function A(I,B,w,O,F){if(!I)return;const{tTransparency:L,dTransparencyType:U,transparencyAverage:q,transparencyMin:N,dTransparency:k,uGroupCount:j,instanceCount:H,instanceGranularity:G}=I.values,z=G.ref.value?H.ref.value:j.ref.value*H.ref.value,W=G.ref.value?"instance":"groupInstance";(0,h.createTransparency)(B.layers.length?z:0,W,I.values);const{array:X}=L.ref.value;
4207O&&(0,h.clearTransparency)(X,0,z);for(let Y=0,K=B.layers.length;Y<K;++Y){const{loci:Q,value:J}=B.layers[Y];w(Q,te=>{const ne=s.Interval.start(te),$=s.Interval.end(te);return(0,h.applyTransparencyValue)(X,ne,$,J)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,(0,h.getTransparencyAverage)(X,z)),c.ValueCell.updateIfChanged(N,(0,h.getTransparencyMin)(X,z)),c.ValueCell.updateIfChanged(U,W),c.ValueCell.updateIfChanged(k,B.layers.length>0),B.layers.length!==0&&W!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:Y,props:K,webgl:Q}=F;if(Y.kind==="mesh"){const{resolution:J,transparencyTexture:ae}=Y.meta,te=(0,_.getColorSmoothingProps)(K.smoothColors,!0,J);te&&((0,g.applyMeshTransparencySmoothing)(I.values,te,Q,ae),Y.meta.transparencyTexture=I.values.tTransparencyGrid.ref.value)}else if(Q&&Y.kind==="texture-mesh"){const{resolution:J,transparencyTexture:ae}=Y.meta,te=(0,_.getColorSmoothingProps)(K.smoothColors,!0,J);te&&((0,a.applyTextureMeshTransparencySmoothing)(I.values,te,Q,ae),Y.meta.transparencyTexture=I.values.tTransparencyGrid.ref.value)}}}v.setTransparency=A;function x(I,B,w,O,F){if(!I)return;const{tEmissive:L,dEmissiveType:U,emissiveAverage:q,dEmissive:N,uGroupCount:k,instanceCount:j,instanceGranularity:H}=I.values,G=H.ref.value?j.ref.value:k.ref.value*j.ref.value,z=H.ref.value?"instance":"groupInstance";(0,p.createEmissive)(B.layers.length?G:0,z,I.values);const{array:W}=L.ref.value;O&&(0,p.clearEmissive)(W,0,G);for(let X=0,Y=B.layers.length;X<Y;++X){const{loci:K,value:Q}=B.layers[X];w(K,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return(0,p.applyEmissiveValue)(W,te,ne,Q)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(q,(0,p.getEmissiveAverage)(W,G)),c.ValueCell.updateIfChanged(U,z),c.ValueCell.updateIfChanged(N,B.layers.length>0),B.layers.length!==0&&z!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:X,props:Y,webgl:K}=F;if(X.kind==="mesh"){const{resolution:Q,emissiveTexture:J}=X.meta,ae=(0,_.getColorSmoothingProps)(Y.smoothColors,!0,Q);ae&&((0,g.applyMeshEmissiveSmoothing)(I.values,ae,K,J),X.meta.emissiveTexture=I.values.tEmissiveGrid.ref.value)}else if(K&&X.kind==="texture-mesh"){const{resolution:Q,emissiveTexture:J}=X.meta,ae=(0,_.getColorSmoothingProps)(Y.smoothColors,!0,Q);ae&&((0,a.applyTextureMeshEmissiveSmoothing)(I.values,ae,K,J),X.meta.emissiveTexture=I.values.tEmissiveGrid.ref.value)}}}v.setEmissive=x;function M(I,B,w,O,F){if(!I)return;const{tSubstance:L,dSubstanceType:U,dSubstance:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,d.createSubstance)(B.layers.length?H:0,G,I.values);const{array:z}=L.ref.value;O&&(0,d.clearSubstance)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,material:K,clear:Q}=B.layers[W];w(Y,ae=>{const te=s.Interval.start(ae),ne=s.Interval.end(ae);return Q?(0,d.clearSubstance)(z,te,ne):(0,d.applySubstanceMaterial)(z,te,ne,K)},!1)}if(c.ValueCell.update(L,L.ref.value),c.ValueCell.updateIfChanged(U,G),c.ValueCell.updateIfChanged(q,B.layers.length>0),B.layers.length!==0&&G!=="instance"&&F&&(0,_.hasColorSmoothingProp)(F.props)){const{geometry:W,props:X,webgl:Y}=F;if(W.kind==="mesh"){const{resolution:K,substanceTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,g.applyMeshSubstanceSmoothing)(I.values,J,Y,Q),W.meta.substanceTexture=I.values.tSubstanceGrid.ref.value)}else if(Y&&W.kind==="texture-mesh"){const{resolution:K,substanceTexture:Q}=W.meta,J=(0,_.getColorSmoothingProps)(X.smoothColors,!0,K);J&&((0,a.applyTextureMeshSubstanceSmoothing)(I.values,J,Y,Q),W.meta.substanceTexture=I.values.tSubstanceGrid.ref.value)}}}v.setSubstance=M;function D(I,B,w,O){if(!I)return;const{tClipping:F,dClippingType:L,dClipping:U,uGroupCount:q,instanceCount:N,instanceGranularity:k}=I.values,j=k.ref.value?N.ref.value:q.ref.value*N.ref.value,{layers:H}=B,G=k.ref.value?"instance":"groupInstance";(0,f.createClipping)(H.length?j:0,G,I.values);const{array:z}=F.ref.value;O&&(0,f.clearClipping)(z,0,j);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,groups:K}=B.layers[W];
4207w(Y,J=>{const ae=s.Interval.start(J),te=s.Interval.end(J);return(0,f.applyClippingGroups)(z,ae,te,K)},!1)}c.ValueCell.update(F,F.ref.value),c.ValueCell.updateIfChanged(L,G),c.ValueCell.updateIfChanged(U,B.layers.length>0)}v.setClipping=D;function V(I,B,w,O){if(!I)return;const{tWiggle:F,dWiggleType:L,wiggleAverage:U,dWiggle:q,uGroupCount:N,instanceCount:k,instanceGranularity:j}=I.values,H=j.ref.value?k.ref.value:N.ref.value*k.ref.value,G=j.ref.value?"instance":"groupInstance";(0,u.createWiggle)(B.layers.length?H:0,G,I.values);const{array:z}=F.ref.value;O&&(0,u.clearWiggle)(z,0,H);for(let W=0,X=B.layers.length;W<X;++W){const{loci:Y,value:K}=B.layers[W];w(Y,J=>{const ae=s.Interval.start(J),te=s.Interval.end(J);return(0,u.applyWiggleValue)(z,ae,te,K)},!1)}c.ValueCell.update(F,F.ref.value),c.ValueCell.updateIfChanged(U,(0,u.getWiggleAverage)(z,H)),c.ValueCell.updateIfChanged(L,G),c.ValueCell.updateIfChanged(q,B.layers.length>0)}v.setWiggle=V;function R(I,B){I&&(c.ValueCell.updateIfChanged(I.values.uOverpaintStrength,B.overpaint),c.ValueCell.updateIfChanged(I.values.uTransparencyStrength,B.transparency),c.ValueCell.updateIfChanged(I.values.uEmissiveStrength,B.emissive),c.ValueCell.updateIfChanged(I.values.uSubstanceStrength,B.substance),c.ValueCell.updateIfChanged(I.values.uWiggleStrength,B.wiggle))}v.setThemeStrength=R;function E(I,B,w){if(!I||!B&&!w)return;const{values:O}=I;B&&(r.Mat4.copy(O.matrix.ref.value,B),c.ValueCell.update(O.matrix,O.matrix.ref.value)),w?(O.extraTransform.ref.value.set(w),c.ValueCell.update(O.extraTransform,O.extraTransform.ref.value),c.ValueCell.updateIfChanged(O.hasExtraTransform,!0)):w===null&&c.ValueCell.updateIfChanged(O.hasExtraTransform,!1),(0,n.updateTransformData)(O,O.invariantBoundingSphere.ref.value,O.instanceGrid.ref.value.cellSize,O.instanceGrid.ref.value.batchSize);const F=(0,i.calculateTransformBoundingSphere)(O.invariantBoundingSphere.ref.value,O.transform.ref.value,O.instanceCount.ref.value,0);c.ValueCell.update(O.boundingSphere,F)}v.setTransform=E})(m||(mv.Visual=m={})),mv}var zz;function lc(){if(zz)return NP;zz=1,Object.defineProperty(NP,"__esModule",{value:!0}),NP.ShapeRepresentation=P;const e=Ll(),t=Tt(),r=Lt(),n=pn(),i=Rn(),c=ds(),o=ea(),s=ql(),h=li(),f=cn(),y=et(),_=wi(),g=ls(),a=gt(),d=at(),p=_n(),u=Ul(),m=nt(),v=Ne(),b=Ct();function P(l,S,T={}){let A=0;const x=new i.Subject,M=r.Representation.createState(),D=(0,c.getNextMaterialId)(),V=[];let R,E,I=-1;const B=o.Theme.createEmpty(),w=S.Params;let O=v.ParamDefinition.getDefaultValues(w),F,L;T.modifyState&&r.Representation.updateState(M,T.modifyState(M));const U=s.VisualUpdateState.create();function q(H={},G){s.VisualUpdateState.reset(U),!(!G&&!E)&&(G&&!E?U.createNew=!0:G&&E&&G.id===E.id||(G&&E&&G.id!==E.id?(U.updateTransform=!0,U.createGeometry=!0):G&&console.warn("unexpected state")),H.instanceGranularity!==O.instanceGranularity&&(U.updateTransform=!0),U.updateTransform&&(U.updateColor=!0,U.updateSize=!0,U.updateMatrix=!0),U.createGeometry&&(U.updateColor=!0,U.updateSize=!0))}function N(H={},G){return T.modifyProps&&(H=T.modifyProps(H)),m.Task.create("ShapeRepresentation.create",async z=>{const W=Object.assign(O,H),X=G?await l(z,G,W,E):void 0;if(q(H,X),X&&(E=X,Object.assign(B,n.Shape.getTheme(E))),U.createNew){V.length=0,F=n.Shape.groupIterator(E);const Y=n.Shape.createTransform(E.transforms,E.geometry.boundingSphere,W.cellSize,W.batchSize),K=S.createValues(E.geometry,Y,F,B,W),Q=S.createRenderableState(W);T.modifyState&&Object.assign(Q,T.modifyState(Q)),r.Representation.updateState(M,Q),R=(0,c.createRenderObject)(E.geometry.kind,K,Q,D),R&&V.push(R),L=S.createPositionIterator(E.geometry,R.values)}else{if(!R)throw new Error("expected renderObject to be available");if(U.updateTransform){F=n.Shape.groupIterator(E);const{instanceCount:Y,groupCount:K}=F;(0,t.resolveInstanceGranularity)(W.instanceGranularity,K,Y)?(0,h.createMarkers)(Y,"instance",R.values):(0,h.createMarkers)(Y*K,"groupInstance",R.values)}U.updateMatrix&&(n.Shape.createTransform(E.transforms,E.geometry.boundingSphere,W.cellSize,W.batchSize,R.values),"lodLevels"in R.values&&y.ValueCell.update(R.values.lodLevels,R.values.lodLevels.ref.value)),U.createGeometry&&(y.ValueCell.updateIfChanged(R.values.drawCount,e.Geometry.getDrawCount(E.geometry)),y.ValueCell.updateIfChanged(R.values.uVertexCount,e.Geometry.getVertexCount(E.geometry)),y.ValueCell.updateIfChanged(R.values.uGroupCount,F.groupCount)),U.updateColor&&(0,_.createColors)(F,L,B.color,R.values),U.updateSize&&"uSize"in R.values&&(0,g.createSizes)(F,L,B.size,R.values),S.updateV
4207alues(R.values,W),S.updateRenderableState(R.state,W),(U.updateTransform||U.createGeometry)&&(S.updateBoundingSphere(R.values,E.geometry),L=S.createPositionIterator(E.geometry,R.values))}O=W,(U.createGeometry||U.createNew)&&(I+=1),x.next(A++)})}function k(H,G,z){let W=!1;if(!n.ShapeGroup.isLoci(H)||n.ShapeGroup.isLociEmpty(H)||H.shape!==G)return!1;for(const X of H.groups)z(d.Interval.ofSingleton(X.instance))&&(W=!0);return W}function j(H,G){const z=(0,t.resolveInstanceGranularity)(O.instanceGranularity,E.groupCount,E.transforms.length);return(0,a.isEveryLoci)(H)||n.Shape.isLoci(H)&&H.shape===E?G(z?d.Interval.ofBounds(0,E.transforms.length):d.Interval.ofBounds(0,E.groupCount*E.transforms.length)):z?k(H,E,G):C(H,E,G)}return{label:"Shape geometry",get groupCount(){return F?F.count:0},get props(){return O},get params(){return w},get state(){return M},get theme(){return B},renderObjects:V,get geometryVersion(){return I},updated:x,createOrUpdate:N,getLoci(H){const{objectId:G,groupId:z,instanceId:W}=H;if(R&&R.id===G){const X=(0,t.resolveInstanceGranularity)(O.instanceGranularity,E.groupCount,E.transforms.length);return z===p.PickingId.Null||X?n.Shape.Loci(E):n.ShapeGroup.Loci(E,[{ids:d.OrderedSet.ofSingleton(z),instance:W}])}return a.EmptyLoci},getAllLoci(){return[n.Shape.Loci(E)]},eachLocation:H=>{for(F.reset();F.hasNext;){const{location:G,isSecondary:z}=F.move();H(G,z)}},mark(H,G){if(!f.MarkerActions.is(M.markerActions,G))return!1;if(n.ShapeGroup.isLoci(H)||n.Shape.isLoci(H)){if(H.shape!==E)return!1}else if(!(0,a.isEveryLoci)(H))return!1;return u.Visual.mark(R,H,G,j)},setState(H){T.modifyState&&(H=T.modifyState(H)),R&&(H.visible!==void 0&&u.Visual.setVisibility(R,H.visible),H.alphaFactor!==void 0&&u.Visual.setAlphaFactor(R,H.alphaFactor),H.pickable!==void 0&&u.Visual.setPickable(R,H.pickable),H.colorOnly!==void 0&&u.Visual.setColorOnly(R,H.colorOnly),H.overpaint!==void 0&&u.Visual.setOverpaint(R,H.overpaint,j,!0),H.transparency!==void 0&&u.Visual.setTransparency(R,H.transparency,j,!0),H.substance!==void 0&&u.Visual.setSubstance(R,H.substance,j,!0),H.transform!==void 0&&u.Visual.setTransform(R,H.transform)),r.Representation.updateState(M,H)},setTheme(H){b.isDebugMode&&console.warn("The `ShapeRepresentation` theme is fixed to `ShapeGroupColorTheme` and `ShapeGroupSizeTheme`. Colors are taken from `Shape.getColor` and sizes from `Shape.getSize`")},destroy(){V.length=0,R&&(R.state.disposed=!0,R=void 0)}}}function C(l,S,T){if(!n.ShapeGroup.isLoci(l)||l.shape!==S)return!1;let A=!1;const{groupCount:x}=S,{groups:M}=l;for(const{ids:D,instance:V}of M)if(d.Interval.is(D)){const R=V*x+d.Interval.start(D),E=V*x+d.Interval.end(D);T(d.Interval.ofBounds(R,E))&&(A=!0)}else for(let R=0,E=D.length;R<E;R++){const I=V*x+D[R];T(d.Interval.ofSingleton(I))&&(A=!0)}return A}return NP}var vv={},Hz;function Wae(){if(Hz)return vv;
4207Hz=1,Object.defineProperty(vv,"__esModule",{value:!0}),vv.StructureUnitTransforms=void 0;const e=Ge(),t=at(),r=kl(),n=(0,e.Mat4)();class i{constructor(o){this.structure=o,this.groupUnitTransforms=[],this.unitOffsetMap=t.IntMap.Mutable(),this.groupIndexMap=new Map,this._isIdentity=void 0,this.version=0,this.unitTransforms=new Float32Array(o.units.length*16),this.size=o.units.length,this.reset();let s=0;for(let h=0,f=o.unitSymmetryGroups.length;h<f;++h){const y=o.unitSymmetryGroups[h];this.groupIndexMap.set(y,h);const _=this.unitTransforms.subarray(s,s+y.units.length*16);this.groupUnitTransforms.push(_);for(let g=0,a=y.units.length;g<a;++g)this.unitOffsetMap.set(y.units[g].id,s+g*16);s+=y.units.length*16}}reset(){this.version=0,(0,r.fillIdentityTransform)(this.unitTransforms,this.size),this._isIdentity=!0}get isIdentity(){if(this._isIdentity===void 0){this._isIdentity=!0;for(let o=0,s=this.size*16;o<s;o+=16)if(e.Mat4.fromArray(n,this.unitTransforms,o),!e.Mat4.isIdentity(n)){this._isIdentity=!1;break}}return this._isIdentity}setTransform(o,s){this.version=(this.version+1)%2147483647,e.Mat4.toArray(o,this.unitTransforms,this.unitOffsetMap.get(s.id)),this._isIdentity=void 0}getTransform(o,s){return e.Mat4.fromArray(o,this.unitTransforms,this.unitOffsetMap.get(s.id))}getSymmetryGroupTransforms(o){return this.groupUnitTransforms[this.groupIndexMap.get(o)]}}return vv.StructureUnitTransforms=i,vv}var $o={},Wz;function $ae(){if(Wz)return $o;Wz=1,Object.defineProperty($o,"__esModule",{value:!0}),$o.SpinStructureParams=void 0,$o.unwindStructureAssembly=c,$o.explodeStructure=f,$o.getSpinStructureAxisAndOrigin=y,$o.spinStructure=d;const e=Ne(),t=rt(),r=Ge(),n=Ke(),i=(0,r.Mat4)();function c(p,u,m){for(let v=0,b=p.units.length;v<b;v++){const P=p.units[v];t.SymmetryOperator.lerpFromIdentity(i,P.conformation.operator,m),u.setTransform(i,P)}}const o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,r.Mat4)();
4207function f(p,u,m,v){const b=v.radius*m;for(let P=0,C=p.units.length;P<C;P++){const l=p.units[P];r.Vec3.transformMat4(o,l.lookup3d.boundary.sphere.center,l.conformation.operator.matrix),r.Vec3.sub(s,o,v.center),r.Vec3.setMagnitude(s,s,b),r.Mat4.fromTranslation(h,s),u.setTransform(h,l)}}$o.SpinStructureParams={axis:e.ParamDefinition.MappedStatic("custom",{structure:e.ParamDefinition.Group({principalAxis:e.ParamDefinition.Select("dirA",[["dirA","A"],["dirB","B"],["dirC","C"]])}),custom:e.ParamDefinition.Group({vector:e.ParamDefinition.Vec3(r.Vec3.create(0,0,1))})}),origin:e.ParamDefinition.MappedStatic("structure",{structure:e.ParamDefinition.Group({}),custom:e.ParamDefinition.Group({vector:e.ParamDefinition.Vec3(r.Vec3.create(0,0,0))})})};function y(p,u){let m,v;return u.axis.name==="custom"?m=u.axis.params.vector:m=n.Structure.getPrincipalAxes(p).momentsAxes[u.axis.params.principalAxis],u.origin.name==="custom"?v=u.origin.params.vector:v=n.Structure.getPrincipalAxes(p).momentsAxes.origin,{axis:m,origin:v}}const _=(0,r.Mat4)(),g=(0,r.Mat4)(),a=(0,r.Mat4)();function d(p,u,m,v,b){for(let P=0,C=p.units.length;P<C;P++){const l=p.units[P];r.Vec3.negate(s,b),r.Mat4.fromTranslation(h,s),r.Mat4.fromRotation(_,Math.PI*m*2,v),r.Mat4.fromTranslation(g,b),r.Mat4.mul(a,_,h),r.Mat4.mul(a,g,a),u.setTransform(a,l)}}return $o}var bv={},$z;function US(){if($z)return bv;$z=1,Object.defineProperty(bv,"__esModule",{value:!0}),bv.Overpaint=i;const e=gt(),t=vt(),r=Ke(),n=va();function i(c,o){return{kind:c,layers:o}}return(function(c){c.Empty={kind:"empty-loci",layers:[]};function o(d,p){if(d.layers.length===0&&p.layers.length===0)return!0;if(d.layers.length!==p.layers.length)return!1;for(let u=0,m=d.layers.length;u<m;++u)if(d.layers[u].clear!==p.layers[u].clear||d.layers[u].color!==p.layers[u].color||!e.Loci.areEqual(d.layers[u].loci,p.layers[u].loci))return!1;return!0}c.areEqual=o;function s(d){return d.layers.length===0}c.isEmpty=s;function h(d,p){if(d.kind==="element-loci"){const u=[];for(const m of d.layers){let{loci:v,color:b,clear:P}=m;v=r.StructureElement.Loci.remap(v,p),r.StructureElement.Loci.isEmpty(v)||u.push({loci:v,color:b,clear:P})}return{kind:"element-loci",layers:u}}else return d}c.remap=h;function f(d){if(s(d))return d;if(d.kind==="element-loci"){const{structure:p}=d.layers[0].loci,u=new Map;let m=r.StructureElement.Loci.none(p);for(let b=0,P=d.layers.length;b<P;++b){let{loci:C,color:l,clear:S}=d.layers[P-b-1];if(C=r.StructureElement.Loci.subtract(C,m),m=r.StructureElement.Loci.union(C,m),!r.StructureElement.Loci.isEmpty(C)){const T=S?-1:l;u.has(T)&&(C=r.StructureElement.Loci.union(C,u.get(T))),u.set(T,C)}}const v=[];return u.forEach((b,P)=>{const C=P===-1,l=C?(0,t.Color)(0):P;v.push({loci:b,color:l,clear:C})}),{kind:"element-loci",layers:v}}else return d}c.merge=f;function y(d,p){if(s(d))return d;if(d.kind==="element-loci"){const{structure:u}=d.layers[0].loci,m=[];for(const v of d.layers){let{loci:b,color:P,clear:C}=v;const l=r.StructureElement.Loci.remap(b,p);b=r.StructureElement.Loci.remap(l,u),r.StructureElement.Loci.isEmpty(b)||m.push({loci:b,color:P,clear:C})}return{kind:"element-loci",layers:m}}else return d}c.filter=y;function _(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{script:b,color:P,clear:C}=d[m],l=n.Script.toLoci(b,p);r.StructureElement.Loci.isEmpty(l)||u.push({loci:l,color:P,clear:C})}return{kind:"element-loci",layers:u}}c.ofScript=_;function g(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{bundle:b,color:P,clear:C}=d[m],l=r.StructureElement.Bundle.toLoci(b,p.root);u.push({loci:l,color:P,clear:C})}return{kind:"element-loci",layers:u}}c.ofBundle=g;function a(d){const p=[];for(let u=0,m=d.layers.length;u<m;++u){const{loci:v,color:b,clear:P}=d.layers[u],C=r.StructureElement.Bundle.fromLoci(v);p.push({bundle:C,color:b,clear:P})}return{kind:"element-loci",layers:p}}c.toBundle=a})(i||(bv.Overpaint=i={})),bv}var _v={},Xz;function jS(){if(Xz)return _v;
4207Xz=1,Object.defineProperty(_v,"__esModule",{value:!0}),_v.Transparency=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){const m=t.StructureElement.Loci.remap(u.loci,d);t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:u.value})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(_v.Transparency=n={})),_v}var ku={},Sv={},Cv={},Pv={},cA={},Kz;function Xae(){return Kz||(Kz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultPolyhedronProps=void 0,e.Polyhedron=n;
4207const t=Ge(),r=us();e.DefaultPolyhedronProps={radius:1,detail:0};function n(c,o,s){const{radius:h,detail:f}={...e.DefaultPolyhedronProps,...s},y=i(),{vertices:_,indices:g}=y;d(f),(0,r.appplyRadius)(_,h);const a=new Float32Array(_.length);return(0,r.computeIndexedVertexNormals)(_,g,a,_.length/3,g.length/3),{vertices:new Float32Array(_),normals:new Float32Array(a),indices:new Uint32Array(g)};function d(u){const m=(0,t.Vec3)(),v=(0,t.Vec3)(),b=(0,t.Vec3)();for(let P=0;P<o.length;P+=3)t.Vec3.fromArray(m,c,o[P+0]*3),t.Vec3.fromArray(v,c,o[P+1]*3),t.Vec3.fromArray(b,c,o[P+2]*3),p(m,v,b,u)}function p(u,m,v,b){const P=Math.pow(2,b),C=[];for(let l=0;l<=P;++l){C[l]=[];const S=(0,t.Vec3)();t.Vec3.lerp(S,u,v,l/P);const T=(0,t.Vec3)();t.Vec3.lerp(T,m,v,l/P);const A=P-l;for(let x=0;x<=A;++x)if(x===0&&l===P)C[l][x]=S;else{const M=(0,t.Vec3)();t.Vec3.lerp(M,S,T,x/A),C[l][x]=M}}for(let l=0;l<P;++l)for(let S=0;S<2*(P-l)-1;++S){const T=Math.floor(S/2);S%2===0?y.add(C[l][T+1],C[l+1][T],C[l][T]):y.add(C[l][T+1],C[l+1][T+1],C[l+1][T])}}}function i(){const c=[],o=[],s=new Map;function h(f){const y=`${f[0].toFixed(5)}|${f[1].toFixed(5)}|${f[2].toFixed(5)}`;let _=s.get(y);return _===void 0&&(_=c.length/3,s.set(y,_),c.push(...f)),_}return{vertices:c,indices:o,add:(f,y,_)=>{o.push(h(f),h(y),h(_))}}}})(cA)),cA}var Tv={},Yz;function Kae(){if(Yz)return Tv;Yz=1,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.Icosahedron=s,Tv.IcosahedronCage=f;const e=to(),t=Gf(),r=(1+Math.sqrt(5))/2,n=[-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],i=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],c=[0,11,5,11,0,5,1,5,0,1,1,7,0,7,7,10,0,10,10,11,5,9,4,11,2,10,6,7,1,8,3,9,4,9,3,4,2,4,2,3,2,6,3,6,6,8,3,8,8,9,4,5,2,11,6,10,7,8,1,9];let o;function s(){return o||(o=(0,e.createPrimitive)(n,i)),o}const h=(0,t.createCage)(n,c);function f(){return h}return Tv}var Qz;function Xf(){if(Qz)return Pv;Qz=1,Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.sphereVertexCount=i,Pv.Sphere=c;const e=Xae(),t=Kae(),{vertices:r,indices:n}=(0,t.Icosahedron)();function i(o){return 10*Math.pow(Math.pow(2,o),2)+2}function c(o){return(0,e.Polyhedron)(r,n,{detail:o,radius:1})}return Pv}var Zz;function Jn(){if(Zz)return Cv;Zz=1,Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.getSphere=o,Cv.addSphere=s;const e=Ge(),t=$t(),r=Xf(),n=new Map,i=e.Mat4.identity();function c(h,f,y){return e.Mat4.scaleUniformly(h,e.Mat4.fromTranslation(h,f),y)}function o(h){let f=n.get(h);return f===void 0&&(f=(0,r.Sphere)(h),n.set(h,f)),f}function s(h,f,y,_){t.MeshBuilder.addPrimitive(h,c(i,f,y),o(_))}return Cv}var Fs={},uA={},Jz;function Yae(){return Jz||(Jz=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCylinderProps=void 0,e.Cylinder=r;const t=Ge();e.DefaultCylinderProps={radiusTop:1,radiusBottom:1,height:1,radialSegments:8,heightSegments:1,topCap:!1,bottomCap:!1,thetaStart:0,thetaLength:Math.PI*2};function r(n){const{radiusTop:i,radiusBottom:c,height:o,radialSegments:s,heightSegments:h,topCap:f,bottomCap:y,thetaStart:_,thetaLength:g}={...e.DefaultCylinderProps,...n},a=[],d=[],p=[];let u=0;const m=[],v=o/2;return b(),f&&i>0&&P(!0),y&&c>0&&P(!1),{vertices:new Float32Array(d),normals:new Float32Array(p),indices:new Uint32Array(a)};function b(){const C=t.Vec3.zero(),l=(c-i)/o;for(let S=0;S<=h;++S){const T=[],A=S/h,x=A*(c-i)+i;for(let M=0;M<=s;++M){const V=M/s*g+_,R=Math.sin(V),E=Math.cos(V);d.push(x*R,-A*o+v,x*E),t.Vec3.normalize(C,t.Vec3.set(C,R,l,E)),p.push(...C),T.push(u++)}m.push(T)}for(let S=0;S<s;++S)for(let T=0;T<h;++T){const A=m[T][S],x=m[T+1][S],M=m[T+1][S+1],D=m[T][S+1];a.push(A,x,D),a.push(x,M,D)}}function P(C){const l=C===!0?i:c,S=C===!0?1:-1,T=u;for(let x=1;x<=s;++x)d.push(0,v*S,0),p.push(0,S,0),++u;const A=u;for(let x=0;x<=s;++x){const D=x/s*g+_,V=Math.cos(D),R=Math.sin(D);d.push(l*R,v*S,l*V),p.push(0,S,0),++u}for(let x=0;x<s;++x){const M=T+x,D=A+x;C===!0?a.push(D,D+1,M):a.push(D+1,D,M)}}}})(uA)),uA}var lA={},e6;function Rw(){return e6||(e6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.DefaultPrismProps=void 0,e.Prism=y,e.DiamondPrism=g,e.PentagonalPrism=d,e.HexagonalPrism=u,e.ShiftedHexagonalPrism=v,e.HeptagonalPrism=P,e.PrismCage=C,e.DiamondPrismCage=S,e.PentagonalPrismCage=A,e.HexagonalPrismCage=M;const t=Ge(),r=to(),n=kS(),i=(0,t.Vec3)(),c=(0,t.Vec3)(),o=(0,t.Vec3)(),s=(0,t.Vec3)(),h=(0,t.Vec3)(),f=(0,t.Vec3)();e.DefaultPrismProps={height:1,topCap:!0,bottomCap:!0};function y(D,V){const R=D.length/3;if(R<3)throw new Error("need at least 3 points to build a prism");const{height:E,topCap:I,bottomCap:B}={...e.DefaultPrismProps,...V};let w=R*2,O=R*4;const F=(I?1:0)+(B?1:0);R===3?(w+=F,O+=F*3):R===4?(w+=F*2,O+=F*4):(w+=F*R,O+=F*R*3);const L=(0,r.PrimitiveBuilder)(w,O),U=E*.5;t.Vec3.set(i,0,0,-U),t.Vec3.set(c,0,0,U);for(let q=0;q<R;++q){const N=(q+1)%R;t.Vec3.set(o,D[q*3],D[q*3+1],-U),t.Vec3.set(s,D[N*3],D[N*3+1],-U),t.Vec3.set(h,D[N*3],D[N*3+1],U),t.Vec3.set(f,D[q*3],D[q*3+1],U),L.addQuad(o,s,h,f)}if(R===3)I&&(t.Vec3.set(o,D[0],D[1],-U),t.Vec3.set(s,D[3],D[4],-U),t.Vec3.set(h,D[6],D[7],-U),L.add(h,s,o)),B&&(t.Vec3.set(o,D[0],D[1],U),t.Vec3.set(s,D[3],D[4],U),t.Vec3.set(h,D[6],D[7],U),L.add(o,s,h));else if(R===4)I&&(t.Vec3.set(o,D[0],D[1],-U),t.Vec3.set(s,D[3],D[4],-U),t.Vec3.set(h,D[6],D[7],-U),t.Vec3.set(f,D[9],D[10],-U),L.addQuad(f,h,s,o)),B&&(t.Vec3.set(o,D[0],D[1],U),t.Vec3.set(s,D[3],D[4],U),t.Vec3.set(h,D[6],D[7],U),t.Vec3.set(f,D[9],D[10],U),L.addQuad(o,s,h,f));else for(let q=0;q<R;++q){const N=(q+1)%R;I&&(t.Vec3.set(o,D[q*3],D[q*3+1],-U),t.Vec3.set(s,D[N*3],D[N*3+1],-U),L.add(i,s,o)),B&&(t.Vec3.set(o,D[q*3],D[q*3+1],U),t.Vec3.set(s,D[N*3],D[N*3+1],U),L.add(o,s,c))}return L.getPrimitive()}let _;function g(){return _||(_=y((0,n.polygon)(4,!1))),_}let a;function d(){return a||(a=y((0,n.polygon)(5,!1))),a}let p;function u(){return p||(p=y((0,n.polygon)(6,!1))),p}let m;function v(){return m||(m=y((0,n.polygon)(6,!0))),m}let b;function P(){return b||(b=y((0,n.polygon)(7,!1))),b}function C(D,V=1){const R=D.length/3,E=[],I=[],B=V*.5;let w=0;for(let O=0;O<R;++O)E.push(D[O*3],D[O*3+1],-B,D[O*3],D[O*3+1],B),I.push(w,w+1),w+=2;for(let O=0;O<R;++O){const F=(O+1)%R;I.push(O*2,F*2,O*2+1,F*2+1)}return{vertices:E,edges:I}}let l;function S(){return l||(l=C((0,n.polygon)(4,!1))),l}let T;function A(){return T||(T=C((0,n.polygon)(5,!1))),T}let x;function M(){return x||(x=C((0,n.polygon)(6,!1))),x}})(lA)),lA}var t6;function ba(){if(t6)return Fs;t6=1,Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.addSimpleCylinder=C,Fs.addCylinderFromRay3D=l,Fs.addCylinder=S,Fs.addDoubleCylinder=T,Fs.addFixedCountDashedCylinder=A;const e=Ge(),t=$t(),r=to(),n=Yae(),i=Rw(),c=kS(),o=_t(),s=new Map,h=e.Vec3.create(0,1,0),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Mat4)(),a=(0,e.Mat4)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)();function m(x,M,D,V,R){return e.Vec3.setMagnitude(y,D,V/2),e.Vec3.add(_,M,y),R?e.Vec3.matchDirection(u,h,y):e.Vec3.copy(u,h),e.Vec3.set(d,1,V,1),e.Vec3.makeRotation(a,u,y),e.Mat4.scale(x,a,d),e.Mat4.setTranslation(x,_)}const v=new Int32Array(9);function b(x){var M,D,V,R,E,I,B,w,O;return v[0]=Math.round(1e3*((M=x.radiusTop)!==null&&M!==void 0?M:n.DefaultCylinderProps.radiusTop)),v[1]=Math.round(1e3*((D=x.radiusBottom)!==null&&D!==void 0?D:n.DefaultCylinderProps.radiusBottom)),v[2]=Math.round(1e3*((V=x.height)!==null&&V!==void 0?V:n.DefaultCylinderProps.height)),v[3]=(R=x.radialSegments)!==null&&R!==void 0?R:n.DefaultCylinderProps.radialSegments,v[4]=(E=x.heightSegments)!==null&&E!==void 0?E:n.DefaultCylinderProps.heightSegments,v[5]=((I=x.topCap)!==null&&I!==void 0?I:n.DefaultCylinderProps.topCap)?1:0,v[6]=((B=x.bottomCap)!==null&&B!==void 0?B:n.DefaultCylinderProps.bottomCap)?1:0,v[7]=Math.round(1e3*((w=x.thetaStart)!==null&&w!==void 0?w:n.DefaultCylinderProps.thetaStart)),v[8]=Math.round(1e3*((O=x.thetaLength)!==null&&O!==void 0?O:n.DefaultCylinderProps.thetaLength)),(0,o.hashFnv32a)(v)}function P(x){const M=b(x);let D=s.get(M);if(D===void 0){if(x.radialSegments&&x.radialSegments<=4){const V=Math.max(3,x.radialSegments),R=(0,i.Prism)((0,c.polygon)(V,!0,x.radiusTop),x);D=(0,r.transformPrimitive)(R,e.Mat4.rotX90)}else D=(0,n.Cylinder)(x);s.set(M,D)}return D}function C(x,M,D,V){const R=e.Vec3.distance(M,D);e.Vec3.sub(f,D,M),m(g,M,f,R,!1),t.MeshBuilder.addPrimitive(x,g,P(V))}function l(x,M,D,V){m(g,M.origin,M.direction,D,!1),t.MeshBuilder.addPrimitive(x,g,P(V))}function S(x,M,D,V,R){const E=e.Vec3.distance(M,D)*V;e.Vec3.sub(f,D,M),m(g,M,f,E,!0),t.MeshBuilder.addPrimitive(x,g,P(R))}function T(x,M,D,V,R,E){const I=e.Vec3.distance(M,D)*V,B=P(E);e.Vec3.sub(f,D,M),e.Vec3.add(p,M,R),m(g,p,f,I,!0),t.MeshBuilder.addPrimitive(x,g,B),e.Vec3.sub(p,M,R),m(g,p,f,I,!0),t.MeshBuilder.addPrimitive(x,g,B)}function A(x,M,D,V,R,E,I){const B=e.Vec3.distance(M,D)*V,w=R%2!==0,O=Math.floor((R+1)/2);let F=B/(R+.5),L=P(I);e.Vec3.setMagnitude(f,e.Vec3.sub(f,D,M),F),e.Vec3.copy(p,M);for(let U=0;U<O;++U)e.Vec3.add(p,p,f),w&&U===O-1&&(!E&&I.topCap&&(I.topCap=!1,L=P(I)),F/=2),m(g,p,f,F,!1),t.MeshBuilder.addPrimitive(x,g,L),e.Vec3.add(p,p,f)}return Fs}var r6;function $t(){if(r6)return Sv;
4207r6=1,Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.MeshBuilder=void 0;const e=Ge(),t=_t(),r=Rt(),n=Jn(),i=ba(),c=(0,e.Vec3)(),o=(0,e.Mat3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=e.Vec3.fromArray,g=e.Vec3.triangleNormal,a=e.Vec3.copy,d=e.Vec3.transformMat4,p=e.Vec3.transformMat3,u=e.Mat3.directionTransform,m=t.ChunkedArray.add3,v=t.ChunkedArray.add;var b;return(function(P){function C(I=2048,B=1024,w){return{currentGroup:-1,vertices:t.ChunkedArray.create(Float32Array,3,B,w?w.vertexBuffer.ref.value:I),normals:t.ChunkedArray.create(Float32Array,3,B,w?w.normalBuffer.ref.value:I),indices:t.ChunkedArray.create(Uint32Array,3,B*3,w?w.indexBuffer.ref.value:I*3),groups:t.ChunkedArray.create(Float32Array,1,B,w?w.groupBuffer.ref.value:I),mesh:w}}P.createState=C;function l(I,B,w,O){const{vertices:F,normals:L,indices:U,groups:q,currentGroup:N}=I,k=F.elementCount;m(F,B[0],B[1],B[2]),m(F,w[0],w[1],w[2]),m(F,O[0],O[1],O[2]),g(c,B,w,O);for(let j=0;j<3;++j)m(L,c[0],c[1],c[2]),v(q,N);m(U,k,k+1,k+2)}P.addTriangle=l;function S(I,B,w,O,F){const{vertices:L,normals:U,indices:q,groups:N,currentGroup:k}=I,j=L.elementCount;m(L,B[0],B[1],B[2]),m(L,w[0],w[1],w[2]),m(L,O[0],O[1],O[2]);for(let H=0;H<3;++H)m(U,F[0],F[1],F[2]),v(N,k);m(q,j,j+1,j+2)}P.addTriangleWithNormal=S;function T(I,B,w){_(f,B,w[0]*3),_(y,B,w[1]*3);for(let O=2,F=w.length;O<F;O+=2)a(s,f),a(h,y),_(f,B,w[O]*3),_(y,B,w[O+1]*3),l(I,s,h,f),l(I,h,y,f)}P.addTriangleStrip=T;function A(I,B,w){_(s,B,w[0]*3);for(let O=2,F=w.length;O<F;++O)_(h,B,w[O-1]*3),_(f,B,w[O]*3),l(I,s,f,h)}P.addTriangleFan=A;function x(I,B,w,O){_(s,B,w[0]*3);for(let F=2,L=w.length;F<L;++F)_(h,B,w[F-1]*3),_(f,B,w[F]*3),S(I,s,f,h,O)}P.addTriangleFanWithNormal=x;function M(I,B,w){const{vertices:O,normals:F,indices:L}=w,{vertices:U,normals:q,indices:N,groups:k,currentGroup:j}=I,H=U.elementCount,G=u(o,B);for(let z=0,W=O.length;z<W;z+=3)d(c,_(c,O,z),B),m(U,c[0],c[1],c[2]),p(c,_(c,F,z),G),m(q,c[0],c[1],c[2]),v(k,j);for(let z=0,W=L.length;z<W;z+=3)m(N,L[z]+H,L[z+1]+H,L[z+2]+H)}P.addPrimitive=M;function D(I,B,w){const{vertices:O,normals:F,indices:L}=w,{vertices:U,normals:q,indices:N,groups:k,currentGroup:j}=I,H=U.elementCount,G=u(o,B);for(let z=0,W=O.length;z<W;z+=3)d(c,_(c,O,z),B),m(U,c[0],c[1],c[2]),p(c,_(c,F,z),G),m(q,-c[0],-c[1],-c[2]),v(k,j);for(let z=0,W=L.length;z<W;z+=3)m(N,L[z+2]+H,L[z+1]+H,L[z]+H)}P.addPrimitiveFlipped=D;function V(I,B,w,O,F,L){const{vertices:U,edges:q}=w,N={radiusTop:O,radiusBottom:O,radialSegments:L};for(let k=0,j=q.length;k<j;k+=2)_(s,U,q[k]*3),_(h,U,q[k+1]*3),d(s,s,B),d(h,h,B),(0,n.addSphere)(I,s,O,F),(0,n.addSphere)(I,h,O,F),(0,i.addCylinder)(I,s,h,1,N)}P.addCage=V;function R(I,B,w){M(I,B,{vertices:w.vertexBuffer.ref.value.subarray(0,w.vertexCount*3),normals:w.normalBuffer.ref.value.subarray(0,w.vertexCount*3),indices:w.indexBuffer.ref.value.subarray(0,w.triangleCount*3)})}P.addMesh=R;function E(I){const{vertices:B,normals:w,indices:O,groups:F,mesh:L}=I,U=t.ChunkedArray.compact(B,!0),q=t.ChunkedArray.compact(O,!0),N=t.ChunkedArray.compact(w,!0),k=t.ChunkedArray.compact(F,!0);return r.Mesh.create(U,q,N,k,I.vertices.elementCount,I.indices.elementCount,L)}P.getMesh=E})(b||(Sv.MeshBuilder=b={})),Sv}var n6;function Qae(){if(n6)return ku;n6=1,Object.defineProperty(ku,"__esModule",{value:!0}),ku.UnitcellParams=void 0,ku.getUnitcellData=l,ku.UnitcellRepresentation=S;const e=Ke(),t=lc(),r=pn(),n=Vr(),i=Ne(),c=Rt(),o=$t(),s=FS(),h=Ge(),f=Gf(),y=rt(),_=Lt(),g=h.Mat4.fromTranslation((0,h.Mat4)(),h.Vec3.create(.5,.5,.5)),a=(0,f.transformCage)((0,f.cloneCage)((0,s.BoxCage)()),g),d=(0,h.Vec3)(),p=(0,h.Mat4)(),u={origin:"Origin",model:"Model"},m={corner:"Corner",center:"Center"},v={...c.Mesh.Params,cellColor:i.ParamDefinition.Color(n.ColorNames.orange),cellScale:i.ParamDefinition.Numeric(2,{min:.1,max:5,step:.1}),ref:i.ParamDefinition.Select("model",i.ParamDefinition.objectToOptions(u),{isEssential:!0}),attachment:i.ParamDefinition.Select("corner",i.ParamDefinition.objectToOptions(m),{isEssential:!0})},b={mesh:(T,A)=>(0,t.ShapeRepresentation)(C,c.Mesh.Utils)};ku.UnitcellParams={...v};function P(T,A,x){const M=o.MeshBuilder.createState(256,128,x),{fromFractional:D}=T.symmetry.spacegroup.cell;h.Vec3.copy(d,T.ref),A.attachment==="center"?(h.Vec3.trunc(d,d),h.Vec3.subScalar(d,d,.5)):h.Vec3.floor(d,d),h.Mat4.fromTranslation(p,d);const V=(0,f.transformCage)((0,f.cloneCage)(a),p),R=Math.cbrt(T.symmetry.spacegroup.cell.volume)/300*A.cellScale;M.currentGroup=1,o.MeshBuilder.addCage(M,D,V,R,2,20);const E=y.Sphere3D.fromDimensionsAndTransform((0,y.Sphere3D)(),h.Vec3.unit,D);h.Vec3.transformMat4(d,d,D),y.Sphere3D.translate(E,E,d),y.Sphere3D.expand(E,E,R);const I=o.MeshBuilder.getMesh(M);return I.setBoundingSphere(E),I}function C(T,A,x,M){const D=P(A,x,M&&M.geometry),V=e.Symmetry.getUnitcellLabel(A.symmetry);return r.Shape.create(V,A,D,()=>x.cellColor,()=>1,()=>V)}function l(T,A,x){const M=(0,h.Vec3)();return x.ref==="model"&&h.Vec3.transformMat4(M,e.Model.getCenter(T),A.spacegroup.cell.toFractional),{symmetry:A,ref:M}}function S(T,A){return _.Representation.createMulti("Unit Cell",T,A,_.Representation.StateBuilder,b)}return ku}var jd={},xv={},i6;function Kf(){if(i6)return xv;
4207i6=1,Object.defineProperty(xv,"__esModule",{value:!0}),xv.TextBuilder=void 0;const e=Ne(),t=_t(),r=ya(),n=vQ(),i=Gt(),c=new Uint16Array([0,1,2,1,3,2]),o=t.ChunkedArray.add3,s=t.ChunkedArray.add2,h=t.ChunkedArray.add;var f;return(function(y){function _(g={},a=2048,d=1024,p){a*=2,d*=2;const u=t.ChunkedArray.create(Float32Array,3,d,p?p.centerBuffer.ref.value:a),m=t.ChunkedArray.create(Float32Array,2,d,p?p.mappingBuffer.ref.value:a),v=t.ChunkedArray.create(Float32Array,1,d,p?p.depthBuffer.ref.value:a),b=t.ChunkedArray.create(Uint32Array,3,d,p?p.indexBuffer.ref.value:a),P=t.ChunkedArray.create(Float32Array,1,d,p?p.groupBuffer.ref.value:a),C=t.ChunkedArray.create(Float32Array,2,d,p?p.tcoordBuffer.ref.value:a),l={...e.ParamDefinition.getDefaultValues(r.Text.Params),...g},{attachment:S,background:T,backgroundMargin:A,tether:x,tetherLength:M,tetherBaseWidth:D}=l,V=(0,n.getFontAtlas)(l),R=1/2.5*A,E=V.buffer/V.lineHeight,I=(B,w,O,F,L)=>{o(u,B,w,O),h(v,F),h(P,L)};return{add:(B,w,O,F,L,U,q)=>{let N=0;const k=B.length;for(let J=0;J<k;++J){const ae=V.get(B[J]);N+=ae.nw-2*E}const j=1/1.25;let H,G;if(S.startsWith("top")?H=j:S.startsWith("middle")?H=j/2:H=0,S.endsWith("right")?G=N:S.endsWith("center")?G=N/2:G=0,x)switch(S){case"bottom-left":G-=M/2+R+.1,H-=M/2+R;break;case"bottom-center":H-=M+R;break;case"bottom-right":G+=M/2+R+.1,H-=M/2+R;break;case"middle-left":G-=M+R+.1;break;case"middle-center":break;case"middle-right":G+=M+R+.1;break;case"top-left":G-=M/2+R+.1,H+=M/2+R;break;case"top-center":H+=M+R;break;case"top-right":G+=M/2+R+.1,H+=M/2+R;break}const z=(-G-R-.1)*U,W=(N-G+R+.1)*U,X=.5-H-E*.5,Y=(X+j/2+R)*U,K=(X-j/2-R)*U;if(T){s(m,z,Y),s(m,z,K),s(m,W,Y),s(m,W,K);const J=u.elementCount;for(let ae=0;ae<4;++ae)s(C,10,10),I(w,O,F,L,q);o(b,J+c[0],J+c[1],J+c[2]),o(b,J+c[3],J+c[4],J+c[5])}if(x){let J,ae,te,ne,$,ie,Z,re;const oe=M*U,ce=D*U;switch(S){case"bottom-left":J=z-oe/2,te=z+ce/2,$=z,Z=z,ae=K-oe/2,ne=K,ie=K+ce/2,re=K;break;case"bottom-center":J=0,te=ce/2,$=-ce/2,Z=0,ae=K-oe,ne=K,ie=K,re=K;break;case"bottom-right":J=W+oe/2,te=W,$=W-ce/2,Z=W,ae=K-oe/2,ne=K+ce/2,ie=K,re=K;break;case"middle-left":J=z-oe,te=z,$=z,Z=z,ae=0,ne=-ce/2,ie=ce/2,re=0;break;case"middle-center":J=0,te=0,$=0,Z=0,ae=0,ne=0,ie=0,re=0;break;case"middle-right":J=W+oe,te=W,$=W,Z=W,ae=0,ne=ce/2,ie=-ce/2,re=0;break;case"top-left":J=z-oe/2,te=z+ce/2,$=z,Z=z,ae=Y+oe/2,ne=Y,ie=Y-ce/2,re=Y;break;case"top-center":J=0,te=ce/2,$=-ce/2,Z=0,ae=Y+oe,ne=Y,ie=Y,re=Y;break;case"top-right":J=W+oe/2,te=W,$=W-ce/2,Z=W,ae=Y+oe/2,ne=Y-ce/2,ie=Y,re=Y;break;default:(0,i.assertUnreachable)(S)}s(m,J,ae),s(m,te,ne),s(m,$,ie),s(m,Z,re);const ue=u.elementCount;for(let pe=0;pe<4;++pe)s(C,10,10),I(w,O,F,L,q);o(b,ue,ue+1,ue+3),o(b,ue,ue+3,ue+2)}G+=E,H+=E;let Q=0;for(let J=0;J<k;++J){const ae=V.get(B[J]),te=(Q-G)*U,ne=(Q+ae.nw-G)*U,$=(ae.nh-H)*U,ie=-H*U;s(m,te,$),s(m,te,ie),s(m,ne,$),s(m,ne,ie);const Z=V.texture.width,re=V.texture.height;s(C,ae.x/Z,ae.y/re),s(C,ae.x/Z,(ae.y+ae.h)/re),s(C,(ae.x+ae.w)/Z,ae.y/re),s(C,(ae.x+ae.w)/Z,(ae.y+ae.h)/re),Q+=ae.nw-2*E;const oe=u.elementCount;for(let ce=0;ce<4;++ce)I(w,O,F,L,q);o(b,oe+c[0],oe+c[1],oe+c[2]),o(b,oe+c[3],oe+c[4],oe+c[5])}},getText:()=>{const B=V.texture,w=t.ChunkedArray.compact(u,!0),O=t.ChunkedArray.compact(m,!0),F=t.ChunkedArray.compact(v,!0),L=t.ChunkedArray.compact(b,!0),U=t.ChunkedArray.compact(P,!0),q=t.ChunkedArray.compact(C,!0);return r.Text.create(B,w,O,F,L,U,q,b.elementCount/2,p)}}}y.create=_})(f||(xv.TextBuilder=f={})),xv}var dA={},a6;function _a(){return a6||(a6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultLabelOptions=void 0,e.lociLabel=f,e.structureElementStatsLabel=a,e.structureElementLociLabelMany=d,e.bondLabel=u,e.bundleLabel=m,e._bundleLabel=v,e.elementLabel=b,e.distanceLabel=S,e.angleLabel=T,e.dihedralLabel=A;const t=Ke(),r=gt(),n=nn(),i=ui(),c=Z_(),o=Ge(),s=er(),h=sn();e.DefaultLabelOptions={granularity:"element",condensed:!1,reverse:!1,countsOnly:!1,hidePrefix:!1,htmlStyling:!0};function f(x,M={}){var D;switch(x.kind){case"structure-loci":return x.structure.models.map(q=>q.entry).filter(q=>!!q).join(", ");case"element-loci":return a(t.StructureElement.Stats.ofLoci(x),M);case"bond-loci":const V=x.bonds[0];return V?u(V,M):"";
4207case"shape-loci":return x.shape.name;case"group-loci":const R=x.groups[0];return R?x.shape.getLabel(n.OrderedSet.start(R.ids),R.instance):"";case"every-loci":return"Everything";case"empty-loci":return"Nothing";case"data-loci":return x.getLabel();case"volume-loci":return x.volume.label||"Volume";case"isosurface-loci":return[`${x.volume.label||"Volume"}`,`Isosurface at ${h.Volume.IsoValue.toString(x.isoValue)}`].join(" | ");case"cell-loci":const E=h.Volume.Cell.getLociSize(x),I=n.OrderedSet.start(x.elements[0].indices),B=h.Volume.IsoValue.absolute(x.volume.grid.cells.data[I]),w=h.Volume.IsoValue.toRelative(B,x.volume.grid.stats),O=[`${x.volume.label||"Volume"}`,`${E===1?`Cell #${I}`:`${E} Cells`}`];return E===1&&(x.volume.instances.length>1&&O.push(`Instance #${n.OrderedSet.start(x.elements[0].instances)+1}`),O.push(`${h.Volume.IsoValue.toString(B)} (${h.Volume.IsoValue.toString(w)})`)),O.join(" | ");case"segment-loci":const F=h.Volume.Segment.getLociSize(x),L=(D=h.Volume.Segmentation.get(x.volume))===null||D===void 0?void 0:D.labels,U=n.OrderedSet.start(x.elements[0].segments);if(L&&F===1){const q=L[U];if(q)return q}return[`${x.volume.label||"Volume"}`,`${F===1?`Segment ${U}`:`${F} Segments`}`].join(" | ")}}function y(x,M){return x===1?`1 ${M}`:`${x} ${M}s`}function _(x,M,D,V,R,E){return`${b(M,{granularity:D,hidePrefix:V,reverse:R,condensed:E})} <small>[+ ${y(x-1,`other ${(0,i.capitalize)(D)}`)}]</small>`}function g(x){const{elements:M,model:D}=x,{chainAtomSegments:V,residueAtomSegments:R}=D.atomicHierarchy,E=V.offsets[V.index[M[0]]],I=V.offsets[V.index[M[M.length-1]]+1]-1;return R.index[I]-R.index[E]+1}function a(x,M={}){const D={...e.DefaultLabelOptions,...M},V=p(x,D.countsOnly,D.hidePrefix,D.condensed,D.reverse);return D.htmlStyling?V:(0,i.stripTags)(V)}function d(x,M={}){const D=t.StructureElement.Stats.create();for(const V of x)t.StructureElement.Stats.add(D,D,t.StructureElement.Stats.ofLoci(V));return a(D,M)}function p(x,M=!1,D=!1,V=!1,R=!1){const{structureCount:E,chainCount:I,residueCount:B,conformationCount:w,elementCount:O}=x;if(!M&&O===1&&B===0&&I===0)return b(x.firstElementLoc,{hidePrefix:D,condensed:V,granularity:"element",reverse:R});if(!M&&O===0&&B===1&&I===0)return b(x.firstResidueLoc,{hidePrefix:D,condensed:V,granularity:"residue",reverse:R});if(!M&&O===0&&B===0&&I===1){const{unit:F}=x.firstChainLoc,L=t.Unit.isAtomic(F)&&g(F)===1||t.Unit.Traits.is(F.traits,t.Unit.Trait.MultiChain)?"residue":"chain";return b(x.firstChainLoc,{hidePrefix:D,condensed:V,granularity:L,reverse:R})}else if(M){const F=[];return E>0&&F.push(y(E,"Structure")),I>0&&F.push(y(I,"Chain")),B>0&&F.push(y(B,"Residue")),w>0&&F.push(y(w,"Conformation")),O>0&&F.push(y(O,"Element")),F.join("<small> + </small>")}else{const F=[];return E>0&&F.push(E===1?b(x.firstStructureLoc,{hidePrefix:D,condensed:V,granularity:"structure",reverse:R}):_(E,x.firstStructureLoc,"structure",D,R,V)),I>0&&(F.push(I===1?b(x.firstChainLoc,{condensed:V,granularity:"chain",hidePrefix:D,reverse:R}):_(I,x.firstChainLoc,"chain",D,R,V)),D=!0),B>0&&(F.push(B===1?b(x.firstResidueLoc,{condensed:V,granularity:"residue",hidePrefix:D,reverse:R}):_(B,x.firstResidueLoc,"residue",D,R,V)),D=!0),w>0&&(F.push(w===1?b(x.firstConformationLoc,{condensed:V,granularity:"conformation",hidePrefix:D,reverse:R}):_(w,x.firstConformationLoc,"conformation",D,R,V)),D=!0),O>0&&F.push(O===1?b(x.firstElementLoc,{condensed:V,granularity:"element",hidePrefix:D,reverse:R}):_(O,x.firstElementLoc,"element",D,R,V)),F.join("<small> + </small>")}}function u(x,M={}){return m({loci:[t.StructureElement.Loci(x.aStructure,[{unit:x.aUnit,indices:n.OrderedSet.ofSingleton(x.aIndex)}]),t.StructureElement.Loci(x.bStructure,[{unit:x.bUnit,indices:n.OrderedSet.ofSingleton(x.bIndex)}])]},M)}function m(x,M={}){const D={...e.DefaultLabelOptions,...M},V=v(x,D);return D.htmlStyling?V:(0,i.stripTags)(V)}function v(x,M){const{granularity:D,hidePrefix:V,reverse:R,condensed:E}=M;let I=!0;for(const B of x.loci)if(!t.StructureElement.Loci.is(B)||t.StructureElement.Loci.size(B)!==1){I=!1;break}if(I){const w=x.loci.map(F=>{const{unit:L,indices:U}=F.elements[0];return t.StructureElement.Location.create(F.structure,L,L.elements[n.OrderedSet.start(U)])}).map(F=>P(F,D,V,R||E));if(E)return w.map(F=>F[0].replace(/\[.*\]/g,"").trim()).filter(F=>!!F).join(" â ");let O=0;for(let F=0,L=Math.min(...w.map(U=>U.length))-1;F<L;++F){let U=!0;for(let q=1,N=w.length;q<N;++q)if(w[0][F]!==w[q][F]){U=!1;break}if(U)O+=1;else break}if(O>0){const F=[w[0].join(" | ")];for(let L=1,U=w.length;L<U;++L)F.push(w[L].slice(O).filter(q=>!!q).join(" | "));return F.join(" â ")}else return w.map(F=>F.filter(L=>!!L).join(" | ")).filter(F=>!!F).join("</br>")}else return x.loci.map(w=>f(w,M)).filter(w=>!!w).join(E?" â ":"</br>")}function b(x,M={}){var D,V;const R={...e.DefaultLabelOptions,...M},E=P(x,R.granularity,R.hidePrefix,R.reverse||R.condensed),I=R.condensed?(V=(D=E[0])===null||D===void 0?void 0:D.replace(/\[.*\]/g,"").trim())!==null&&V!==void 0?V:"":E.filter(
4207B=>!!B).join(" | ");return R.htmlStyling?I:(0,i.stripTags)(I)}function P(x,M="element",D=!1,V=!1){const R=[];if(!D){let E=x.unit.model.entry;E.length>30&&(E=E.substr(0,27)+"â¦"),R.push(`<small>${E}</small>`),M!=="structure"&&(R.push(`<small>Model ${x.unit.model.modelNum}</small>`),R.push(`<small>Instance ${x.unit.conformation.operator.instanceId}</small>`))}return t.Unit.isAtomic(x.unit)?R.push(...C(x,M,V)):t.Unit.isCoarse(x.unit)?R.push(...l(x,M)):R.push("Unknown"),V?R.reverse():R}function C(x,M,D=!1){const V=t.StructureElement.Location.residueIndex(x),R=t.StructureProperties.chain.label_asym_id(x),E=t.StructureProperties.chain.auth_asym_id(x),I=x.unit.model.atomicHierarchy.residues.label_seq_id.valueKind(V)===c.Column.ValueKinds.Present,B=t.StructureProperties.residue.label_seq_id(x),w=t.StructureProperties.residue.auth_seq_id(x),O=t.StructureProperties.residue.pdbx_PDB_ins_code(x),F=t.StructureProperties.atom.label_comp_id(x),L=t.StructureProperties.atom.label_atom_id(x),U=t.StructureProperties.atom.label_alt_id(x),q=t.StructureProperties.atom.occupancy(x),N=t.StructureProperties.atom.sourceIndex(x),k=t.StructureProperties.residue.microheterogeneityCompIds(x),j=M==="residue"&&k.length>1?`(${k.join("|")})`:F,H=[];switch(M){case"element":{const z=`<b>${L}</b>${U?`%${U}`:""}`,W=`<small style='margin-left: 4px'>[idx <b>${N+1}</b>]</small>`;H.push(`${z}${W}`)}case"conformation":M==="conformation"&&U&&H.push(`<small>Conformation</small> <b>${U}</b>`);case"residue":const G=B===w||!I?w:B;H.push(`<b>${j} ${G}</b>${G!==w?` <small>[auth</small> <b>${w}</b><small>]</small>`:""}<b>${O||""}</b>`);case"chain":R===E?H.push(`<b>${R}</b>`):M==="chain"&&t.Unit.Traits.is(x.unit.traits,t.Unit.Trait.MultiChain)?H.push(`<small>[auth</small> <b>${E}</b><small>]</small>`):H.push(`<b>${R}</b> <small>[auth</small> <b>${E}</b><small>]</small>`)}return H.length>0&&q!==1&&!D&&(H[0]=`${H[0]} <small>[occupancy</small> <b>${Math.round(100*q)/100}</b><small>]</small>`),H.reverse()}function l(x,M){const D=t.StructureProperties.coarse.asym_id(x),V=t.StructureProperties.coarse.seq_id_begin(x),R=t.StructureProperties.coarse.seq_id_end(x),E=[];switch(M){case"element":case"conformation":case"residue":if(V===R){const I=t.StructureProperties.coarse.entityKey(x),w=x.unit.model.sequence.byEntityKey[I].sequence.compId.value(V-1);E.push(`<b>${w} ${V}</b>`)}else E.push(`<b>${V}-${R}</b>`);case"chain":E.push(`<b>${D}</b>`)}return E.reverse()}function S(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,unitLabel:"â«",...M},[V,R]=x.loci.map(B=>r.Loci.getCenter(B)),E=`${o.Vec3.distance(V,R).toFixed(2)} ${D.unitLabel}`;if(D.measureOnly)return E;const I=m(x,D);return D.condensed?`${E} | ${I}`:`Distance ${E}</br>${I}`}function T(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,...M},[V,R,E]=x.loci.map(F=>r.Loci.getCenter(F)),I=o.Vec3.sub((0,o.Vec3)(),V,R),B=o.Vec3.sub((0,o.Vec3)(),E,R),w=`${(0,s.radToDeg)(o.Vec3.angle(I,B)).toFixed(2)}°`;if(D.measureOnly)return w;const O=m(x,D);return D.condensed?`${w} | ${O}`:`Angle ${w}</br>${O}`}function A(x,M={}){const D={...e.DefaultLabelOptions,measureOnly:!1,...M},[V,R,E,I]=x.loci.map(O=>r.Loci.getCenter(O)),B=`${(0,s.radToDeg)(o.Vec3.dihedralAngle(V,R,E,I)).toFixed(2)}°`;if(D.measureOnly)return B;const w=m(x,D);return D.condensed?`${B} | ${w}`:`Dihedral ${B}</br>${w}`}})(dA)),dA}var fA={},o6;function GS(){return o6||(o6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LociLabelTextParams=e.MeasurementRepresentationCommonTextParams=void 0;const t=Ne(),r=Vr(),n=ya();e.MeasurementRepresentationCommonTextParams={customText:t.ParamDefinition.Text("",{label:"Text",description:"Override the label with custom value.",isEssential:!0}),textColor:t.ParamDefinition.Color(r.ColorNames.black,{isEssential:!0}),textSize:t.ParamDefinition.Numeric(.5,{min:.1,max:10,step:.1},{isEssential:!0})},e.LociLabelTextParams={...n.Text.Params,...e.MeasurementRepresentationCommonTextParams,borderWidth:t.ParamDefinition.Numeric(.2,{min:0,max:.5,step:.01})}})(fA)),fA}var s6;function Zae(){if(s6)return jd;s6=1,Object.defineProperty(jd,"__esModule",{value:!0}),jd.DistanceParams=void 0,jd.DistanceRepresentation=M;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=cn(),g=_a(),a=GS(),d=rt(),p={unitLabel:n.ParamDefinition.Text("â«",{isEssential:!0})},u={...t.Lines.Params,...p,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesColor:n.ParamDefinition.Color(i.ColorNames.lightgreen,{isEssential:!0}),linesSize:n.ParamDefinition.Numeric(.075,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.2,{min:.01,max:.2,step:.01})},m={...a.LociLabelTextParams,...p},v={lines:(D,V)=>(0,c.ShapeRepresentation)(T,t.Lines.Utils,{modifyState:R=>({...R,markerActions:_.MarkerActions.Highlighting})}),text:(D,V)=>(0,c.ShapeRepresentation)(x,r.Text.Utils,{modifyState:R=>({...R,markerActions:_.MarkerAction.None})})};jd.DistanceParams={...u,...m,visuals:n.ParamDefinition.MultiSelect(["lines","text"],n.ParamDefinition.objectToOptions(v))};function b(){return{sphereA:(0,d.Sphere3D)(),sphereB:(0,d.Sphere3D)(),center:(0,y.Vec3)(),distance:0}}function P(D,V){const{sphereA:R,sphereB:E,center:I}=V,[B,w]=D.loci;return e.Loci.getBoundingSphere(B,R),e.Loci.getBoundingSphere(w,E),y.Vec3.add(I,R.center,E.center),y.Vec3.scale(I,I,.5),V.distance=y.Vec3.distance(R.center,E.center),V}const C=b();function l(D,V){return D.pairs.length===1?`Distance ${(0,g.distanceLabel)(D.pairs[0],{unitLabel:V,measureOnly:!0})}`:`${D.pairs.length} Distances`}function S(D,V,R){const E=h.LinesBuilder.create(128,64,R);for(let I=0,B=D.pairs.length;I<B;++I)P(D.pairs[I],C),E.addFixedLengthDashes(C.sphereA.center,C.sphereB.center,V.dashLength,I);return E.getLines()}function T(D,V,R,E){const I=S(V,R,E&&E.geometry),B=l(V,R.unitLabel),w=O=>(0,g.distanceLabel)(V.pairs[O],R);return s.Shape.create(B,V,I,()=>R.linesColor,()=>R.linesSize,w)}function A(D,V,R){const E=f.TextBuilder.create(V,128,64,R);for(let I=0,B=D.pairs.length;I<B;++I){P(D.pairs[I],C);const{center:w,distance:O,sphereA:F,sphereB:L}=C,U=V.customText||`${O.toFixed(2)} ${V.unitLabel}`,N=Math.max(2,F.radius,L.radius)/2;E.add(U,w[0],w[1],w[2],1,N,I)}return E.getText()}function x(D,V,R,E){const I=A(V,R,E&&E.geometry),B=l(V,R.unitLabel),w=O=>(0,g.distanceLabel)(V.pairs[O],R);return s.Shape.create(B,V,I,()=>R.textColor,()=>R.textSize,w)}function M(D,V){return o.Representation.createMulti("Distance",D,V,o.Representation.StateBuilder,v)}return jd}var Gd={},c6;function Jae(){if(c6)return Gd;c6=1,Object.defineProperty(Gd,"__esModule",{value:!0}),Gd.LabelParams=void 0,Gd.LabelRepresentation=m;const e=gt(),t=ya(),r=Ne(),n=lc(),i=Lt(),c=pn(),o=Kf(),s=rt(),h=_a(),y={...GS().LociLabelTextParams},_={text:(v,b)=>(0,n.ShapeRepresentation)(u,t.Text.Utils)};Gd.LabelParams={...y,scaleByRadius:r.ParamDefinition.Boolean(!0),visuals:r.ParamDefinition.MultiSelect(["text"],r.ParamDefinition.objectToOptions(_)),snapshotKey:r.ParamDefinition.Text("",{isEssential:!0,disableInteractiveUpdates:!0,description:"Activate the snapshot with the provided key when clicking on the label"}),tooltip:r.ParamDefinition.Text("",{isEssential:!0,multiline:!0,disableInteractiveUpdates:!0,placeholder:"Tooltip",description:"Tooltip text to be displayed when hovering over the label"})};const g=(0,s.Sphere3D)();function a(v,b=!1){return v.label||(0,h.lociLabel)(v.loci,{hidePrefix:!0,htmlStyling:!1,condensed:b})}function d(v){return v.infos.length===1?a(v.infos[0]):`${v.infos.length} Labels`}function p(v,b,P){const C=o.TextBuilder.create(b,128,64,P),l=b.customText.trim();for(let S=0,T=v.infos.length;S<T;++S){const A=v.infos[S],x=e.Loci.getBoundingSphere(A.loci,g);
4207if(!x)continue;const{center:M,radius:D}=x,V=l||a(A,!0);C.add(V,M[0],M[1],M[2],b.scaleByRadius?D/.9:0,b.scaleByRadius?Math.max(1,D):1,S)}return C.getText()}function u(v,b,P,C){var l,S;const T=p(b,P,C&&C.geometry),A=d(b),x=(S=(l=P.tooltip)===null||l===void 0?void 0:l.trim())!==null&&S!==void 0?S:"",M=P.customText.trim();let D;return x?D=V=>x:M?D=V=>M:D=V=>a(b.infos[V]),c.Shape.create(A,b,T,()=>P.textColor,()=>P.textSize,D)}function m(v,b){return i.Representation.createMulti("Label",v,b,i.Representation.StateBuilder,_)}return Gd}var zd={},qP={},u6;function eoe(){if(u6)return qP;u6=1,Object.defineProperty(qP,"__esModule",{value:!0}),qP.addAxes=h;const e=Ge(),t=$t(),r=rt(),n=Gf(),i=(0,e.Vec3)(),c=e.Mat4.identity(),o=new Float32Array(18),s=new Uint8Array([0,1,2,3,4,5]);function h(f,y,_,g,a){const{origin:d,dirA:p,dirB:u,dirC:m}=y;e.Vec3.add(i,d,p),e.Vec3.toArray(e.Vec3.add(i,d,p),o,0),e.Vec3.toArray(e.Vec3.sub(i,d,p),o,3),e.Vec3.toArray(e.Vec3.add(i,d,u),o,6),e.Vec3.toArray(e.Vec3.sub(i,d,u),o,9),e.Vec3.toArray(e.Vec3.add(i,d,m),o,12),e.Vec3.toArray(e.Vec3.sub(i,d,m),o,15);const v=(0,n.createCage)(o,s),b=r.Axes3D.volume(y),P=Math.cbrt(b)/300*_;t.MeshBuilder.addCage(f,c,v,P,g,a)}return qP}var Av={},l6;function toe(){if(l6)return Av;l6=1,Object.defineProperty(Av,"__esModule",{value:!0}),Av.addBoundingBox=f,Av.addOrientedBox=m;const e=Ge(),t=rt(),r=$t(),n=ba(),i=Jn(),c=Gf(),o=e.Vec3.zero(),s=e.Vec3.zero(),h={};function f(v,b,P,C,l){const{min:S,max:T}=b;h.radiusTop=P,h.radiusBottom=P,h.radialSegments=l,e.Vec3.set(o,T[0],T[1],T[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],S[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,S[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,T[0],S[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],T[1],S[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],S[1],T[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,S[0],T[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,T[0],S[1],T[2]),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(o,S[0],T[1],S[2]),(0,i.addSphere)(v,o,P,C),e.Vec3.set(s,T[0],T[1],S[2]),(0,i.addSphere)(v,s,P,C),(0,n.addCylinder)(v,o,s,1,h),e.Vec3.set(s,S[0],T[1],T[2]),(0,i.addSphere)(v,s,P,C),(0,n.addCylinder)(v,o,s,1,h)}const y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=e.Mat4.identity(),p=new Float32Array(24),u=new Uint8Array([0,1,0,3,0,6,1,2,1,7,2,3,2,4,3,5,4,5,4,7,5,6,6,7]);function m(v,b,P,C,l){const{origin:S,dirA:T,dirB:A,dirC:x}=b,M=e.Vec3.negate(_,T),D=e.Vec3.negate(g,A),V=e.Vec3.negate(a,x);let R=0;const E=function(O,F,L){e.Vec3.copy(y,S),e.Vec3.add(y,y,O),e.Vec3.add(y,y,F),e.Vec3.add(y,y,L),e.Vec3.toArray(y,p,R),R+=3};E(T,A,x),E(T,A,V),E(T,D,V),E(T,D,x),E(M,D,V),E(M,D,x),E(M,A,x),E(M,A,V);const I=(0,c.createCage)(p,u),B=t.Axes3D.volume(b),w=Math.cbrt(B)/300*P;r.MeshBuilder.addCage(v,d,I,w,C,l)}return Av}var UP={},d6;function Ow(){if(d6)return UP;d6=1,Object.defineProperty(UP,"__esModule",{value:!0}),UP.addEllipsoid=o;const e=Ge(),t=$t(),r=Jn(),n=e.Mat4.identity(),i=(0,e.Vec3)();function c(s,h,f,y,_){return e.Vec3.add(i,h,f),e.Mat4.targetTo(s,h,i,y),e.Mat4.setTranslation(s,h),e.Mat4.scale(s,s,_)}function o(s,h,f,y,_,g){t.MeshBuilder.addPrimitive(s,c(n,h,f,y,_),(0,r.getSphere)(g))}return UP}var f6;function roe(){if(f6)return zd;f6=1,Object.defineProperty(zd,"__esModule",{value:!0}),zd.OrientationParams=void 0,zd.OrientationRepresentation=V;const e=Ne(),t=Vr(),r=lc(),n=Lt(),i=pn(),c=Rt(),o=$t(),s=_a(),h=eoe(),f=toe(),y=Ow(),_=rt(),g=Ge(),a=cn(),d=Ke(),p={color:e.ParamDefinition.Color(t.ColorNames.orange),scaleFactor:e.ParamDefinition.Numeric(1,{min:.1,max:10,step:.1}),radiusScale:e.ParamDefinition.Numeric(2,{min:.1,max:10,step:.1})},u={...c.Mesh.Params,...p},m={...c.Mesh.Params,...p},v={...c.Mesh.Params,...p},b={axes:(R,E)=>(0,r.ShapeRepresentation)(l,c.Mesh.Utils),box:(R,E)=>(0,r.ShapeRepresentation)(A,c.Mesh.Utils),ellipsoid:(R,E)=>(0,r.ShapeRepresentation)(D,c.Mesh.Utils)};zd.OrientationParams={...u,...m,...v,visuals:e.ParamDefinition.MultiSelect(["box"],e.ParamDefinition.objectToOptions(b))};function P(R){return`Principal Axes of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function C(R,E,I){const B=o.MeshBuilder.createState(256,128,I),w=d.StructureElement.Loci.getPrincipalAxesMany(R.locis);return _.Axes3D.scale(w.momentsAxes,w.momentsAxes,E.scaleFactor),B.currentGroup=0,(0,h.addAxe
4207s)(B,w.momentsAxes,E.radiusScale,2,20),o.MeshBuilder.getMesh(B)}function l(R,E,I,B){const w=C(E,I,B&&B.geometry),O=P(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function S(R){return`Oriented Box of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function T(R,E,I){const B=o.MeshBuilder.createState(256,128,I),w=d.StructureElement.Loci.getPrincipalAxesMany(R.locis);return _.Axes3D.scale(w.boxAxes,w.boxAxes,E.scaleFactor),B.currentGroup=0,(0,f.addOrientedBox)(B,w.boxAxes,E.radiusScale,2,20),o.MeshBuilder.getMesh(B)}function A(R,E,I,B){const w=T(E,I,B&&B.geometry),O=S(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function x(R){return`Oriented Ellipsoid of ${(0,s.structureElementLociLabelMany)(R,{countsOnly:!0})}`}function M(R,E,I){const B=o.MeshBuilder.createState(256,128,I),O=d.StructureElement.Loci.getPrincipalAxesMany(R.locis).boxAxes,{origin:F,dirA:L,dirB:U}=O,q=_.Axes3D.size((0,g.Vec3)(),O);g.Vec3.scale(q,q,.5*E.scaleFactor);const N=g.Vec3.create(q[2],q[1],q[0]);return B.currentGroup=0,(0,y.addEllipsoid)(B,F,L,U,N,2),o.MeshBuilder.getMesh(B)}function D(R,E,I,B){const w=M(E,I,B&&B.geometry),O=x(E.locis);return i.Shape.create(O,E,w,()=>I.color,()=>1,()=>O)}function V(R,E){const I=n.Representation.createMulti("Orientation",R,E,n.Representation.StateBuilder,b);return I.setState({markerActions:a.MarkerActions.Highlighting}),I}return zd}var Hd={},mA={},m6;function kw(){return m6||(m6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCircleProps=void 0,e.Circle=t,e.DefaultCircleProps={radius:1,segments:36,thetaStart:0,thetaLength:Math.PI*2};function t(r){const{radius:n,segments:i,thetaStart:c,thetaLength:o}={...e.DefaultCircleProps,...r},s=o===Math.PI*2,h=s?i+1:i+2,f=new Float32Array(h*3),y=new Float32Array(h*3),_=new Uint32Array(i*3);f[0]=0,f[1]=0,f[2]=0,y[0]=0,y[1]=1,y[2]=0;for(let g=0,a=3;g<i;++g,a+=3){const d=c+g/i*o;f[a]=n*Math.sin(d),f[a+1]=0,f[a+2]=n*Math.cos(d),y[a]=0,y[a+1]=1,y[a+2]=0}for(let g=1,a=0;g<i;++g,a+=3)_[a]=g,_[a+1]=g+1,_[a+2]=0;if(s){const g=(i-1)*3;_[g]=i,_[g+1]=1,_[g+2]=0}else{const g=c+o,a=(i+1)*3;f[a]=n*Math.sin(g),f[a+1]=0,f[a+2]=n*Math.cos(g),y[a]=0,y[a+1]=1,y[a+2]=0;const d=(i-1)*3;_[d]=i,_[d+1]=i+1,_[d+2]=0}return{vertices:f,normals:y,indices:_}}})(mA)),mA}var p6;function noe(){if(p6)return Hd;p6=1,Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.AngleParams=void 0,Hd.AngleRepresentation=k;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=Rt(),g=$t(),a=er(),d=kw(),p=to(),u=cn(),m=_a(),v=rt(),b=GS(),P={color:n.ParamDefinition.Color(i.ColorNames.lightgreen),arcScale:n.ParamDefinition.Numeric(.7,{min:.01,max:1,step:.01})},C={...t.Lines.Params,...P,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesSize:n.ParamDefinition.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.04,{min:.01,max:.2,step:.01})},l={...C},S={...C},T={..._.Mesh.Params,...P,ignoreLight:n.ParamDefinition.Boolean(!0),sectorOpacity:n.ParamDefinition.Numeric(.75,{min:0,max:1,step:.01})},A={vectors:(j,H)=>(0,c.ShapeRepresentation)(w,t.Lines.Utils,{modifyState:G=>({...G,pickable:!1})}),arc:(j,H)=>(0,c.ShapeRepresentation)(F,t.Lines.Utils,{modifyState:G=>({...G,pickable:!1})}),sector:(j,H)=>(0,c.ShapeRepresentation)(U,_.Mesh.Utils,{modifyProps:G=>({...G,alpha:G.sectorOpacity}),modifyState:G=>({...G,markerActions:u.MarkerActions.Highlighting})}),text:(j,H)=>(0,c.ShapeRepresentation)(N,r.Text.Utils,{modifyState:G=>({...G,markerActions:u.MarkerAction.None})})};Hd.AngleParams={...l,...S,...T,...b.LociLabelTextParams,visuals:n.ParamDefinition.MultiSelect(["vectors","sector","text"],n.ParamDefinition.objectToOptions(A))};function x(){return{sphereA:(0,v.Sphere3D)(),sphereB:(0,v.Sphere3D)(),sphereC:(0,v.Sphere3D)(),arcDirA:(0,y.Vec3)(),arcDirC:(0,y.Vec3)(),arcNormal:(0,y.Vec3)(),radius:0,angle:0}}const M=(0,y.Vec3)(),D=(0,y.Mat4)();function V(j,H,G){const{sphereA:z,sphereB:W,sphereC:X}=H,{arcDirA:Y,arcDirC:K,arcNormal:Q}=H,[J,ae,te]=j.loci;e.Loci.getBoundingSphere(J,z),e.Loci.getBoundingSphere(ae,W),e.Loci.getBoundingSphere(te,X),y.Vec3.sub(Y,z.center,W.center),y.Vec3.sub(K,X.center,W.center),y.Vec3.cross(Q,Y,K);const $=Math.min(y.Vec3.magnitude(Y),y.Vec3.magnitude(K))*G;return H.radius=$,H.angle=y.Vec3.angle(Y,K),H}function R(j,H){const{radius:G,angle:z}=j,W=H?(0,a.arcLength)(z,G)/H:32;y.Mat4.targetTo(D,j.sphereB.center,j.sphereA.center,j.arcNormal),y.Mat4.setTranslation(D,j.sphereB.center),y.Mat4.mul(D,D,y.Mat4.rotY180);
4207const X=(0,d.Circle)({radius:G,thetaLength:z,segments:W});return(0,p.transformPrimitive)(X,D)}const E=x();function I(j){return j.triples.length===1?`Angle ${(0,m.angleLabel)(j.triples[0],{measureOnly:!0})}`:`${j.triples.length} Angles`}function B(j,H,G){const z=h.LinesBuilder.create(128,64,G);for(let W=0,X=j.triples.length;W<X;++W)V(j.triples[W],E,H.arcScale),z.addFixedLengthDashes(E.sphereB.center,E.sphereA.center,H.dashLength,W),z.addFixedLengthDashes(E.sphereB.center,E.sphereC.center,H.dashLength,W);return z.getLines()}function w(j,H,G,z){const W=B(H,G,z&&z.geometry),X=I(H);return s.Shape.create(X,H,W,()=>G.color,()=>G.linesSize,()=>"")}function O(j,H,G){const z=h.LinesBuilder.create(128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale);const Y=R(E,H.dashLength),{indices:K,vertices:Q}=Y;for(let J=0,ae=K.length;J<ae;J+=3){if(J%2===1)continue;const te=K[J]*3,ne=K[J+1]*3,$=Q[te],ie=Q[te+1],Z=Q[te+2],re=Q[ne],oe=Q[ne+1],ce=Q[ne+2];z.add($,ie,Z,re,oe,ce,W)}}return z.getLines()}function F(j,H,G,z){const W=O(H,G,z&&z.geometry),X=I(H);return s.Shape.create(X,H,W,()=>G.color,()=>G.linesSize,()=>"")}function L(j,H,G){const z=g.MeshBuilder.createState(128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale);const Y=R(E);z.currentGroup=W,g.MeshBuilder.addPrimitive(z,y.Mat4.id,Y),g.MeshBuilder.addPrimitiveFlipped(z,y.Mat4.id,Y)}return g.MeshBuilder.getMesh(z)}function U(j,H,G,z){const W=L(H,G,z&&z.geometry),X=I(H),Y=K=>(0,m.angleLabel)(H.triples[K]);return s.Shape.create(X,H,W,()=>G.color,()=>1,Y)}function q(j,H,G){const z=f.TextBuilder.create(H,128,64,G);for(let W=0,X=j.triples.length;W<X;++W){V(j.triples[W],E,H.arcScale),y.Vec3.add(M,E.arcDirA,E.arcDirC),y.Vec3.setMagnitude(M,M,E.radius),y.Vec3.add(M,E.sphereB.center,M);const Y=(0,a.radToDeg)(E.angle).toFixed(2),K=H.customText||`${Y}°`,J=Math.max(2,E.sphereA.radius,E.sphereB.radius,E.sphereC.radius)/2;z.add(K,M[0],M[1],M[2],.1,J,W)}return z.getText()}function N(j,H,G,z){const W=q(H,G,z&&z.geometry),X=I(H),Y=K=>(0,m.angleLabel)(H.triples[K]);return s.Shape.create(X,H,W,()=>G.textColor,()=>G.textSize,Y)}function k(j,H){return o.Representation.createMulti("Angle",j,H,o.Representation.StateBuilder,A)}return Hd}var Wd={},h6;function ioe(){if(h6)return Wd;h6=1,Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.DihedralParams=void 0,Wd.DihedralRepresentation=K;const e=gt(),t=kn(),r=ya(),n=Ne(),i=Vr(),c=lc(),o=Lt(),s=pn(),h=ac(),f=Kf(),y=Ge(),_=Rt(),g=$t(),a=er(),d=kw(),p=to(),u=cn(),m=_a(),v=GS(),b=rt(),P={color:n.ParamDefinition.Color(i.ColorNames.lightgreen),arcScale:n.ParamDefinition.Numeric(.7,{min:.01,max:1,step:.01})},C={...t.Lines.Params,...P,lineSizeAttenuation:n.ParamDefinition.Boolean(!0),linesSize:n.ParamDefinition.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:n.ParamDefinition.Numeric(.04,{min:.01,max:.2,step:.01})},l={...C},S={...C},T={...C},A={...C},x={..._.Mesh.Params,...P,ignoreLight:n.ParamDefinition.Boolean(!0),sectorOpacity:n.ParamDefinition.Numeric(.75,{min:0,max:1,step:.01})},M={vectors:(Q,J)=>(0,c.ShapeRepresentation)(F,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),extenders:(Q,J)=>(0,c.ShapeRepresentation)(j,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),connector:(Q,J)=>(0,c.ShapeRepresentation)(U,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),arms:(Q,J)=>(0,c.ShapeRepresentation)(N,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),arc:(Q,J)=>(0,c.ShapeRepresentation)(G,t.Lines.Utils,{modifyState:ae=>({...ae,pickable:!1})}),sector:(Q,J)=>(0,c.ShapeRepresentation)(W,_.Mesh.Utils,{modifyProps:ae=>({...ae,alpha:ae.sectorOpacity}),modifyState:ae=>({...ae,markerActions:u.MarkerActions.Highlighting})}),text:(Q,J)=>(0,c.ShapeRepresentation)(Y,r.Text.Utils,{modifyState:ae=>({...ae,markerActions:u.MarkerAction.None})})};Wd.DihedralParams={...l,...S,...T,...A,...x,...v.LociLabelTextParams,visuals:n.ParamDefinition.MultiSelect(["extenders","arms","sector","text"],n.ParamDefinition.objectToOptions(M))};function D(){return{sphereA:(0,b.Sphere3D)(),sphereB:(0,b.Sphere3D)(),sphereC:(0,b.Sphere3D)(),sphereD:(0,b.Sphere3D)(),dirBA:(0,y.Vec3)(),dirCD:(0,y.Vec3)(),projA:(0,y.Vec3)(),projD:(0,y.Vec3)(),arcPointA:(0,y.Vec3)(),arcPointD:(0,y.Vec3)(),arcDirA:(0,y.Vec3)(),arcDirD:(0,y.Vec3)(),arcCenter:(0,y.Vec3)(),arcNormal:(0,y.Vec3)(),radius:0,angle:0}}const V=(0,y.Vec3)(),R=(0,y.Mat4)();function E(Q,J,ae){const{sphereA:te,sphereB:ne,sphereC:$,sphereD:ie,dirBA:Z,dirCD:re,projA:oe,projD:ce}=J,{arcPointA:ue,arcPointD:pe,arcDirA:he,arcDirD:fe,arcCenter:de,arcNormal:ge}=J,[Ce,ve,le,me]=Q.loci;e.Loci.getBoundingSphere(Ce,te),e.Loci.getBoundingSphere(ve,ne),e.Loci.getBoundingSphere(le,$),e.Loci.getBoundingSphere(me,ie),y.Vec3.add(de,ne.center,$.center),y.Vec3.scale(de,de,.5),y.Vec3.sub(Z,te.center,ne.center),y.Vec3.sub(re,ie.center,$.center),y.Vec3.add(ue,de,Z),y.Vec3.add(pe,de,re),y.Vec3.sub(ge,$.center,ne.center),y.Vec3.orthogonalize(he,ge,Z),y.Vec3.orthogonalize(fe,ge,re),y.Vec3.projectPointOnVector(oe,ue,he,de),y.Vec3.projectPointOnVector(ce,pe,fe,de);const se=Math.min(y.Vec3.distance(oe,de),y.Vec3.distance(ce,de))*ae;y.Vec3.setMagnitude(he,he,se),y.Vec3.setMagnitude(fe,fe,se),y.Vec3.add(ue,de,he),y.Vec3.add(pe,de,fe),J.radius=se,J.angle=y.Vec3.dihedralAngle(te.center,ne.center,$.center,ie.center),y.Vec3.matchDirection(V,ge,y.Vec3.sub(V,ue,te.center));const ye=y.Vec3.angle(Z,V),Se=se/Math.cos(ye-a.halfPI);y.Vec3.add(oe,ne.center,y.Vec3.setMagnitude(V,Z,Se)),y.Vec3.matchDirection(V,ge,y.Vec3.sub(V,pe,ie.center));const Ae=y.Vec3.angle(re,V),_e=se/Math.cos(Ae-a.halfPI);return y.Vec3.add(ce,$.center,y.Vec3.setMagnitude(V,re,_e)),J}function I(Q,J){const{radius:ae,angle:te}=Q,ne=J?(0,a.arcLength)(te,ae)/J:32;y.Mat4.targetTo(R,Q.arcCenter,te<0?Q.arcPointD:Q.arcPointA,Q.arcNormal),y.Mat4.setTranslation(R,Q.arcCenter),y.Mat4.mul(R,R,y.Mat4.rotY180);
4207const $=(0,d.Circle)({radius:ae,thetaLength:Math.abs(te),segments:ne});return(0,p.transformPrimitive)($,R)}const B=D();function w(Q){return Q.quads.length===1?`Dihedral ${(0,m.dihedralLabel)(Q.quads[0],{measureOnly:!0})}`:`${Q.quads.length} Dihedrals`}function O(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.arcCenter,B.arcPointA,J.dashLength,ne),te.addFixedLengthDashes(B.arcCenter,B.arcPointD,J.dashLength,ne);return te.getLines()}function F(Q,J,ae,te){const ne=O(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function L(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.sphereB.center,B.sphereC.center,J.dashLength,ne);return te.getLines()}function U(Q,J,ae,te){const ne=L(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function q(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.sphereB.center,B.sphereA.center,J.dashLength,ne),te.addFixedLengthDashes(B.sphereC.center,B.sphereD.center,J.dashLength,ne);return te.getLines()}function N(Q,J,ae,te){const ne=q(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function k(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne)E(Q.quads[ne],B,J.arcScale),te.addFixedLengthDashes(B.arcPointA,B.projA,J.dashLength,ne),te.addFixedLengthDashes(B.arcPointD,B.projD,J.dashLength,ne);return te.getLines()}function j(Q,J,ae,te){const ne=k(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function H(Q,J,ae){const te=h.LinesBuilder.create(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale);const ie=I(B,J.dashLength),{indices:Z,vertices:re}=ie;for(let oe=0,ce=Z.length;oe<ce;oe+=3){if(oe%2===1)continue;const ue=Z[oe]*3,pe=Z[oe+1]*3,he=re[ue],fe=re[ue+1],de=re[ue+2],ge=re[pe],Ce=re[pe+1],ve=re[pe+2];te.add(he,fe,de,ge,Ce,ve,ne)}}return te.getLines()}function G(Q,J,ae,te){const ne=H(J,ae,te&&te.geometry),$=w(J);return s.Shape.create($,J,ne,()=>ae.color,()=>ae.linesSize,()=>"")}function z(Q,J,ae){const te=g.MeshBuilder.createState(128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale);const ie=I(B);te.currentGroup=ne,g.MeshBuilder.addPrimitive(te,y.Mat4.id,ie),g.MeshBuilder.addPrimitiveFlipped(te,y.Mat4.id,ie)}return g.MeshBuilder.getMesh(te)}function W(Q,J,ae,te){const ne=z(J,ae,te&&te.geometry),$=w(J),ie=Z=>(0,m.dihedralLabel)(J.quads[Z]);return s.Shape.create($,J,ne,()=>ae.color,()=>1,ie)}function X(Q,J,ae){const te=f.TextBuilder.create(J,128,64,ae);for(let ne=0,$=Q.quads.length;ne<$;++ne){E(Q.quads[ne],B,J.arcScale),y.Vec3.add(V,B.arcDirA,B.arcDirD),y.Vec3.setMagnitude(V,V,B.radius),y.Vec3.add(V,B.arcCenter,V);let ie=(0,a.radToDeg)(B.angle).toFixed(2);ie==="-0.00"&&(ie="0.00");const Z=J.customText||`${ie}°`,oe=Math.max(2,B.sphereA.radius,B.sphereB.radius,B.sphereC.radius,B.sphereD.radius)/2;te.add(Z,V[0],V[1],V[2],.1,oe,ne)}return te.getText()}function Y(Q,J,ae,te){const ne=X(J,ae,te&&te.geometry),$=w(J),ie=Z=>(0,m.dihedralLabel)(J.quads[Z]);return s.Shape.create($,J,ne,()=>ae.textColor,()=>ae.textSize,ie)}function K(Q,J){return o.Representation.createMulti("Dihedral",Q,J,o.Representation.StateBuilder,M)}return Wd}var Mv={},g6;function Yf(){if(g6)return Mv;g6=1,Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.Clipping=i;const e=gt(),t=Ke(),r=va(),n=Y_();function i(c,o){return{kind:c,layers:o}}return(function(c){c.Empty={kind:"empty-loci",layers:[]},(function(d){d.is=n.BitFlags.has;let p;(function(C){C[C.None=0]="None",C[C.One=1]="One",C[C.Two=2]="Two",C[C.Three=4]="Three",C[C.Four=8]="Four",C[C.Five=16]="Five",C[C.Six=32]="Six"})(p=d.Flag||(d.Flag={}));function u(C){return n.BitFlags.create(C)}d.create=u,d.Names={one:p.One,two:p.Two,three:p.Three,four:p.Four,five:p.Five,six:p.Six};function m(C){return C in d.Names}d.isName=m;function v(C){switch(C){case"one":return p.One;case"two":return p.Two;case"three":return p.Three;
4207case"four":return p.Four;case"five":return p.Five;case"six":return p.Six}}d.fromName=v;function b(C){let l=p.None;for(let S=0,T=C.length;S<T;++S)l|=v(C[S]);return l}d.fromNames=b;function P(C){const l=[];return d.is(C,p.One)&&l.push("one"),d.is(C,p.Two)&&l.push("two"),d.is(C,p.Three)&&l.push("three"),d.is(C,p.Four)&&l.push("four"),d.is(C,p.Five)&&l.push("five"),d.is(C,p.Six)&&l.push("six"),l}d.toNames=P})(c.Groups||(c.Groups={}));function o(d,p){if(d.layers.length!==p.layers.length)return!1;for(let u=0,m=d.layers.length;u<m;++u)if(d.layers[u].groups!==p.layers[u].groups||!e.Loci.areEqual(d.layers[u].loci,p.layers[u].loci))return!1;return!0}c.areEqual=o;function s(d){return d.layers.length===0}c.isEmpty=s;function h(d,p){if(d.kind==="element-loci"){const u=[];for(const m of d.layers){let{loci:v,groups:b}=m;v=t.StructureElement.Loci.remap(v,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,groups:b})}return{kind:"element-loci",layers:u}}else return d}c.remap=h;function f(d){if(s(d))return d;if(d.kind==="element-loci"){const{structure:p}=d.layers[0].loci,u=new Map;let m=t.StructureElement.Loci.none(p);for(let b=0,P=d.layers.length;b<P;++b){let{loci:C,groups:l}=d.layers[P-b-1];C=t.StructureElement.Loci.subtract(C,m),m=t.StructureElement.Loci.union(C,m),t.StructureElement.Loci.isEmpty(C)||(u.has(l)&&(C=t.StructureElement.Loci.union(C,u.get(l))),u.set(l,C))}const v=[];return u.forEach((b,P)=>{v.push({loci:b,groups:P})}),{kind:"element-loci",layers:v}}else return d}c.merge=f;function y(d,p){if(s(d))return d;if(d.kind==="element-loci"){const{structure:u}=d.layers[0].loci,m=[];for(const v of d.layers){let{loci:b,groups:P}=v;const C=t.StructureElement.Loci.remap(b,p);b=t.StructureElement.Loci.remap(C,u),t.StructureElement.Loci.isEmpty(b)||m.push({loci:b,groups:P})}return{kind:"element-loci",layers:m}}else return d}c.filter=y;function _(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{script:b,groups:P}=d[m],C=r.Script.toLoci(b,p);t.StructureElement.Loci.isEmpty(C)||u.push({loci:C,groups:P})}return{kind:"element-loci",layers:u}}c.ofScript=_;function g(d,p){const u=[];for(let m=0,v=d.length;m<v;++m){const{bundle:b,groups:P}=d[m],C=t.StructureElement.Bundle.toLoci(b,p.root);u.push({loci:C,groups:P})}return{kind:"element-loci",layers:u}}c.ofBundle=g;function a(d){const p=[];for(let u=0,m=d.layers.length;u<m;++u){const{loci:v,groups:b}=d.layers[u],P=t.StructureElement.Bundle.fromLoci(v);p.push({bundle:P,groups:b})}return{kind:"element-loci",layers:p}}c.toBundle=a})(i||(Mv.Clipping=i={})),Mv}var qi={},jP={},y6;function aoe(){if(y6)return jP;y6=1,Object.defineProperty(jP,"__esModule",{value:!0}),jP.parseMtl=t;const e=vt();function t(r){const n=new Map;let i=null,c=(0,e.Color)(8421504);const o=()=>{i!==null&&n.set(i,{Kd:c})},s=r.split(/\r?\n/);for(const h of s){const f=h.trim();if(!(f.length===0||f.charCodeAt(0)===35)){if(f.startsWith("newmtl"))o(),i=f.slice(6).trim(),c=(0,e.Color)(8421504);else if(f.startsWith("Kd")){const y=f.slice(2).trim().split(/\s+/);if(y.length>=3){const _=parseFloat(y[0]),g=parseFloat(y[1]),a=parseFloat(y[2]);c=e.Color.fromNormalizedRgb(_,g,a)}}}}return o(),n}return jP}var Fu={},v6;function ooe(){if(v6)return Fu;v6=1,Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.ObjShapeParams=void 0,Fu.createObjShapeParams=_,Fu.shapeFromObj=P;const e=nt(),t=vt(),r=$t(),n=Rt(),i=pn(),c=_t(),o=Ne(),s=Vr(),h=dQ(),f=et(),y=Ct();function _(C,l){var S,T;const A=((S=C?.vertexColors.length)!==null&&S!==void 0?S:0)>0,x=(T=C?.materialNames)!==null&&T!==void 0?T:[],M=x.length>0,D=l!==void 0&&l.size>0&&M,V=x.length>1?(0,h.distinctColors)(x.length):x.length===1?[s.ColorNames.grey]:[],R={};for(let B=0;B<x.length;++B)R[x[B]]=o.ParamDefinition.Color(V[B]);const E={uniform:o.ParamDefinition.Group({color:o.ParamDefinition.Color(s.ColorNames.grey)},{isFlat:!0})};D&&(E.given=o.ParamDefinition.Group({},{isFlat:!0})),E.custom=o.ParamDefinition.Group(R,{isFlat:!1}),A&&(E.vertex=o.ParamDefinition.Group({},{isFlat:!0}));const I=A?"vertex":D?"given":M?"custom":"uniform";return{...n.Mesh.Params,coloring:o.ParamDefinition.MappedStatic(I,E)}}Fu.ObjShapeParams=_();function g(C,l,S){const{coloring:T}=l;if(T.name==="vertex")return[];const A=Math.max(1,C.length);if(T.name==="uniform")return Array(A).fill(T.params.color);
4207if(T.name==="given")return C.length===0?[s.ColorNames.grey]:C.map(x=>{var M,D;return(D=(M=S?.get(x))===null||M===void 0?void 0:M.Kd)!==null&&D!==void 0?D:s.ColorNames.grey});{if(C.length===0)return[s.ColorNames.grey];const x=T.params;return C.map(M=>{var D;return(D=x[M])!==null&&D!==void 0?D:s.ColorNames.grey})}}function a(C){const l=new Int32Array(C.positionCount);for(let S=0;S<C.triangleCount;++S){const T=S*3,A=C.faceGroups[S];for(let x=0;x<3;++x)l[C.positionIndices[T+x]]=A}return l}function d(C,l){const{positionIndices:S,normalIndices:T,faceGroups:A,positionCount:x,triangleCount:M}=C,D=C.normalCount>0;let V=l,R=null,E=null;if(!l){R=new Int32Array(x).fill(-1);let I=!1;e:for(let B=0;B<M;++B){const w=B*3,O=A[B];for(let F=0;F<3;++F){const L=S[w+F];if(R[L]===-1)R[L]=O;else if(R[L]!==O){I=!0;break e}}}I?y.isDebugMode&&console.warn("OBJ: position shared across face groups; falling back to vertex duplication"):V=!0}if(V&&D){E=new Int32Array(x).fill(-1);let I=!1;e:for(let B=0;B<M;++B){const w=B*3;for(let O=0;O<3;++O){const F=S[w+O],L=T[w+O];if(E[F]===-1)E[F]=L;else if(E[F]!==L){I=!0;break e}}}I&&(V=!1)}return{canUseIndexedPath:V,posGroups:R,posNormals:E}}async function p(C,l,S,T){const{positions:A,normals:x,positionIndices:M,triangleCount:D,positionCount:V}=l,R=l.normalCount>0,{posGroups:E,posNormals:I,usePositionGroups:B}=S,w=5e4,O=r.MeshBuilder.createState(V,D,T),{vertices:F,normals:L,indices:U,groups:q}=O;for(let k=0;k<V;++k){const j=k*3;if(c.ChunkedArray.add3(F,A[j],A[j+1],A[j+2]),I!==null&&I[k]>=0){const H=I[k]*3;c.ChunkedArray.add3(L,x[H],x[H+1],x[H+2])}else c.ChunkedArray.add3(L,0,0,0);c.ChunkedArray.add(q,B?k:Math.max(0,E[k])),k%w===0&&C.shouldUpdate&&await C.update({message:"Building OBJ mesh",current:k,max:V})}for(let k=0;k<D;++k){const j=k*3;c.ChunkedArray.add3(U,M[j],M[j+1],M[j+2])}const N=r.MeshBuilder.getMesh(O);return R||n.Mesh.computeNormals(N),f.ValueCell.updateIfChanged(N.varyingGroup,!0),N}async function u(C,l,S,T){const{positions:A,normals:x,positionIndices:M,normalIndices:D,triangleCount:V,faceGroups:R}=l,E=l.normalCount>0,I=5e4,B=r.MeshBuilder.createState(V*3,V,T),{vertices:w,normals:O,indices:F,groups:L}=B;for(let q=0;q<V;++q){const N=q*3,k=q*3;for(let j=0;j<3;++j){const H=M[N+j],G=H*3;c.ChunkedArray.add3(w,A[G],A[G+1],A[G+2]);const z=E?D[N+j]:-1;if(E&&z>=0){const W=z*3;c.ChunkedArray.add3(O,x[W],x[W+1],x[W+2])}else c.ChunkedArray.add3(O,0,0,0);c.ChunkedArray.add(L,S?H:R[q])}c.ChunkedArray.add3(F,k,k+1,k+2),q%I===0&&C.shouldUpdate&&await C.update({message:"Building OBJ mesh",current:q,max:V})}const U=r.MeshBuilder.getMesh(B);return E||n.Mesh.computeNormals(U),f.ValueCell.updateIfChanged(U.varyingGroup,!0),U}async function m(C,l,S,T){const{canUseIndexedPath:A,posGroups:x,posNormals:M}=d(l,S);return A?p(C,l,{posGroups:x,posNormals:M,usePositionGroups:S},T):u(C,l,S,T)}function v(C,l,S,T,A){var x;const{source:M,transforms:D}=C,{materialNames:V,vertexColors:R,positionCount:E}=M,I=R.length>0;let B;if(T==="vertex"&&I)B=F=>t.Color.fromNormalizedArray(R,F*3);else if(I&&A)if(T==="uniform"){const F=(x=S[0])!==null&&x!==void 0?x:s.ColorNames.grey;B=()=>F}else B=F=>S[Math.min(A[F],S.length-1)];else B=F=>S[Math.min(F,S.length-1)];let w;I&&A&&V.length>0?w=F=>{var L;return(L=V[A[F]])!==null&&L!==void 0?L:"OBJ Mesh"}:!I&&V.length>0?w=F=>{var L;return(L=V[F])!==null&&L!==void 0?L:"OBJ Mesh"}:w=()=>"OBJ Mesh";const O=I?E:S.length>0?S.length:void 0;return i.Shape.create("obj-mesh",M,l,F=>B(F),()=>1,F=>w(F),D,O)}function b(){let C,l,S,T,A,x=null;return async(D,V,R,E)=>{const I=!C||C!==V,B=R.coloring.name,w=g(V.source.materialNames,R,V.mtl),O=!l||S!==B||w.length!==l.length||w.some((F,L)=>F!==l[L]);if(I){l=w,S=B;const F=V.source.vertexColors.length>0;x=F?a(V.source):null,A=await m(D,V.source,F,E&&E.geometry),T=v(V,A,l,S,x)}else O&&(l=w,S=B,T=v(V,A,l,S,x));return C=V,T}}function P(C,l){return e.Task.create("Shape Provider",async S=>({label:"Mesh",data:{source:C,transforms:l?.transforms,mtl:l?.mtl},params:_(C,l?.mtl),getShape:b(),geometryUtils:n.Mesh.Utils}))}return Fu}var pA={},b6;function soe(){return b6||(b6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.PlyShapeParams=void 0,e.shapeFromPly=S;const t=nt(),r=vt(),n=$t(),i=Rt(),c=pn(),o=_t(),s=Vt(),h=lt(),f=Ne(),y=Vr(),_=vr(),g=ui(),a=Kr();function d(T){const A=T&&T.getElement("vertex"),x=T&&T.getElement("material"),M={group:"",vRed:"",vGreen:"",vBlue:"",mRed:"",mGreen:"",mBlue:""},D=[["",""]],V=[["",""]];if(A){for(let I=0,B=A.propertyNames.length;I<B;++I){const w=A.propertyNames[I],O=A.propertyTypes[I];(O==="uchar"||O==="uint8"||O==="ushort"||O==="uint16"||O==="uint"||O==="uint32"||O==="int")&&D.push([w,w]),(O==="uchar"||O==="uint8")&&V.push([w,w])}A.propertyNames.includes("atomid")?M.group="atomid":A.propertyNames.includes("material_index")&&(M.group="material_index"),A.propertyNames.includes("red")&&(M.vRed="red"),A.propertyNames.includes("green")&&(M.vGreen="green"),A.propertyNames.includes("blue")&&(M.vBlue="blue")}const R=[["",""]];if(x){for(let I=0,B=x.propertyNames.length;I<B;++I){const w=x.propertyNames[I],O=x.propertyTypes[I];(O==="uchar"||O==="uint8")&&R.push([w,w])}x.propertyNames.includes("red")&&(M.mRed="red"),x.propertyNames.includes("green")&&(M.mGreen="green"),x.propertyNames.includes("blue")&&(M.mBlue="blue")}const E=M.vRed&&M.vGreen&&M.vBlue?"vertex":M.mRed&&M.mGreen&&M.mBlue?"material":"uniform";return{...i.Mesh.Params,coloring:f.ParamDefinition.MappedStatic(E,{vertex:f.ParamDefinition.Group({red:f.ParamDefinition.Select(M.vRed,V,{label:"Red Property"}),green:f.ParamDefinition.Select(M.vGreen,V,{label:"Green Property"}),blue:f.ParamDefinition.Select(M.vBlue,V,{label:"Blue Property"})},{isFlat:!0}),material:f.ParamDefinition.Group({red:f.ParamDefinition.Select(M.mRed,R,{label:"Red Property"}),green:f.ParamDefinition.Select(M.mGreen,R,{label:"Green Property"}),blue:f.ParamDefinition.Select(M.mBlue,R,{label:"Blue Property"})},{isFlat:!0}),uniform:f.ParamDefinition.Group({color:f.ParamDefinition.Color(y.ColorNames.grey),saturation:f.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1}),lightness:f.ParamDefinition.Numeric(0,{min:-6,max:6,step:.1})},{isFlat:!0})}),grouping:f.ParamDefinition.MappedStatic(M.group?"vertex":"none",{vertex:f.ParamDefinition.Group({group:f.ParamDefinition.Select(M.group,D,{label:"Group Property"})},{isFlat:!0}),none:f.ParamDefinition.Group({})})}}e.PlyShapeParams=d();function p(T,A,x,M,D){const{vertices:V,normals:R,groups:E}=x,I=M.getProperty("x"),B=M.getProperty("y"),w=M.getProperty("z");if(!I||!B||!w)throw new Error("missing coordinate properties");const O=M.getProperty("nx"),F=M.getProperty("ny"),L=M.getProperty("nz"),U=!!O&&!!F&&!!L;for(let q=T;q<A;++q)o.ChunkedArray.add3(V,I.value(q),B.value(q),w.value(q)),U&&o.ChunkedArray.add3(R,O.value(q),F.value(q),L.value(q)),o.ChunkedArray.add(E,D[q])}function u(T,A,x,M){const{indices:D}=x;for(let V=T;V<A;++V){const{entries:R,count:E}=M.value(V);E===3?o.ChunkedArray.add3(D,R[0],R[1],R[2]):E===4&&(o.ChunkedArray.add3(D,R[2],R[1],R[0]),o.ChunkedArray.add3(D,R[2],R[0],R[3]))}}async function m(T,A,x,M,D){const V=n.MeshBuilder.createState(A.rowCount,A.rowCount/4,D),R=A.getProperty("x"),E=A.getProperty("y"),I=A.getProperty("z");if(!R||!E||!I)throw new Error("missing coordinate properties");const B=A.getProperty("nx"),w=A.getProperty("ny"),O=A.getProperty("nz"),F=!!B&&!!w&&!!O,L=1e5;for(let q=0,N=A.rowCount;q<N;q+=L)p(q,Math.min(q+L,N),V,A,M),T.shouldUpdate&&await T.update({message:"adding ply mesh vertices",current:q,max:N});for(let q=0,N=x.rowCount;q<N;q+=L)u(q,Math.min(q+L,N),V,x),T.shouldUpdate&&await T.update({message:"adding ply mesh faces",current:q,max:N});const U=n.MeshBuilder.getMesh(V);return F||i.Mesh.computeNormals(U),a.ValueCell.updateIfChanged(U.varyingGroup,!0),U}const v=h.Column.Schema.int;function b(T,A){const{grouping:x}=A,{rowCount:M}=T,D=x.name==="vertex"?T.getProperty(x.params.group):void 0,V=x.name==="vertex"?(0,g.stringToWords)(x.params.group):"Vertex",R=D?D.toArray({array:Uint32Array}):(0,s.fillSerial)(new Uint32Array(M)),E=D?(0,s.arrayMax)(R):M-1,I=new Uint32Array(E+1);for(let B=0,w=R.length;B<w;++B)I[R[B]]=B;return{ids:R,map:I,label:V}}function P(T,A,x){const{coloring:M}=x,{rowCount:D}=T;let V,R,E;if(M.name==="vertex")V=T.getProperty(M.params.red)||h.Column.ofConst(127,D,v),R=T.getProperty(M.params.green)||h.Column.ofConst(127,D,v),E=T.getProperty(M.params.blue)||h.Column.ofConst(127,D,v);else if(M.name==="material")V=A&&A.getProperty(M.params.red)||h.Column.ofConst(127,D,v),R=A&&A.getProperty(M.params.green)||h.Column.ofConst(127,D,v),E=A&&A.getProperty(M.params.blue)||h.Column.ofConst(127,D,v);else{let I=M.params.color;I=r.Color.saturate(I,M.params.saturation),I=r.Color.lighten(I,M.params.lightness);const[B,w,O]=r.Color.toRgb(I);V=h.Column.ofConst(B,D,v),R=h.Column.ofConst(w,D,v),E=h.Column.ofConst(O,D,v)}return{kind:M.name,red:V,green:R,blue:E}}function C(T,A,x,M){const{kind:D,red:V,green:R,blue:E}=x,{ids:I,map:B,label:w}=M,{source:O,transforms:F}=T,L=(0,s.arrayMax)(I)+1;return c.Shape.create("ply-mesh",O,A,U=>{const q=D==="material"?U:B[U];return r.Color.fromRgb(V.value(q),R.value(q),E.value(q))},()=>1,U=>`${w} ${I[U]}`,F,L)}function l(){let T,A,x,M,D,V;return async(E,I,B,w)=>{const O=I.source.getElement("vertex");if(!O)throw new Error("missing vertex element");const F=I.source.getElement("face");if(!F)throw new Error("missing face element");const L=I.source.getElement("material");let U=!1,q=!1;return(!T||T!==I)&&(U=!0),(!A||!f.ParamDefinition.isParamEqual(e.PlyShapeParams.grouping,A.grouping,B.grouping))&&(U=!0),(!A||!f.ParamDefinition.isParamEqual(e.PlyShapeParams.coloring,A.coloring,B.coloring))&&(q=!0),U?(D=P(O,L,B),V=b(O,B),M=await m(E,O,F,V.ids,w&&w.geometry),x=C(I,M,D,V)):q&&(D=P(O,L,B),x=C(I,M,D,V)),T=I,A=(0,_.deepClone)(B),x}}function S(T,A){return t.Task.create("Shape Provider",async x=>({label:"Mesh",data:{source:T,transforms:A?.transforms},params:d(T),getShape:l(),geometryUtils:i.Mesh.Utils}))}})(pA)),pA}var hA={},_6;function coe(){return _6||(_6=1,(function(e){Object.defineProperty(e,"__esMo
4207dule",{value:!0}),e.VtpShapeParams=void 0,e.createVtpShapeParams=b,e.shapeFromVtp=D;const t=nt(),r=$t(),n=Rt(),i=pn(),c=_t(),o=Ne(),s=Vr(),h=ND(),f=pa(),y=Kr(),_=vr(),g=Xr(),a=[g.Mat4.identity()];function d(V){if(!isFinite(V))return V.toString();const R=Math.abs(V);return R===0?"0":R<.001||R>=1e5?V.toExponential(2):V.toPrecision(3)}function p(V,R){let E,I=1,B="";if(R.startsWith("point:")){B=R.slice(6);const j=V.pointData.get(B);if(!j)return"";E=j.values.toArray(),I=j.numberOfComponents}else if(R.startsWith("cell:")){B=R.slice(5);const j=V.cellData.get(B);if(!j)return"";E=j.values.toArray(),I=j.numberOfComponents}if(!E)return"";const w=E.length/I;let O=1/0,F=-1/0,L=0,U=0;for(let j=0;j<w;j++){let H;if(I===1)H=E[j];else{let G=0;for(let z=0;z<I;z++)G+=E[j*I+z]**2;H=Math.sqrt(G)}H<O&&(O=H),H>F&&(F=H),L+=H,U+=H*H}const q=L/w,N=Math.sqrt(Math.max(0,U/w-q*q)),k=I>1?`${I}-comp magnitude`:"scalar";return`${B} (${k}, n=${w}) 4208min: ${d(O)} max: ${d(F)} 4209mean: ${d(q)} Ï: ${d(N)}`}function u(V){if(!V)return[["","No attributes"]];const R=[];for(const[E,I]of V.pointData){const B=I.numberOfComponents;R.push([`point:${E}`,B>1?`Point: ${E} (mag)`:`Point: ${E}`])}for(const[E,I]of V.cellData){const B=I.numberOfComponents;R.push([`cell:${E}`,B>1?`Cell: ${E} (mag)`:`Cell: ${E}`])}return R.length>0?R:[["","No attributes"]]}function m(V){if(!V)return"";for(const[R,E]of V.cellData)if(E.numberOfComponents===1)return`cell:${R}`;for(const[R,E]of V.pointData)if(E.numberOfComponents===1)return`point:${R}`;return V.cellData.size>0?`cell:${V.cellData.keys().next().value}`:V.pointData.size>0?`point:${V.pointData.keys().next().value}`:""}function v(V){let R=1/0,E=-1/0;for(let I=0;I<V.length;I++)V[I]<R&&(R=V[I]),V[I]>E&&(E=V[I]);return[R===1/0?0:R,E===-1/0?1:E]}function b(V,R){var E,I;const B=u(V),w=m(V),O=V&&w?p(V,w):"",F=((E=V?.pointData.size)!==null&&E!==void 0?E:0)+((I=V?.cellData.size)!==null&&I!==void 0?I:0)>0;return{...n.Mesh.Params,doubleSided:{...n.Mesh.Params.doubleSided,defaultValue:!0},interior:{...n.Mesh.Params.interior,defaultValue:{...n.Mesh.Params.interior.defaultValue,colorStrength:0}},colorTheme:o.ParamDefinition.MappedStatic(F?"attribute":"uniform",{attribute:o.ParamDefinition.Group({name:o.ParamDefinition.Select(w,B,{help:()=>({description:R?R():O})}),colors:o.ParamDefinition.Select("viridis",f.ColorListOptionsScale),domain:o.ParamDefinition.MappedStatic("auto",{custom:o.ParamDefinition.Interval([-1,1],{step:.001}),auto:o.ParamDefinition.Group({symmetric:o.ParamDefinition.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})})}),uniform:o.ParamDefinition.Group({color:o.ParamDefinition.Color(s.ColorNames.grey,{label:"Uniform Color"})})},{isEssential:!0}),scale:o.ParamDefinition.Numeric(1,{min:.01,max:100,step:.01},{label:"Scale",isEssential:!0,description:"Uniform scale factor applied to the mesh."})}}e.VtpShapeParams=b();async function P(V,R,E){const{positions:I,connectivity:B,numberOfPoints:w,numberOfTriangles:O}=R,F=r.MeshBuilder.createState(w,O,E),{vertices:L,indices:U,groups:q}=F,N=5e4;for(let j=0,H=w;j<H;j+=N){const G=Math.min(j+N,H);for(let z=j;z<G;z++)c.ChunkedArray.add3(L,I[3*z],I[3*z+1],I[3*z+2]),c.ChunkedArray.add(q,z);V.shouldUpdate&&await V.update({message:"Building VTP mesh...",current:j,max:w+O})}for(let j=0,H=O;j<H;j+=N){const G=Math.min(j+N,H);for(let z=j;z<G;z++)c.ChunkedArray.add3(U,B[3*z],B[3*z+1],B[3*z+2]);V.shouldUpdate&&await V.update({message:"Building VTP mesh...",current:w+j,max:w+O})}const k=r.MeshBuilder.getMesh(F);return n.Mesh.computeNormals(k),y.ValueCell.updateIfChanged(k.varyingGroup,!0),k}
4209function C(V,R){const{connectivity:E,triangleCellIndex:I,numberOfPoints:B}=V,w=E.length/3,O=new Float64Array(B),F=new Uint32Array(B);for(let U=0;U<w;U++){const q=R[I[U]],N=E[3*U],k=E[3*U+1],j=E[3*U+2];O[N]+=q,F[N]++,O[k]+=q,F[k]++,O[j]+=q,F[j]++}const L=new Float64Array(B);for(let U=0;U<B;U++)L[U]=F[U]>0?O[U]/F[U]:0;return L}function l(V,R,E){const{connectivity:I,triangleCellIndex:B,numberOfPoints:w}=V,O=I.length/3,F=new Float64Array(w*E),L=new Uint32Array(w);for(let q=0;q<O;q++){const N=B[q],k=I[3*q],j=I[3*q+1],H=I[3*q+2];for(let G=0;G<E;G++){const z=R[N*E+G];F[k*E+G]+=z,F[j*E+G]+=z,F[H*E+G]+=z}L[k]++,L[j]++,L[H]++}const U=new Float64Array(w);for(let q=0;q<w;q++)if(L[q]>0){let N=0;for(let k=0;k<E;k++){const j=F[q*E+k]/L[q];N+=j*j}U[q]=Math.sqrt(N)}return U}function S(V,R,E){let I=0;for(let B=0;B<E;B++)I+=V[R+B]**2;return Math.sqrt(I)}function T(V,R){if(!R)return null;if(R.startsWith("cell:")){const E=V.cellData.get(R.slice(5));if(!E)return null;const I=E.numberOfComponents,B=E.values.toArray();return I===1?{values:C(V,B),isMagnitude:!1}:{values:l(V,B,I),isMagnitude:!0}}if(R.startsWith("point:")){const E=V.pointData.get(R.slice(6));if(!E)return null;const I=E.numberOfComponents,B=E.values.toArray();if(I===1)return{values:B,isMagnitude:!1};const w=B.length/I,O=new Float64Array(w);for(let F=0;F<w;F++)O[F]=S(B,F*I,I);return{values:O,isMagnitude:!0}}return null}function A(V,R){if(V.name==="uniform")return()=>V.params.color;if(!R)return()=>s.ColorNames.grey;const{values:E,isMagnitude:I}=R,{colors:B,domain:w}=V.params;let O,F;if(w.name==="custom")[O,F]=w.params;else if([O,F]=v(E),I&&F>0&&(F-O)/F<.01&&(O=0),w.params.symmetric){const U=Math.max(Math.abs(O),Math.abs(F));O=-U,F=U}F-O<1e-9&&(F=O+1e-9);const L=h.ColorScale.create({listOrName:B,domain:[O,F]});return U=>L.color(E[U])}function x(V,R,E,I){var B;const w=g.Mat4.fromUniformScaling((0,g.Mat4)(),I.scale),F=((B=V.transforms)!==null&&B!==void 0?B:a).map(U=>g.Mat4.mul((0,g.Mat4)(),U,w)),{numberOfPoints:L}=V.source;return i.Shape.create("vtp-mesh",V.source,R,E,()=>1,U=>U>=0?`Vertex ${U}`:"",F,L)}function M(){let V,R,E,I,B,w=null,O,F="";return{getShape:async(q,N,k,j)=>{const H=e.VtpShapeParams,G=!V||V.source!==N.source,z=k.colorTheme.name==="attribute"?k.colorTheme.params.name:null,W=R?R.colorTheme.name==="attribute"?R.colorTheme.params.name:null:void 0,X=G||z!==W,Y=!R||!o.ParamDefinition.isParamEqual(H.colorTheme,R.colorTheme,k.colorTheme),K=G||X||Y,Q=G||K||V?.transforms!==N.transforms||!R||R.scale!==k.scale;return G&&(I=await P(q,N.source,j?.geometry)),X&&(w=z?T(N.source,z):null,z&&z!==O?(F=p(N.source,z),O=z):z||(F="",O=void 0)),K&&(B=A(k.colorTheme,w)),Q&&(E=x(N,I,B,k)),V=N,(G||K||Q)&&(R=(0,_.deepClone)(k)),E},getStats:()=>({text:F,attr:O})}}function D(V,R){return t.Task.create("Shape Provider",async()=>{const E=M();return{label:"VTP Mesh",data:{source:V,transforms:R?.transforms},params:b(V,()=>E.getStats().text),getShape:E.getShape,geometryUtils:n.Mesh.Utils}})}})(hA)),hA}var S6;function GQ(){if(S6)return qi;S6=1,Object.defineProperty(qi,"__esModule",{value:!0}),qi.ShapeFromVtp=qi.ShapeFromObj=qi.ShapeFromPly=qi.BoxShape3D=void 0,qi.getBoxMesh=p;const e=Rt(),t=$t(),r=FS(),n=rt(),i=Ge(),c=aoe(),o=ooe(),s=soe(),h=coe(),f=pn(),y=nt(),_=Vr(),g=Ne(),a=jt(),d=a.PluginStateTransform.BuiltIn({name:"box-shape-3d",display:"Box Shape",from:a.PluginStateObject.Root,to:a.PluginStateObject.Shape.Provider,params:{bottomLeft:g.ParamDefinition.Vec3((0,i.Vec3)()),topRight:g.ParamDefinition.Vec3(i.Vec3.create(1,1,1)),radius:g.ParamDefinition.Numeric(.15,{min:.01,max:4,step:.01}),color:g.ParamDefinition.Color(_.ColorNames.red)}})({canAutoUpdate(){return!0},apply({params:P}){return y.Task.create("Shape Representation",async C=>new a.PluginStateObject.Shape.Provider({label:"Box",data:P,params:e.Mesh.Params,getShape:(l,S)=>{const T=p(n.Box3D.create(P.bottomLeft,P.topRight),P.radius);return f.Shape.create("Box",S,T,()=>S.color,()=>1,()=>"Box")},geometryUtils:e.Mesh.Utils},{label:"Box"}))}});qi.BoxShape3D=d;function p(P,C,l){const S=i.Vec3.sub((0,i.Vec3)(),P.max,P.min),T=i.Mat4.fromTranslation((0,i.Mat4)(),i.Vec3.create(.5,.5,.5)),A=i.Mat4.fromScaling((0,i.Mat4)(),S),x=i.Mat4.fromTranslation((0,i.Mat4)(),P.min),M=i.Mat4.mul3((0,i.Mat4)(),x,A,T),D=t.MeshBuilder.createState(256,128,l);D.currentGroup=1,t.MeshBuilder.addCage(D,M,(0,r.BoxCage)(),C,2,20);const V=t.MeshBuilder.getMesh(D),R=i.Vec3.scaleAndAdd((0,i.Vec3)(),P.min,S,.5),E=i.Vec3.distance(P.min,R);return V.setBoundingSphere(n.Sphere3D.create(R,E)),V}const u=a.PluginStateTransform.BuiltIn({name:"shape-from-ply",display:{name:"Shape from PLY",description:"Create Shape from PLY data"},from:a.PluginStateObject.Format.Ply,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value([i.Mat4.identity()],{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0}))}}})({apply({a:P,params:C}){return y.Task.create("Create shape from PLY",async l=>{const S=await(0,s.shapeFromPly)(P.data,C).runInContext(l),T={label:C.label||"Shape"};return new a.PluginStateObject.Shape.Provider(S,T)})}});qi.ShapeFromPly=u;const m=a.PluginStateTransform.BuiltIn({name:"shape-from-obj",display:{name:"Shape from OBJ",description:"Create Shape from OBJ data"},from:a.PluginStateObject.Format.Obj,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value([i.Mat4.identity()],{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0})),mtlFile:g.ParamDefinition.Optional(g.ParamDefinition.File({accept:".mtl",label:"MTL File"}))}}})({apply({a:P,params:C,cache:l},S){return y.Task.create("Create shape from OBJ",async T=>{let A;if(C.mtlFile){const D=await S.managers.asset.resolve(C.mtlFile,"string").runInContext(T);l.mtlAsset=D,A=(0,c.parseMtl)(D.data)}const x=await(0,o.shapeFromObj)(P.data,{...C,mtl:A}).runInContext(T),M={label:C.label||"Shape"};return new a.PluginStateObject.Shape.Provider(x,M)})},dispose({cache:P}){var C;(C=P?.mtlAsset)===null||C===void 0||C.dispose()}});qi.ShapeFromObj=m;const v=[i.Mat4.identity()],b=a.PluginStateTransform.BuiltIn({name:"shape-from-vtp",display:{name:"Shape from VTP",description:"Create Shape from VTP (VTK PolyData) file"},from:a.PluginStateObject.Format.Vtp,to:a.PluginStateObject.Shape.Provider,params(P){return{transforms:g.ParamDefinition.Optional(g.ParamDefinition.Value(v,{isHidden:!0})),label:g.ParamDefinition.Optional(g.ParamDefinition.Text("",{isHidden:!0}))}}})({apply({a:P,params:C}){return y.Task.create("Create shape from VTP",async l=>{const S=await(0,h.shapeFromVtp)(P.data,C).runInContext(l),T={label:C.label||"VTP Shape"};return new a.PluginStateObject.Shape.Provider(S,T)})}});return qi.ShapeFromVtp=b,qi}var $d={},Xd={},C6;function uoe(){if(C6)return Xd;C6=1,Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.Plane=r,Xd.PlaneCage=n,Xd.SegmentedPlane=i;const e={vertices:new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),normals:new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1]),indices:new Uint32Array([0,2,1,1,2,3])},t={vertices:e.vertices,edges:new Uint32Array([0,1,2,3,3,1,2,0])};function r(){return e}function n(){return t}function i(c,o){const s=c+1,h=o+1,f=1/c,y=1/o,_=new Float32Array(s*h*3),g=new Float32Array(s*h*3),a=new Uint32Array(c*o*6);let d=0;for(let u=0;u<h;++u){const m=u*y-.5;for(let v=0;v<s;++v){const b=v*f-.5;_[d]=b,_[d+1]=-m,_[d+2]=0,g[d]=0,g[d+1]=0,g[d+2]=1,d+=3}}let p=0;for(let u=0;u<o;++u)for(let m=0;m<c;++m){const v=m+s*u,b=m+s*(u+1),P=m+1+s*(u+1),C=m+1+s*u;a[p]=v,a[p+1]=b,a[p+2]=C,a[p+3]=b,a[p+4]=P,a[p+5]=C,p+=6}return{vertices:_,normals:g,indices:a}}return Xd}var P6;function loe(){if(P6)return $d;P6=1,Object.defineProperty($d,"__esModule",{value:!0}),$d.PlaneParams=void 0,$d.PlaneRepresentation=C;const e=Ne(),t=Vr(),r=lc(),n=Lt(),i=pn(),c=Rt(),o=$t(),s=_a(),h=Ge(),f=cn(),y=uoe(),_=kw(),g=Ke(),a=rt(),d={...c.Mesh.Params,color:e.ParamDefinition.Color(t.ColorNames.orange),scaleFactor:e.ParamDefinition.Numeric(1,{min:.1,max:10,step:.1}),variant:e.ParamDefinition.Select("rectangle",e.ParamDefinition.arrayToOptions(["rectangle","circle"]),{label:"Shape"}),radialSegments:e.ParamDefinition.Numeric(64,{min:12,max:256,step:1},{hideIf:l=>l.variant!=="circle"})},p={plane:(l,S)=>(0,r.ShapeRepresentation)(P,c.Mesh.Utils)};
4209$d.PlaneParams={...d,visuals:e.ParamDefinition.MultiSelect(["plane"],e.ParamDefinition.objectToOptions(p))};function u(l){return`Best Fit Plane of ${(0,s.structureElementLociLabelMany)(l,{countsOnly:!0})}`}const m=(0,h.Mat4)(),v=(0,h.Vec3)();function b(l,S,T){const A=o.MeshBuilder.createState(256,128,T),M=g.StructureElement.Loci.getPrincipalAxesMany(l.locis).boxAxes;if(h.Vec3.add(v,M.origin,M.dirC),h.Mat4.targetTo(m,v,M.origin,M.dirB),A.currentGroup=0,S.variant==="circle"){h.Mat4.mul(m,m,h.Mat4.rotX90),h.Mat4.scaleUniformly(m,m,S.scaleFactor),h.Mat4.setTranslation(m,M.origin);const D=Math.max(h.Vec3.magnitude(M.dirA),h.Vec3.magnitude(M.dirB)),V=(0,_.Circle)({radius:D,segments:S.radialSegments});o.MeshBuilder.addPrimitive(A,m,V),o.MeshBuilder.addPrimitiveFlipped(A,m,V)}else{const D=(0,y.Plane)();h.Mat4.scale(m,m,a.Axes3D.size(v,M)),h.Mat4.scaleUniformly(m,m,S.scaleFactor),h.Mat4.setTranslation(m,M.origin),o.MeshBuilder.addPrimitive(A,m,D),o.MeshBuilder.addPrimitiveFlipped(A,m,D)}return o.MeshBuilder.getMesh(A)}function P(l,S,T,A){const x=b(S,T,A&&A.geometry),M=u(S.locis);return i.Shape.create(M,S,x,()=>T.color,()=>1,()=>M)}function C(l,S){const T=n.Representation.createMulti("Plane",l,S,n.Representation.StateBuilder,p);return T.setState({markerActions:f.MarkerActions.Highlighting}),T}return $d}var Dv={},T6;function zS(){if(T6)return Dv;T6=1,Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.Substance=c;const e=gt(),t=Ke(),r=va(),n=tc(),i=vr();function c(o,s){return{kind:o,layers:s}}return(function(o){o.Empty={kind:"empty-loci",layers:[]};function s(p,u){if(p.layers.length===0&&u.layers.length===0)return!0;if(p.layers.length!==u.layers.length)return!1;for(let m=0,v=p.layers.length;m<v;++m)if(p.layers[m].clear!==u.layers[m].clear||!(0,i.shallowEqual)(p.layers[m].material,u.layers[m].material)||!e.Loci.areEqual(p.layers[m].loci,u.layers[m].loci))return!1;return!0}o.areEqual=s;function h(p){return p.layers.length===0}o.isEmpty=h;function f(p,u){if(p.kind==="element-loci"){const m=[];for(const v of p.layers){let{loci:b,material:P,clear:C}=v;b=t.StructureElement.Loci.remap(b,u),t.StructureElement.Loci.isEmpty(b)||m.push({loci:b,material:P,clear:C})}return{kind:"element-loci",layers:m}}else return p}o.remap=f;function y(p){if(h(p))return p;if(p.kind==="element-loci"){const{structure:u}=p.layers[0].loci;let m;const v=new Map;let b=t.StructureElement.Loci.none(u);for(let C=0,l=p.layers.length;C<l;++C){let{loci:S,material:T,clear:A}=p.layers[l-C-1];S=t.StructureElement.Loci.subtract(S,b),b=t.StructureElement.Loci.union(S,b),t.StructureElement.Loci.isEmpty(S)||(A?m=m?t.StructureElement.Loci.union(S,m):S:(v.has(T)&&(S=t.StructureElement.Loci.union(S,v.get(T))),v.set(T,S)))}const P=[];return m&&P.push({loci:m,material:(0,n.Material)(),clear:!0}),v.forEach((C,l)=>{P.push({loci:C,material:l,clear:!1})}),{kind:"element-loci",layers:P}}else return p}o.merge=y;function _(p,u){if(h(p))return p;if(p.kind==="element-loci"){const{structure:m}=p.layers[0].loci,v=[];for(const b of p.layers){let{loci:P,material:C,clear:l}=b;const S=t.StructureElement.Loci.remap(P,u);P=t.StructureElement.Loci.remap(S,m),t.StructureElement.Loci.isEmpty(P)||v.push({loci:P,material:C,clear:l})}return{kind:"element-loci",layers:v}}else return p}o.filter=_;function g(p,u){const m=[];for(let v=0,b=p.length;v<b;++v){const{script:P,material:C,clear:l}=p[v],S=r.Script.toLoci(P,u);t.StructureElement.Loci.isEmpty(S)||m.push({loci:S,material:C,clear:l})}return{kind:"element-loci",layers:m}}o.ofScript=g;function a(p,u){const m=[];for(let v=0,b=p.length;v<b;++v){const{bundle:P,material:C,clear:l}=p[v],S=t.StructureElement.Bundle.toLoci(P,u.root);m.push({loci:S,material:C,clear:l})}return{kind:"element-loci",layers:m}}o.ofBundle=a;function d(p){const u=[];for(let m=0,v=p.layers.length;m<v;++m){const{loci:b,material:P,clear:C}=p.layers[m],l=t.StructureElement.Bundle.fromLoci(b);u.push({bundle:l,material:P,clear:C})}return{kind:"element-loci",layers:u}}o.toBundle=d})(c||(Dv.Substance=c={})),Dv}var Iv={},x6;function HS(){if(x6)return Iv;x6=1,Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.Emissive=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;
4209if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){let{loci:m,value:v}=u;m=t.StructureElement.Loci.remap(m,d),t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:v})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(Iv.Emissive=n={})),Iv}var wv={},A6;function WS(){if(A6)return wv;A6=1,Object.defineProperty(wv,"__esModule",{value:!0}),wv.Wiggle=n;const e=gt(),t=Ke(),r=va();function n(i,c){return{kind:i,layers:c}}return(function(i){i.Empty={kind:"empty-loci",layers:[]};function c(a,d){if(a.layers.length===0&&d.layers.length===0)return!0;if(a.layers.length!==d.layers.length)return!1;for(let p=0,u=a.layers.length;p<u;++p)if(a.layers[p].value!==d.layers[p].value||!e.Loci.areEqual(a.layers[p].loci,d.layers[p].loci))return!1;return!0}i.areEqual=c;function o(a){return a.layers.length===0}i.isEmpty=o;function s(a,d){if(a.kind==="element-loci"){const p=[];for(const u of a.layers){let{loci:m,value:v}=u;m=t.StructureElement.Loci.remap(m,d),t.StructureElement.Loci.isEmpty(m)||p.push({loci:m,value:v})}return{kind:"element-loci",layers:p}}else return a}i.remap=s;function h(a){if(o(a))return a;if(a.kind==="element-loci"){const{structure:d}=a.layers[0].loci,p=new Map;let u=t.StructureElement.Loci.none(d);for(let v=0,b=a.layers.length;v<b;++v){let{loci:P,value:C}=a.layers[b-v-1];P=t.StructureElement.Loci.subtract(P,u),u=t.StructureElement.Loci.union(P,u),t.StructureElement.Loci.isEmpty(P)||(p.has(C)&&(P=t.StructureElement.Loci.union(P,p.get(C))),p.set(C,P))}const m=[];return p.forEach((v,b)=>{m.push({loci:v,value:b})}),{kind:"element-loci",layers:m}}else return a}i.merge=h;function f(a,d){if(o(a))return a;if(a.kind==="element-loci"){const{structure:p}=a.layers[0].loci,u=[];for(const m of a.layers){let{loci:v,value:b}=m;const P=t.StructureElement.Loci.remap(v,d);v=t.StructureElement.Loci.remap(P,p),t.StructureElement.Loci.isEmpty(v)||u.push({loci:v,value:b})}return{kind:"element-loci",layers:u}}else return a}i.filter=f;function y(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{script:v,value:b}=a[u],P=r.Script.toLoci(v,d);t.StructureElement.Loci.isEmpty(P)||p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofScript=y;function _(a,d){const p=[];for(let u=0,m=a.length;u<m;++u){const{bundle:v,value:b}=a[u],P=t.StructureElement.Bundle.toLoci(v,d.root);p.push({loci:P,value:b})}return{kind:"element-loci",layers:p}}i.ofBundle=_;
4209function g(a){const d=[];for(let p=0,u=a.layers.length;p<u;++p){const{loci:m,value:v}=a.layers[p],b=t.StructureElement.Bundle.fromLoci(m);d.push({bundle:b,value:v})}return{kind:"element-loci",layers:d}}i.toBundle=g})(n||(wv.Wiggle=n={})),wv}var M6;function $S(){if(M6)return yt;M6=1,Object.defineProperty(yt,"__esModule",{value:!0}),yt.StructureSelectionsPlane3D=yt.StructureSelectionsOrientation3D=yt.StructureSelectionsLabel3D=yt.StructureSelectionsDihedral3D=yt.StructureSelectionsAngle3D=yt.StructureSelectionsDistance3D=yt.StructureBoundingBox3D=yt.ModelUnitcell3D=yt.ShapeRepresentation3D=yt.VolumeRepresentation3DHelpers=yt.VolumeRepresentation3D=yt.ThemeStrengthRepresentation3D=yt.WiggleStructureRepresentation3DFromBundle=yt.WiggleStructureRepresentation3DFromScript=yt.ClippingStructureRepresentation3DFromBundle=yt.ClippingStructureRepresentation3DFromScript=yt.SubstanceStructureRepresentation3DFromBundle=yt.SubstanceStructureRepresentation3DFromScript=yt.EmissiveStructureRepresentation3DFromBundle=yt.EmissiveStructureRepresentation3DFromScript=yt.TransparencyStructureRepresentation3DFromBundle=yt.TransparencyStructureRepresentation3DFromScript=yt.OverpaintStructureRepresentation3DFromBundle=yt.OverpaintStructureRepresentation3DFromScript=yt.UnwindStructureAssemblyRepresentation3D=yt.SpinStructureRepresentation3D=yt.ExplodeStructureRepresentation3D=yt.StructureRepresentation3D=void 0;const e=Ke(),t=sn(),r=Et(),n=nt(),i=ea(),c=Ne(),o=jt(),s=Vr(),h=lc(),f=Wae(),y=$ae(),_=vt(),g=US(),a=jS(),d=Tt(),p=va(),u=Qae(),m=Zae(),v=Vw(),b=Jae(),P=roe(),C=noe(),l=ioe(),S=Qn(),T=Yf(),A=Gt(),x=Rt(),M=GQ(),D=pn(),V=loe(),R=zS(),E=tc(),I=ir(),B=cn(),w=HS(),O=WS(),F=o.PluginStateTransform.BuiltIn({name:"structure-representation-3d",display:"3D Representation",from:o.PluginStateObject.Molecule.Structure,to:o.PluginStateObject.Molecule.Structure.Representation3D,params:(fe,de)=>{const{registry:ge,themes:Ce}=de.representation.structure,ve=ge.get(ge.default.name);if(!fe){const ee={help:se=>{const{name:ye,params:Se}=se,_e=Ce.colorThemeRegistry.get(ye).factory({},Se);return{description:_e.description,legend:_e.legend}}};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,se=>c.ParamDefinition.Group(ge.get(se).getParams(Ce,e.Structure.Empty))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.types,se=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(se).getParams({structure:e.Structure.Empty})),ee),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.types,se=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(se).getParams({structure:e.Structure.Empty})))}}const le={structure:fe.data},me={help:ee=>{const{name:se,params:ye}=ee,Ae=Ce.colorThemeRegistry.get(se).factory(le,ye);return{description:Ae.description,legend:Ae.legend}}};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.getApplicableTypes(fe.data),ee=>c.ParamDefinition.Group(ge.get(ee).getParams(Ce,fe.data))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.getApplicableTypes(le),ee=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(ee).getParams(le)),me),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.getApplicableTypes(le),ee=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(ee).getParams(le)))}}})({canAutoUpdate({a:fe,oldParams:de,newParams:ge}){return fe.data.elementCount<1e4||de.type.name===ge.type.name&&ge.type.params.quality!=="custom"},apply({a:fe,params:de,cache:ge},Ce){return n.Task.create("Structure Representation",async ve=>{var le,me;const ee={runtime:ve,assetManager:Ce.managers.asset,errorContext:Ce.errorContext},se=Ce.representation.structure.registry.get(de.type.name),ye=((le=se.getData)===null||le===void 0?void 0:le.call(se,fe.data,de.type.params))||fe.data;se.ensureCustomProperties&&await se.ensureCustomProperties.attach(ee,ye);const Se=se.factory({webgl:(me=Ce.canvas3d)===null||me===void 0?void 0:me.webgl,...Ce.representation.structure.themes},se.getParams);await i.Theme.ensureDependencies(ee,Ce.representation.structure.themes,{structure:ye},de),Se.setTheme(i.Theme.create(Ce.representation.structure.themes,{structure:ye},de));const Ae=de.type.params||{};return await Se.createOrUpdate(Ae,ye).runInContext(ve),new o.PluginStateObject.Molecule.Structure.Representation3D({repr:Se,sourceData:fe.data},{label:se.label})})}
4209,update({a:fe,b:de,oldParams:ge,newParams:Ce,cache:ve},le){return n.Task.create("Structure Representation",async me=>{var ee,se;if(Ce.type.name!==ge.type.name)return r.StateTransformer.UpdateResult.Recreate;const ye=le.representation.structure.registry.get(Ce.type.name);if(!((ee=ye.mustRecreate)===null||ee===void 0)&&ee.call(ye,ge.type.params,Ce.type.params))return r.StateTransformer.UpdateResult.Recreate;const Se=((se=ye.getData)===null||se===void 0?void 0:se.call(ye,fe.data,Ce.type.params))||fe.data,Ae={runtime:me,assetManager:le.managers.asset,errorContext:le.errorContext};ye.ensureCustomProperties&&await ye.ensureCustomProperties.attach(Ae,Se),i.Theme.releaseDependencies(le.representation.structure.themes,{structure:de.data.sourceData},ge),await i.Theme.ensureDependencies(Ae,le.representation.structure.themes,{structure:Se},Ce),de.data.repr.setTheme(i.Theme.create(le.representation.structure.themes,{structure:Se},Ce));const _e={...de.data.repr.props,...Ce.type.params};return await de.data.repr.createOrUpdate(_e,Se).runInContext(me),de.data.sourceData=fe.data,r.StateTransformer.UpdateResult.Updated})},dispose({b:fe,params:de},ge){if(!fe||!de)return;const Ce=fe.data.sourceData,ve=ge.representation.structure.registry.get(de.type.name);ve.ensureCustomProperties&&ve.ensureCustomProperties.detach(Ce),i.Theme.releaseDependencies(ge.representation.structure.themes,{structure:Ce},de)},interpolate(fe,de,ge){if(fe.colorTheme.name!=="uniform"||de.colorTheme.name!=="uniform")return ge<=.5?fe:de;const Ce=fe.colorTheme.params.value,ve=de.colorTheme.params.value,le=_.Color.interpolate(Ce,ve,ge);return{type:ge<=.5?fe.type:de.type,colorTheme:{name:"uniform",params:{value:le}},sizeTheme:ge<=.5?fe.sizeTheme:de.sizeTheme}}});yt.StructureRepresentation3D=F;const L=o.PluginStateTransform.BuiltIn({name:"unwind-structure-assembly-representation-3d",display:"Unwind Assembly 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge);return(0,y.unwindStructureAssembly)(ge,Ce,de.t),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Unwind T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms;return(0,y.unwindStructureAssembly)(ve,le,ge.t),de.label=`Unwind T = ${ge.t.toFixed(2)}`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.UnwindStructureAssemblyRepresentation3D=L;const U=o.PluginStateTransform.BuiltIn({name:"explode-structure-representation-3d",display:"Explode 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge);return(0,y.explodeStructure)(ge,Ce,de.t,ge.root.boundary.sphere),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Explode T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=fe.data.sourceData;if(de.data.info!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms;return(0,y.explodeStructure)(ve,le,ge.t,ve.root.boundary.sphere),de.label=`Explode T = ${ge.t.toFixed(2)}
4209`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.ExplodeStructureRepresentation3D=U;const q=o.PluginStateTransform.BuiltIn({name:"spin-structure-representation-3d",display:"Spin 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:{t:c.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),...y.SpinStructureParams}})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=new f.StructureUnitTransforms(ge),{axis:ve,origin:le}=(0,y.getSpinStructureAxisAndOrigin)(ge.root,de);return(0,y.spinStructure)(ge,Ce,de.t,ve,le),new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{unitTransforms:Ce},initialState:{unitTransforms:new f.StructureUnitTransforms(ge)},info:ge,repr:fe.data.repr},{label:`Spin T = ${de.t.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=fe.data.sourceData;if(de.data.info!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;if(Ce.t===ge.t&&Ce.axis===ge.axis&&Ce.origin===ge.origin)return r.StateTransformer.UpdateResult.Unchanged;const le=de.data.state.unitTransforms,{axis:me,origin:ee}=(0,y.getSpinStructureAxisAndOrigin)(ve.root,ge);return(0,y.spinStructure)(ve,le,ge.t,me,ee),de.label=`Spin T = ${ge.t.toFixed(2)}`,de.data.repr=fe.data.repr,r.StateTransformer.UpdateResult.Updated}});yt.SpinStructureRepresentation3D=q;const N=o.PluginStateTransform.BuiltIn({name:"overpaint-structure-representation-3d-from-script",display:"Overpaint 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),color:c.ParamDefinition.Color(s.ColorNames.blueviolet),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":_.Color.toRgbString(fe.color)}`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),color:s.ColorNames.blueviolet,clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=g.Overpaint.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{overpaint:ve},initialState:{overpaint:g.Overpaint.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Overpaint (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.overpaint,se=g.Overpaint.ofScript(ge.layers,le);return g.Overpaint.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.overpaint=se,de.data.repr=fe.data.repr,de.label=`Overpaint (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.OverpaintStructureRepresentation3DFromScript=N;const k=o.PluginStateTransform.BuiltIn({name:"overpaint-structure-representation-3d-from-bundle",display:"Overpaint 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),color:c.ParamDefinition.Color(s.ColorNames.blueviolet),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":_.Color.toRgbString(fe.color)}`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,color:s.ColorNames.blueviolet,clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=g.Overpaint.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{overpaint:ve},initialState:{overpaint:g.Overpaint.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Overpaint (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.Upd
4209ateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.overpaint,se=g.Overpaint.ofBundle(ge.layers,le);return g.Overpaint.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.overpaint=se,de.data.repr=fe.data.repr,de.label=`Overpaint (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.OverpaintStructureRepresentation3DFromBundle=k;const j=o.PluginStateTransform.BuiltIn({name:"transparency-structure-representation-3d-from-script",display:"Transparency 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},fe=>`Transparency (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=a.Transparency.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{transparency:ve},initialState:{transparency:a.Transparency.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Transparency (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.transparency,se=a.Transparency.ofScript(ge.layers,le);return a.Transparency.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.transparency=se,de.data.repr=fe.data.repr,de.label=`Transparency (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.TransparencyStructureRepresentation3DFromScript=j;const H=o.PluginStateTransform.BuiltIn({name:"transparency-structure-representation-3d-from-bundle",display:"Transparency 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},fe=>`Transparency (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=a.Transparency.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{transparency:ve},initialState:{transparency:a.Transparency.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Transparency (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.transparency,se=a.Transparency.ofBundle(ge.layers,le);return a.Transparency.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.transparency=se,de.data.repr=fe.data.repr,de.label=`Transparency (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.TransparencyStructureRepresentation3DFromBundle=H;const G=o.PluginStateTransform.BuiltIn({name:"emissive-structure-representation-3d-from-script",display:"Emissive 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.
420901},{label:"Emissive"})},fe=>`Emissive (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=w.Emissive.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{emissive:ve},initialState:{emissive:w.Emissive.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Emissive (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.emissive,se=w.Emissive.ofScript(ge.layers,le);return w.Emissive.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.emissive=se,de.data.repr=fe.data.repr,de.label=`Emissive (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.EmissiveStructureRepresentation3DFromScript=G;const z=o.PluginStateTransform.BuiltIn({name:"emissive-structure-representation-3d-from-bundle",display:"Emissive 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},fe=>`Emissive (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=w.Emissive.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{emissive:ve},initialState:{emissive:w.Emissive.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Emissive (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.emissive,se=w.Emissive.ofBundle(ge.layers,le);return w.Emissive.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.emissive=se,de.data.repr=fe.data.repr,de.label=`Emissive (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.EmissiveStructureRepresentation3DFromBundle=z;const W=o.PluginStateTransform.BuiltIn({name:"substance-structure-representation-3d-from-script",display:"Substance 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),material:E.Material.getParam(),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":E.Material.toString(fe.material)}`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),material:(0,E.Material)({roughness:1}),clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=R.Substance.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{substance:ve},initialState:{substance:R.Substance.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Substance (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.Upd
4209ateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.substance,se=R.Substance.ofScript(ge.layers,le);return R.Substance.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.substance=se,de.data.repr=fe.data.repr,de.label=`Substance (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.SubstanceStructureRepresentation3DFromScript=W;const X=o.PluginStateTransform.BuiltIn({name:"substance-structure-representation-3d-from-bundle",display:"Substance 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),material:E.Material.getParam(),clear:c.ParamDefinition.Boolean(!1)},fe=>`${fe.clear?"Clear":E.Material.toString(fe.material)}`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,material:(0,E.Material)({roughness:1}),clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=R.Substance.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{substance:ve},initialState:{substance:R.Substance.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Substance (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=fe.data.repr.geometryVersion;if(me!==ve.geometryVersion&&(0,d.hasColorSmoothingProp)(fe.data.repr.props))return r.StateTransformer.UpdateResult.Recreate;const ee=de.data.state.substance,se=R.Substance.ofBundle(ge.layers,le);return R.Substance.areEqual(ee,se)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=me,de.data.state.substance=se,de.data.repr=fe.data.repr,de.label=`Substance (${se.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.SubstanceStructureRepresentation3DFromBundle=X;const Y=o.PluginStateTransform.BuiltIn({name:"clipping-structure-representation-3d-from-script",display:"Clipping 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),groups:c.ParamDefinition.Converted(fe=>T.Clipping.Groups.toNames(fe),fe=>T.Clipping.Groups.fromNames(fe),c.ParamDefinition.MultiSelect((0,A.ObjectKeys)(T.Clipping.Groups.Names),c.ParamDefinition.objectToOptions(T.Clipping.Groups.Names)))},fe=>`${T.Clipping.Groups.toNames(fe.groups).length} group(s)`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),groups:T.Clipping.Groups.Flag.None}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=T.Clipping.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{clipping:Ce},initialState:{clipping:T.Clipping.Empty},info:ge,repr:fe.data.repr},{label:`Clipping (${Ce.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const le=de.data.state.clipping,me=T.Clipping.ofScript(ge.layers,ve);return T.Clipping.areEqual(le,me)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.clipping=me,de.data.repr=fe.data.repr,de.label=`Clipping (${me.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.ClippingStructureRepresentation3DFromScript=Y;const K=o.PluginStateTransform.BuiltIn({name:"clipping-structure-representation-3d-from-bundle",display:"Clipping 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),groups:c.ParamDefinition.Converted(fe=>T.Clipping.Groups.toNames(fe),fe=>
4209T.Clipping.Groups.fromNames(fe),c.ParamDefinition.MultiSelect((0,A.ObjectKeys)(T.Clipping.Groups.Names),c.ParamDefinition.objectToOptions(T.Clipping.Groups.Names)))},fe=>`${T.Clipping.Groups.toNames(fe.groups).length} group(s)`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,groups:T.Clipping.Groups.Flag.None}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=T.Clipping.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{clipping:Ce},initialState:{clipping:T.Clipping.Empty},info:ge,repr:fe.data.repr},{label:`Clipping (${Ce.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info;if(fe.data.sourceData!==ve||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const le=de.data.state.clipping,me=T.Clipping.ofBundle(ge.layers,ve);return T.Clipping.areEqual(le,me)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.clipping=me,de.data.repr=fe.data.repr,de.label=`Clipping (${me.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.ClippingStructureRepresentation3DFromBundle=K;const Q=o.PluginStateTransform.BuiltIn({name:"wiggle-structure-representation-3d-from-script",display:"Wiggle 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({script:c.ParamDefinition.Script((0,p.Script)("(sel.atom.all)","mol-script")),value:c.ParamDefinition.Numeric(5,{min:0,max:1,step:.01},{label:"Wiggle"})},fe=>`Wiggle (${fe.value})`,{defaultValue:[{script:(0,p.Script)("(sel.atom.all)","mol-script"),value:1}]})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=O.Wiggle.ofScript(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{wiggle:ve},initialState:{wiggle:O.Wiggle.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Wiggle (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=de.data.state.wiggle,ee=O.Wiggle.ofScript(ge.layers,le);return O.Wiggle.areEqual(me,ee)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=fe.data.repr.geometryVersion,de.data.state.wiggle=ee,de.data.repr=fe.data.repr,de.label=`Wiggle (${ee.layers.length} Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.WiggleStructureRepresentation3DFromScript=Q;const J=o.PluginStateTransform.BuiltIn({name:"wiggle-structure-representation-3d-from-bundle",display:"Wiggle 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({layers:c.ParamDefinition.ObjectList({bundle:c.ParamDefinition.Value(e.StructureElement.Bundle.Empty),value:c.ParamDefinition.Numeric(5,{min:0,max:1,step:.01},{label:"Wiggle"})},fe=>`Wiggle (${fe.value})`,{defaultValue:[{bundle:e.StructureElement.Bundle.Empty,value:1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){const ge=fe.data.sourceData,Ce=fe.data.repr.geometryVersion,ve=O.Wiggle.ofBundle(de.layers,ge);return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{wiggle:ve},initialState:{wiggle:O.Wiggle.Empty},info:{structure:ge,geometryVersion:Ce},repr:fe.data.repr},{label:`Wiggle (${ve.layers.length} Layers)`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){const ve=de.data.info,le=fe.data.sourceData;if(le!==ve.structure||fe.data.repr!==de.data.repr)return r.StateTransformer.UpdateResult.Recreate;const me=de.data.state.wiggle,ee=O.Wiggle.ofBundle(ge.layers,le);return O.Wiggle.areEqual(me,ee)?r.StateTransformer.UpdateResult.Unchanged:(ve.geometryVersion=fe.data.repr.geometryVersion,de.data.state.wiggle=ee,de.data.repr=fe.data.repr,de.label=`Wiggle (${ee.layers.length}
4209 Layers)`,r.StateTransformer.UpdateResult.Updated)}});yt.WiggleStructureRepresentation3DFromBundle=J;const ae=o.PluginStateTransform.BuiltIn({name:"theme-strength-representation-3d",display:"Theme Strength 3D Representation",from:o.PluginStateObject.Molecule.Structure.Representation3D,to:o.PluginStateObject.Molecule.Structure.Representation3DState,params:()=>({overpaintStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),transparencyStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),emissiveStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),substanceStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),wiggleStrength:c.ParamDefinition.Numeric(1,{min:0,max:1,step:.01})})})({canAutoUpdate(){return!0},apply({a:fe,params:de}){return new o.PluginStateObject.Molecule.Structure.Representation3DState({state:{themeStrength:{overpaint:de.overpaintStrength,transparency:de.transparencyStrength,emissive:de.emissiveStrength,substance:de.substanceStrength,wiggle:de.wiggleStrength}},initialState:{themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1,wiggle:1}},info:{},repr:fe.data.repr},{label:"Theme Strength",description:`${de.overpaintStrength.toFixed(2)}, ${de.transparencyStrength.toFixed(2)}, ${de.emissiveStrength.toFixed(2)}, ${de.substanceStrength.toFixed(2)}, ${de.wiggleStrength.toFixed(2)}`})},update({a:fe,b:de,newParams:ge,oldParams:Ce}){var ve,le,me,ee,se;return ge.overpaintStrength===((ve=de.data.state.themeStrength)===null||ve===void 0?void 0:ve.overpaint)&&ge.transparencyStrength===((le=de.data.state.themeStrength)===null||le===void 0?void 0:le.transparency)&&ge.emissiveStrength===((me=de.data.state.themeStrength)===null||me===void 0?void 0:me.emissive)&&ge.substanceStrength===((ee=de.data.state.themeStrength)===null||ee===void 0?void 0:ee.substance)&&ge.wiggleStrength===((se=de.data.state.themeStrength)===null||se===void 0?void 0:se.wiggle)?r.StateTransformer.UpdateResult.Unchanged:(de.data.state.themeStrength={overpaint:ge.overpaintStrength,transparency:ge.transparencyStrength,emissive:ge.emissiveStrength,substance:ge.substanceStrength,wiggle:ge.wiggleStrength},de.data.repr=fe.data.repr,de.label="Theme Strength",de.description=`${ge.overpaintStrength.toFixed(2)}, ${ge.transparencyStrength.toFixed(2)}, ${ge.emissiveStrength.toFixed(2)}, ${ge.substanceStrength.toFixed(2)}, ${ge.wiggleStrength.toFixed(2)}`,r.StateTransformer.UpdateResult.Updated)},interpolate(fe,de,ge){return{overpaintStrength:(0,I.lerp)(fe.overpaintStrength,de.overpaintStrength,ge),transparencyStrength:(0,I.lerp)(fe.transparencyStrength,de.transparencyStrength,ge),emissiveStrength:(0,I.lerp)(fe.emissiveStrength,de.emissiveStrength,ge),substanceStrength:(0,I.lerp)(fe.substanceStrength,de.substanceStrength,ge),wiggleStrength:(0,I.lerp)(fe.wiggleStrength,de.wiggleStrength,ge)}}});yt.ThemeStrengthRepresentation3D=ae;var te;(function(fe){function de(ve,le,me,ee,se,ye,Se,Ae){const _e=ve.representation.volume.registry.get(le),be=ve.representation.volume.themes.colorThemeRegistry.get(se||_e.defaultColorTheme.name),xe=ve.representation.volume.themes.sizeThemeRegistry.get(Se||_e.defaultSizeTheme.name),we=c.ParamDefinition.getDefaultValues(_e.getParams(ve.representation.volume.themes,me));return{type:{name:le,params:ee?{...we,...ee}:we},colorTheme:{name:be.name,params:ye?{...be.defaultValues,...ye}:be.defaultValues},sizeTheme:{name:xe.name,params:Ae?{...xe.defaultValues,...Ae}:xe.defaultValues}}}fe.getDefaultParams=de;function ge(ve,le,me,ee,se,ye,Se){const Ae=ve.representation.volume.registry.get(le),_e=ve.representation.volume.themes.colorThemeRegistry.get(ee||Ae.defaultColorTheme.name),be=ve.representation.volume.themes.sizeThemeRegistry.get(ye||Ae.defaultSizeTheme.name);return{type:{name:le,params:me?{...Ae.defaultValues,...me}:Ae.defaultValues},colorTheme:{name:Ae.defaultColorTheme.name,params:se?{..._e.defaultValues,...se}:_e.defaultValues},sizeTheme:{name:Ae.defaultSizeTheme.name,params:Se?{...be.defaultValues,...Se}:be.defaultValues}}}fe.getDefaultParamsStatic=ge;function Ce(ve){var le,me,ee,se;if(ve.isoValue)return t.Volume.IsoValue.toString(ve.isoValue);if(!((me=(le=ve.renderMode)===null||le===void 0?void 0:le.params)===null||me===void 0)&&me.isoValue)return t.Volume.IsoValue.toString((se=(ee=ve.renderMode)===null||ee===void 0?void 0:ee.params)===null||se===void 0?void 0:se.isoValue)}fe.getDescription=Ce})(te||(yt.VolumeRepresentation3DHelpers=te={}));const ne=o.PluginStateTransform.BuiltIn({name:"volume-representation-3d",display:"3D Representation",from:o.PluginStateObject.Volume.Data,to:o.PluginStateObject.Volume.Representation3D,params:(fe,de)=>{const{registry:ge,themes:Ce}=de.representation.volume,ve=ge.get(ge.default.name);if(!fe)return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,me=>c.ParamDefinition.Group(ge.get(me).getParams(Ce,t.Volume.One))),c
4209olorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.types,me=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(me).getParams({volume:t.Volume.One}))),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.types,me=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(me).getParams({volume:t.Volume.One})))};const le={volume:fe.data};return{type:c.ParamDefinition.Mapped(ge.default.name,ge.types,me=>c.ParamDefinition.Group(ge.get(me).getParams(Ce,fe.data))),colorTheme:c.ParamDefinition.Mapped(ve.defaultColorTheme.name,Ce.colorThemeRegistry.getApplicableTypes(le),me=>c.ParamDefinition.Group(Ce.colorThemeRegistry.get(me).getParams(le))),sizeTheme:c.ParamDefinition.Mapped(ve.defaultSizeTheme.name,Ce.sizeThemeRegistry.getApplicableTypes(le),me=>c.ParamDefinition.Group(Ce.sizeThemeRegistry.get(me).getParams(le)))}}})({canAutoUpdate({oldParams:fe,newParams:de}){return fe.type.name===de.type.name},apply({a:fe,params:de},ge){return n.Task.create("Volume Representation",async Ce=>{var ve;const le={runtime:Ce,assetManager:ge.managers.asset,errorContext:ge.errorContext},me=ge.representation.volume.registry.get(de.type.name);me.ensureCustomProperties&&await me.ensureCustomProperties.attach(le,fe.data);const ee=me.factory({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.volume.themes},me.getParams);await i.Theme.ensureDependencies(le,ge.representation.volume.themes,{volume:fe.data},de),ee.setTheme(i.Theme.create(ge.representation.volume.themes,{volume:fe.data,locationKinds:me.locationKinds},de));const se=de.type.params||{};return await ee.createOrUpdate(se,fe.data).runInContext(Ce),new o.PluginStateObject.Volume.Representation3D({repr:ee,sourceData:fe.data},{label:me.label,description:te.getDescription(se)})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Volume Representation",async le=>{var me;if(Ce.type.name!==ge.type.name)return r.StateTransformer.UpdateResult.Recreate;const ee=ve.representation.volume.registry.get(Ce.type.name);if(!((me=ee.mustRecreate)===null||me===void 0)&&me.call(ee,ge.type.params,Ce.type.params))return r.StateTransformer.UpdateResult.Recreate;const se={runtime:le,assetManager:ve.managers.asset,errorContext:ve.errorContext};ee.ensureCustomProperties&&await ee.ensureCustomProperties.attach(se,fe.data),i.Theme.releaseDependencies(ve.representation.volume.themes,{volume:de.data.sourceData},ge),await i.Theme.ensureDependencies(se,ve.representation.volume.themes,{volume:fe.data},Ce),de.data.repr.setTheme(i.Theme.create(ve.representation.volume.themes,{volume:fe.data,locationKinds:ee.locationKinds},Ce));const ye={...de.data.repr.props,...Ce.type.params};return await de.data.repr.createOrUpdate(ye,fe.data).runInContext(le),de.data.sourceData=fe.data,de.description=te.getDescription(ye),r.StateTransformer.UpdateResult.Updated})},dispose({b:fe,params:de},ge){if(!fe||!de)return;const Ce=fe.data.sourceData,ve=ge.representation.volume.registry.get(de.type.name);ve.ensureCustomProperties&&ve.ensureCustomProperties.detach(Ce),i.Theme.releaseDependencies(ge.representation.volume.themes,{volume:Ce},de)}});yt.VolumeRepresentation3D=ne;const $=o.PluginStateTransform.BuiltIn({name:"shape-representation-3d",display:"3D Representation",from:o.PluginStateObject.Shape.Provider,to:o.PluginStateObject.Shape.Representation3D,params:(fe,de)=>fe?fe.data.params:d.BaseGeometry.Params})({canAutoUpdate(){return!0},apply({a:fe,params:de}){return n.Task.create("Shape Representation",async ge=>{const Ce={...c.ParamDefinition.getDefaultValues(fe.data.params),...de},ve=(0,h.ShapeRepresentation)(fe.data.getShape,fe.data.geometryUtils);return await ve.createOrUpdate(Ce,fe.data.data).runInContext(ge),new o.PluginStateObject.Shape.Representation3D({repr:ve,sourceData:fe.data},{label:fe.data.label})})},update({a:fe,b:de,newParams:ge}){return n.Task.create("Shape Representation",async Ce=>{const ve={...de.data.repr.props,...ge};return await de.data.repr.createOrUpdate(ve,fe.data.data).runInContext(Ce),de.data.sourceData=fe.data,r.StateTransformer.Upd
4209ateResult.Updated})}});yt.ShapeRepresentation3D=$;const ie=o.PluginStateTransform.BuiltIn({name:"model-unitcell-3d",display:"Model Unit Cell",from:o.PluginStateObject.Molecule.Model,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...u.UnitcellParams})})({isApplicable:fe=>!!S.ModelSymmetry.Provider.get(fe.data),canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Model Unit Cell",async Ce=>{var ve;const le=S.ModelSymmetry.Provider.get(fe.data);if(!le)return r.StateObject.Null;const me=(0,u.getUnitcellData)(fe.data,le,de),ee=(0,u.UnitcellRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>u.UnitcellParams);return await ee.createOrUpdate(de,me).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:ee,sourceData:me},{label:"Unit Cell",description:le.spacegroup.name})})},update({a:fe,b:de,newParams:ge}){return n.Task.create("Model Unit Cell",async Ce=>{const ve=S.ModelSymmetry.Provider.get(fe.data);if(!ve)return r.StateTransformer.UpdateResult.Null;const le={...de.data.repr.props,...ge},me=(0,u.getUnitcellData)(fe.data,ve,le);return await de.data.repr.createOrUpdate(le,me).runInContext(Ce),de.data.sourceData=me,r.StateTransformer.UpdateResult.Updated})}});yt.ModelUnitcell3D=ie;const Z=o.PluginStateTransform.BuiltIn({name:"structure-bounding-box-3d",display:"Bounding Box",from:o.PluginStateObject.Molecule.Structure,to:o.PluginStateObject.Shape.Representation3D,params:{radius:c.ParamDefinition.Numeric(.05,{min:.01,max:4,step:.01},{isEssential:!0}),color:c.ParamDefinition.Color(s.ColorNames.red,{isEssential:!0}),...x.Mesh.Params}})({canAutoUpdate(){return!0},apply({a:fe,params:de},ge){return n.Task.create("Bounding Box",async Ce=>{const ve=(0,h.ShapeRepresentation)((le,me,ee,se)=>{const ye=(0,M.getBoxMesh)(me.box,me.radius,se?.geometry);return D.Shape.create("Bouding Box",me,ye,()=>me.color,()=>1,()=>"Bounding Box")},x.Mesh.Utils);return await ve.createOrUpdate(de,{box:fe.data.boundary.box,radius:de.radius,color:de.color}).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:ve,sourceData:fe.data},{label:"Bounding Box"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Bounding Box",async le=>(await de.data.repr.createOrUpdate(Ce,{box:fe.data.boundary.box,radius:Ce.radius,color:Ce.color}).runInContext(le),de.data.sourceData=fe.data,r.StateTransformer.UpdateResult.Updated))}});yt.StructureBoundingBox3D=Z;const re=o.PluginStateTransform.BuiltIn({name:"structure-selections-distance-3d",display:"3D Distance",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...m.DistanceParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Distance",async Ce=>{var ve;const le=(0,v.getDistanceDataFromStructureSelections)(fe.data),me=(0,m.DistanceRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>m.DistanceParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Distance"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Distance",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getDistanceDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsDistance3D=re;const oe=o.PluginStateTransform.BuiltIn({name:"structure-selections-angle-3d",display:"3D Angle",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...C.AngleParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Angle",async Ce=>{var ve;const le=(0,v.getAngleDataFromStructureSelections)(fe.data),me=(0,C.AngleRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>C.AngleParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Angle"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Angle",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getAngleDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.Upd
4209ateResult.Updated})}});yt.StructureSelectionsAngle3D=oe;const ce=o.PluginStateTransform.BuiltIn({name:"structure-selections-dihedral-3d",display:"3D Dihedral",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...l.DihedralParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Dihedral",async Ce=>{var ve;const le=(0,v.getDihedralDataFromStructureSelections)(fe.data),me=(0,l.DihedralRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>l.DihedralParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Dihedral"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Dihedral",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getDihedralDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsDihedral3D=ce;const ue=o.PluginStateTransform.BuiltIn({name:"structure-selections-label-3d",display:"3D Label",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...b.LabelParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Label",async Ce=>{var ve,le,me;const ee=(0,v.getLabelDataFromStructureSelections)(fe.data),se=(0,b.LabelRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>b.LabelParams);await se.createOrUpdate(de,ee).runInContext(Ce);const ye=!!(!((le=de.snapshotKey)===null||le===void 0)&&le.trim()||!((me=de.tooltip)===null||me===void 0)&&me.trim());return se.setState({pickable:ye,markerActions:ye?B.MarkerActions.Highlighting:B.MarkerAction.None}),new o.PluginStateObject.Shape.Representation3D({repr:se,sourceData:ee},{label:"Label"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Label",async le=>{var me,ee;const se={...de.data.repr.props,...Ce},ye=(0,v.getLabelDataFromStructureSelections)(fe.data);await de.data.repr.createOrUpdate(se,ye).runInContext(le),de.data.sourceData=ye;const Se=!!(!((me=Ce.snapshotKey)===null||me===void 0)&&me.trim()||!((ee=Ce.tooltip)===null||ee===void 0)&&ee.trim());return de.data.repr.setState({pickable:Se,markerActions:Se?B.MarkerActions.Highlighting:B.MarkerAction.None}),r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsLabel3D=ue;const pe=o.PluginStateTransform.BuiltIn({name:"structure-selections-orientation-3d",display:"3D Orientation",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...P.OrientationParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Orientation",async Ce=>{var ve;const le=(0,v.getOrientationDataFromStructureSelections)(fe.data),me=(0,P.OrientationRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>P.OrientationParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Orientation"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Orientation",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getOrientationDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.UpdateResult.Updated})}});yt.StructureSelectionsOrientation3D=pe;const he=o.PluginStateTransform.BuiltIn({name:"structure-selections-plane-3d",display:"3D Plane",from:o.PluginStateObject.Molecule.Structure.Selections,to:o.PluginStateObject.Shape.Representation3D,params:()=>({...V.PlaneParams})})({canAutoUpdate({oldParams:fe,newParams:de}){return!0},apply({a:fe,params:de},ge){return n.Task.create("Structure Plane",async Ce=>{var ve;const le=(0,v.getPlaneDataFromStructureSelections)(fe.data),me=(0,V.PlaneRepresentation)({webgl:(ve=ge.canvas3d)===null||ve===void 0?void 0:ve.webgl,...ge.representation.structure.themes},()=>V.PlaneParams);return await me.createOrUpdate(de,le).runInContext(Ce),new o.PluginStateObject.Shape.Representation3D({repr:me,sourceData:le},{label:"Plane"})})},update({a:fe,b:de,oldParams:ge,newParams:Ce},ve){return n.Task.create("Structure Plane",async le=>{const me={...de.data.repr.props,...Ce},ee=(0,v.getPlaneDataFromStructureSelections)(fe.data);return await de.data.repr.createOrUpdate(me,ee).runInContext(le),de.data.sourceData=ee,r.StateTransformer.Upd
4209ateResult.Updated})}});return yt.StructureSelectionsPlane3D=he,yt}var D6;function Dr(){if(D6)return F1;D6=1,Object.defineProperty(F1,"__esModule",{value:!0}),F1.StateTransforms=void 0;const e=At,t=e.__importStar(OQ()),r=e.__importStar(Iie()),n=e.__importStar(NQ()),i=e.__importStar(Uae()),c=e.__importStar($S()),o=e.__importStar(GQ());return F1.StateTransforms={get Data(){return t},get Misc(){return r},get Model(){return n},get Volume(){return i},get Representation(){return c},get Shape(){return o}},F1}var I6;function jl(){return I6||(I6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureSelectionQueryRegistry=e.StructureSelectionQueries=e.StructureSelectionCategory=void 0,e.StructureSelectionQuery=y,e.ResidueQuery=J,e.ElementSymbolQuery=ae,e.EntityDescriptionQuery=te,e.getElementQueries=$,e.getNonStandardResidueQueries=ie,e.getPolymerAndBranchedEntityQueries=Z,e.applyBuiltInSelection=re;const t=Ke(),r=dt(),n=dr(),i=LS(),c=Hi(),o=Dr(),s=Xi(),h=Pl();var f;(function(ce){ce.Type="Type",ce.Structure="Structure Property",ce.Atom="Atom Property",ce.Bond="Bond Property",ce.Residue="Residue Property",ce.AminoAcid="Amino Acid",ce.NucleicBase="Nucleic Base",ce.Manipulate="Manipulate Selection",ce.Validation="Validation",ce.Misc="Miscellaneous",ce.Internal="Internal"})(f||(e.StructureSelectionCategory=f={}));function y(ce,ue,pe={}){var he;let fe;return{label:ce,expression:ue,description:pe.description||"",category:(he=pe.category)!==null&&he!==void 0?he:f.Misc,isHidden:!!pe.isHidden,priority:pe.priority||0,referencesCurrent:!!pe.referencesCurrent,get query(){return fe||(fe=(0,i.compile)(ue)),fe},ensureCustomProperties:pe.ensureCustomProperties,async getSelection(de,ge,Ce){const ve=de.managers.structure.selection.getStructure(Ce),le=ve?t.StructureSelection.Sequence(Ce,[ve]):t.StructureSelection.Empty(Ce);return pe.ensureCustomProperties&&await pe.ensureCustomProperties({runtime:ge,assetManager:de.managers.asset},Ce),fe||(fe=(0,i.compile)(ue)),fe(new t.QueryContext(Ce,{currentSelection:le}))}}}const _=y("All",n.MolScriptBuilder.struct.generator.all(),{category:"",priority:1e3}),g=y("Current Selection",n.MolScriptBuilder.internal.generator.current(),{category:"",referencesCurrent:!0}),a=y("Polymer",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(polypeptide|cyclic-pseudo-peptide|peptide-like|nucleotide|peptide nucleic acid)","i"),n.MolScriptBuilder.ammp("entitySubtype")])])})]),{category:f.Type}),d=y("Trace",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("sphere","gaussian"),n.MolScriptBuilder.ammp("objectPrimitive")])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CA","P"),n.MolScriptBuilder.ammp("label_atom_id")])})])])]),{category:f.Structure}),p=n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(polypeptide|cyclic-pseudo-peptide|peptide-like)","i"),n.MolScriptBuilder.ammp("entitySubtype")])]),u=n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(nucleotide|peptide nucleic acid)","i"),n.MolScriptBuilder.ammp("entitySubtype")])]),m=n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("non-
4209polymer|(amino|carboxy) terminus|peptide-like","i"),n.MolScriptBuilder.ammp("chemCompType")]),v=y("Backbone",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])})])])]),{category:f.Structure}),b=y("Sidechain",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])])])})])])]),{category:f.Structure}),P=y("Sidechain with Trace",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.ProteinBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"CA"]),n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("auth_comp_id"),"PRO"]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"N"])])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u,"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([m]),"atom-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.NucleicBackboneAtoms)),n.MolScriptBuilder.ammp("label_atom_id")])]),n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("label_atom_id"),"P"])])})])])]),{category:f.Structure}),C=y("Protein",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p})]),{category:f.Type}),l=y("Nucleic",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":u})]),{category:f.Type}),S=y("Helix",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"residue-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.ammp("secondaryStructureFlags"),n.MolScriptBuilder.core.type.bitflags([r.SecondaryStructureType.Flag.Helix])])})]),{category:f.Structure,ensureCustomProperties:(ce,ue)=>h.SecondaryStructureProvider.attach(ce,ue)}),T=y("Beta Strand/Sheet",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":p,"residue-test":n.MolScriptBuilder.core.flags.hasAny([n.MolScriptBuilder.ammp("secondaryStructureFlags"),n.MolScriptBuilder.core.type.bitflags([r.SecondaryStructureType.Flag.Beta])])})]),{category:f.Structure,ensureCustomProperties:(ce,ue)=>h.SecondaryStructureProvider.attach(ce,ue)}),A=y("Water",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"water"])})]),{category:f.Type}),x=y("Ion",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entitySubtype"),"ion"])})]),{category:f.Type}),M=y("Lipid",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entitySubtype"),"lipid"])})]),{category:f.Type}),D=y("Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"branched"]),n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"non-polymer"]),n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("oligosaccharide","i"),n.MolScriptBuilder.ammp("entitySubtype")])])])})]),{category:f.Type}),V=y("Carbohydrate with Connected",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:D.expression,"layer-count":1,"as-whole-residues":!0})]),{category:f.Internal,isHidden:!0}),R=y("Connected to Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:V.expression,by:D.expression})]),{category:f.Internal,isHidden:!0}),E=y("Ligand",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.logic.and([n.MolScriptBuilder.core.logic.or([n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"non-polymer"]),n.MolScriptBuilder.core.rel.neq([n.MolScriptBuilder.ammp("entityPrdId"),""])]),n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("(oligosaccharide|lipid|ion)","i"),n.MolScriptBuilder.ammp("entitySubtype")])])]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.logic.not([n.MolScriptBuilder.core.str.match([n.MolScriptBuilder.re("saccharide","i"),n.MolScriptBuilder.ammp("chemCompType")])])})]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":m})])])]),by:n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.PolymerNames)),n.MolScriptBuilder.ammp("label_comp_id")])})]),n.MolScriptBuilder.struct.generator.atomGroups({"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...c.SetUtils.toArray(r.CommonProteinCaps)),n.MolScriptBuilder.ammp("label_comp_id")])})])})]),{category:f.Type}),I=y("Ligand with Connected",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:E.expression,"layer-count":1,"as-whole-residues":!0,"bond-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Covalent|r.BondType.Flag.MetallicCoordination])])})]),by:D.expression})]),{category:f.Internal,isHidden:!0}),B=y("Connected to Ligand",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:I.expression,by:E.expression})]),{category:f.Internal,isHidden:!0}),w=y("Connected to Ligand or Carbohydrate",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([R.expression,B.expression])]),{category:f.Internal,isHidden:!0}),O=y("Disulfide Bridges",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.combinator.merge([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.filter.isConnectedTo({0:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("SG"),n.MolScriptBuilder.ammp("label_atom_id")])}),target:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("SG"),n.MolScriptBuilder.ammp("label_atom_id")])}),"bond-test":!0})])]),n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.bondedAtomicPairs({0:n.MolScriptBuilder.core.flags.hasAny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Disulfide])])})])])])])]),{category:f.Bond}),F=y("NOS Bridges",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues([n.MolScriptBuilder.struct.filter.isConnectedTo({0:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CSO","LYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("OD","NZ"),n.MolScriptBuilder.ammp("label_atom_id")])}),target:n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("CSO","LYS"),n.MolScriptBuilder.ammp("auth_comp_id")]),"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("OD","NZ"),n.MolScriptBuilder.ammp("label_atom_id")])}),"bond-test":!0})])]),{category:f.Bond}),L=y("Non-standard Residues in Polymers",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("entityType"),"polymer"]),"chain-test":n.MolScriptBuilder.core.rel.eq([n.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":n.MolScriptBuilder.ammp("isNonStandard")})]),{category:f.Residue}),U=y("Coarse Elements",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"chain-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set("sphere","gaussian"),n.MolScriptBuilder.ammp("objectPrimitive")])})]),{category:f.Type}),q=y("Rings in Residues",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.rings()]),{category:f.Residue}),N=y("Aromatic Rings in Residues",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.rings({"only-aromatic":!0})]),{category:f.Residue}),k=y("Surrounding Residues (5 â«) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.includeSurroundings({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"as-whole-residues":!0}),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select residues within 5 â« of the current selection.",category:f.Manipulate,referencesCurrent:!0}),j=y("Surrounding Ligands (5 â«) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.surroundingLigands({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"include-water":!0})]),{description:"Select ligand components within 5 â« of the current selection.",category:f.Manipulate,referencesCurrent:!0}),H=y("Surrounding Atoms (5 â«) of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.modifier.includeSurroundings({0:n.MolScriptBuilder.internal.generator.current(),radius:5,"as-whole-residues":!1}),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select atoms within 5 â« of the current selection.",category:f.Manipulate,referencesCurrent:!0}),G=y("Inverse / Complement of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.exceptBy({0:n.MolScriptBuilder.struct.generator.all(),by:n.MolScriptBuilder.internal.generator.current()})]),{description:"Select everything not in the current selection.",category:f.Manipulate,referencesCurrent:!0}),z=y("Residues Covalently Bonded to Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"layer-count":1,"as-whole-residues":!0})]),{description:"Select residues covalently bonded to current selection.",category:f.Manipulate,referencesCurrent:!0}),W=y("Covalently Bonded Component",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"fixed-point":!0})]),{description:"Select covalently bonded component based on current selection.",category:f.Manipulate,referencesCurrent:!0}),X=y("Residues with Cov. or Metallic Bond to Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.includeConnected({0:n.MolScriptBuilder.internal.generator.current(),"layer-count":1,"as-whole-residues":!0,"bond-test":n.MolScriptBuilder.core.flags.hasA
4209ny([n.MolScriptBuilder.struct.bondProperty.flags(),n.MolScriptBuilder.core.type.bitflags([r.BondType.Flag.Covalent|r.BondType.Flag.MetallicCoordination])])})]),{description:"Select residues with covalent or metallic bond to current selection.",category:f.Manipulate,referencesCurrent:!0}),Y=y("Whole Residues of Selection",n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.modifier.wholeResidues({0:n.MolScriptBuilder.internal.generator.current()})]),{description:"Expand current selection to whole residues.",category:f.Manipulate,referencesCurrent:!0}),K=[[["HIS"],"Histidine"],[["ARG"],"Arginine"],[["LYS"],"Lysine"],[["ILE"],"Isoleucine"],[["PHE"],"Phenylalanine"],[["LEU"],"Leucine"],[["TRP"],"Tryptophan"],[["ALA"],"Alanine"],[["MET"],"Methionine"],[["PRO"],"Proline"],[["CYS"],"Cysteine"],[["ASN"],"Asparagine"],[["VAL"],"Valine"],[["GLY"],"Glycine"],[["SER"],"Serine"],[["GLN"],"Glutamine"],[["TYR"],"Tyrosine"],[["ASP"],"Aspartic Acid"],[["GLU"],"Glutamic Acid"],[["THR"],"Threonine"],[["SEC"],"Selenocysteine"],[["PYL"],"Pyrrolysine"],[["UNK"],"Unknown"]].sort((ce,ue)=>ce[1]<ue[1]?-1:ce[1]>ue[1]?1:0),Q=[[["A","DA"],"Adenosine"],[["C","DC"],"Cytidine"],[["T","DT"],"Thymidine"],[["G","DG"],"Guanosine"],[["I","DI"],"Inosine"],[["U","DU"],"Uridine"],[["N","DN"],"Unknown"]].sort((ce,ue)=>ce[1]<ue[1]?-1:ce[1]>ue[1]?1:0);function J([ce,ue],pe,he=0){const fe=ce.length===1&&!ne.has(ce[0])?`[${ce[0]}] ${ue}`:`${ue} (${ce.join(", ")})`;return y(fe,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"residue-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...ce),n.MolScriptBuilder.ammp("auth_comp_id")])})]),{category:pe,priority:he,description:fe})}function ae([ce,ue],pe,he){const fe=`${ue} (${ce.join(", ")})`;return y(fe,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"atom-test":n.MolScriptBuilder.core.set.has([n.MolScriptBuilder.set(...ce),n.MolScriptBuilder.acp("elementSymbol")])})]),{category:pe,priority:he,description:fe})}function te([ce,ue],pe,he){const fe=`${ue}`;return y(`${ue}`,n.MolScriptBuilder.struct.modifier.union([n.MolScriptBuilder.struct.generator.atomGroups({"entity-test":n.MolScriptBuilder.core.list.equal([n.MolScriptBuilder.list(...ce),n.MolScriptBuilder.ammp("entityDescription")])})]),{category:pe,priority:he,description:fe})}const ne=c.SetUtils.unionMany(r.AminoAcidNamesL,r.RnaBaseNames,r.DnaBaseNames,r.WaterNames);function $(ce){const ue=new Set;for(const he of ce)he.uniqueElementSymbols.forEach(fe=>ue.add(fe));const pe=[];return ue.forEach(he=>{const fe=s.ElementNames[he]||he;pe.push(ae([[he],fe],"Element Symbol",0))}),pe}function ie(ce){const ue=new Map,pe=new Set;for(const fe of ce){fe.uniqueResidueNames.forEach(de=>pe.add(de));for(const de of fe.models)fe.uniqueResidueNames.forEach(ge=>{const Ce=de.properties.chemicalComponentMap.get(ge);Ce&&ue.set(ge,Ce.name)})}const he=[];return c.SetUtils.difference(pe,ne).forEach(fe=>{const de=ue.get(fe)||fe;he.push(J([[fe],de],"Ligand/Non-standard Residue",200))}),he}function Z(ce){const ue=new Map,pe=t.StructureElement.Location.create();for(const fe of ce){pe.structure=fe;for(const de of fe.unitSymmetryGroups){pe.unit=de.units[0],pe.element=de.elements[0];const ge=t.StructureProperties.entity.type(pe);if(ge==="polymer"||ge==="branched"){const Ce=t.StructureProperties.entity.pdbx_description(pe);ue.set(Ce.join(", "),Ce)}}}const he=[];return ue.forEach((fe,de)=>{he.push(te([fe,de],"Polymer/Carbohydrate Entities",300))}),he}function re(ce,ue,pe){return ce.apply(o.StateTransforms.Model.StructureSelectionFromExpression,{expression:e.StructureSelectionQueries[ue].expression,label:e.StructureSelectionQueries[ue].label},{tags:pe?[ue,pe]:[ue]})}e.StructureSelectionQueries={all:_,current:g,polymer:a,trace:d,backbone:v,sidechain:b,sidechainWithTrace:P,protein:C,nucleic:l,helix:S,beta:T,water:A,ion:x,lipid:M,branched:D,branchedPlusConnected:V,branchedConnectedOnly:R,ligand:E,ligandPlusConnected:I,ligandConnectedOnly:B,connectedOnly:w,disulfideBridges:O,nosBridges:F,nonStandardPolymer:L,coarse:U,ring:q,aromaticRing:N,surroundings:k,surroundingLigands:j,surroundingAtoms:H,complement:G,covalentlyBonded:z,covalentlyOrMetallicBonded:X,covalentlyBondedComponent:W,wholeResidues:Y};class oe{add(ue){this.list.push(ue),this.options.push([ue,ue.label,ue.category]),this.version+=1}remove(ue){const pe=this.list.indexOf(ue);pe!==-1&&(this.list.splice(pe,1),this.options.splice(pe,1),this.version+=1)}constructor(){this.list=[],this.options=[],this.version=1,this.list.push(...Object.values(e.StructureSelectionQueries),...
4209K.map(ue=>J(ue,f.AminoAcid)),...Q.map(ue=>J(ue,f.NucleicBase))),this.options.push(...this.list.map(ue=>[ue,ue.label,ue.category]))}}e.StructureSelectionQueryRegistry=oe})(Y3)),Y3}var w6;function doe(){return w6||(w6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ExternalStructureColorThemeProvider=e.ExternalStructureColorThemeParams=void 0,e.ExternalStructureColorTheme=P;const t=vt(),r=Ne(),n=zt(),i=Ut(),c=l2(),o=jt(),s=Ke(),h=Uf(),f=ES(),y=BS(),_=s2(),g=RS(),a=OS(),d=Gt(),p=VT(),u=jl(),m=wt(),v="Assigns a color based on structure property at a given vertex.";e.ExternalStructureColorThemeParams={structure:r.ParamDefinition.ValueRef(C=>C.state.data.select(c.StateSelection.Generators.rootsOfType(o.PluginStateObject.Molecule.Structure)).filter(S=>{var T;return(T=S.obj)===null||T===void 0?void 0:T.data}).map(S=>{var T,A;return[S.transform.ref,(A=(T=S.obj)===null||T===void 0?void 0:T.label)!==null&&A!==void 0?A:"<unknown>"]}),(C,l)=>l(C)),style:r.ParamDefinition.MappedStatic("chain-id",{"chain-id":r.ParamDefinition.Group(h.ChainIdColorThemeParams),"entity-id":r.ParamDefinition.Group(f.EntityIdColorThemeParams),"entity-source":r.ParamDefinition.Group(y.EntitySourceColorThemeParams),"molecule-type":r.ParamDefinition.Group(_.MoleculeTypeColorThemeParams),"model-index":r.ParamDefinition.Group(g.ModelIndexColorThemeParams),"structure-index":r.ParamDefinition.Group(a.StructureIndexColorThemeParams)}),defaultColor:r.ParamDefinition.Color((0,t.Color)(13421772)),maxDistance:r.ParamDefinition.Numeric(8,{min:.1,max:24,step:.1},{description:"Maximum distance to search for the nearest structure element. This is done only if the approximate search fails."}),approxMaxDistance:r.ParamDefinition.Numeric(4,{min:0,max:12,step:.1},{description:"Maximum distance to search for an approximately nearest structure element. This is done before the extact search."}),normalOffset:r.ParamDefinition.Numeric(0,{min:-10,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."}),backboneOnly:r.ParamDefinition.Boolean(!1)};function b(C,l){switch(l.name){case"chain-id":return(0,h.ChainIdColorTheme)(C,l.params);case"entity-id":return(0,f.EntityIdColorTheme)(C,l.params);case"entity-source":return(0,y.EntitySourceColorTheme)(C,l.params);case"molecule-type":return(0,_.MoleculeTypeColorTheme)(C,l.params);case"model-index":return(0,g.ModelIndexColorTheme)(C,l.params);case"structure-index":return(0,a.StructureIndexColorTheme)(C,l.params);default:(0,d.assertUnreachable)(l)}}function P(C,l){let S;try{S=l.structure.getValue()}catch{}let T,A,x;const{maxDistance:M,approxMaxDistance:D,normalOffset:V,defaultColor:R,backboneOnly:E}=l;if(S){const I=b({...C,structure:S},l.style),B=(0,p.StructureLookup3DResultContext)(),w=(0,p.StructureLookup3DResultContext)();let O=S;E&&(O=s.StructureSelection.unionStructure(u.StructureSelectionQueries.backbone.query(new s.QueryContext(S))));const F=(0,m.Vec3)(),L=s.StructureElement.Location.create(O);T=(U,q)=>{if(!(0,n.isPositionLocation)(U))return R;V!==0?m.Vec3.scaleAndAdd(F,U.position,U.normal,V):m.Vec3.copy(F,U.position);const[N,k,j]=F;if(D>0){const G=O.lookup3d.approxNearest(N,k,j,D,B);if(G.count>0)return L.unit=G.units[0],L.element=L.unit.elements[G.indices[0]],I.color(L,q)}const H=O.lookup3d.find(N,k,j,M,w);if(H.count>0){let G=0,z=H.squaredDistances[0];for(let W=1;W<H.count;++W)H.squaredDistances[W]<z&&(z=H.squaredDistances[W],G=W);return L.unit=H.units[G],L.element=L.unit.elements[H.indices[G]],I.color(L,q)}return R},A=I.contextHash,x=I.legend}else T=()=>R;return{factory:P,granularity:"vertex",preferSmoothing:!0,color:T,props:l,contextHash:A,description:v,legend:x}}e.ExternalStructureColorThemeProvider={name:"external-structure",label:"External Structure",category:i.ColorThemeCategory.Misc,factory:P,getParams:()=>e.ExternalStructureColorThemeParams,defaultValues:r.ParamDefinition.getDefaultValues(e.ExternalStructureColorThemeParams),isApplicable:C=>!0}})(K3)),K3}var gA={},V6;function foe(){return V6||(V6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeInstanceColorThemeProvider=e.VolumeInstanceColorThemeParams=void 0,e.getVolumeInstanceColorThemeParams=y,e.VolumeInstanceColorTheme=_;const t=vt(),r=Ne(),n=On(),i=pa(),c=Ut(),o=oc(),s="dark-2",h=(0,t.Color)(13421772),f="Gives every volume instance a unique color based on the position (index) of the instance in the list of instances of the volume.";
4209e.VolumeInstanceColorThemeParams={...(0,n.getPaletteParams)({type:"colors",colorList:s})};function y(g){const a=r.ParamDefinition.clone(e.VolumeInstanceColorThemeParams);return g.volume&&g.volume.instances.length>i.ColorLists[s].list.length&&(a.palette.defaultValue.name="colors",a.palette.defaultValue.params={...a.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,i.getColorListFromName)(s).list}}),a}function _(g,a){let d,p;if(g.volume){const u=(0,n.getPalette)(g.volume.instances.length,a);p=u.legend;const m=o.Volume.Cell.isLocation;d=v=>m(v)?u.color(v.instance):h}else d=()=>h;return{factory:_,granularity:"instance",color:d,props:a,description:f,legend:p}}e.VolumeInstanceColorThemeProvider={name:"volume-instance",label:"Volume Instance",category:c.ColorThemeCategory.Misc,factory:_,getParams:y,defaultValues:r.ParamDefinition.getDefaultValues(e.VolumeInstanceColorThemeParams),isApplicable:g=>!!g.volume}})(gA)),gA}var E6;function ms(){if(E6)return hd;E6=1,Object.defineProperty(hd,"__esModule",{value:!0}),hd.ColorTheme=void 0,hd.ColorThemeProvider=j;const e=vt(),t=Lne(),r=wS(),n=et(),i=ea(),c=Uf(),o=Nne(),s=mQ(),h=s2(),f=qne(),y=Une(),_=pQ(),g=jne(),a=hQ(),d=gQ(),p=CQ(),u=fQ(),m=PQ(),v=BS(),b=nie(),P=TQ(),C=o2(),l=xQ(),S=a2(),T=iie(),A=AQ(),x=aie(),M=ES(),D=oie(),V=RS(),R=OS(),E=sie(),I=die(),B=Ut(),w=fie(),O=mie(),F=doe(),L=Df(),U=Na(),q=ir(),N=foe();var k;(function(H){H.Category=B.ColorThemeCategory;function G(Y,K,Q,J){const ae=[];if(Y.every(ne=>Array.isArray(ne))){let ne=0;for(const ue of Y)if(Array.isArray(ue)){const pe=(0,L.getPrecision)(ue[1]);pe>ne&&(ne=pe)}const $=Math.pow(10,ne),ie=[...Y];ie.sort((ue,pe)=>ue[1]-pe[1]);const Z=ie.map(ue=>ue[0]),re=U.SortedArray.ofSortedArray(ie.map(ue=>ue[1])),oe=[];for(let ue=0,pe=re.length-1;ue<pe;++ue)oe.push(re[ue]+(re[ue+1]-re[ue])/2);oe.push(re[re.length-1]);const ce=U.SortedArray.ofSortedArray(oe);for(let ue=0,pe=Math.max($,Y.length);ue<pe;++ue){const he=(0,q.normalize)(ue,0,$-1),fe=U.SortedArray.findPredecessorIndex(ce,he);ae[ue]=Z[fe]}}else for(const ne of Y)Array.isArray(ne)?ae.push(ne[0]):ae.push(ne);return{colors:ae,filter:K==="set"?"nearest":"linear",domain:Q,defaultColor:J}}H.Palette=G,H.PaletteScale=(1<<24)-2,H.EmptyFactory=()=>H.Empty;const z=(0,e.Color)(13421772);H.Empty={factory:H.EmptyFactory,granularity:"uniform",color:()=>z,props:{}};function W(Y,K){return Y.contextHash===K.contextHash&&Y.factory===K.factory&&(0,n.deepEqual)(Y.props,K.props)}H.areEqual=W,H.EmptyProvider={name:"",label:"",category:"",factory:H.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function X(){return new i.ThemeRegistry(H.BuiltIn,H.EmptyProvider)}H.createRegistry=X,H.BuiltIn={"atom-id":x.AtomIdColorThemeProvider,"carbohydrate-symbol":t.CarbohydrateSymbolColorThemeProvider,cartoon:w.CartoonColorThemeProvider,"chain-id":c.ChainIdColorThemeProvider,"element-index":o.ElementIndexColorThemeProvider,"element-symbol":s.ElementSymbolColorThemeProvider,"entity-id":M.EntityIdColorThemeProvider,"entity-source":v.EntitySourceColorThemeProvider,"external-structure":F.ExternalStructureColorThemeProvider,"external-volume":I.ExternalVolumeColorThemeProvider,"formal-charge":O.FormalChargeColorThemeProvider,hydrophobicity:P.HydrophobicityColorThemeProvider,illustrative:b.IllustrativeColorThemeProvider,"model-index":V.ModelIndexColorThemeProvider,"molecule-type":h.MoleculeTypeColorThemeProvider,occupancy:l.OccupancyColorThemeProvider,"operator-hkl":T.OperatorHklColorThemeProvider,"operator-name":S.OperatorNameColorThemeProvider,"partial-charge":A.PartialChargeColorThemeProvider,"polymer-id":f.PolymerIdColorThemeProvider,"polymer-index":y.PolymerIndexColorThemeProvider,"residue-charge":g.ResidueChargeColorThemeProvider,"residue-name":_.ResidueNameColorThemeProvider,"secondary-structure":a.SecondaryStructureColorThemeProvider,"sequence-id":d.SequenceIdColorThemeProvider,"shape-group":p.ShapeGroupColorThemeProvider,"structure-index":R.StructureIndexColorThemeProvider,"trajectory-index":C.TrajectoryIndexColorThemeProvider,uncertainty:m.UncertaintyColorThemeProvider,"unit-index":u.UnitIndexColorThemeProvider,uniform:r.UniformColorThemeProvider,"volume-instance":N.VolumeInstanceColorThemeProvider,"volume-segment":E.
4209VolumeSegmentColorThemeProvider,"volume-value":D.VolumeValueColorThemeProvider}})(k||(hd.ColorTheme=k={}));function j(H){return H}return hd}var Vv={},yA={},B6;function moe(){return B6||(B6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PhysicalSizeThemeProvider=e.PhysicalSizeThemeParams=void 0,e.getPhysicalSizeThemeParams=o,e.getPhysicalRadius=s,e.PhysicalSizeTheme=h;const t=Ke(),r=ma(),n=Ne(),i=1,c="Assigns a physical size, i.e. vdW radius for atoms or given radius for coarse spheres.";e.PhysicalSizeThemeParams={scale:n.ParamDefinition.Numeric(1,{min:.1,max:5,step:.1})};function o(f){return e.PhysicalSizeThemeParams}function s(f,y){return t.Unit.isAtomic(f)?(0,r.VdwRadius)(f.model.atomicHierarchy.atoms.type_symbol.value(y)):t.Unit.isSpheres(f)?f.model.coarseConformation.spheres.radius[y]:0}function h(f,y){const _=y.scale===void 0?1:y.scale;function g(a){let d;return t.StructureElement.Location.is(a)?d=_*s(a.unit,a.element):t.Bond.isLocation(a)?d=_*Math.min(s(a.aUnit,a.aUnit.elements[a.aIndex]),s(a.bUnit,a.bUnit.elements[a.bIndex])):d=_*i,d}return{factory:h,granularity:"group",size:g,props:y,description:c}}e.PhysicalSizeThemeProvider={name:"physical",label:"Physical",category:"",factory:h,getParams:o,defaultValues:n.ParamDefinition.getDefaultValues(e.PhysicalSizeThemeParams),isApplicable:f=>!!f.structure}})(yA)),yA}var vA={},R6;function poe(){return R6||(R6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UncertaintySizeThemeProvider=e.UncertaintySizeThemeParams=void 0,e.getUncertaintySizeThemeParams=i,e.getUncertainty=c,e.UncertaintySizeTheme=o;const t=Ke(),r=Ne(),n="Assigns a size reflecting the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.";e.UncertaintySizeThemeParams={bfactorFactor:r.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01}),rmsfFactor:r.ParamDefinition.Numeric(.05,{min:0,max:1,step:.01}),baseSize:r.ParamDefinition.Numeric(.2,{min:0,max:2,step:.1})};function i(s){return e.UncertaintySizeThemeParams}function c(s,h,f){return t.Unit.isAtomic(s)?s.model.atomicConformation.B_iso_or_equiv.value(h)*f.bfactorFactor:t.Unit.isSpheres(s)?s.model.coarseConformation.spheres.rmsf[h]*f.rmsfFactor:0}function o(s,h){function f(y){let _=h.baseSize;return t.StructureElement.Location.is(y)?_+=c(y.unit,y.element,h):t.Bond.isLocation(y)&&(_+=c(y.aUnit,y.aUnit.elements[y.aIndex],h)),_}return{factory:o,granularity:"group",size:f,props:h,description:n}}e.UncertaintySizeThemeProvider={name:"uncertainty",label:"Uncertainty/Disorder",category:"",factory:o,getParams:i,defaultValues:r.ParamDefinition.getDefaultValues(e.UncertaintySizeThemeParams),isApplicable:s=>!!s.structure&&s.structure.models.some(h=>h.atomicConformation.B_iso_or_equiv.isDefined||h.coarseHierarchy.isDefined)}})(vA)),vA}var bA={},O6;function hoe(){return O6||(O6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VolumeValueSizeThemeProvider=e.VolumeValueSizeThemeParams=void 0,e.getVolumeValueSizeThemeParams=s,e.VolumeValueSizeTheme=h;const t=Ne(),r=oc(),n=zt(),i=zf(),c=ir(),o="Assign size based on the given value of a volume cell.";e.VolumeValueSizeThemeParams={scale:t.ParamDefinition.Numeric(1,{min:.01,max:10,step:.01}),transform:t.ParamDefinition.Select("linear",[["linear","Linear"],["quadratic","Quadratic"],["cubic","Cubic"]],{description:"Linear: value * scale, Quadratic: value * scale^2, Cubic: value * scale^3"}),domain:t.ParamDefinition.MappedStatic("auto",{custom:t.ParamDefinition.Interval([0,1],{step:.001,min:0}),auto:t.ParamDefinition.Group({})})};function s(f){return e.VolumeValueSizeThemeParams}function h(f,y){var _;if(f.volume){const{min:g,max:a}=f.volume.grid.stats,d=y.domain.name==="custom"?y.domain.params:[g,a],p=y.transform==="cubic"?y.scale**3:y.transform==="quadratic"?y.scale**2:y.scale;if(!((_=f.locationKinds)===null||_===void 0)&&_.includes("cell-location")){const{data:u}=f.volume.grid.cells,m=r.Volume.Cell.isLocation;return{factory:h,granularity:"group",size:b=>m(b)?(0,c.clamp)(Math.abs(u[b.cell]),d[0],d[1])*p:0,props:y,description:o}}
4209else{const u=i.Grid.makeGetTrilinearlyInterpolated(f.volume.grid,"none");return{factory:h,granularity:"vertex",size:v=>{if((0,n.isPositionLocation)(v)){const b=u(v.position);return Number.isNaN(b)?0:(0,c.clamp)(Math.abs(b),d[0],d[1])*p}else return 0},props:y,description:o}}}else return{factory:h,granularity:"uniform",size:()=>y.scale,props:y,description:o}}e.VolumeValueSizeThemeProvider={name:"volume-value",label:"Volume Value",category:"",factory:h,getParams:s,defaultValues:t.ParamDefinition.getDefaultValues(e.VolumeValueSizeThemeParams),isApplicable:f=>!!f.volume&&!r.Volume.Segmentation.get(f.volume)}})(bA)),bA}var k6;function ps(){if(k6)return Vv;k6=1,Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.SizeTheme=void 0;const e=yQ(),t=ea(),r=moe(),n=et(),i=_Q(),c=poe(),o=hoe();var s;return(function(h){h.EmptyFactory=()=>h.Empty,h.Empty={factory:h.EmptyFactory,granularity:"uniform",size:()=>1,props:{}};function f(_,g){return _.contextHash===g.contextHash&&_.factory===g.factory&&(0,n.deepEqual)(_.props,g.props)}h.areEqual=f,h.EmptyProvider={name:"",label:"",category:"",factory:h.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function y(){return new t.ThemeRegistry(h.BuiltIn,h.EmptyProvider)}h.createRegistry=y,h.BuiltIn={physical:r.PhysicalSizeThemeProvider,"shape-group":i.ShapeGroupSizeThemeProvider,uncertainty:c.UncertaintySizeThemeProvider,uniform:e.UniformSizeThemeProvider,"volume-value":o.VolumeValueSizeThemeProvider}})(s||(Vv.SizeTheme=s={})),Vv}var F6;function ea(){if(F6)return gu;F6=1,Object.defineProperty(gu,"__esModule",{value:!0}),gu.ThemeRegistry=gu.Theme=void 0;const e=ms(),t=ps(),r=Ne(),n=vr();var i;(function(s){function h(g,a,d,p){p=p||f();const u=d.colorTheme,m=d.sizeTheme;return p.color=g.colorThemeRegistry.create(u.name,a,u.params),p.size=g.sizeThemeRegistry.create(m.name,a,m.params),p}s.create=h;function f(){return{color:e.ColorTheme.Empty,size:t.SizeTheme.Empty}}s.createEmpty=f;async function y(g,a,d,p){var u,m;await((u=a.colorThemeRegistry.get(p.colorTheme.name).ensureCustomProperties)===null||u===void 0?void 0:u.attach(g,d)),await((m=a.sizeThemeRegistry.get(p.sizeTheme.name).ensureCustomProperties)===null||m===void 0?void 0:m.attach(g,d))}s.ensureDependencies=y;function _(g,a,d){var p,u;(p=g.colorThemeRegistry.get(d.colorTheme.name).ensureCustomProperties)===null||p===void 0||p.detach(a),(u=g.sizeThemeRegistry.get(d.sizeTheme.name).ensureCustomProperties)===null||u===void 0||u.detach(a)}s.releaseDependencies=_})(i||(gu.Theme=i={}));function c(s){return s.map(h=>[h.name,h.provider.label,h.provider.category])}class o{get default(){return this._list[0]}get list(){return this._list}get types(){return c(this._list)}constructor(h,f){this.emptyProvider=f,this._list=[],this._map=new Map,this._name=new Map,(0,n.objectForEach)(h,(y,_)=>{if(y.name!==_)throw new Error(`Fix build in themes to have matching names. ${y.name} ${_}`);this.add(y)})}sort(){this._list.sort((h,f)=>h.provider.category===f.provider.category?h.provider.label<f.provider.label?-1:h.provider.label>f.provider.label?1:0:h.provider.category<f.provider.category?-1:1)}add(h){if(this._map.has(h.name))throw new Error(`${h.name} already registered.`);const f=h.name;this._list.push({name:f,provider:h}),this._map.set(f,h),this._name.set(h,f),this.sort()}remove(h){this._list.splice(this._list.findIndex(y=>y.name===h.name),1);const f=this._map.get(h.name);f&&(this._map.delete(h.name),this._name.delete(f))}has(h){return this._map.has(h.name)}get(h){return this._map.get(h)||this.emptyProvider}getName(h){if(!this._name.has(h))throw new Error(`'${h.label}' is not a registered theme provider.`);return this._name.get(h)}create(h,f,y={}){const _=this.get(h);return _.factory(f,{...r.ParamDefinition.getDefaultValues(_.getParams(f)),...y})}getApplicableList(h){return this._list.filter(f=>f.provider.isApplicable(h))}getApplicableTypes(h){return c(this.getApplicableList(h))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}return gu.ThemeRegistry=o,gu}var L6;function Lt(){return L6||(L6=1,(function(e){Object.defineProperty(e,"__esMo
4209dule",{value:!0}),e.Representation=e.RepresentationRegistry=e.EmptyRepresentationProvider=e.RepresentationProvider=void 0;const t=Ne(),r=ea(),n=Rn(),i=nt(),c=cn(),o=gt(),s=US(),h=jS(),f=Ge(),y=ql(),_=Tt(),g=Ul(),a=Yf(),d=Hi(),p=_t(),u=zS(),m=HS(),v=WS();var b;(function(T){function A(x,M,D){return t.ParamDefinition.getDefaultValues(x.getParams(M,D))}T.getDefaultParams=A})(b||(e.RepresentationProvider=b={})),e.EmptyRepresentationProvider={name:"",label:"",description:"",factory:()=>l.Empty,getParams:()=>({}),defaultValues:{},defaultColorTheme:{name:""},defaultSizeTheme:{name:""},isApplicable:()=>!0};function P(T){return T.map(A=>[A.name,A.provider.label])}class C{get default(){return this._list[0]}get types(){return P(this._list)}constructor(){this._list=[],this._map=new Map,this._name=new Map}add(A){if(this._map.has(A.name))throw new Error(`${A.name} already registered.`);this._list.push({name:A.name,provider:A}),this._map.set(A.name,A),this._name.set(A,A.name)}getName(A){if(!this._name.has(A))throw new Error(`'${A.label}' is not a registered represenatation provider.`);return this._name.get(A)}remove(A){const x=A.name;this._list.splice(this._list.findIndex(D=>D.name===x),1);const M=this._map.get(x);M&&(this._map.delete(x),this._name.delete(M))}get(A){return this._map.get(A)||e.EmptyRepresentationProvider}get list(){return this._list}getApplicableList(A){return this._list.filter(x=>x.provider.isApplicable(A))}getApplicableTypes(A){return P(this.getApplicableList(A))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}e.RepresentationRegistry=C;var l;(function(T){(function(E){function I(w,O){return w.repr===O.repr&&o.Loci.areEqual(w.loci,O.loci)}E.areEqual=I;function B(w){return o.Loci.isEmpty(w.loci)}E.isEmpty=B,E.Empty={loci:o.EmptyLoci}})(T.Loci||(T.Loci={}));function A(){return{visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,syncManually:!1,transform:f.Mat4.identity(),overpaint:s.Overpaint.Empty,transparency:h.Transparency.Empty,emissive:m.Emissive.Empty,substance:u.Substance.Empty,wiggle:v.Wiggle.Empty,clipping:a.Clipping.Empty,themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1,wiggle:1},markerActions:c.MarkerActions.All}}T.createState=A;function x(E,I){I.visible!==void 0&&(E.visible=I.visible),I.alphaFactor!==void 0&&(E.alphaFactor=I.alphaFactor),I.pickable!==void 0&&(E.pickable=I.pickable),I.colorOnly!==void 0&&(E.colorOnly=I.colorOnly),I.overpaint!==void 0&&(E.overpaint=I.overpaint),I.transparency!==void 0&&(E.transparency=I.transparency),I.emissive!==void 0&&(E.emissive=I.emissive),I.substance!==void 0&&(E.substance=I.substance),I.wiggle!==void 0&&(E.wiggle=I.wiggle),I.clipping!==void 0&&(E.clipping=I.clipping),I.themeStrength!==void 0&&(E.themeStrength=I.themeStrength),I.syncManually!==void 0&&(E.syncManually=I.syncManually),I.transform!==void 0&&f.Mat4.copy(E.transform,I.transform),I.markerActions!==void 0&&(E.markerActions=I.markerActions)}T.updateState=x,T.StateBuilder={create:A,update:x};function M(){return{label:"",groupCount:0,renderObjects:[],geometryVersion:-1,props:{},params:{},updated:new n.Subject,state:A(),theme:r.Theme.createEmpty(),createOrUpdate:()=>i.Task.constant("",void 0),setState:()=>{},setTheme:()=>{},getLoci:()=>o.EmptyLoci,getAllLoci:()=>[],eachLocation:()=>{},mark:()=>!1,destroy:()=>{}}}T.createEmpty=M;class D{constructor(){this.curr=new Set,this.next=new Set,this._version=-1}get version(){return this._version}add(I,B){this.next.add((0,p.cantorPairing)(I,B))}snapshot(){d.SetUtils.areEqual(this.curr,this.next)||(this._version+=1),[this.curr,this.next]=[this.next,this.curr],this.next.clear()}}T.GeometryState=D;function V(E,I,B,w,O){let F=0;const L=new n.Subject,U=new D,q=w.create();let N=r.Theme.createEmpty(),k,j,H;const G={},z=Object.keys(O).map((W,X)=>{G[X]=W;const Y=O[W](I,B);return Y.setState(q),Y});return{label:E,updated:L,get groupCount(){let W=0;if(j){const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&(W+=z[Y].groupCount)}return W},get renderObjects(){const W=[];if(j){const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&W.push(...z[Y].renderObjects)}return W},get geometryVersion(){return U.version},get props(){return j},get params(){return k},createOrUpdate:(W={},X)=>
4209{X&&X!==H&&(k=B(I,X),H=X,j||(j=t.ParamDefinition.getDefaultValues(k)));const Y=(0,y.getQualityProps)(Object.assign({},j,W),H);Object.assign(j,W,Y);const{visuals:K}=j;return i.Task.create(`Creating or updating '${E}' representation`,async Q=>{for(let J=0,ae=z.length;J<ae;++J)(!K||K.includes(G[J]))&&await z[J].createOrUpdate(j,H).runInContext(Q),U.add(J,z[J].geometryVersion);U.snapshot(),L.next(F++)})},get state(){return q},get theme(){return N},getLoci:W=>{const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)if(!X||X.includes(G[Y])){const Q=z[Y].getLoci(W);if(!(0,o.isEmptyLoci)(Q))return Q}return o.EmptyLoci},getAllLoci:()=>{const W=[],{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&W.push(...z[Y].getAllLoci());return W},eachLocation:W=>{const{visuals:X}=j;for(let Y=0,K=z.length;Y<K;++Y)(!X||X.includes(G[Y]))&&z[Y].eachLocation(W)},mark:(W,X)=>{let Y=!1;for(let K=0,Q=z.length;K<Q;++K)Y=z[K].mark(W,X)||Y;return Y},setState:W=>{w.update(q,W);for(let X=0,Y=z.length;X<Y;++X)z[X].setState(W)},setTheme:W=>{N=W;for(let X=0,Y=z.length;X<Y;++X)z[X].setTheme(W)},destroy(){for(let W=0,X=z.length;W<X;++W)z[W].destroy()}}}T.createMulti=V;function R(E,I){let B=0;const w=new n.Subject,O=new D,F=T.createState(),L=r.Theme.createEmpty(),U=t.ParamDefinition.clone(_.BaseGeometry.Params),q=t.ParamDefinition.getDefaultValues(_.BaseGeometry.Params);return{label:E,updated:w,get groupCount(){return I.values.uGroupCount.ref.value},get renderObjects(){return[I]},get geometryVersion(){return O.version},get props(){return q},get params(){return U},createOrUpdate:(N={})=>{const k=(0,y.getQualityProps)(Object.assign({},q,N));return Object.assign(q,N,k),i.Task.create(`Updating '${E}' representation`,async j=>{O.add(0,I.id),O.snapshot(),w.next(B++)})},get state(){return F},get theme(){return L},getLoci:()=>o.EmptyLoci,getAllLoci:()=>[],eachLocation:()=>{},mark:(N,k)=>!1,setState:N=>{N.visible!==void 0&&g.Visual.setVisibility(I,N.visible),N.alphaFactor!==void 0&&g.Visual.setAlphaFactor(I,N.alphaFactor),N.pickable!==void 0&&g.Visual.setPickable(I,N.pickable),N.colorOnly!==void 0&&g.Visual.setColorOnly(I,N.colorOnly),N.overpaint,N.transparency,N.emissive,N.substance,N.wiggle,N.clipping,N.themeStrength!==void 0&&g.Visual.setThemeStrength(I,N.themeStrength),N.transform!==void 0&&g.Visual.setTransform(I,N.transform),T.updateState(F,N)},setTheme:()=>{},destroy(){}}}T.fromRenderObject=R})(l||(e.Representation=l={}));let S;Object.defineProperty(l,"Empty",{get:()=>S??(S=l.createEmpty())})})(Wx)),Wx}var Ev={},Bv={},N6;function goe(){if(N6)return Bv;N6=1,Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.Object3D=void 0;const e=Xr(),t=wt();var r;return(function(n){function i(){return{view:e.Mat4.identity(),position:t.Vec3.create(0,0,0),direction:t.Vec3.create(0,0,-1),up:t.Vec3.create(0,1,0)}}n.create=i})(r||(Bv.Object3D=r={})),Bv}var Rv={},q6;function yoe(){if(q6)return Rv;q6=1,Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.CommitQueue=void 0;const e=zD();class t{constructor(){this.removeList=(0,e.LinkedList)(),this.removeMap=new Map,this.addList=(0,e.LinkedList)(),this.addMap=new Map}get isEmpty(){return this.removeList.count===0&&this.addList.count===0}get size(){return this.removeMap.size+this.addMap.size}add(n){if(this.removeMap.has(n)){const c=this.removeMap.get(n);this.removeMap.delete(n),this.removeList.remove(c)}if(this.addMap.has(n))return;const i=this.addList.addLast(n);this.addMap.set(n,i)}remove(n){if(this.addMap.has(n)){const c=this.addMap.get(n);this.addMap.delete(n),this.addList.remove(c)}if(this.removeMap.has(n))return;const i=this.removeList.addLast(n);this.removeMap.set(n,i)}tryGetRemove(){const n=this.removeList.removeFirst();return n&&this.removeMap.delete(n),n}tryGetAdd(){const n=this.addList.removeFirst();return n&&this.addMap.delete(n),n}}return Rv.CommitQueue=t,Rv}var U6;function f2(){if(U6)return Ev;U6=1,Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.Scene=void 0;const e=ds(),t=goe(),r=ja(),n=yoe(),i=ci(),c=Vt(),o=Ki(),s=_t(),h=ir(),f=Kr(),y=new o.BoundaryHelper("98");function _(d,p,u){y.reset();for(let m=0,v=d.length;m<v;++m){if(u&&!d[m].state.visible||!d[m].values.drawCount.ref.value)continue;const b=d[m].values.boundingSphere.ref.value;
4209b.radius&&y.includeSphere(b)}y.finishedIncludeStep();for(let m=0,v=d.length;m<v;++m){if(u&&!d[m].state.visible||!d[m].values.drawCount.ref.value)continue;const b=d[m].values.boundingSphere.ref.value;b.radius&&y.radiusSphere(b)}return y.getSphere(p)}function g(d,p){const u=d.getProgram("color").id,m=p.getProgram("color").id,v=d.materialId,b=p.materialId;return u!==m?u-m:v!==b?v-b:d.id-p.id}var a;return(function(d){function p(u,m="blended",v={dColorMarker:!0,dLightCount:1}){const b=new Map,P=[],C=(0,r.Sphere3D)(),l=(0,r.Sphere3D)(),S=[],T=[];let A=!0,x=!0,M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,w=0,O=0,F=0,L=0,U=0,q=!1,N=!1;const k=t.Object3D.create(),{view:j,position:H,direction:G,up:z}=k;function W(ue){if(b.has(ue))console.warn(`RenderObject with id '${ue.id}' already present`);else{const pe=(0,e.createRenderable)(u,ue,m,v);P.push(pe),ue.type==="direct-volume"?T.push(pe):S.push(pe),b.set(ue,pe),A=!0,x=!0}}function X(ue){const pe=b.get(ue);pe&&(pe.dispose(),(0,c.arraySetRemove)(P,pe),(0,c.arraySetRemove)(S,pe),(0,c.arraySetRemove)(T,pe),b.delete(ue),A=!0,x=!0)}const Y=100;function K(ue){const pe=(0,i.now)();let he=0;for(;;){const fe=Q.tryGetRemove();if(!fe)break;if(X(fe),++he%Y===0&&(0,i.now)()-pe>ue)return!1}for(;;){const fe=Q.tryGetAdd();if(!fe)break;if(W(fe),++he%Y===0&&(0,i.now)()-pe>ue)return!1}return P.sort(g),M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,!0}const Q=new n.CommitQueue;let J=-1;function ae(){let ue=23;for(let pe=0,he=P.length;pe<he;++pe)P[pe].state.visible&&(ue=31*ue+P[pe].id|0);return ue=(0,s.hash1)(ue),ue===-1&&(ue=0),ue}function te(){const ue=ae();return ue!==J?(x=!0,M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0,J=ue,!0):!1}function ne(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.markerAverage.ref.value,ue+=1);return ue>0?pe/ue:0}function $(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.emissiveAverage.ref.value+S[he].values.uEmissive.ref.value,ue+=1);return ue>0?pe/ue:0}function ie(){if(S.length===0)return 0;let ue=0,pe=0;for(let he=0,fe=S.length;he<fe;++he)S[he].state.visible&&(pe+=S[he].values.wiggleAverage.ref.value,ue+=1);return ue>0?pe/ue:0}function Z(){var ue,pe,he;if(S.length===0)return 0;let fe=0,de=0;for(let ge=0,Ce=S.length;ge<Ce;++ge){const ve=S[ge];if(!ve.state.visible)continue;const le=(0,h.clamp)(ve.values.alpha.ref.value*ve.state.alphaFactor,0,1),me=((ue=ve.values.dXrayShaded)===null||ue===void 0?void 0:ue.ref.value)==="on"||((pe=ve.values.dXrayShaded)===null||pe===void 0?void 0:pe.ref.value)==="inverted"?.5:1,ee=((he=ve.values.dPointStyle)===null||he===void 0?void 0:he.ref.value)==="fuzzy"?.5:1,se=ve.values.dGeometryType.ref.value==="text"?.5:1,ye=ve.values.dGeometryType.ref.value==="image"?.5:1;de+=(1-ve.values.transparencyAverage.ref.value)*le*me*ee*se*ye,fe+=1}return fe>0?de/fe:0}function re(){var ue,pe,he;if(S.length===0)return 1;let fe=1;const de=[];for(let ge=0,Ce=S.length;ge<Ce;++ge){const ve=S[ge];if(!ve.state.visible)continue;de.length=0;const le=(0,h.clamp)(ve.values.alpha.ref.value*ve.state.alphaFactor,0,1);le<1&&de.push(1-le),(((ue=ve.values.dXrayShaded)===null||ue===void 0?void 0:ue.ref.value)==="on"||((pe=ve.values.dXrayShaded)===null||pe===void 0?void 0:pe.ref.value)==="inverted"||((he=ve.values.dPointStyle)===null||he===void 0?void 0:he.ref.value)==="fuzzy"||ve.values.dGeometryType.ref.value==="text"||ve.values.dGeometryType.ref.value==="image")&&de.push(.5),ve.values.transparencyMin.ref.value>0&&de.push(ve.values.transparencyMin.ref.value),fe=Math.min(fe,...de)}return fe}function oe(){var ue;if(S.length===0)return!1;for(let pe=0,he=S.length;pe<he;++pe){const fe=S[pe];if(fe.state.visible&&(fe.state.opaque||fe.state.alphaFactor===1&&fe.values.alpha.ref.value===1&&fe.values.transparencyAverage.ref.value!==1||((ue=fe.values.dTransparentBackfaces)===null||ue===void 0?void 0:ue.ref.value)==="opaque"))return!0}return!1}function ce(){var ue,pe,he,fe,de,ge;for(let Ce=0,ve=S.length;Ce<ve;++Ce){const le=S[Ce];if(le.state.visible&&((((ue=le.values.uWiggleAmplitude)===null||ue===void 0?void 0:ue.ref.value)>0||le.values.wiggleAverage.ref.value>
42090)&&((pe=le.values.uWiggleSpeed)===null||pe===void 0?void 0:pe.ref.value)>0&&((he=le.values.uWiggleFrequency)===null||he===void 0?void 0:he.ref.value)>0||((fe=le.values.uTumbleAmplitude)===null||fe===void 0?void 0:fe.ref.value)>0&&((de=le.values.uTumbleSpeed)===null||de===void 0?void 0:de.ref.value)>0&&((ge=le.values.uTumbleFrequency)===null||ge===void 0?void 0:ge.ref.value)>0))return!0}return!1}return{view:j,position:H,direction:G,up:z,renderables:P,primitives:{view:j,position:H,direction:G,up:z,renderables:S},volumes:{view:j,position:H,direction:G,up:z,renderables:T},syncVisibility:te,setTransparency:ue=>{m=ue;for(let pe=0,he=P.length;pe<he;++pe)P[pe].setTransparency(ue)},setGlobals:ue=>{v=ue;for(const pe of P)f.ValueCell.updateIfChanged(pe.values.dColorMarker,ue.dColorMarker),f.ValueCell.updateIfChanged(pe.values.dLightCount,ue.dLightCount),pe.update()},update(ue,pe){var he;if(ue)for(let fe=0,de=ue.length;fe<de;++fe)(he=b.get(ue[fe]))===null||he===void 0||he.update();else for(let fe=0,de=P.length;fe<de;++fe)P[fe].update();pe?te():(A=!0,x=!0),M=!0,D=!0,V=!0,R=!0,E=!0,I=!0,B=!0},add:ue=>Q.add(ue),remove:ue=>Q.remove(ue),commit:(ue=Number.MAX_VALUE)=>K(ue),get commitQueueSize(){return Q.size},get needsCommit(){return!Q.isEmpty},has:ue=>b.has(ue),clear:()=>{for(let ue=0,pe=P.length;ue<pe;++ue)P[ue].dispose();P.length=0,S.length=0,T.length=0,b.clear(),A=!0,x=!0},forEach:ue=>{b.forEach(ue)},get count(){return P.length},get boundingSphere(){return A&&(_(P,C,!1),A=!1),C},get boundingSphereVisible(){return x&&(_(P,l,!0),x=!1),l},get transparency(){return m},get markerAverage(){return M&&(w=ne(),M=!1),w},get emissiveAverage(){return D&&(O=$(),D=!1),O},get wiggleAverage(){return V&&(F=ie(),V=!1),F},get opacityAverage(){return R&&(L=Z(),R=!1),L},get transparencyMin(){return E&&(U=re(),E=!1),U},get hasOpaque(){return I&&(q=oe(),I=!1),q},get hasAnimation(){return B&&(N=ce(),B=!1),N}}}d.create=p})(a||(Ev.Scene=a={})),Ev}var Kd={},Yd={},_A={},j6;function voe(){return j6||(j6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EasingFunctions=void 0,e.bounceIn=_,e.bounceOut=g,e.bounceInOut=a,e.circleIn=d,e.circleOut=p,e.circleInOut=u,e.cubicIn=m,e.cubicOut=v,e.cubicInOut=b,e.expIn=P,e.expOut=C,e.expInOut=l,e.quadIn=S,e.quadOut=T,e.quadInOut=A,e.sinIn=D,e.sinOut=V,e.sinInOut=R,e.getEasingFn=E;const t=4/11,r=6/11,n=8/11,i=3/4,c=9/11,o=10/11,s=15/16,h=21/22,f=63/64,y=1/t/t;function _(I){return 1-g(1-I)}function g(I){return(I=+I)<t?y*I*I:I<n?y*(I-=r)*I+i:I<o?y*(I-=c)*I+s:y*(I-=h)*I+f}function a(I){return((I*=2)<=1?1-g(1-I):g(I-1)+1)/2}function d(I){return 1-Math.sqrt(1-I*I)}function p(I){return Math.sqrt(1- --I*I)}function u(I){return((I*=2)<=1?1-Math.sqrt(1-I*I):Math.sqrt(1-(I-=2)*I)+1)/2}function m(I){return I*I*I}function v(I){return--I*I*I+1}function b(I){return((I*=2)<=1?I*I*I:(I-=2)*I*I+2)/2}function P(I){return Math.pow(2,10*I-10)}function C(I){return 1-Math.pow(2,-10*I)}function l(I){return((I*=2)<=1?Math.pow(2,10*I-10):2-Math.pow(2,10-10*I))/2}function S(I){return I*I}function T(I){return I*(2-I)}function A(I){return((I*=2)<=1?I*I:--I*(2-I)+1)/2}const x=Math.PI,M=x/2;function D(I){return 1-Math.cos(I*M)}function V(I){return Math.sin(I*M)}function R(I){return(1-Math.cos(x*I))/2}e.EasingFunctions={linear:I=>I,"bounce-in":_,"bounce-out":g,"bounce-in-out":a,"circle-in":d,"circle-out":p,"circle-in-out":u,"cubic-in":m,"cubic-out":v,"cubic-in-out":b,"exp-in":P,"exp-out":C,"exp-in-out":l,"quad-in":S,"quad-out":T,"quad-in-out":A,"sin-in":D,"sin-out":V,"sin-in-out":R};function E(I){var B;return I?typeof I=="function"?I:(B=e.EasingFunctions[I])!==null&&B!==void 0?B:e.EasingFunctions.linear:e.EasingFunctions.linear}})(_A)),_A}var G6;function boe(){if(G6)return Yd;G6=1,Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.CameraTransitionManager=void 0;const e=ta(),t=ir(),r=rs(),n=wt(),i=voe();class c{get source(){return this._source}get target(){return this._target}apply(s,h=0,f,y){if((!this.inTransition||h>0)&&e.Camera.copySnapshot(this._source,this.camera.state),this.inTransition||e.Camera.copySnapshot(this._target,this.camera.state),e.Camera.copySnapshot(this._target,s),this._target.radiu
4209s>this._target.radiusMax&&(this._target.radius=this._target.radiusMax),this._target.radius<.01&&(this._target.radius=.01),this._target.radiusMax<.01&&(this._target.radiusMax=.01),!this.inTransition&&h<=0||typeof s.mode<"u"&&s.mode!==this.camera.state.mode){this.finish(this._target);return}this.inTransition=!0,this.func=f||c.defaultTransition,this._options=y,(!this.inTransition||h>0)&&(this.start=this.t,this.durationMs=h)}tick(s){this.t=s,this.update()}finish(s){e.Camera.copySnapshot(this.camera.state,s),this.inTransition=!1}update(){if(!this.inTransition)return;const s=Math.min((this.t-this.start)/this.durationMs,1);if(s===1){this.finish(this._target);return}this.func(this._current,s,this._source,this._target,this._options),e.Camera.copySnapshot(this.camera.state,this._current)}constructor(s){this.camera=s,this.t=0,this.func=c.defaultTransition,this.start=0,this.inTransition=!1,this.durationMs=0,this._source=e.Camera.createDefaultSnapshot(),this._target=e.Camera.createDefaultSnapshot(),this._options=void 0,this._current=e.Camera.createDefaultSnapshot()}}return Yd.CameraTransitionManager=c,(function(o){const s=r.Quat.identity(),h=r.Quat.identity(),f=(0,n.Vec3)(),y=(0,n.Vec3)();let _,g;function a(d,p,u,m,v){var b;let P=u,C=m,l=0,S=1,T=v?.easing;const A=v?.keyframes;if(A&&A.length>0){for(let B=0;B<A.length;B++){const w=A[B];if(p>=w.t){P=w.snapshot,l=w.t;break}}for(let B=0;B<A.length;B++){const w=A[B];if(w.t>=p){C=w.snapshot,S=w.t,T=(b=w.easing)!==null&&b!==void 0?b:T;break}}}const M=(0,i.getEasingFn)(T)((p-l)/(S-l));_||(_=e.Camera.createDefaultSnapshot()),g||(g=e.Camera.createDefaultSnapshot()),e.Camera.copySnapshot(_,u),e.Camera.copySnapshot(_,P),e.Camera.copySnapshot(g,m),e.Camera.copySnapshot(g,C);const D=_,V=g;e.Camera.copySnapshot(d,V),r.Quat.slerp(s,r.Quat.Identity,r.Quat.rotationTo(s,D.up,V.up),M),n.Vec3.transformQuat(d.up,D.up,s),n.Vec3.lerp(d.target,D.target,V.target,M);const R=n.Vec3.distance(D.target,D.position),E=n.Vec3.distance(V.target,V.position),I=(0,t.lerp)(R,E,M);n.Vec3.sub(f,D.position,D.target),n.Vec3.normalize(f,f),n.Vec3.sub(y,V.position,V.target),n.Vec3.normalize(y,y),r.Quat.rotationTo(h,f,y),r.Quat.slerp(h,r.Quat.Identity,h,M),n.Vec3.transformQuat(f,f,h),n.Vec3.scale(f,f,I),n.Vec3.add(d.position,d.target,f),d.radius=(0,t.lerp)(D.radius,V.radius,M),d.radiusMax=(0,t.lerp)(D.radiusMax,V.radiusMax,M),d.fov=(0,t.lerp)(D.fov,V.fov,M),d.fog=(0,t.lerp)(D.fog,V.fog,M)}o.defaultTransition=a})(c||(Yd.CameraTransitionManager=c={})),Yd}var Ov={},z6;function zQ(){if(z6)return Ov;z6=1,Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.Euler=n;const e=Xr(),t=Gt(),r=ir();function n(){return n.zero()}return(function(i){function c(){const v=[.1,0,0];return v[0]=0,v}i.zero=c;function o(v,b,P){const C=c();return C[0]=v,C[1]=b,C[2]=P,C}i.create=o;function s(v,b,P,C){return v[0]=b,v[0]=P,v[0]=C,v}i.set=s;function h(v){const b=c();return b[0]=v[0],b[1]=v[1],b[2]=v[2],b}i.clone=h;function f(v,b){return v[0]=b[0],v[1]=b[1],v[2]=b[2],v}i.copy=f;function y(v){return Array.isArray(v)&&v.length===3}i.is=y;function _(v,b,P){const C=b[0],l=b[4],S=b[8],T=b[1],A=b[5],x=b[9],M=b[2],D=b[6],V=b[10];switch(P){case"XYZ":v[1]=Math.asin((0,r.clamp)(S,-1,1)),Math.abs(S)<.9999999?(v[0]=Math.atan2(-x,V),v[2]=Math.atan2(-l,C)):(v[0]=Math.atan2(D,A),v[2]=0);break;case"YXZ":v[0]=Math.asin(-(0,r.clamp)(x,-1,1)),Math.abs(x)<.9999999?(v[1]=Math.atan2(S,V),v[2]=Math.atan2(T,A)):(v[1]=Math.atan2(-M,C),v[2]=0);break;case"ZXY":v[0]=Math.asin((0,r.clamp)(D,-1,1)),Math.abs(D)<.9999999?(v[1]=Math.atan2(-M,V),v[2]=Math.atan2(-l,A)):(v[1]=0,v[2]=Math.atan2(T,C));break;case"ZYX":v[1]=Math.asin(-(0,r.clamp)(M,-1,1)),Math.abs(M)<.9999999?(v[0]=Math.atan2(D,V),v[2]=Math.atan2(T,C)):(v[0]=0,v[2]=Math.atan2(-l,A));break;case"YZX":v[2]=Math.asin((0,r.clamp)(T,-1,1)),Math.abs(T)<.9999999?(v[0]=Math.atan2(-x,A),v[1]=Math.atan2(-M,C)):(v[0]=0,v[1]=Math.atan2(S,V));break;case"XZY":v[2]=Math.asin(-(0,r.clamp)(l,-1,1)),Math.abs(l)<.9999999?(v[0]=Math.atan2(D,A),v[1]=Math.atan2(S,C)):(v[0]=Math.atan2(-x,V),v[1]=0);break;default:(0,t.assertUnreachable)(P)}return v}i.fromMat4=_;const g=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function a(v,b,P){return e.Mat4.fromQuat(g,b),_(v,g,P)}i.fromQuat=a;function d(v,b){return s(v,b[0],b[1],b[2])}i.fromVec3=d;function p(v,b){return v[0]===b[0]&&v[1]===b[1]&&v[2]===b[2]}i.exactEquals=p;function u(v,b,P){return v[0]=b[P+0],v[1]=b[P+1],v[2]=b[P+2],v}i.fromArray=u;function m(v,b,P){return b[P+0]=v[0],b[P+1]=v[1],b[P+2]=v[2],b}i.toArray=m})(n||(Ov.Euler=n={})),Ov}var H6;function ta(){if(H6)return Kd;H6=1,Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.Camera=void 0;const e=Kn(),t=boe(),r=Rn(),n=Gt(),i=Xr(),c=Fa(),o=wt(),s=rn(),h=zQ(),f=(0,c.Vec4)(),y=(0,o.Vec3)(),_=(0,o.Vec3)(),g=(0,o.Vec3)(),a=(0,o.
4209Vec3)(),d=(0,o.Vec3)(),p=i.Mat4.identity();class u{get position(){return this.state.position}set position(T){o.Vec3.copy(this.state.position,T)}get up(){return this.state.up}set up(T){o.Vec3.copy(this.state.up,T)}get target(){return this.state.target}set target(T){o.Vec3.copy(this.state.target,T)}update(){const T=this.state;if(T.radiusMax===0)return!1;const A=o.Vec3.distance(T.position,T.target),x=this.minTargetDistance/this.scale;A<x&&(o.Vec3.sub(this.deltaDirection,T.target,T.position),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,x),o.Vec3.sub(T.position,T.target,this.deltaDirection));const M=2*Math.tan(T.fov/2)*o.Vec3.distance(T.position,T.target)*this.scale;switch(this.zoom=this.viewport.height/M,l(this),this.state.mode){case"orthographic":P(this);break;case"perspective":C(this);break;default:(0,n.assertUnreachable)(this.state.mode)}const D=!i.Mat4.areEqual(this.projection,this.prevProjection,s.EPSILON)||!i.Mat4.areEqual(this.view,this.prevView,s.EPSILON);if(D){if(i.Mat4.mul(this.projectionView,this.projection,this.view),!i.Mat4.tryInvert(this.inverseProjectionView,this.projectionView))return i.Mat4.copy(this.view,this.prevView),i.Mat4.copy(this.projection,this.prevProjection),i.Mat4.mul(this.projectionView,this.projection,this.view),!1;i.Mat4.copy(this.prevView,this.view),i.Mat4.copy(this.prevProjection,this.projection),this.changed.next()}return D}setState(T,A,x){this.transition.apply(T,A,void 0,x),this.stateChanged.next(T)}getSnapshot(){return u.copySnapshot(u.createDefaultSnapshot(),this.state)}getTargetDistance(T){return Math.max(this.minTargetDistance/this.scale,u.targetDistance(T,this.state.mode,this.state.fov,this.viewport.width,this.viewport.height))}getFocus(T,A,x,M,D){var V,R;const E=Math.max(A,.01),I=this.getTargetDistance(E);o.Vec3.sub(this.deltaDirection,(V=D?.target)!==null&&V!==void 0?V:this.target,(R=D?.position)!==null&&R!==void 0?R:this.position),M&&o.Vec3.matchDirection(this.deltaDirection,M,this.deltaDirection),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,I),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const B=u.copySnapshot(u.createDefaultSnapshot(),this.state);return B.target=o.Vec3.clone(T),B.radius=E,B.position=o.Vec3.clone(this.newPosition),x&&o.Vec3.matchDirection(B.up,x,B.up),B}getCenter(T,A){o.Vec3.sub(this.deltaDirection,this.target,this.position),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const x=u.copySnapshot(u.createDefaultSnapshot(),this.state);return x.target=o.Vec3.clone(T),x.position=o.Vec3.clone(this.newPosition),A&&(x.radius=Math.max(A,.01)),x}getInvariantFocus(T,A,x,M){const D=Math.max(A,.01),V=this.getTargetDistance(D);o.Vec3.copy(this.deltaDirection,M),o.Vec3.setMagnitude(this.deltaDirection,this.deltaDirection,V),o.Vec3.sub(this.newPosition,T,this.deltaDirection);const R=u.copySnapshot(u.createDefaultSnapshot(),this.state);return R.target=o.Vec3.clone(T),R.radius=D,R.position=o.Vec3.clone(this.newPosition),o.Vec3.copy(R.up,x),R}focus(T,A,x,M,D){A>0&&this.setState(this.getFocus(T,A,M,D),x)}center(T,A){this.setState(this.getCenter(T),A)}project(T,A){return(0,e.cameraProject)(T,A,this.viewport,this.projectionView)}unproject(T,A){return(0,e.cameraUnproject)(T,A,this.viewport,this.inverseProjectionView)}getPixelSize(T){this.project(f,T);const A=f[3],x=this.viewport.width,M=this.projection[0];return 2/A/(x*Math.abs(M))}getRay(T,A,x){return this.state.mode==="orthographic"?(o.Vec3.set(T.origin,A,x,0),this.unproject(T.origin,T.origin),o.Vec3.normalize(T.direction,o.Vec3.sub(T.direction,this.target,this.position)),o.Vec3.scaleAndAdd(T.origin,T.origin,T.direction,-this.near)):(o.Vec3.copy(T.origin,this.state.position),o.Vec3.scale(T.origin,T.origin,this.scale),o.Vec3.set(T.direction,A,x,.5),this.unproject(T.direction,T.direction),o.Vec3.normalize(T.direction,o.Vec3.sub(T.direction,T.direction,T.origin))),T}getRotation(T){const{position:A,target:x,up:M}=this.state;return o.Vec3.normalize(y,o.Vec3.sub(y,x,A)),o.Vec3.normalize(_,o.Vec3.cross(_,y,M)),o.Vec3.cross(g,_,y),i.Mat4.setIdentity(p),p[0]=_[0],p[1]=_[1],p[2]=_[2],p[4]=g[0],p[5]=g[1],p[6]=g[2],p[8]=-y[0],p[9]=-y[1],p[10]=-y[2],h.Euler.fromMat4(T,p,"ZYX")}setRotation(T,A){const x=this.state,M=o.Vec3.distance(x.position,x.target);i.Mat4.fromEuler(p,T,"ZYX"),o.Vec3.set(a,p[8],p[9],p[10]),o.Vec3.set(g,p[4],p[5],p[6]);const D=u.copySnapshot(u.createDefaultSnapshot(),x);o.Vec3.scaleAndAdd(D.position,x.target,a,M),o.Vec3.copy(D.up,g),this.setState(D,A)}getTranslation(T){return o.Vec3.copy(T,this.state.target)}setTranslation(T,A){const x=this.state;o.Vec3.sub(d,T,x.target);const M=u.copySnapshot(u.createDefaultSnapshot(),x);o.Vec3.add(M.position,x.position,d),o.Vec3.copy(M.target,T),this.setState(M,A)}constructor(T,A=e.Viewport.create(0,0,128,128)){this.view=i.Mat4.identity(),this.projection=i.Mat4.identity(),this.projectionView=i.Mat4.identity(),this.inverseProjectionView=i.Mat4.identity(),this.headRotation=i.Mat4.zero(),this.viewEye=i.Mat4.zero(),this.isAsymmetricProjection=!1,this.state=u.createDefaultSnapshot(),this.viewOffset=u.ViewOffset(),this.disabled=!1,this.near=1,this.far=1e4,this.fogNear=5e3,this.fogFar=1e4,this.zoom=1,this.forceFull=!1,this.scale=1,this.minTargetDistance=0,this.transition=new t.CameraTransitionManager(this),this.stateChanged=new r.BehaviorSubject(this.state),this.changed=new r.Subject,this.prevProjection=i.Mat4.identity(),this.prevView=i.Mat4.identity(),this.deltaDirection=(0,o.
4209Vec3)(),this.newPosition=(0,o.Vec3)(),this.viewport=A,u.copySnapshot(this.state,T)}}Kd.Camera=u,(function(S){function T(){return{enabled:!1,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}S.ViewOffset=T;function A(E,I,B,w,O,F,L){E.fullWidth=I,E.fullHeight=B,E.offsetX=w,E.offsetY=O,E.width=F,E.height=L}S.setViewOffset=A;function x(E,I){E.enabled=I.enabled,E.fullWidth=I.fullWidth,E.fullHeight=I.fullHeight,E.offsetX=I.offsetX,E.offsetY=I.offsetY,E.width=I.width,E.height=I.height}S.copyViewOffset=x;function M(E,I,B,w,O){const F=Math.max(E,.01),L=w/O,U=O<w?1:L;return Math.abs(I==="orthographic"?F/U/Math.tan(B/2):F/U/Math.sin(B/2))}S.targetDistance=M;function D(){return{mode:"perspective",fov:Math.PI/4,position:o.Vec3.create(0,0,100),up:o.Vec3.create(0,1,0),target:o.Vec3.create(0,0,0),radius:0,radiusMax:10,fog:50,clipFar:!0,minNear:5,minFar:0}}S.createDefaultSnapshot=D;function V(E,I){return I&&(typeof I.mode<"u"&&(E.mode=I.mode),typeof I.fov<"u"&&(E.fov=I.fov),typeof I.position<"u"&&o.Vec3.copy(E.position,I.position),typeof I.up<"u"&&o.Vec3.copy(E.up,I.up),typeof I.target<"u"&&o.Vec3.copy(E.target,I.target),typeof I.radius<"u"&&(E.radius=I.radius),typeof I.radiusMax<"u"&&(E.radiusMax=I.radiusMax),typeof I.fog<"u"&&(E.fog=I.fog),typeof I.clipFar<"u"&&(E.clipFar=I.clipFar),typeof I.minNear<"u"&&(E.minNear=I.minNear),typeof I.minFar<"u"&&(E.minFar=I.minFar)),E}S.copySnapshot=V;function R(E,I){return E.mode===I.mode&&E.fov===I.fov&&E.radius===I.radius&&E.radiusMax===I.radiusMax&&E.fog===I.fog&&E.clipFar===I.clipFar&&E.minNear===I.minNear&&E.minFar===I.minFar&&o.Vec3.exactEquals(E.position,I.position)&&o.Vec3.exactEquals(E.up,I.up)&&o.Vec3.exactEquals(E.target,I.target)}S.areSnapshotsEqual=R})(u||(Kd.Camera=u={}));const m=(0,o.Vec3)(),v=(0,o.Vec3)();function b(S){S.scale===1?i.Mat4.lookAt(S.view,S.state.position,S.state.target,S.state.up):(o.Vec3.scale(m,S.state.position,S.scale),o.Vec3.scale(v,S.state.target,S.scale),i.Mat4.lookAt(S.view,m,v,S.state.up))}function P(S){const{viewport:T,zoom:A,near:x,far:M,viewOffset:D}=S,V=-T.width/2,R=T.width/2,E=T.height/2,I=-T.height/2,B=(R-V)/(2*A),w=(E-I)/(2*A),O=(R+V)/2,F=(E+I)/2;let L=O-B,U=O+B,q=F+w,N=F-w;if(D.enabled){const k=A/(D.width/D.fullWidth),j=A/(D.height/D.fullHeight),H=(R-V)/D.width,G=(E-I)/D.height;L+=H*(D.offsetX/k),U=L+H*(D.width/k),q-=G*(D.offsetY/j),N=q-G*(D.height/j)}i.Mat4.ortho(S.projection,L,U,q,N,x,M),b(S)}function C(S){const T=S.viewport.width/S.viewport.height,{near:A,far:x,viewOffset:M}=S;let D=A*Math.tan(.5*S.state.fov),V=2*D,R=T*V,E=-.5*R;M.enabled&&(E+=M.offsetX*R/M.fullWidth,D-=M.offsetY*V/M.fullHeight,R*=M.width/M.fullWidth,V*=M.height/M.fullHeight),i.Mat4.perspective(S.projection,E,E+R,D,D-V,A,x),b(S)}function l(S){const{forceFull:T,scale:A}=S;let{radius:x,radiusMax:M,mode:D,fog:V,clipFar:R,minNear:E,minFar:I}=S.state;M*=A,I*=A,E*=A,x*=A,T&&(x=M);const B=.01*A;x<B&&(x=B);const w=Math.max(R?x:M,I);o.Vec3.scale(v,S.state.target,A),o.Vec3.scale(m,S.state.position,A);const O=o.Vec3.distance(m,v);let F=T?.01:O-x,L=O+w;T&&(E=F),F=Math.max(Math.min(M,E),F),L=Math.max(E,L),F===L&&(L=F+.01*A);const U=-(50-V)/50,q=O-w*U,N=L;S.near=F,S.far=L,S.fogNear=q,S.fogFar=N}return Kd}var SA={},W6;function _oe(){return W6||(W6=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Canvas3dInteractionHelper=e.Canvas3dInteractionHelperParams=void 0;const t=Lt(),r=cs(),n=Nl(),i=Ge(),c=Ne(),o=Ke(),s=CT(),h=(0,i.Vec3)(),f=(0,i.Vec3)(),y=(0,i.Vec3)();e.Canvas3dInteractionHelperParams={maxFps:c.ParamDefinition.Numeric(30,{min:10,max:60,step:10}),preferAtomPixelPadding:c.ParamDefinition.Numeric(3,{min:0,max:20,step:1},{description:"Number of extra pixels at which to prefer atoms over bonds."}),convertCoordsToRay:c.ParamDefinition.Boolean(!1,{description:"Convert screen coordinates to ray for picking."})};class _{setProps(a){Object.assign(this.props,a)}getTarget(){return this.ray?this.ray:this.props.convertCoordsToRay?this.camera.getRay((0,s.Ray3D)(),this.endX,this.input.height-this.endY):i.Vec2.create(this.endX,this.endY)}handleMove(){(this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving)&&(this.pickData=this.canvasAsyncIdentify(this.getTarget()),this.startX=this.endX,this.startY=this.endY)}handleClick(){const a=this.canvasIdentify(this.getTarget()),d=this.getLoci(a?.id,a?.position);this.events.click.next({current:d,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:a?.position}),this.prevLoci=d}handleDrag(){(this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving)&&!this.outsideViewport(this.startX,this.startY,this.ray)&&(this.events.drag.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,pageStart:i.Vec2.create(this.startX,this.startY),pageEnd:i.Vec2.create(this.endX,this.endY)}),this.startX=this.endX,this.startY=this.endY)}
4209tick(a){if(this.inside){if(this.pickData){const d=this.pickData.tryGet();if(d!=="pending"){if(this.position=d?.position,this.inside){const p=this.getLoci(d?.id,d?.position);this.events.hover.next({current:p,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:d?.position}),this.prevLoci=p}this.pickData=void 0}}a-this.prevT>1e3/this.props.maxFps&&(this.prevT=a,this.isInteracting?this.handleDrag():this.handleMove())}}leave(){this.inside=!1,t.Representation.Loci.isEmpty(this.prevLoci)||(this.prevLoci=t.Representation.Loci.Empty,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers}))}move(a,d,p,u,m,v){this.inside=!0,this.buttons=p,this.button=u,this.modifiers=m,this.ray=v,this.endX=a,this.endY=d}click(a,d,p,u,m,v){this.endX=a,this.endY=d,this.buttons=p,this.button=u,this.modifiers=m,this.ray=v,this.handleClick()}drag(a,d,p,u,m){this.endX=a,this.endY=d,this.buttons=p,this.button=u,this.modifiers=m,this.handleDrag()}modify(a){r.ModifiersKeys.areEqual(a,this.modifiers)||(this.modifiers=a,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:i.Vec2.create(this.endX,this.endY),position:this.position}))}outsideViewport(a,d,p){if(p)return!1;const{input:u,camera:{viewport:m}}=this;return a*=u.pixelRatio,d*=u.pixelRatio,a>m.x+m.width||u.height-d>m.y+m.height||a<m.x||u.height-d<m.y}getLoci(a,d){var p;const{repr:u,loci:m}=this.lociGetter(a);if(d&&u&&o.Bond.isLoci(m)&&m.bonds.length===2){const{aUnit:v,aIndex:b}=m.bonds[0];v.conformation.position(v.elements[b],h),i.Vec3.sub(y,this.camera.state.position,this.camera.state.target),i.Vec3.projectPointOnPlane(f,d,y,h);const P=this.camera.getPixelSize(f);let C=u.theme.size.size(m.bonds[0])*((p=u.props.sizeFactor)!==null&&p!==void 0?p:1);if(u.props.lineSizeAttenuation===!1&&(C*=P/2),C+=this.props.preferAtomPixelPadding*P,i.Vec3.distance(f,h)<C)return{repr:u,loci:o.Bond.toFirstStructureElementLoci(m)}}return{repr:u,loci:m}}dispose(){this.ev.dispose()}constructor(a,d,p,u,m,v,b={}){this.canvasIdentify=a,this.canvasAsyncIdentify=d,this.lociGetter=p,this.input=u,this.camera=m,this.controls=v,this.ev=n.RxEventHelper.create(),this.events={hover:this.ev(),drag:this.ev(),click:this.ev()},this.startX=-1,this.startY=-1,this.endX=-1,this.endY=-1,this.ray=void 0,this.pickData=void 0,this.position=void 0,this.isInteracting=!1,this.prevLoci=t.Representation.Loci.Empty,this.prevT=0,this.inside=!1,this.buttons=r.ButtonsType.create(0),this.button=r.ButtonsType.create(0),this.modifiers=r.ModifiersKeys.None,this.props={...c.ParamDefinition.getDefaultValues(e.Canvas3dInteractionHelperParams),...b},u.drag.subscribe(({x:P,y:C,buttons:l,button:S,modifiers:T})=>{this.isInteracting=!0,this.drag(P,C,l,S,T)}),u.move.subscribe(({x:P,y:C,inside:l,buttons:S,button:T,modifiers:A,onElement:x,ray:M})=>{if(!(!l||this.isInteracting)){if(!x){this.leave();return}this.move(P,C,S,T,A,M)}}),u.leave.subscribe(()=>{this.leave()}),u.click.subscribe(({x:P,y:C,buttons:l,button:S,modifiers:T,ray:A})=>{this.outsideViewport(P,C,A)||this.click(P,C,l,S,T,A)}),u.interactionEnd.subscribe(()=>{this.isInteracting=!1}),u.modifiers.subscribe(P=>{this.modify(P)})}}e.Canvas3dInteractionHelper=_})(SA)),SA}var Xo={},kv={},$6;function Soe(){return $6||($6=1,Object.defineProperty(kv,"__esModule",{value:!0}),kv.postprocessing_frag=void 0,kv.postprocessing_frag=` 4210precision highp float; 4211precision highp int; 4212precision highp sampler2D; 4213 4214uniform sampler2D tSsaoDepth; 4215uniform sampler2D tSsaoDepthTransparent; 4216uniform sampler2D tColor; 4217uniform sampler2D tTransparentColor; 4218uniform sampler2D tDepthOpaque; 4219uniform sampler2D tDepthTransparent; 4220uniform sampler2D tShadows; 4221uniform sampler2D tOutlines; 4222uniform sampler2D tBloom; 4223uniform vec2 uTexSize; 4224 4225uniform float uNear; 4226uniform float uFar; 4227uniform float uFogNear; 4228uniform float uFogFar; 4229uniform vec3 uFogColor; 4230uniform vec3 uOutlineColor; 4231uniform vec3 uOcclusionColor; 4232uniform bool uTransparentBackground; 4233uniform vec2 uOcclusionOffset; 4234 4235#include common 4236 4237float getViewZ(const in float depth) { 4238 #if dOrthographic == 1 4239 return orthographicDepthToViewZ(depth, uNear, uFar); 4240 #else 4241 return perspectiveDepthToViewZ(depth, uNear, uFar); 4242 #endif 4243} 4244 4245float getDepthOpaque(const in vec2 coords) { 4246 #ifdef depthTextureSupport 4247 return texture2D(tDepthOpaque, coords).r; 4248 #else 4249 return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); 4250 #endif 4251} 4252
4253float getDepthTransparent(const in vec2 coords) { 4254 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x; 4255} 4256 4257bool isBackground(const in float depth) { 4258 // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32. 4259 return depth >= 0.99999994; 4260} 4261 4262int squaredOutlineScale = dOutlineScale * dOutlineScale; 4263void getOutline(const in vec2 coords, out bool hasOpaque, out bool hasTransparent, out float opaqueDepth, out float transparentDepth, out float alpha) { 4264 vec2 invTexSize = 1.0 / uTexSize; 4265 4266 hasOpaque = false; 4267 hasTransparent = false; 4268 opaqueDepth = 1.0; 4269 transparentDepth = 1.0; 4270 alpha = 0.0; 4271 for (int y = -dOutlineScale; y <= dOutlineScale; y++) { 4272 for (int x = -dOutlineScale; x <= dOutlineScale; x++) { 4273 if (x * x + y * y > squaredOutlineScale) { 4274 continue; 4275 } 4276 4277 vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize; 4278 4279 vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords); 4280 float sampleOpaqueDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb); 4281 float sampleTransparentDepth = sampleOutlineCombined.a; 4282 vec2 sampleFlagWithAlpha = unpack2x4(sampleOutlineCombined.r); 4283 4284 float sampleFlag = sampleFlagWithAlpha.x; 4285 float sampleAlpha = clamp(sampleFlagWithAlpha.y * 0.5, 0.01, 1.0); 4286 4287 if ((sampleFlag > 0.20 && sampleFlag < 0.30) || (sampleFlag > 0.70 && sampleFlag < 0.80)) { // transparent || both 4288 if (sampleOpaqueDepth < opaqueDepth) { 4289 hasOpaque = true; 4290 opaqueDepth = sampleOpaqueDepth; 4291 } 4292 } 4293 4294 if ((((sampleFlag > 0.45 && sampleFlag < 0.55) || (sampleFlag > 0.70 && sampleFlag < 0.80))) && sampleTransparentDepth < transparentDepth) { // transparent || both 4295 hasTransparent = true; 4296 transparentDepth = sampleTransparentDepth; 4297 alpha = sampleAlpha; 4298 } 4299 } 4300 } 4301} 4302 4303float getSsao(vec2 coords) { 4304 float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy); 4305 if (rawSsao > 0.999) { 4306 return 1.0; 4307 } else if (rawSsao > 0.001) { 4308 return rawSsao; 4309 } 4310 // treat values close to 0.0 as errors and return no occlusion 4311 return 1.0; 4312} 4313 4314float getSsaoTransparent(vec2 coords) { 4315 float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepthTransparent, coords).xy); 4316 if (rawSsao > 0.999) { 4317 return 1.0; 4318 } else if (rawSsao > 0.001) { 4319 return rawSsao; 4320 } 4321 // treat values close to 0.0 as errors and return no occlusion 4322 return 1.0; 4323} 4324 4325void main(void) { 4326 vec2 coords = gl_FragCoord.xy / uTexSize; 4327 vec4 color = texture2D(tColor, coords); 4328 4329 float opaqueDepth = getDepthOpaque(coords); 4330 float transparentDepth = 1.0; 4331 #ifdef dBlendTransparency 4332 bool blendTransparency = true; 4333 vec4 transparentColor = texture2D(tTransparentColor, coords); 4334 4335 #if defined(dOutlineEnable) || defined(dOcclusionEnable) && defined(dOcclusionIncludeTransparency) 4336 transparentDepth = getDepthTransparent(coords); 4337 #endif 4338 #endif 4339 4340 #if defined(dOcclusionEnable) || defined(dShadowEnable)
4341 bool isOpaqueBackground = isBackground(opaqueDepth); 4342 float viewDist = abs(getViewZ(opaqueDepth)); 4343 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 4344 #endif 4345 4346 #if defined(dOcclusionEnable) 4347 if (!isOpaqueBackground) { 4348 float occlusionFactor = getSsao(coords + uOcclusionOffset); 4349 4350 if (!uTransparentBackground) { 4351 color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor); 4352 } else { 4353 color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor); 4354 } 4355 } 4356 #if defined(dBlendTransparency) && defined(dOcclusionIncludeTransparency) 4357 if (!isBackground(transparentDepth)) { 4358 float viewDist = abs(getViewZ(transparentDepth)); 4359 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 4360 float occlusionFactor = getSsaoTransparent(coords + uOcclusionOffset); 4361 transparentColor.rgb = mix(uOcclusionColor * (1.0 - fogFactor), transparentColor.rgb, occlusionFactor); 4362 } 4363 #endif 4364 #endif 4365 4366 #ifdef dShadowEnable
4367 if (!isOpaqueBackground) { 4368 vec4 shadow = texture2D(tShadows, coords); 4369 if (!uTransparentBackground) { 4370 color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a); 4371 } else { 4372 color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a); 4373 } 4374 } 4375 #endif 4376 4377 // outline needs to be handled after occlusion and shadow to keep them clean 4378 #ifdef dOutlineEnable 4379 bool hasOpaque; 4380 bool hasTransparent; 4381 float outlineOpaqueDepth; 4382 float outlineTransparentDepth; 4383 float outlineAlpha; 4384 getOutline(coords, hasOpaque, hasTransparent, outlineOpaqueDepth, outlineTransparentDepth, outlineAlpha); 4385 4386 if (hasOpaque) { 4387 float viewDist = abs(getViewZ(outlineOpaqueDepth)); 4388 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 4389 if (!uTransparentBackground) { 4390 color.rgb = mix(uOutlineColor, uFogColor, fogFactor); 4391 } else { 4392 color.a = 1.0 - fogFactor; 4393 color.rgb = mix(uOutlineColor, vec3(0.0), fogFactor); 4394 } 4395 } 4396 4397 #ifdef dBlendTransparency 4398 if (hasTransparent) { 4399 if (hasOpaque && outlineOpaqueDepth < outlineTransparentDepth) { 4400 blendTransparency = false; 4401 } else { 4402 float finalOutlineAlpha = clamp(outlineAlpha * 2.0, 0.0, 1.0); 4403 float viewDist = abs(getViewZ(outlineTransparentDepth)); 4404 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 4405 float finalAlpha = max(transparentColor.a, finalOutlineAlpha * (1.0 - fogFactor)); 4406 transparentColor.a = finalAlpha; 4407 transparentColor.rgb = uOutlineColor * finalAlpha; 4408 } 4409 } 4410 #endif 4411 #endif 4412 4413 #ifdef dBlendTransparency 4414 if (blendTransparency) { 4415 float alpha = transparentColor.a; 4416 if (alpha != 0.0) { 4417 // blending 4418 color = transparentColor + color * (1.0 - alpha); 4419 } 4420 } 4421 #endif 4422 4423 #ifdef dBloomEnable 4424 vec4 bloom = texture2D(tBloom, coords); 4425 // additive glow over geometry and background alike; alpha just covers the premultiplied rgb 4426 color.rgb += bloom.rgb; 4427 color.a = min(max(color.a, max(color.r, max(color.g, color.b))), 1.0); 4428 #endif 4429 4430 gl_FragColor = color; 4431} 4432`),kv}var Lu={},Fv={},X6;function Coe(){return X6||(X6=1,Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.fxaa_frag=void 0,Fv.fxaa_frag
vendor: 9,003 bytes, lines 4432-4660
4432=` 4433precision highp float; 4434precision highp int; 4435precision highp sampler2D; 4436 4437uniform sampler2D tColor; 4438uniform vec2 uTexSizeInv; 4439 4440// adapted from https://github.com/kosua20/Rendu 4441// MIT License Copyright (c) 2017 Simon Rodriguez 4442 4443#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5)) 4444 4445float rgb2luma(vec3 rgb){ 4446 return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114))); 4447} 4448 4449float sampleLuma(vec2 uv) { 4450 return rgb2luma(texture2D(tColor, uv).rgb); 4451} 4452 4453float sampleLuma(vec2 uv, float uOffset, float vOffset) { 4454 uv += uTexSizeInv * vec2(uOffset, vOffset); 4455 return sampleLuma(uv); 4456} 4457 4458void main(void) { 4459 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 4460 vec2 inverseScreenSize = uTexSizeInv; 4461 4462 vec4 colorCenter = texture2D(tColor, coords); 4463 4464 // Luma at the current fragment 4465 float lumaCenter = rgb2luma(colorCenter.rgb); 4466 4467 // Luma at the four direct neighbours of the current fragment. 4468 float lumaDown = sampleLuma(coords, 0.0, -1.0); 4469 float lumaUp = sampleLuma(coords, 0.0, 1.0); 4470 float lumaLeft = sampleLuma(coords, -1.0, 0.0); 4471 float lumaRight = sampleLuma(coords, 1.0, 0.0); 4472 4473 // Find the maximum and minimum luma around the current fragment. 4474 float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight))); 4475 float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight))); 4476 4477 // Compute the delta. 4478 float lumaRange = lumaMax - lumaMin; 4479 4480 // If the luma variation is lower that a threshold (or if we are in a really dark area), 4481 // we are not on an edge, don't perform any AA. 4482 if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) { 4483 gl_FragColor = colorCenter; 4484 return; 4485 } 4486 4487 // Query the 4 remaining corners lumas. 4488 float lumaDownLeft = sampleLuma(coords, -1.0, -1.0); 4489 float lumaUpRight = sampleLuma(coords, 1.0, 1.0); 4490 float lumaUpLeft = sampleLuma(coords, -1.0, 1.0); 4491 float lumaDownRight = sampleLuma(coords, 1.0, -1.0); 4492 4493 // Combine the four edges lumas (using intermediary variables for future computations 4494 // with the same values). 4495 float lumaDownUp = lumaDown + lumaUp; 4496 float lumaLeftRight = lumaLeft + lumaRight; 4497 4498 // Same for corners 4499 float lumaLeftCorners = lumaDownLeft + lumaUpLeft; 4500 float lumaDownCorners = lumaDownLeft + lumaDownRight; 4501 float lumaRightCorners = lumaDownRight + lumaUpRight; 4502 float lumaUpCorners = lumaUpRight + lumaUpLeft; 4503 4504 // Compute an estimation of the gradient along the horizontal and vertical axis. 4505 float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners); 4506 float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners); 4507 4508 // Is the local edge horizontal or vertical ? 4509 bool isHorizontal = (edgeHorizontal >= edgeVertical); 4510 4511 // Choose the step size (one pixel) accordingly. 4512 float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x; 4513 4514 // Select the two neighboring texels lumas in the opposite direction to the local edge. 4515 float luma1 = isHorizontal ? lumaDown : lumaLeft; 4516 float luma2 = isHorizontal ? lumaUp : lumaRight; 4517 // Compute gradients in this direction. 4518 float gradient1 = luma1 - lumaCenter; 4519 float gradient2 = luma2 - lumaCenter; 4520 4521 // Which direction is the steepest ? 4522 bool is1Steepest = abs(gradient1) >= abs(gradient2); 4523 4524 // Gradient in the corresponding direction, normalized. 4525 float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2)); 4526 4527 // Average luma in the correct direction. 4528 float lumaLocalAverage = 0.0; 4529 if(is1Steepest){ 4530 // Switch the direction 4531 stepLength = -stepLength; 4532 lumaLocalAverage = 0.5 * (luma1 + lumaCenter); 4533 } else { 4534 lumaLocalAverage = 0.5 * (luma2 + lumaCenter); 4535 } 4536 4537 // Shift UV in the correct direction by half a pixel. 4538 vec2 currentUv = coords; 4539 if(isHorizontal){ 4540 currentUv.y += stepLength * 0.5; 4541 } else { 4542 currentUv.x += stepLength * 0.5; 4543 } 4544 4545 // Compute offset (for each iteration step) in the right direction. 4546 vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y); 4547 // Compute UVs to explore on each side of the edge, orthogonally. 4548 // The QUALITY allows us to step faster. 4549 vec2 uv1 = currentUv - offset * QUALITY(0); 4550 vec2 uv2 = currentUv + offset * QUALITY(0); 4551 4552 // Read the lumas at both current extremities of the exploration segment, 4553 // and compute the delta wrt to the local average luma. 4554 float lumaEnd1 = sampleLuma(uv1); 4555 float lumaEnd2 = sampleLuma(uv2); 4556 lumaEnd1 -= lumaLocalAverage; 4557 lumaEnd2 -= lumaLocalAverage; 4558 4559 // If the luma deltas at the current extremities is larger than the local gradient, 4560 // we have reached the side of the edge. 4561 bool reached1 = abs(lumaEnd1) >= gradientScaled; 4562 bool reached2 = abs(lumaEnd2) >= gradientScaled; 4563 bool reachedBoth = reached1 && reached2; 4564 4565 // If the side is not reached, we continue to explore in this direction. 4566 if(!reached1){ 4567 uv1 -= offset * QUALITY(1); 4568 } 4569 if(!reached2){ 4570 uv2 += offset * QUALITY(1); 4571 } 4572 4573 // If both sides have not been reached, continue to explore. 4574 if(!reachedBoth){ 4575 for(int i = 2; i < dIterations; i++){ 4576 // If needed, read luma in 1st direction, compute delta. 4577 if(!reached1){ 4578 lumaEnd1 = sampleLuma(uv1); 4579 lumaEnd1 = lumaEnd1 - lumaLocalAverage; 4580 } 4581 // If needed, read luma in opposite direction, compute delta. 4582 if(!reached2){ 4583 lumaEnd2 = sampleLuma(uv2); 4584 lumaEnd2 = lumaEnd2 - lumaLocalAverage; 4585 } 4586 // If the luma deltas at the current extremities is larger than the local gradient, 4587 // we have reached the side of the edge. 4588 reached1 = abs(lumaEnd1) >= gradientScaled; 4589 reached2 = abs(lumaEnd2) >= gradientScaled; 4590 reachedBoth = reached1 && reached2; 4591 4592 // If the side is not reached, we continue to explore in this direction, 4593 // with a variable quality. 4594 if(!reached1){ 4595 uv1 -= offset * QUALITY(i); 4596 } 4597 if(!reached2){ 4598 uv2 += offset * QUALITY(i); 4599 } 4600 4601 // If both sides have been reached, stop the exploration. 4602 if(reachedBoth){ 4603 break; 4604 } 4605 } 4606 } 4607 4608 // Compute the distances to each side edge of the edge (!). 4609 float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y); 4610 float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y); 4611 4612 // In which direction is the side of the edge closer ? 4613 bool isDirection1 = distance1 < distance2; 4614 float distanceFinal = min(distance1, distance2); 4615 4616 // Thickness of the edge. 4617 float edgeThickness = (distance1 + distance2); 4618 4619 // Is the luma at center smaller than the local average ? 4620 bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage; 4621 4622 // If the luma at center is smaller than at its neighbour, 4623 // the delta luma at each end should be positive (same variation). 4624 bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller; 4625 bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller; 4626 4627 // Only keep the result in the direction of the closer side of the edge. 4628 bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2; 4629 4630 // UV offset: read in the direction of the closest side of the edge. 4631 float pixelOffset = - distanceFinal / edgeThickness + 0.5; 4632 4633 // If the luma variation is incorrect, do not offset. 4634 float finalOffset = correctVariation ? pixelOffset : 0.0; 4635 4636 // Sub-pixel shifting 4637 // Full weighted average of the luma over the 3x3 neighborhood. 4638 float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners); 4639 // Ratio of the delta between the global average and the center luma, 4640 // over the luma range in the 3x3 neighborhood. 4641 float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0); 4642 float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1; 4643 // Compute a sub-pixel offset based on this delta. 4644 float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality); 4645 4646 // Pick the biggest of the two offsets. 4647 finalOffset = max(finalOffset, subPixelOffsetFinal); 4648 4649 // Compute the final UV coordinates. 4650 vec2 finalUv = coords; 4651 if(isHorizontal){ 4652 finalUv.y += finalOffset * stepLength; 4653 } else { 4654 finalUv.x += finalOffset * stepLength; 4655 } 4656 4657 // Read the color at the new UV coordinates, and use it. 4658 gl_FragColor = texture2D(tColor, finalUv); 4659} 4660`
4660),Fv}var K6;function Poe(){if(K6)return Lu;K6=1,Object.defineProperty(Lu,"__esModule",{value:!0}),Lu.FxaaPass=Lu.FxaaParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Coe(),y=Ct();Lu.FxaaParams={edgeThresholdMin:s.ParamDefinition.Numeric(.0312,{min:.0312,max:.0833,step:1e-4},{description:"Trims the algorithm from processing darks."}),edgeThresholdMax:s.ParamDefinition.Numeric(.063,{min:.063,max:.333,step:.001},{description:"The minimum amount of local contrast required to apply algorithm."}),iterations:s.ParamDefinition.Numeric(12,{min:0,max:16,step:1},{description:"Number of edge exploration steps."}),subpixelQuality:s.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01},{description:"Choose the amount of sub-pixel aliasing removal."})};class _{constructor(u,m){this.webgl=u,this.renderable=d(u,m)}updateState(u){const{gl:m,state:v}=this.webgl;v.enable(m.SCISSOR_TEST),v.disable(m.BLEND),v.disable(m.DEPTH_TEST),v.depthMask(!1);const{x:b,y:P,width:C,height:l}=u;v.viewport(b,P,C,l),v.scissor(b,P,C,l),v.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT)}setSize(u,m){o.ValueCell.update(this.renderable.values.uTexSizeInv,c.Vec2.set(this.renderable.values.uTexSizeInv.ref.value,1/u,1/m))}update(u,m){const{values:v}=this.renderable,{edgeThresholdMin:b,edgeThresholdMax:P,iterations:C,subpixelQuality:l}=m;let S=!1;v.tColor.ref.value!==u&&(o.ValueCell.update(this.renderable.values.tColor,u),S=!0),v.dEdgeThresholdMin.ref.value!==b&&(S=!0),o.ValueCell.updateIfChanged(v.dEdgeThresholdMin,b),v.dEdgeThresholdMax.ref.value!==P&&(S=!0),o.ValueCell.updateIfChanged(v.dEdgeThresholdMax,P),v.dIterations.ref.value!==C&&(S=!0),o.ValueCell.updateIfChanged(v.dIterations,C),v.dSubpixelQuality.ref.value!==l&&(S=!0),o.ValueCell.updateIfChanged(v.dSubpixelQuality,l),S&&this.renderable.update()}render(u,m){y.isTimingMode&&this.webgl.timer.mark("FxaaPass.render"),m?m.bind():this.webgl.bindDrawingBuffer(),this.updateState(u),this.renderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("FxaaPass.render")}}Lu.FxaaPass=_;const g={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),dEdgeThresholdMin:(0,r.DefineSpec)("number"),dEdgeThresholdMax:(0,r.DefineSpec)("number"),dIterations:(0,r.DefineSpec)("number"),dSubpixelQuality:(0,r.DefineSpec)("number")},a=(0,n.ShaderCode)("fxaa",h.quad_vert,f.fxaa_frag);function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tColor:o.ValueCell.create(u),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/m,1/v)),dEdgeThresholdMin:o.ValueCell.create(.0312),dEdgeThresholdMax:o.ValueCell.create(.125),dIterations:o.ValueCell.create(12),dSubpixelQuality:o.ValueCell.create(.3)},P={...g},C=(0,i.createComputeRenderItem)(p,"triangles",a,P,b);return(0,t.createComputeRenderable)(C,b)}return Lu}var Nu={},Lv={},Y6;function Toe(){return Y6||(Y6=1,Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.blend_vert=void 0,Lv.blend_vert=` 4661precision highp float; 4662 4663attribute vec2 aPosition; 4664uniform vec2 uQuadScale; 4665 4666uniform vec2 uTexSizeInv; 4667uniform vec4 uViewport; 4668 4669varying vec2 vUv; 4670varying vec4 vOffset[2]; 4671 4672void SMAANeighborhoodBlendingVS(vec2 texCoord) { 4673 vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component 4674 vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component 4675} 4676 4677void main() { 4678 vec2 scale = uViewport.zw * uTexSizeInv; 4679 vec2 shift = uViewport.xy * uTexSizeInv; 4680 vUv = (aPosition + 1.0) * 0.5 * scale + shift; 4681 SMAANeighborhoodBlendingVS(vUv); 4682 vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; 4683 gl_Position = vec4(position, 0.0, 1.0); 4684} 4685`),Lv}var Nv={},Q6;function xoe(){return Q6||(Q6=1,Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.blend_frag=void 0,Nv.blend_frag=` 4686precision highp float; 4687precision highp int; 4688precision highp sampler2D; 4689 4690uniform sampler2D tWeights; 4691uniform sampler2D tColor; 4692uniform vec2 uTexSizeInv; 4693 4694varying vec2 vUv; 4695varying vec4 vOffset[2]; 4696 4697vec4 SMAANeighborhoodBlendingPS(vec2 texCoord, vec4 offset[2], sampler2D colorTex, sampler2D blendTex) { 4698 // Fetch the blending weights for current pixel: 4699 vec4 a; 4700 a.xz = texture2D(blendTex, texCoord).xz; 4701 a.y = texture2D(blendTex, offset[1].zw).g; 4702 a.w = texture2D(blendTex, offset[1].xy).a; 4703 4704 // Is there any blending weight with a value greater than 0.0? 4705 if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) { 4706 return texture2D(colorTex, texCoord, 0.0); 4707 } else { 4708 // Up to 4 lines can be crossing a pixel (one through each edge). We 4709 // favor blending by choosing the line with the maximum weight for each 4710 // direction: 4711 vec2 offset; 4712 offset.x = a.a > a.b ? a.a : -a.b; // left vs. right 4713 offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs 4714 4715 // Then we go in the direction that has the maximum weight: 4716 if (abs(offset.x) > abs(offset.y)) { // horizontal vs. vertical 4717 offset.y = 0.0; 4718 } else { 4719 offset.x = 0.0; 4720 } 4721 4722 // Fetch the opposite color and lerp by hand: 4723 vec4 C = texture2D(colorTex, texCoord, 0.0); 4724 texCoord += sign(offset) * uTexSizeInv; 4725 vec4 Cop = texture2D(colorTex, texCoord, 0.0); 4726 float s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y); 4727 4728 // WebGL port note: Added gamma correction 4729 C.xyz = pow(C.xyz, vec3(2.2)); 4730 Cop.xyz = pow(Cop.xyz, vec3(2.2)); 4731 vec4 mixed = mix(C, Cop, s); 4732 mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2)); 4733 4734 return mixed; 4735 } 4736} 4737 4738void main() { 4739 gl_FragColor = SMAANeighborhoodBlendingPS(vUv, vOffset, tColor, tWeights); 4740} 4741`),Nv}var qv={},Z6;function Aoe(){return Z6||(Z6=1,Object.defineProperty(qv,"__esMo
4741dule",{value:!0}),qv.weights_vert=void 0,qv.weights_vert=` 4742precision highp float; 4743 4744attribute vec2 aPosition; 4745uniform vec2 uQuadScale; 4746 4747uniform vec2 uTexSizeInv; 4748uniform vec4 uViewport; 4749 4750varying vec2 vUv; 4751varying vec4 vOffset[3]; 4752varying vec2 vPixCoord; 4753 4754void SMAABlendingWeightCalculationVS(vec2 texCoord) { 4755 vPixCoord = texCoord / uTexSizeInv; 4756 4757 // We will use these offsets for the searches later on (see @PSEUDO_GATHER4): 4758 vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // WebGL port note: Changed sign in Y and W components 4759 vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); // WebGL port note: Changed sign in Y and W components 4760 4761 // And these for the searches, they indicate the ends of the loops: 4762 vOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * uTexSizeInv.xxyy * float(dMaxSearchSteps); 4763} 4764 4765void main() { 4766 vec2 scale = uViewport.zw * uTexSizeInv; 4767 vec2 shift = uViewport.xy * uTexSizeInv; 4768 vUv = (aPosition + 1.0) * 0.5 * scale + shift; 4769 SMAABlendingWeightCalculationVS(vUv); 4770 vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; 4771 gl_Position = vec4(position, 0.0, 1.0); 4772} 4773`),qv}var Uv={},J6;function Moe(){return J6||(J6=1,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.weights_frag=void 0,Uv.weights_frag=` 4774precision highp float; 4775precision highp int; 4776precision highp sampler2D; 4777 4778#define SMAASampleLevelZeroOffset(tex, coord, offset) texture2D(tex, coord + float(offset) * uTexSizeInv, 0.0) 4779 4780#define SMAA_AREATEX_MAX_DISTANCE 16 4781#define SMAA_AREATEX_PIXEL_SIZE (1.0 / vec2(160.0, 560.0)) 4782#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0) 4783 4784uniform sampler2D tEdges; 4785uniform sampler2D tArea; 4786uniform sampler2D tSearch; 4787uniform vec2 uTexSizeInv; 4788 4789varying vec2 vUv; 4790varying vec4 vOffset[3]; 4791varying vec2 vPixCoord; 4792 4793#if __VERSION__ == 100 4794 vec2 round(vec2 x) { 4795 return sign(x) * floor(abs(x) + 0.5); 4796 } 4797#endif 4798 4799float SMAASearchLength(sampler2D searchTex, vec2 e, float bias, float scale) { 4800 // Not required if searchTex accesses are set to point: 4801 // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0); 4802 // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + 4803 // e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE; 4804 e.r = bias + e.r * scale; 4805 return 255.0 * texture2D(searchTex, e, 0.0).r; 4806} 4807 4808float SMAASearchXLeft(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { 4809 /** 4810 * @PSEUDO_GATHER4 4811 * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to 4812 * sample between edge, thus fetching four edges in a row. 4813 * Sampling with different offsets in each direction allows to disambiguate 4814 * which edges are active from the four fetched ones. 4815 */ 4816 vec2 e = vec2(0.0, 1.0); 4817 4818 for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for 4819 e = texture2D( edgesTex, texCoord, 0.0).rg; 4820 texCoord -= vec2(2.0, 0.0) * uTexSizeInv; 4821 if (!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) break; 4822 } 4823 4824 // We correct the previous (-0.25, -0.125) offset we applied: 4825 texCoord.x += 0.25 * uTexSizeInv.x; 4826 4827 // The searches are bias by 1, so adjust the coords accordingly: 4828 texCoord.x += uTexSizeInv.x; 4829 4830 // Disambiguate the length added by the last step: 4831 texCoord.x += 2.0 * uTexSizeInv.x; // Undo last step 4832 texCoord.x -= uTexSizeInv.x * SMAASearchLength(searchTex, e, 0.0, 0.5); 4833 4834 return texCoord.x; 4835} 4836 4837float SMAASearchXRight(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { 4838 vec2 e = vec2( 0.0, 1.0 ); 4839 4840 for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for 4841 e = texture2D(edgesTex, texCoord, 0.0).rg; 4842 texCoord += vec2(2.0, 0.0) * uTexSizeInv; 4843 if (!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) break; 4844 } 4845 4846 texCoord.x -= 0.25 * uTexSizeInv.x; 4847 texCoord.x -= uTexSizeInv.x; 4848 texCoord.x -= 2.0 * uTexSizeInv.x; 4849 texCoord.x += uTexSizeInv.x * SMAASearchLength( searchTex, e, 0.5, 0.5 ); 4850 4851 return texCoord.x; 4852} 4853 4854float SMAASearchYUp(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { 4855 vec2 e = vec2( 1.0, 0.0 ); 4856 4857 for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for 4858 e = texture2D(edgesTex, texCoord, 0.0).rg; 4859 texCoord += vec2(0.0, 2.0) * uTexSizeInv; // WebGL port note: Changed sign 4860 if (!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) break; 4861 } 4862 4863 texCoord.y -= 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign 4864 texCoord.y -= uTexSizeInv.y; // WebGL port note: Changed sign 4865 texCoord.y -= 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign 4866 texCoord.y += uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5); // WebGL port note: Changed sign 4867 4868 return texCoord.y; 4869} 4870 4871float SMAASearchYDown(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { 4872 vec2 e = vec2( 1.0, 0.0 ); 4873 4874 for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for 4875 e = texture2D(edgesTex, texCoord, 0.0).rg; 4876 texCoord -= vec2( 0.0, 2.0 ) * uTexSizeInv; // WebGL port note: Changed sign 4877 if (!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) break; 4878 } 4879 4880 texCoord.y += 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign 4881 texCoord.y += uTexSizeInv.y; // WebGL port note: Changed sign 4882 texCoord.y += 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign 4883 texCoord.y -= uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5); // WebGL port note: Changed sign 4884 4885 return texCoord.y; 4886} 4887 4888vec2 SMAAArea(sampler2D areaTex, vec2 dist, float e1, float e2, float offset) { 4889 // Rounding prevents precision errors of bilinear filtering: 4890 vec2 texCoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * vec2(e1, e2)) + dist; 4891 4892 // We do a scale and bias for mapping to texel space: 4893 texCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE); 4894 4895 // Move to proper place, according to the subpixel offset: 4896 texCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset; 4897 4898 return texture2D(areaTex, texCoord, 0.0).rg; 4899} 4900 4901vec4 SMAABlendingWeightCalculationPS(vec2 texCoord, vec2 pixCoord, vec4 offset[3], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices) { 4902 vec4 weights = vec4(0.0, 0.0, 0.0, 0.0); 4903 4904 vec2 e = texture2D(edgesTex, texCoord).rg; 4905 4906 if (e.g > 0.0) { // Edge at north 4907 vec2 d; 4908 4909 // Find the distance to the left: 4910 vec2 coords; 4911 coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x ); 4912 coords.y = offset[1].y; // offset[1].y = texCoord.y - 0.25 * uTexSizeInv.y (@CROSSING_OFFSET) 4913 d.x = coords.x; 4914 4915 // Now fetch the left crossing edges, two at a time using bilinear 4916 // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to 4917 // discern what value each edge has:
4918 float e1 = texture2D(edgesTex, coords, 0.0).r; 4919 4920 // Find the distance to the right: 4921 coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y); 4922 d.y = coords.x; 4923 4924 // We want the distances to be in pixel units (doing this here allow to 4925 // better interleave arithmetic and memory accesses): 4926 d = d / uTexSizeInv.x - pixCoord.x; 4927 4928 // SMAAArea below needs a sqrt, as the areas texture is compressed 4929 // quadratically: 4930 vec2 sqrt_d = sqrt(abs(d)); 4931 4932 // Fetch the right crossing edges: 4933 coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added 4934 float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(1, 0)).r; 4935 4936 // Ok, we know how this pattern looks like, now it is time for getting 4937 // the actual area: 4938 weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y)); 4939 } 4940 4941 if (e.r > 0.0) { // Edge at west 4942 vec2 d; 4943 4944 // Find the distance to the top: 4945 vec2 coords; 4946 4947 coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z ); 4948 coords.x = offset[0].x; // offset[1].x = texCoord.x - 0.25 * uTexSizeInv.x; 4949 d.x = coords.y; 4950 4951 // Fetch the top crossing edges: 4952 float e1 = texture2D(edgesTex, coords, 0.0).g; 4953 4954 // Find the distance to the bottom: 4955 coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w); 4956 d.y = coords.y; 4957 4958 // We want the distances to be in pixel units: 4959 d = d / uTexSizeInv.y - pixCoord.y; 4960 4961 // SMAAArea below needs a sqrt, as the areas texture is compressed 4962 // quadratically: 4963 vec2 sqrt_d = sqrt(abs(d)); 4964 4965 // Fetch the bottom crossing edges: 4966 coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added 4967 float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(0, 1)).g; 4968 4969 // Get the area for this direction: 4970 weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x)); 4971 } 4972 4973 return weights; 4974} 4975 4976void main() { 4977 gl_FragColor = SMAABlendingWeightCalculationPS(vUv, vPixCoord, vOffset, tEdges, tArea, tSearch, ivec4(0.0)); 4978} 4979`),Uv}var jv={},e8;function Doe(){return e8||(e8=1,Object.defineProperty(jv,"__esModule",{value:!0}),jv.edges_vert=void 0,jv.edges_vert=` 4980precision highp float; 4981 4982attribute vec2 aPosition; 4983uniform vec2 uQuadScale; 4984 4985uniform vec2 uTexSizeInv; 4986uniform vec4 uViewport; 4987 4988varying vec2 vUv; 4989varying vec4 vOffset[3]; 4990 4991void SMAAEdgeDetectionVS(vec2 texCoord) { 4992 vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component 4993 vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component 4994 vOffset[2] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // WebGL port note: Changed sign in W component 4995} 4996 4997void main() { 4998 vec2 scale = uViewport.zw * uTexSizeInv; 4999 vec2 shift = uViewport.xy * uTexSizeInv; 5000 vUv = (aPosition + 1.0) * 0.5 * scale + shift; 5001 SMAAEdgeDetectionVS(vUv); 5002 vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; 5003 gl_Position = vec4(position, 0.0, 1.0); 5004} 5005`),jv}var Gv={},t8;function Ioe(){return t8||(t8=1,Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.edges_frag=void 0,Gv.edges_frag=` 5006precision highp float; 5007precision highp int; 5008precision highp sampler2D; 5009 5010uniform sampler2D tColor; 5011uniform vec2 uTexSizeInv; 5012 5013varying vec2 vUv; 5014varying vec4 vOffset[3]; 5015 5016vec4 SMAAColorEdgeDetectionPS(vec2 texcoord, vec4 offset[3], sampler2D colorTex) { 5017 vec2 threshold = vec2(dEdgeThreshold, dEdgeThreshold); 5018 5019 // Calculate color deltas: 5020 vec4 delta; 5021 vec3 C = texture2D(colorTex, texcoord).rgb; 5022 5023 vec3 Cleft = texture2D(colorTex, offset[0].xy).rgb; 5024 vec3 t = abs(C - Cleft); 5025 delta.x = max(max(t.r, t.g), t.b); 5026 5027 vec3 Ctop = texture2D(colorTex, offset[0].zw).rgb; 5028 t = abs(C - Ctop); 5029 delta.y = max(max(t.r, t.g), t.b); 5030 5031 // We do the usual threshold: 5032 vec2 edges = step(threshold, delta.xy); 5033 5034 // Then discard if there is no edge: 5035 if (dot(edges, vec2(1.0, 1.0 )) == 0.0) 5036 discard; 5037 5038 // Calculate right and bottom deltas: 5039 vec3 Cright = texture2D(colorTex, offset[1].xy).rgb; 5040 t = abs( C - Cright ); 5041 delta.z = max(max(t.r, t.g), t.b); 5042 5043 vec3 Cbottom = texture2D(colorTex, offset[1].zw).rgb; 5044 t = abs(C - Cbottom); 5045 delta.w = max(max(t.r, t.g), t.b); 5046 5047 // Calculate the maximum delta in the direct neighborhood: 5048 float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w ); 5049 5050 // Calculate left-left and top-top deltas: 5051 vec3 Cleftleft = texture2D(colorTex, offset[2].xy).rgb; 5052 t = abs( C - Cleftleft ); 5053 delta.z = max(max(t.r, t.g), t.b); 5054 5055 vec3 Ctoptop = texture2D(colorTex, offset[2].zw).rgb; 5056 t = abs(C - Ctoptop); 5057 delta.w = max(max(t.r, t.g), t.b); 5058 5059 // Calculate the final maximum delta: 5060 maxDelta = max(max(maxDelta, delta.z), delta.w); 5061 5062 // Local contrast adaptation in action: 5063 edges.xy *= step(0.5 * maxDelta, delta.xy); 5064 5065 return vec4(edges, 0.0, 0.0); 5066} 5067 5068void main() { 5069 gl_FragColor = SMAAColorEdgeDetectionPS(vUv, vOffset, tColor); 5070} 5071`),Gv}var r8;function woe(){if(r8)return Nu;
5071r8=1,Object.defineProperty(Nu,"__esModule",{value:!0}),Nu.SmaaPass=Nu.SmaaParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Toe(),y=xoe(),_=Aoe(),g=Moe(),a=Doe(),d=Ioe(),p=Kn(),u=Ct();Nu.SmaaParams={edgeThreshold:h.ParamDefinition.Numeric(.1,{min:.05,max:.15,step:.01}),maxSearchSteps:h.ParamDefinition.Numeric(16,{min:0,max:32,step:1})};class m{get supported(){return this._supported}constructor(R,E){if(this.webgl=R,this._supported=!1,typeof HTMLImageElement>"u"){u.isDebugMode&&console.log('Missing "HTMLImageElement" required for "SMAA"');return}const I=E.getWidth(),B=E.getHeight();this.edgesTarget=R.createRenderTarget(I,B,!1,"uint8","linear"),this.weightsTarget=R.createRenderTarget(I,B,!1,"uint8","linear"),this.edgesRenderable=P(R,E),this.weightsRenderable=S(R,this.edgesTarget.texture),this.blendRenderable=x(R,E,this.weightsTarget.texture),this._supported=!0}getByteCount(){return this.supported?this.edgesTarget.getByteCount()+this.weightsTarget.getByteCount():0}updateState(R){const{gl:E,state:I}=this.webgl;I.enable(E.SCISSOR_TEST),I.disable(E.BLEND),I.disable(E.DEPTH_TEST),I.depthMask(!1);const{x:B,y:w,width:O,height:F}=R;I.viewport(B,w,O,F),I.scissor(B,w,O,F),I.colorMask(!0,!0,!0,!0),I.clearColor(0,0,0,1),E.clear(E.COLOR_BUFFER_BIT),s.ValueCell.update(this.edgesRenderable.values.uViewport,p.Viewport.toVec4(this.edgesRenderable.values.uViewport.ref.value,R)),s.ValueCell.update(this.weightsRenderable.values.uViewport,p.Viewport.toVec4(this.weightsRenderable.values.uViewport.ref.value,R)),s.ValueCell.update(this.blendRenderable.values.uViewport,p.Viewport.toVec4(this.blendRenderable.values.uViewport.ref.value,R))}setSize(R,E){const I=this.edgesTarget.getWidth(),B=this.edgesTarget.getHeight();(R!==I||E!==B)&&(this.edgesTarget.setSize(R,E),this.weightsTarget.setSize(R,E),s.ValueCell.update(this.edgesRenderable.values.uTexSizeInv,o.Vec2.set(this.edgesRenderable.values.uTexSizeInv.ref.value,1/R,1/E)),s.ValueCell.update(this.weightsRenderable.values.uTexSizeInv,o.Vec2.set(this.weightsRenderable.values.uTexSizeInv.ref.value,1/R,1/E)),s.ValueCell.update(this.blendRenderable.values.uTexSizeInv,o.Vec2.set(this.blendRenderable.values.uTexSizeInv.ref.value,1/R,1/E)))}update(R,E){let I=!1;this.edgesRenderable.values.tColor.ref.value!==R&&(s.ValueCell.update(this.edgesRenderable.values.tColor,R),I=!0),this.edgesRenderable.values.dEdgeThreshold.ref.value!==E.edgeThreshold&&(s.ValueCell.update(this.edgesRenderable.values.dEdgeThreshold,E.edgeThreshold),I=!0),I&&this.edgesRenderable.update(),this.weightsRenderable.values.dMaxSearchSteps.ref.value!==E.maxSearchSteps&&(s.ValueCell.update(this.weightsRenderable.values.dMaxSearchSteps,E.maxSearchSteps),this.weightsRenderable.update()),this.blendRenderable.values.tColor.ref.value!==R&&(s.ValueCell.update(this.blendRenderable.values.tColor,R),this.blendRenderable.update())}render(R,E){u.isTimingMode&&this.webgl.timer.mark("SmaaPass.render"),this.edgesTarget.bind(),this.updateState(R),this.edgesRenderable.render(),this.weightsTarget.bind(),this.updateState(R),this.weightsRenderable.render(),E?E.bind():this.webgl.bindDrawingBuffer(),this.updateState(R),this.blendRenderable.render(),u.isTimingMode&&this.webgl.timer.markEnd("SmaaPass.render")}}Nu.SmaaPass=m;const v={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),dEdgeThreshold:(0,r.DefineSpec)("number")},b=(0,n.ShaderCode)("smaa-edges",a.edges_vert,d.edges_frag);function P(V,R){const E=R.getWidth(),I=R.getHeight(),B={...e.QuadValues,tColor:s.ValueCell.create(R),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/E,1/I)),uViewport:s.ValueCell.create((0,o.Vec4)()),dEdgeThreshold:s.ValueCell.create(.1)},w={...v},O=(0,i.createComputeRenderItem)(V,"triangles",b,w,B);return(0,t.createComputeRenderable)(O,B)}const C={...e.QuadSchema,tEdges:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tArea:(0,r.TextureSpec)("texture","rgb","ubyte","linear"),tSearch:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),dMaxSearchSteps:(0,r.DefineSpec)("number")},l=(0,n.ShaderCode)("smaa-weights",_.weights_vert,g.weights_frag);function S(V,R){const E=R.getWidth(),I=R.getHeight(),B=V.resources.texture("image-uint8","rgb","ubyte","linear"),w=V.resources.texture("image-uint8","rgba","ubyte","nearest"),O={...e.QuadValues,tEdges:s.ValueCell.create(R),tArea:s.ValueCell.create(B),tSearch:s.ValueCell.create(w),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/E,1/I)),uViewport:s.ValueCell.create((0,o.Vec4)()),dMaxSearchSteps:s.ValueCell.create(16)};(0,c.loadImageTexture)(M(),O.tArea,B),(0,c.loadImageTexture)(D(),O.tSearch,w);const F={...C},L=(0,i.createComputeRenderItem)(V,"triangles",l,F,O);return(0,t.createComputeRenderable)(L,O)}const T={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tWeights:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4")},A=(0,n.ShaderCode)("smaa-blend",f.blend_vert,y.blend_frag);function x(V,R,E){const I=R.getWidth(),B=R.getHeight(),w={...e.QuadValues,tColor:s.ValueCell.create(R),tWeights:s.ValueCell.create(E),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/I,1/B)),uViewport:s.ValueCell.create((0,o.Vec4)())},O={...T},F=(0,i.createComputeRenderItem)(V,"triangles",A,O,w);return(0,t.createComputeRenderable)(F,w)}function M
vendor: 44,315 bytes, line 5071
5071(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAIwCAIAAACOVPcQAACBeklEQVR42u39W4xlWXrnh/3WWvuciIzMrKxrV8/0rWbY0+SQFKcb4owIkSIFCjY9AC1BT/LYBozRi+EX+cV+8IMsYAaCwRcBwjzMiw2jAWtgwC8WR5Q8mDFHZLNHTarZGrLJJllt1W2qKrsumZWZcTvn7L3W54e1vrXX3vuciLPPORFR1XE2EomorB0nVuz//r71re/y/1eMvb4Cb3N11xV/PP/2v4UBAwJG/7H8urx6/25/Gf8O5hypMQ0EEEQwAqLfoN/Z+97f/SW+/NvcgQk4sGBJK6H7N4PFVL+K+e0N11yNfkKvwUdwdlUAXPHHL38oa15f/i/46Ih6SuMSPmLAYAwyRKn7dfMGH97jaMFBYCJUgotIC2YAdu+LyW9vvubxAP8kAL8H/koAuOKP3+q6+xGnd5kdYCeECnGIJViwGJMAkQKfDvB3WZxjLKGh8VSCCzhwEWBpMc5/kBbjawT4HnwJfhr+pPBIu7uu+OOTo9vsmtQcniMBGkKFd4jDWMSCRUpLjJYNJkM+IRzQ+PQvIeAMTrBS2LEiaiR9b/5PuT6Ap/AcfAFO4Y3dA3DFH7/VS+M8k4baEAQfMI4QfbVDDGIRg7GKaIY52qAjTAgTvGBAPGIIghOCYAUrGFNgzA7Q3QhgCwfwAnwe5vDejgG44o/fbm1C5ZlYQvQDARPAIQGxCWBM+wWl37ZQESb4gImexGMDouhGLx1Cst0Saa4b4AqO4Hk4gxo+3DHAV/nx27p3JziPM2pVgoiia5MdEzCGULprIN7gEEeQ5IQxEBBBQnxhsDb5auGmAAYcHMA9eAAz8PBol8/xij9+C4Djlim4gJjWcwZBhCBgMIIYxGAVIkH3ZtcBuLdtRFMWsPGoY9rN+HoBji9VBYdwD2ZQg4cnO7OSq/z4rU5KKdwVbFAjNojCQzTlCLPFSxtamwh2jMUcEgg2Wm/6XgErIBhBckQtGN3CzbVacERgCnfgLswhnvqf7QyAq/z4rRZm1YglYE3affGITaZsdIe2FmMIpnOCap25I6jt2kCwCW0D1uAD9sZctNGXcQIHCkINDQgc78aCr+zjtw3BU/ijdpw3zhCwcaONwBvdeS2YZKkJNJsMPf2JKEvC28RXxxI0ASJyzQCjCEQrO4Q7sFArEzjZhaFc4cdv+/JFdKULM4px0DfUBI2hIsy06BqLhGTQEVdbfAIZXYMPesq6VoCHICzUyjwInO4Y411//LYLs6TDa9wvg2CC2rElgAnpTBziThxaL22MYhzfkghz6GAs2VHbbdM91VZu1MEEpupMMwKyVTb5ij9+u4VJG/5EgEMMmFF01cFai3isRbKbzb+YaU/MQbAm2XSMoUPAmvZzbuKYRIFApbtlrfFuUGd6vq2hXNnH78ZLh/iFhsQG3T4D1ib7k5CC6vY0DCbtrohgLEIClXiGtl10zc0CnEGIhhatLBva7NP58Tvw0qE8yWhARLQ8h4+AhQSP+I4F5xoU+VilGRJs6wnS7ruti/4KvAY/CfdgqjsMy4pf8fodQO8/gnuX3f/3xi3om1/h7THr+co3x93PP9+FBUfbNUjcjEmhcrkT+8K7ml7V10Jo05mpIEFy1NmCJWx9SIKKt+EjAL4Ez8EBVOB6havuT/rByPvHXK+9zUcfcbb254+9fydJknYnRr1oGfdaiAgpxu1Rx/Rek8KISftx3L+DfsLWAANn8Hvw0/AFeAGO9DFV3c6D+CcWbL8Dj9e7f+T1k8AZv/d7+PXWM/Z+VvdCrIvuAKO09RpEEQJM0Ci6+B4xhTWr4cZNOvhktabw0ta0rSJmqz3Yw5/AKXwenod7cAhTmBSPKf6JBdvH8IP17h95pXqw50/+BFnj88fev4NchyaK47OPhhtI8RFSvAfDSNh0Ck0p2gLxGkib5NJj/JWCr90EWQJvwBzO4AHcgztwAFN1evHPUVGwfXON+0debT1YeGON9Yy9/63X+OguiwmhIhQhD7l4sMqlG3D86Suc3qWZ4rWjI1X7u0Ytw6x3rIMeIOPDprfe2XzNgyj6PahhBjO4C3e6puDgXrdg+/5l948vF3bqwZetZ+z9Rx9zdIY5pInPK4Nk0t+l52xdK2B45Qd87nM8fsD5EfUhIcJcERw4RdqqH7Yde5V7m1vhNmtedkz6EDzUMF/2jJYWbC+4fzzA/Y+/8PPH3j9dcBAPIRP8JLXd5BpAu03aziOL3VVHZzz3CXWDPWd+SH2AnxIqQoTZpo9Ckc6HIrFbAbzNmlcg8Ag8NFDDAhbJvTBZXbC94P7t68EXfv6o+21gUtPETU7bbkLxvNKRFG2+KXzvtObonPP4rBvsgmaKj404DlshFole1Glfh02fE7bYR7dZ82oTewIBGn1Md6CG6YUF26X376oevOLzx95vhUmgblI6LBZwTCDY7vMq0op5WVXgsObOXJ+1x3qaBl9j1FeLxbhU9w1F+Wiba6s1X/TBz1LnUfuYDi4r2C69f1f14BWfP+p+W2GFKuC9phcELMYRRLur9DEZTUdEH+iEqWdaM7X4WOoPGI+ZYD2+wcQ+y+ioHUZ9dTDbArzxmi/bJI9BND0Ynd6lBdve/butBw8+f/T9D3ABa3AG8W3VPX4hBin+bj8dMMmSpp5pg7fJ6xrBFE2WQQEWnV8Qg3FbAWzYfM1rREEnmvkN2o1+acG2d/9u68GDzx91v3mAjb1zkpqT21OipPKO0b9TO5W0nTdOmAQm0TObts3aBKgwARtoPDiCT0gHgwnbArzxmtcLc08HgF1asN0C4Ms/fvD5I+7PhfqyXE/b7RbbrGyRQRT9ARZcwAUmgdoz0ehJ9Fn7QAhUjhDAQSw0bV3T3WbNa59jzmiP6GsWbGXDX2ytjy8+f9T97fiBPq9YeLdBmyuizZHaqXITnXiMUEEVcJ7K4j3BFPurtB4bixW8wTpweL8DC95szWMOqucFYGsWbGU7p3TxxxefP+r+oTVktxY0v5hbq3KiOKYnY8ddJVSBxuMMVffNbxwIOERShst73HZ78DZrHpmJmH3K6sGz0fe3UUj0eyRrSCGTTc+rjVNoGzNSv05srAxUBh8IhqChiQgVNIIBH3AVPnrsnXQZbLTm8ammv8eVXn/vWpaTem5IXRlt+U/LA21zhSb9cye6jcOfCnOwhIAYXAMVTUNV0QhVha9xjgA27ODJbLbmitt3tRN80lqG6N/khgot4ZVlOyO4WNg3OIMzhIZQpUEHieg2im6F91hB3I2tubql6BYNN9Hj5S7G0G2tahslBWKDnOiIvuAEDzakDQKDNFQT6gbn8E2y4BBubM230YIpBnDbMa+y3dx0n1S0BtuG62lCCXwcY0F72T1VRR3t2ONcsmDjbmzNt9RFs2LO2hQNyb022JisaI8rAWuw4HI3FuAIhZdOGIcdjLJvvObqlpqvWTJnnQbyi/1M9O8UxWhBs//H42I0q1Yb/XPGONzcmm+ri172mHKvZBpHkJaNJz6v9jxqiklDj3U4CA2ugpAaYMWqNXsdXbmJNd9egCnJEsphXNM+MnK3m0FCJ5S1kmJpa3DgPVbnQnPGWIDspW9ozbcO4K/9LkfaQO2KHuqlfFXSbdNzcEcwoqNEFE9zcIXu9/6n/ym/BC/C3aJLzEKPuYVlbFnfhZ8kcWxV3dbv4bKl28566wD+8C53aw49lTABp9PWbsB+knfc/Li3eVizf5vv/xmvnPKg5ihwKEwlrcHqucuVcVOxEv8aH37E3ZqpZypUulrHEtIWKUr+txHg+ojZDGlwnqmkGlzcVi1dLiNSJiHjfbRNOPwKpx9TVdTn3K05DBx4psIk4Ei8aCkJahRgffk4YnEXe07T4H2RR1u27E6wfQsBDofUgjFUFnwC2AiVtA+05J2zpiDK2Oa0c5fmAecN1iJzmpqFZxqYBCYhFTCsUNEmUnIcZ6aEA5rQVhEywG6w7HSW02XfOoBlQmjwulOFQAg66SvJblrTEX1YtJ3uG15T/BH1OfOQeuR8g/c0gdpT5fx2SKbs9EfHTKdM8A1GaJRHLVIwhcGyydZsbifAFVKl5EMKNU2Hryo+06BeTgqnxzYjThVySDikbtJPieco75lYfKAJOMEZBTjoITuWHXXZVhcUDIS2hpiXHV9Ku4u44bN5OYLDOkJo8w+xJSMbhBRHEdEs9JZUCkQrPMAvaHyLkxgkEHxiNkx/x2YB0mGsQ8EUWj/stW5YLhtS5SMu+/YBbNPDCkGTUybN8krRLBGPlZkVOA0j+a1+rkyQKWGaPHPLZOkJhioQYnVZ2hS3zVxMtgC46KuRwbJNd9nV2PHgb36F194ecf/Yeu2vAFe5nm/bRBFrnY4BauE8ERmZRFUn0k8hbftiVYSKMEme2dJCJSCGYAlNqh87bXOPdUkGy24P6d1ll21MBqqx48Fvv8ZHH8HZFY7j/uAq1xMJUFqCSUlJPmNbIiNsmwuMs/q9CMtsZsFO6SprzCS1Z7QL8xCQClEelpjTduDMsmWD8S1PT152BtvmIGvUeDA/yRn83u/x0/4qxoPHjx+PXY9pqX9bgMvh/Nz9kpP4pOe1/fYf3axUiMdHLlPpZCNjgtNFAhcHEDxTumNONhHrBduW+vOyY++70WWnPXj98eA4kOt/mj/5E05l9+O4o8ePx67HFqyC+qSSnyselqjZGaVK2TadbFLPWAQ4NBhHqDCCV7OTpo34AlSSylPtIdd2AJZlyzYQrDJ5lcWGNceD80CunPLGGzsfD+7wRb95NevJI5docQ3tgCyr5bGnyaPRlmwNsFELViOOx9loebGNq2moDOKpHLVP5al2cymWHbkfzGXL7kfRl44H9wZy33tvt+PB/Xnf93e+nh5ZlU18wCiRUa9m7kib9LYuOk+hudQNbxwm0AQqbfloimaB2lM5fChex+ylMwuTbfmXQtmWlenZljbdXTLuOxjI/fDDHY4Hjx8/Hrse0zXfPFxbUN1kKqSCCSk50m0Ajtx3ub9XHBKHXESb8iO6E+qGytF4nO0OG3SXzbJlhxBnKtKyl0NwybjvYCD30aMdjgePHz8eu56SVTBbgxJMliQ3Oauwg0QHxXE2Ez/EIReLdQj42Gzb4CLS0YJD9xUx7bsi0vJi5mUbW1QzL0h0PFk17rtiIPfJk52MB48fPx67npJJwyrBa2RCCQRTbGZSPCxTPOiND4G2pYyOQ4h4jINIJh5wFU1NFZt+IsZ59LSnDqBjZ2awbOku+yInunLcd8VA7rNnOxkPHj9+PGY9B0MWJJNozOJmlglvDMXDEozdhQWbgs/U6oBanGzLrdSNNnZFjOkmbi5bNt1lX7JLLhn3vXAg9/h4y/Hg8ePHI9dzQMEkWCgdRfYykYKnkP7D4rIujsujaKPBsB54vE2TS00ccvFY/Tth7JXeq1hz+qgVy04sAJawTsvOknHfCwdyT062HA8eP348Zj0vdoXF4pilKa2BROed+9fyw9rWRXeTFXESMOanvDZfJuJaSXouQdMdDJZtekZcLLvEeK04d8m474UDuaenW44Hjx8/Xns9YYqZpszGWB3AN/4VHw+k7WSFtJ3Qicuqb/NlVmgXWsxh570xg2UwxUw3WfO6B5nOuO8aA7lnZxuPB48fPx6znm1i4bsfcbaptF3zNT78eFPtwi1OaCNOqp1x3zUGcs/PN++AGD1+fMXrSVm2baTtPhPahbPhA71wIHd2bXzRa69nG+3CraTtPivahV/55tXWg8fyRY/9AdsY8VbSdp8V7cKrrgdfM//z6ILQFtJ2nxHtwmuoB4/kf74+gLeRtvvMaBdeSz34+vifx0YG20jbfTa0C6+tHrwe//NmOG0L8EbSdp8R7cLrrQe/996O+ai3ujQOskpTNULa7jOjXXj99eCd8lHvoFiwsbTdZ0a78PrrwTvlo966pLuRtB2fFe3Cm6oHP9kNH/W2FryxtN1nTLvwRurBO+Kj3pWXHidtx2dFu/Bm68Fb81HvykuPlrb7LGkX3mw9eGs+6h1Y8MbSdjegXcguQLjmevDpTQLMxtJ2N6NdyBZu9AbrwVvwUW+LbteULUpCdqm0HTelXbhNPe8G68Gb8lFvVfYfSNuxvrTdTWoXbozAzdaDZzfkorOj1oxVxlIMlpSIlpLrt8D4hrQL17z+c3h6hU/wv4Q/utps4+bm+6P/hIcf0JwQ5oQGPBL0eKPTYEXTW+eL/2DKn73J9BTXYANG57hz1cEMviVf/4tf5b/6C5pTQkMIWoAq7hTpOJjtAM4pxKu5vg5vXeUrtI09/Mo/5H+4z+Mp5xULh7cEm2QbRP2tFIKR7WM3fPf/jZ3SWCqLM2l4NxID5zB72HQXv3jj/8mLR5xXNA5v8EbFQEz7PpRfl1+MB/hlAN65qgDn3wTgH13hK7T59bmP+NIx1SHHU84nLOITt3iVz8mNO+lPrjGAnBFqmioNn1mTyk1ta47R6d4MrX7tjrnjYUpdUbv2rVr6YpVfsGG58AG8Ah9eyUN8CX4WfgV+G8LVWPDGb+Zd4cU584CtqSbMKxauxTg+dyn/LkVgA+IR8KHtejeFKRtTmLLpxN6mYVLjYxwXf5x2VofiZcp/lwKk4wGOpYDnoIZPdg/AAbwMfx0+ge9dgZvYjuqKe4HnGnykYo5TvJbG0Vj12JagRhwKa44H95ShkZa5RyLGGdfYvG7aw1TsF6iapPAS29mNS3NmsTQZCmgTzFwgL3upCTgtBTRwvGMAKrgLn4evwin8+afJRcff+8izUGUM63GOOuAs3tJkw7J4kyoNreqrpO6cYLQeFUd7TTpr5YOTLc9RUUogUOVJQ1GYJaFLAW0oTmKyYS46ZooP4S4EON3xQ5zC8/CX4CnM4c1PE8ApexpoYuzqlP3d4S3OJP8ZDK7cKWNaTlqmgDiiHwl1YsE41w1zT4iRTm3DBqxvOUsbMKKDa/EHxagtnta072ejc3DOIh5ojvh8l3tk1JF/AV6FU6jh3U8HwEazLgdCLYSQ+MYiAI2ltomkzttUb0gGHdSUUgsIYjTzLG3mObX4FBRaYtpDVNZrih9TgTeYOBxsEnN1gOCTM8Bsw/ieMc75w9kuAT6A+/AiHGvN/+Gn4KRkiuzpNNDYhDGFndWRpE6SVfm8U5bxnSgVV2jrg6JCKmneqey8VMFgq2+AM/i4L4RUbfSi27lNXZ7R7W9RTcq/q9fk4Xw3AMQd4I5ifAZz8FcVtm9SAom/dyN4lczJQW/kC42ZrHgcCoIf1oVMKkVItmMBi9cOeNHGLqOZk+QqQmrbc5YmYgxELUUN35z2iohstgfLIFmcMV7s4CFmI74L9+EFmGsi+tGnAOD4Yk9gIpo01Y4cA43BWGygMdr4YZekG3OBIUXXNukvJS8tqa06e+lSDCtnqqMFu6hWHXCF+WaYt64m9QBmNxi7Ioy7D+fa1yHw+FMAcPt7SysFLtoG4PXAk7JOA3aAxBRqUiAdU9Yp5lK3HLSRFtOim0sa8euEt08xvKjYjzeJ2GU7YawexrnKI9tmobInjFXCewpwriY9+RR4aaezFhMhGCppKwom0ChrgFlKzyPKkGlTW1YQrE9HJqu8hKGgMc6hVi5QRq0PZxNfrYNgE64utmRv6KKHRpxf6VDUaOvNP5jCEx5q185My/7RKz69UQu2im5k4/eownpxZxNLwiZ1AZTO2ZjWjkU9uaB2HFn6Q3u0JcsSx/qV9hTEApRzeBLDJQXxYmTnq7bdLa3+uqFrxLJ5w1TehnNHx5ECvCh2g2c3hHH5YsfdaSKddztfjQ6imKFGSyFwlLzxEGPp6r5IevVjk1AMx3wMqi1NxDVjLBiPs9tbsCkIY5we5/ML22zrCScFxnNtzsr9Wcc3CnD+pYO+4VXXiDE0oc/vQQ/fDK3oPESJMYXNmJa/DuloJZkcTpcYE8lIH8Dz8DJMiynNC86Mb2lNaaqP/+L7f2fcE/yP7/Lde8xfgSOdMxvOixZf/9p3+M4hT1+F+zApxg9XfUvYjc8qX2lfOOpK2gNRtB4flpFu9FTKCp2XJRgXnX6olp1zyYjTKJSkGmLE2NjUr1bxFM4AeAAHBUFIeSLqXR+NvH/M9fOnfHzOD2vCSyQJKzfgsCh+yi/Mmc35F2fUrw7miW33W9hBD1vpuUojFphIyvg7aTeoymDkIkeW3XLHmguMzbIAJejN6B5MDrhipE2y6SoFRO/AK/AcHHZHNIfiWrEe/C6cr3f/yOvrQKB+zMM55/GQdLDsR+ifr5Fiuu+/y+M78LzOE5dsNuXC3PYvYWd8NXvphLSkJIasrlD2/HOqQ+RjcRdjKTGWYhhVUm4yxlyiGPuMsZR7sMCHUBeTuNWA7if+ifXgc/hovftHXs/DV+Fvwe+f8shzMiMcweFgBly3//vwJfg5AN4450fn1Hd1Rm1aBLu22Dy3y3H2+OqMemkbGZ4jozcDjJf6596xOLpC0eMTHbKnxLxH27uZ/bMTGs2jOaMOY4m87CfQwF0dw53oa1k80JRuz/XgS+8fX3N9Af4qPIMfzKgCp4H5TDGe9GGeFPzSsZz80SlPTxXjgwJmC45njzgt2vbQ4b4OAdUK4/vWhO8d8v6EE8fMUsfakXbPpFJeLs2ubM/qdm/la3WP91uWhxXHjoWhyRUq2iJ/+5mA73zwIIo+LoZ/SgvIRjAd1IMvvn98PfgOvAJfhhm8scAKVWDuaRaK8aQ9f7vuPDH6Bj47ZXau7rqYJ66mTDwEDU6lLbCjCK0qTXyl5mnDoeNRxanj3FJbaksTk0faXxHxLrssgPkWB9LnA/MFleXcJozzjwsUvUG0X/QCve51qkMDXp9mtcyOy3rwBfdvVJK7D6/ACSzg3RoruIq5UDeESfEmVclDxnniU82vxMLtceD0hGZWzBNPMM/jSPne2OVatiTKUpY5vY7gc0LdUAWeWM5tH+O2I66AOWw9xT2BuyRVLGdoDHUsVRXOo/c+ZdRXvFfnxWyIV4upFLCl9eAL7h8Zv0QH8Ry8pA2cHzQpGesctVA37ZtklBTgHjyvdSeKY/RZw/kJMk0Y25cSNRWSigQtlULPTw+kzuJPeYEkXjQRpoGZobYsLF79pyd1dMRHInbgFTZqNLhDqiIsTNpoex2WLcy0/X6rHcdMMQvFSd5dWA++4P7xv89deACnmr36uGlL69bRCL6BSZsS6c0TU2TKK5gtWCzgAOOwQcurqk9j8whvziZSMLcq5hbuwBEsYjopUBkqw1yYBGpLA97SRElEmx5MCInBY5vgLk94iKqSWmhIGmkJ4Bi9m4L645J68LyY4wsFYBfUg5feP/6gWWm58IEmKQM89hq7KsZNaKtP5TxxrUZZVkNmMJtjbKrGxLNEbHPJxhqy7lAmbC32ZqeF6lTaknRWcYaFpfLUBh/rwaQycCCJmW15Kstv6jRHyJFry2C1ahkkIW0LO75s61+owxK1y3XqweX9m5YLM2DPFeOjn/iiqCKJ+yKXF8t5Yl/kNsqaSCryxPq5xWTFIaP8KSW0RYxqupaUf0RcTNSSdJZGcKYdYA6kdtrtmyBckfKXwqk0pHpUHlwWaffjNRBYFPUDWa8e3Lt/o0R0CdisKDM89cX0pvRHEfM8ca4t0s2Xx4kgo91MPQJ/0c9MQYq0co8MBh7bz1fio0UUHLR4aAIOvOmoYO6kwlEVODSSTliWtOtH6sPkrtctF9ZtJ9GIerBskvhdVS5cFNv9s1BU0AbdUgdK4FG+dRnjFmDTzniRMdZO1QhzMK355vigbdkpz9P6qjUGE5J2qAcXmwJ20cZUiAD0z+pGMx6xkzJkmEf40Hr4qZfVg2XzF9YOyoV5BjzVkUJngKf8lgNYwKECEHrCNDrWZzMlflS3yBhr/InyoUgBc/lKT4pxVrrC6g1YwcceK3BmNxZcAtz3j5EIpqguh9H6wc011YN75cKDLpFDxuwkrPQmUwW4KTbj9mZTwBwLq4aQMUZbHm1rylJ46dzR0dua2n3RYCWZsiHROeywyJGR7mXKlpryyCiouY56sFkBWEnkEB/raeh/Sw4162KeuAxMQpEkzy5alMY5wamMsWKKrtW2WpEWNnReZWONKWjrdsKZarpFjqCslq773PLmEhM448Pc3+FKr1+94vv/rfw4tEcu+lKTBe4kZSdijBrykwv9vbCMPcLQTygBjzVckSLPRVGslqdunwJ4oegtFOYb4SwxNgWLCmD7T9kVjTv5YDgpo0XBmN34Z/rEHp0sgyz7lngsrm4lvMm2Mr1zNOJYJ5cuxuQxwMGJq/TP5emlb8fsQBZviK4t8hFL+zbhtlpwaRSxQRWfeETjuauPsdGxsBVdO7nmP4xvzSoT29pRl7kGqz+k26B3Oy0YNV+SXbbQas1ctC/GarskRdFpKczVAF1ZXnLcpaMuzVe6lZ2g/1ndcvOVgRG3sdUAY1bKD6achijMPdMxV4muKVorSpiDHituH7rSTs7n/4y5DhRXo4FVBN4vO/zbAcxhENzGbHCzU/98Mcx5e7a31kWjw9FCe/zNeYyQjZsWb1uc7U33pN4Mji6hCLhivqfa9Ss6xLg031AgfesA/l99m9fgvnaF9JoE6bYKmkGNK3aPbHB96w3+DnxFm4hs0drLsk7U8kf/N/CvwQNtllna0rjq61sH8L80HAuvwH1tvBy2ChqWSCaYTaGN19sTvlfzFD6n+iKTbvtayfrfe9ueWh6GJFoxLdr7V72a5ZpvHcCPDzma0wTO4EgbLyedxstO81n57LYBOBzyfsOhUKsW1J1BB5vr/tz8RyqOFylQP9Tvst2JALsC5lsH8PyQ40DV4ANzYa4dedNiKNR1s+x2wwbR7q4/4cTxqEk4LWDebfisuo36JXLiWFjOtLrlNWh3K1rRS4xvHcDNlFnNmWBBAl5SWaL3oPOfnvbr5pdjVnEaeBJSYjuLEkyLLsWhKccadmOphZkOPgVdalj2QpSmfOsADhMWE2ZBu4+EEJI4wKTAuCoC4xwQbWXBltpxbjkXJtKxxabo9e7tyhlgb6gNlSbUpMh+l/FaqzVwewGu8BW1Zx7pTpQDJUjb8tsUTW6+GDXbMn3mLbXlXJiGdggxFAoUrtPS3wE4Nk02UZG2OOzlk7fRs7i95QCLo3E0jtrjnM7SR3uS1p4qtS2nJ5OwtQVHgOvArLBFijZUV9QtSl8dAY5d0E0hM0w3HS2DpIeB6m/A1+HfhJcGUq4sOxH+x3f5+VO+Ds9rYNI7zPXOYWPrtf8bYMx6fuOAX5jzNR0PdsuON+X1f7EERxMJJoU6GkTEWBvVolVlb5lh3tKCg6Wx1IbaMDdJ+9sUCc5KC46hKGCk3IVOS4TCqdBNfUs7Kd4iXf2RjnT/LLysJy3XDcHLh/vde3x8DoGvwgsa67vBk91G5Pe/HbOe7xwym0NXbtiuuDkGO2IJDh9oQvJ4cY4vdoqLDuoH9Zl2F/ofsekn8lkuhIlhQcffUtSjytFyp++p6NiE7Rqx/lodgKVoceEp/CP4FfjrquZaTtj2AvH5K/ywpn7M34K/SsoYDAdIN448I1/0/wveW289T1/lX5xBzc8N5IaHr0XMOQdHsIkDuJFifj20pBm5jzwUv9e2FhwRsvhAbalCIuIw3bhJihY3p6nTFFIZgiSYjfTf3aXuOjmeGn4bPoGvwl+CFzTRczBIuHBEeImHc37/lGfwZR0cXzVDOvaKfNHvwe+suZ771K/y/XcBlsoN996JpBhoE2toYxOznNEOS5TJc6Id5GEXLjrWo+LEWGNpPDU4WAwsIRROu+1vM+0oW37z/MBN9kqHnSArwPfgFJ7Cq/Ai3Ie7g7ncmI09v8sjzw9mzOAEXoIHxURueaAce5V80f/DOuuZwHM8vsMb5wBzOFWM7wymTXPAEvm4vcFpZ2ut0VZRjkiP2MlmLd6DIpbGSiHOjdnUHN90hRYmhTnmvhzp1iKDNj+b7t5hi79lWGwQ+HN9RsfFMy0FXbEwhfuczKgCbyxYwBmcFhhvo/7a44v+i3XWcwDP86PzpGQYdWh7csP5dBvZ1jNzdxC8pBGuxqSW5vw40nBpj5JhMwvOzN0RWqERHMr4Lv1kWX84xLR830G3j6yqZ1a8UstTlW+qJPOZ+sZ7xZPKTJLhiNOAFd6tk+jrTH31ncLOxid8+nzRb128HhUcru/y0Wn6iT254YPC6FtVSIMoW2sk727AhvTtrWKZTvgsmckfXYZWeNRXx/3YQ2OUxLDrbHtN11IwrgXT6c8dATDwLniYwxzO4RzuQqTKSC5gAofMZ1QBK3zQ4JWobFbcvJm87FK+6JXrKahLn54m3p+McXzzYtP8VF/QpJuh1OwieElEoI1pRxPS09FBrkq2tWCU59+HdhNtTIqKm8EBrw2RTOEDpG3IKo2Y7mFdLm3ZeVjYwVw11o/oznceMve4CgMfNym/utA/d/ILMR7gpXzRy9eDsgLcgbs8O2Va1L0zzIdwGGemTBuwROHeoMShkUc7P+ISY3KH5ZZeWqO8mFTxQYeXTNuzvvK5FGPdQfuu00DwYFY9dyhctEt+OJDdnucfpmyhzUJzfsJjr29l8S0bXBfwRS9ZT26tmMIdZucch5ZboMz3Nio3nIOsYHCGoDT4kUA9MiXEp9Xsui1S8th/kbWIrMBxDGLodWUQIWcvnXy+9M23xPiSMOiRPqM+YMXkUN3gXFrZJwXGzUaMpJfyRS9ZT0lPe8TpScuRlbMHeUmlaKDoNuy62iWNTWNFYjoxFzuJs8oR+RhRx7O4SVNSXpa0ZJQ0K1LAHDQ+D9IepkMXpcsq5EVCvClBUIzDhDoyKwDw1Lc59GbTeORivugw1IcuaEOaGWdNm+Ps5fQ7/tm0DjMegq3yM3vb5j12qUId5UZD2oxDSEWOZMSqFl/W+5oynWDa/aI04tJRQ2eTXusg86SQVu/nwSYwpW6wLjlqIzwLuxGIvoAvul0PS+ZNz0/akp/pniO/8JDnGyaCkzbhl6YcqmK/69prxPqtpx2+Km9al9sjL+rwMgHw4jE/C8/HQ3m1vBuL1fldbzd8mOueVJ92syqdEY4KJjSCde3mcRw2TA6szxedn+zwhZMps0XrqEsiUjnC1hw0TELC2Ek7uAAdzcheXv1BYLagspxpzSAoZZUsIzIq35MnFQ9DOrlNB30jq3L4pkhccKUAA8/ocvN1Rzx9QyOtERs4CVsJRK/DF71kPYrxYsGsm6RMh4cps5g1DOmM54Ly1ii0Hd3Y/BMk8VWFgBVmhqrkJCPBHAolwZaWzLR9Vb7bcWdX9NyUYE+uB2BKfuaeBUcjDljbYVY4DdtsVWvzRZdWnyUzDpjNl1Du3aloAjVJTNDpcIOVVhrHFF66lLfJL1zJr9PQ2nFJSBaKoDe+sAvLufZVHVzYh7W0h/c6AAZ+7Tvj6q9j68G/cTCS/3n1vLKHZwNi+P+pS0WkZNMBMUl+LDLuiE4omZy71r3UFMwNJV+VJ/GC5ixVUkBStsT4gGKh0Gm4Oy3qvq7Lbmq24nPdDuDR9deR11XzP4vFu3TYzfnIyiSVmgizUYGqkIXNdKTY9pgb9D2Ix5t0+NHkVzCdU03suWkkVZAoCONCn0T35gAeW38de43mf97sMOpSvj4aa1KYUm58USI7Wxxes03bAZdRzk6UtbzMaCQ6IxO0dy7X+XsjoD16hpsBeGz9dfzHj+R/Hp8nCxZRqkEDTaCKCSywjiaoMJ1TITE9eg7Jqnq8HL6gDwiZb0u0V0Rr/rmvqjxKuaLCX7ZWXTvAY+uvm3z8CP7nzVpngqrJpZKwWnCUjIviYVlirlGOzPLI3SMVyp/elvBUjjDkNhrtufFFErQ8pmdSlbK16toBHlt/HV8uHMX/vEGALkV3RJREiSlopxwdMXOZPLZ+ix+kAHpMKIk8UtE1ygtquttwxNhphrIZ1IBzjGF3IIGxGcBj6q8bHJBG8T9vdsoWrTFEuebEZuVxhhClH6P5Zo89OG9fwHNjtNQTpD0TG9PJLEYqvEY6Rlxy+ZZGfL0Aj62/bnQCXp//eeM4KzfQVJbgMQbUjlMFIm6TpcfWlZje7NBSV6IsEVmumWIbjiloUzQX9OzYdo8L1wjw2PrrpimONfmfNyzKklrgnEkSzT5QWYQW40YShyzqsRmMXbvVxKtGuYyMKaU1ugenLDm5Ily4iT14fP11Mx+xJv+zZ3MvnfdFqxU3a1W/FTB4m3Qfsyc1XUcdVhDeUDZXSFHHLQj/Y5jtC7ZqM0CXGwB4bP11i3LhOvzPGygYtiUBiwQV/4wFO0majijGsafHyRLu0yG6q35cL1rOpVxr2s5cM2jJYMCdc10Aj6q/blRpWJ//+dmm5psMl0KA2+AFRx9jMe2WbC4jQxnikd4DU8TwUjRVacgdlhmr3bpddzuJ9zXqr2xnxJfzP29RexdtjDVZqzkqa6PyvcojGrfkXiJ8SEtml/nYskicv0ivlxbqjemwUjMw5evdg8fUX9nOiC/lf94Q2i7MURk9nW1MSj5j8eAyV6y5CN2S6qbnw3vdA1Iwq+XOSCl663udN3IzLnrt+us25cI1+Z83SXQUldqQq0b5XOT17bGpLd6ssN1VMPf8c+jG8L3NeCnMdF+Ra3fRa9dft39/LuZ/3vwHoHrqGmQFafmiQw6eyzMxS05K4bL9uA+SKUQzCnSDkqOGokXyJvbgJ/BHI+qvY69//4rl20NsmK2ou2dTsyIALv/91/8n3P2Aao71WFGi8KKv1fRC5+J67Q/507/E/SOshqN5TsmYIjVt+kcjAx98iz/4SaojbIV1rexE7/C29HcYD/DX4a0rBOF5VTu7omsb11L/AWcVlcVZHSsqGuXLLp9ha8I//w3Mv+T4Ew7nTBsmgapoCrNFObIcN4pf/Ob/mrvHTGqqgAupL8qWjWPS9m/31jAe4DjA+4+uCoQoT/zOzlrNd3qd4SdphFxsUvYwGWbTWtISc3wNOWH+kHBMfc6kpmpwPgHWwqaSUG2ZWWheYOGQGaHB+eQ/kn6b3pOgLV+ODSn94wDvr8Bvb70/LLuiPPEr8OGVWfDmr45PZyccEmsVXZGe1pRNX9SU5+AVQkNTIVPCHF/jGmyDC9j4R9LfWcQvfiETmgMMUCMN1uNCakkweZsowdYobiMSlnKA93u7NzTXlSfe+SVbfnPQXmg9LpYAQxpwEtONyEyaueWM4FPjjyjG3uOaFmBTWDNgBXGEiQpsaWhnAqIijB07Dlsy3fUGeP989xbWkyf+FF2SNEtT1E0f4DYYVlxFlbaSMPIRMk/3iMU5pME2SIWJvjckciebkQuIRRyhUvkHg/iUljG5kzVog5hV7vIlCuBrmlhvgPfNHQM8lCf+FEGsYbMIBC0qC9a0uuy2wLXVbLBaP5kjHokCRxapkQyzI4QEcwgYHRZBp+XEFTqXFuNVzMtjXLJgX4gAid24Hjwc4N3dtVSe+NNiwTrzH4WVUOlDobUqr1FuAgYllc8pmzoVrELRHSIW8ViPxNy4xwjBpyR55I6J220qQTZYR4guvUICJiSpr9gFFle4RcF/OMB7BRiX8sSfhpNSO3lvEZCQfLUVTKT78Ek1LRLhWN+yLyTnp8qWUZ46b6vxdRGXfHVqx3eI75YaLa4iNNiK4NOW7wPW6lhbSOF9/M9qw8e/aoB3d156qTzxp8pXx5BKAsYSTOIIiPkp68GmTq7sZtvyzBQaRLNxIZ+paozHWoLFeExIhRBrWitHCAHrCF7/thhD8JhYz84wg93QRV88wLuLY8zF8sQ36qF1J455bOlgnELfshKVxYOXKVuKx0jaj22sczTQqPqtV/XDgpswmGTWWMSDw3ssyUunLLrVPGjYRsH5ggHeHSWiV8kT33ycFSfMgkoOK8apCye0J6VW6GOYvffgU9RWsukEi2kUV2nl4dOYUzRik9p7bcA4ggdJ53LxKcEe17B1R8eqAd7dOepV8sTXf5lhejoL85hUdhDdknPtKHFhljOT+bdq0hxbm35p2nc8+Ja1Iw+tJykgp0EWuAAZYwMVwac5KzYMslhvgHdHRrxKnvhTYcfKsxTxtTETkjHO7rr3zjoV25lAQHrqpV7bTiy2aXMmUhTBnKS91jhtR3GEoF0oLnWhWNnYgtcc4N0FxlcgT7yz3TgNIKkscx9jtV1ZKpWW+Ub1tc1eOv5ucdgpx+FJy9pgbLE7xDyXb/f+hLHVGeitHOi6A7ybo3sF8sS7w7cgdk0nJaOn3hLj3uyD0Zp5pazFIUXUpuTTU18d1EPkDoX8SkmWTnVIozEdbTcZjoqxhNHf1JrSS/AcvHjZ/SMHhL/7i5z+POsTUh/8BvNfYMTA8n+yU/MlTZxSJDRStqvEuLQKWwDctMTQogUDyQRoTQG5Kc6oQRE1yV1jCA7ri7jdZyK0sYTRjCR0Hnnd+y7nHxNgTULqw+8wj0mQKxpYvhjm9uSUxg+TTy7s2GtLUGcywhXSKZN275GsqlclX90J6bRI1aouxmgL7Q0Nen5ziM80SqMIo8cSOo+8XplT/5DHNWsSUr/6lLN/QQ3rDyzLruEW5enpf7KqZoShEduuSFOV7DLX7Ye+GmXb6/hnNNqKsVXuMDFpb9Y9eH3C6NGEzuOuI3gpMH/I6e+zDiH1fXi15t3vA1czsLws0TGEtmPEJdiiFPwlwKbgLHAFk4P6ZyPdymYYHGE0dutsChQBl2JcBFlrEkY/N5bQeXQ18gjunuMfMfsBlxJSx3niO485fwO4fGD5T/+3fPQqkneWVdwnw/3bMPkW9Wbqg+iC765Zk+xcT98ibKZc2EdgHcLoF8cSOo/Oc8fS+OyEULF4g4sJqXVcmfMfsc7A8v1/yfGXmL9I6Fn5pRwZhsPv0TxFNlAfZCvG+Oohi82UC5f/2IsJo0cTOm9YrDoKhFPEUr/LBYTUNht9zelHXDqwfPCIw4owp3mOcIQcLttWXFe3VZ/j5H3cIc0G6oPbCR+6Y2xF2EC5cGUm6wKC5tGEzhsWqw5hNidUiKX5gFWE1GXh4/Qplw4sVzOmx9QxU78g3EF6wnZlEN4FzJ1QPSLEZz1KfXC7vd8ssGdIbNUYpVx4UapyFUHzJoTOo1McSkeNn1M5MDQfs4qQuhhX5vQZFw8suwWTcyYTgioISk2YdmkhehG4PkE7w51inyAGGaU+uCXADabGzJR1fn3lwkty0asIo8cROm9Vy1g0yDxxtPvHDAmpu+PKnM8Ix1wwsGw91YJqhteaWgjYBmmQiebmSpwKKzE19hx7jkzSWOm66oPbzZ8Yj6kxVSpYjVAuvLzYMCRo3oTQecOOjjgi3NQ4l9K5/hOGhNTdcWVOTrlgYNkEXINbpCkBRyqhp+LdRB3g0OU6rMfW2HPCFFMV9nSp+uB2woepdbLBuJQyaw/ZFysXrlXwHxI0b0LovEkiOpXGA1Ijagf+KUNC6rKNa9bQnLFqYNkEnMc1uJrg2u64ELPBHpkgWbmwKpJoDhMwNbbGzAp7Yg31wS2T5rGtzit59PrKhesWG550CZpHEzpv2NGRaxlNjbMqpmEIzygJqQfjypycs2pg2cS2RY9r8HUqkqdEgKTWtWTKoRvOBPDYBltja2SO0RGjy9UHtxwRjA11ujbKF+ti5cIR9eCnxUg6owidtyoU5tK4NLji5Q3HCtiyF2IqLGYsHViOXTXOYxucDqG0HyttqYAKqYo3KTY1ekyDXRAm2AWh9JmsVh/ccg9WJ2E8YjG201sPq5ULxxX8n3XLXuMInbft2mk80rRGjCGctJ8/GFdmEQ9Ug4FlE1ll1Y7jtiraqm5Fe04VV8lvSVBL8hiPrfFVd8+7QH3Qbu2ipTVi8cvSGivc9cj8yvH11YMHdNSERtuOslM97feYFOPKzGcsI4zW0YGAbTAOaxCnxdfiYUmVWslxiIblCeAYr9VYR1gM7GmoPrilunSxxeT3DN/2eBQ9H11+nk1adn6VK71+5+Jfct4/el10/7KBZfNryUunWSCPxPECk1rdOv1WVSrQmpC+Tl46YD3ikQYcpunSQgzVB2VHFhxHVGKDgMEY5GLlQnP7FMDzw7IacAWnO6sBr12u+XanW2AO0wQ8pknnFhsL7KYIqhkEPmEXFkwaN5KQphbkUmG72wgw7WSm9RiL9QT925hkjiVIIhphFS9HKI6/8QAjlpXqg9W2C0apyaVDwKQwrwLY3j6ADR13ZyUNByQXHQu6RY09Hu6zMqXRaNZGS/KEJs0cJEe9VH1QdvBSJv9h09eiRmy0V2uJcqHcShcdvbSNg5fxkenkVprXM9rDVnX24/y9MVtncvbKY706anNl3ASll9a43UiacVquXGhvq4s2FP62NGKfQLIQYu9q1WmdMfmUrDGt8eDS0cXozH/fjmUH6Jruvm50hBDSaEU/2Ru2LEN/dl006TSc/g7tfJERxGMsgDUEr104pfWH9lQaN+M4KWQjwZbVc2rZVNHsyHal23wZtIs2JJqtIc/WLXXRFCpJkfE9jvWlfFbsNQ9pP5ZBS0zKh4R0aMFj1IjTcTnvi0Zz2rt7NdvQb2mgbju1plsH8MmbnEk7KbK0b+wC2iy3aX3szW8xeZvDwET6hWZYwqTXSSG+wMETKum0Dq/q+x62gt2ua2ppAo309TRk9TPazfV3qL9H8z7uhGqGqxNVg/FKx0HBl9OVUORn8Q8Jx9gFttGQUDr3tzcXX9xGgN0EpzN9mdZ3GATtPhL+CjxFDmkeEU6x56kqZRusLzALXVqkCN7zMEcqwjmywDQ6OhyUe0Xao1Qpyncrg6wKp9XfWDsaZplElvQ/b3sdweeghorwBDlHzgk1JmMc/wiERICVy2VJFdMjFuLQSp3S0W3+sngt2njwNgLssFGVQdJ0tu0KH4ky1LW4yrbkuaA6Iy9oz/qEMMXMMDWyIHhsAyFZc2peV9hc7kiKvfULxCl9iddfRK1f8kk9qvbdOoBtOg7ZkOZ5MsGrSHsokgLXUp9y88smniwWyuFSIRVmjplga3yD8Uij5QS1ZiM4U3Qw5QlSm2bXjFe6jzzBFtpg+/YBbLAWG7OPynNjlCw65fukGNdkJRf7yM1fOxVzbxOJVocFoYIaGwH22mIQkrvu1E2nGuebxIgW9U9TSiukPGU+Lt++c3DJPKhyhEEbXCQLUpae2exiKy6tMPe9mDRBFCEMTWrtwxN8qvuGnt6MoihKWS5NSyBhbH8StXoAz8PLOrRgLtOT/+4vcu+7vDLnqNvztOq7fmd8sMmY9Xzn1zj8Dq8+XVdu2Nv0IIySgEdQo3xVHps3Q5i3fLFsV4aiqzAiBhbgMDEd1uh8qZZ+lwhjkgokkOIv4xNJmyncdfUUzgB4oFMBtiu71Xumpz/P+cfUP+SlwFExwWW62r7b+LSPxqxn/gvMZ5z9C16t15UbNlq+jbGJtco7p8wbYlL4alSyfWdeuu0j7JA3JFNuVAwtst7F7FhWBbPFNKIUORndWtLraFLmMu7KFVDDOzqkeaiN33YAW/r76wR4XDN/yN1z7hejPau06EddkS/6XThfcz1fI/4K736fO48vlxt2PXJYFaeUkFS8U15XE3428xdtn2kc8GQlf1vkIaNRRnOMvLTWrZbElEHeLWi1o0dlKPAh1MVgbbVquPJ5+Cr8LU5/H/+I2QlHIU2ClXM9G8v7Rr7oc/hozfUUgsPnb3D+I+7WF8kNO92GY0SNvuxiE+2Bt8prVJTkzE64sfOstxuwfxUUoyk8VjcTlsqe2qITSFoSj6Epd4KsT6BZOWmtgE3hBfir8IzZDwgV4ZTZvD8VvPHERo8v+vL1DASHTz/i9OlKueHDjK5Rnx/JB1Vb1ioXdBra16dmt7dgik10yA/FwJSVY6XjA3oy4SqM2frqDPPSRMex9qs3XQtoWxMj7/Er8GWYsXgjaVz4OYumP2+9kbxvny/6kvWsEBw+fcb5bInc8APdhpOSs01tEqIkoiZjbAqKMruLbJYddHuHFRIyJcbdEdbl2sVLaySygunutBg96Y2/JjKRCdyHV+AEFtTvIpbKIXOamknYSiB6KV/0JetZITgcjjk5ZdaskBtWO86UF0ap6ozGXJk2WNiRUlCPFir66lzdm/SLSuK7EUdPz8f1z29Skq6F1fXg8+5UVR6bszncP4Tn4KUkkdJ8UFCY1zR1i8RmL/qQL3rlei4THG7OODlnKko4oI01kd3CaM08Ia18kC3GNoVaO9iDh+hWxSyTXFABXoau7Q6q9OxYg/OVEMw6jdbtSrJ9cBcewGmaZmg+bvkUnUUaGr+ZfnMH45Ivevl61hMcXsxYLFTu1hTm2zViCp7u0o5l+2PSUh9bDj6FgYypufBDhqK2+oXkiuHFHR3zfj+9PtA8oR0xnqX8qn+sx3bFODSbbF0X8EUvWQ8jBIcjo5bRmLOljDNtcqNtOe756h3l0VhKa9hDd2l1eqmsnh0MNMT/Cqnx6BInumhLT8luljzQ53RiJeA/0dxe5NK0o2fA1+GLXr6eNQWHNUOJssQaTRlGpLHKL9fD+IrQzTOMZS9fNQD4AnRNVxvTdjC+fJdcDDWQcyB00B0t9BDwTxXgaAfzDZ/DBXzRnfWMFRwuNqocOmX6OKNkY63h5n/fFcB28McVHqnXZVI27K0i4rDLNE9lDKV/rT+udVbD8dFFu2GGZ8mOt0kAXcoX3ZkIWVtw+MNf5NjR2FbivROHmhV1/pj2egv/fMGIOWTIWrV3Av8N9imV9IWml36H6cUjqEWNv9aNc+veb2sH46PRaHSuMBxvtW+twxctq0z+QsHhux8Q7rCY4Ct8lqsx7c6Sy0dl5T89rIeEuZKoVctIk1hNpfavER6yyH1Vvm3MbsUHy4ab4hWr/OZPcsRBphnaV65/ZcdYPNNwsjN/djlf9NqCw9U5ExCPcdhKxUgLSmfROpLp4WSUr8ojdwbncbvCf+a/YzRaEc6QOvXcGO256TXc5Lab9POvB+AWY7PigWYjzhifbovuunzRawsO24ZqQQAqguBtmpmPB7ysXJfyDDaV/aPGillgz1MdQg4u5MYaEtBNNHFjkRlSpd65lp4hd2AVPTfbV7FGpyIOfmNc/XVsPfg7vzaS/3nkvLL593ANLvMuRMGpQIhiF7kUEW9QDpAUbTWYBcbp4WpacHHY1aacqQyjGZS9HI3yCBT9kUZJhVOD+zUDvEH9ddR11fzPcTDQ5TlgB0KwqdXSavk9BC0pKp0WmcuowSw07VXmXC5guzSa4p0UvRw2lbDiYUx0ExJJRzWzi6Gm8cnEkfXXsdcG/M/jAJa0+bmCgdmQ9CYlNlSYZOKixmRsgiFxkrmW4l3KdFKv1DM8tk6WxPYJZhUUzcd8Kdtgrw/gkfXXDT7+avmfVak32qhtkg6NVdUS5wgkru1YzIkSduTW1FDwVWV3JQVJVuieTc0y4iDpFwc7/BvSalvKdQM8sv662cevz/+8sQVnjVAT0W2wLllw1JiMhJRxgDjCjLQsOzSFSgZqx7lAW1JW0e03yAD3asC+GD3NbQhbe+mN5GXH1F83KDOM4n/e5JIuH4NpdQARrFPBVptUNcjj4cVMcFSRTE2NpR1LEYbYMmfWpXgP9KejaPsLUhuvLCsVXznAG9dfx9SR1ud/3hZdCLHb1GMdPqRJgqDmm76mHbvOXDtiO2QPUcKo/TWkQ0i2JFXpBoo7vij1i1Lp3ADAo+qvG3V0rM//vFnnTE4hxd5Ka/Cor5YEdsLVJyKtDgVoHgtW11pWSjolPNMnrlrVj9Fv2Qn60twMwKPqr+N/wvr8z5tZcDsDrv06tkqyzESM85Ycv6XBWA2birlNCXrI6VbD2lx2L0vQO0QVTVVLH4SE67fgsfVXv8n7sz7/85Z7cMtbE6f088wSaR4kCkCm10s6pKbJhfqiUNGLq+0gLWC6eUAZFPnLjwqtKd8EwGvWX59t7iPW4X/eAN1svgRVSY990YZg06BD1ohLMtyFTI4pKTJsS9xREq9EOaPWiO2gpms7397x6nQJkbh+Fz2q/rqRROX6/M8bJrqlVW4l6JEptKeUFuMYUbtCQ7CIttpGc6MY93x1r1vgAnRXvY5cvwWPqb9uWQm+lP95QxdNMeWhOq1x0Db55C7GcUv2ZUuN6n8iKzsvOxibC//Yfs9Na8r2Rlz02vXXDT57FP/zJi66/EJSmsJKa8QxnoqW3VLQ+jZVUtJwJ8PNX1NQCwfNgdhhHD9on7PdRdrdGPF28rJr1F+3LBdeyv+8yYfLoMYet1vX4upNAjVvwOUWnlNXJXlkzk5Il6kqeoiL0C07qno+/CYBXq/+utlnsz7/Mzvy0tmI4zm4ag23PRN3t/CWryoUVJGm+5+K8RJ0V8Hc88/XHUX/HfiAq7t+BH+x6v8t438enWmdJwFA6ZINriLGKv/95f8lT9/FnyA1NMVEvQyaXuu+gz36f/DD73E4pwqpLcvm/o0Vle78n//+L/NPvoefp1pTJye6e4A/D082FERa5/opeH9zpvh13cNm19/4v/LDe5xMWTi8I0Ta0qKlK27AS/v3/r+/x/2GO9K2c7kVMonDpq7//jc5PKCxeNPpFVzaRr01wF8C4Pu76hXuX18H4LduTr79guuFD3n5BHfI+ZRFhY8w29TYhbbLi/bvBdqKE4fUgg1pBKnV3FEaCWOWyA+m3WpORZr/j+9TKJtW8yBTF2/ZEODI9/QavHkVdGFp/Pjn4Q+u5hXapsP5sOH+OXXA1LiKuqJxiMNbhTkbdJTCy4llEt6NnqRT4dhg1V3nbdrm6dYMecA1yTOL4PWTE9L5VzPFlLBCvlG58AhehnN4uHsAYinyJ+AZ/NkVvELbfOBUuOO5syBIEtiqHU1k9XeISX5bsimrkUUhnGDxourN8SgUsCZVtKyGbyGzHXdjOhsAvOAswSRyIBddRdEZWP6GZhNK/yjwew9ehBo+3jEADu7Ay2n8mDc+TS7awUHg0OMzR0LABhqLD4hJEh/BEGyBdGlSJoXYXtr+3HS4ijzVpgi0paWXtdruGTknXBz+11qT1Q2inxaTzQCO46P3lfLpyS4fou2PH/PupwZgCxNhGlj4IvUuWEsTkqMWm6i4xCSMc9N1RDQoCVcuGItJ/MRWefais+3synowi/dESgJjkilnWnBTGvRWmaw8oR15257t7CHmCf8HOn7cwI8+NQBXMBEmAa8PMRemrNCEhLGEhDQKcGZWS319BX9PFBEwGTbRBhLbDcaV3drFcDqk5kCTd2JF1Wp0HraqBx8U0wwBTnbpCadwBA/gTH/CDrcCs93LV8E0YlmmcyQRQnjBa8JESmGUfIjK/7fkaDJpmD2QptFNVJU1bbtIAjjWQizepOKptRjbzR9Kag6xZmMLLjHOtcLT3Tx9o/0EcTT1XN3E45u24AiwEypDJXihKjQxjLprEwcmRKclaDNZCVqr/V8mYWyFADbusiY5hvgFoU2vio49RgJLn5OsReRFN6tabeetiiy0V7KFHT3HyZLx491u95sn4K1QQSPKM9hNT0wMVvAWbzDSVdrKw4zRjZMyJIHkfq1VAVCDl/bUhNKlGq0zGr05+YAceXVPCttVk0oqjVwMPt+BBefx4yPtGVkUsqY3CHDPiCM5ngupUwCdbkpd8kbPrCWHhkmtIKLEetF2499eS1jZlIPGYnlcPXeM2KD9vLS0bW3ktYNqUllpKLn5ZrsxlIzxvDu5eHxzGLctkZLEY4PgSOg2IUVVcUONzUDBEpRaMoXNmUc0tFZrTZquiLyKxrSm3DvIW9Fil+AkhXu5PhEPx9mUNwqypDvZWdKlhIJQY7vn2OsnmBeOWnYZ0m1iwbbw1U60by5om47iHRV6fOgzjMf/DAZrlP40Z7syxpLK0lJ0gqaAK1c2KQKu7tabTXkLFz0sCftuwX++MyNeNn68k5Buq23YQhUh0SNTJa1ioQ0p4nUG2y0XilF1JqODqdImloPS4Bp111DEWT0jJjVv95uX9BBV7eB3bUWcu0acSVM23YZdd8R8UbQUxJ9wdu3oMuhdt929ME+mh6JXJ8di2RxbTi6TbrDquqV4aUKR2iwT6aZbyOwEXN3DUsWr8Hn4EhwNyHuXHh7/pdaUjtR7vnDh/d8c9xD/s5f501eQ1+CuDiCvGhk1AN/4Tf74RfxPwD3toLarR0zNtsnPzmS64KIRk861dMWCU8ArasG9T9H0ZBpsDGnjtAOM2+/LuIb2iIUGXNgl5ZmKD/Tw8TlaAuihaFP5yrw18v4x1898zIdP+DDAX1bM3GAMvPgRP/cJn3zCW013nrhHkrITyvYuwOUkcHuKlRSW5C6rzIdY4ppnF7J8aAJbQepgbJYBjCY9usGXDKQxq7RZfh9eg5d1UHMVATRaD/4BHK93/1iAgYZ/+jqPn8Dn4UExmWrpa3+ZOK6MvM3bjwfzxNWA2dhs8+51XHSPJiaAhGSpWevEs5xHLXcEGFXYiCONySH3fPWq93JIsBiSWvWyc3CAN+EcXoT7rCSANloPPoa31rt/5PUA/gp8Q/jDD3hyrjzlR8VkanfOvB1XPubt17vzxAfdSVbD1pzAnfgyF3ycadOTOTXhpEUoLC1HZyNGW3dtmjeXgr2r56JNmRwdNNWaQVBddd6rh4MhviEB9EFRD/7RGvePvCbwAL4Mx/D6M541hHO4D3e7g6PafdcZVw689z7NGTwo5om7A8sPhccT6qKcl9NJl9aM/9kX+e59Hh1yPqGuCCZxuITcsmNaJ5F7d0q6J3H48TO1/+M57085q2icdu2U+W36Ldllz9Agiv4YGljoEN908EzvDOrBF98/vtJwCC/BF2AG75xxEmjmMIcjxbjoaxqOK3/4hPOZzhMPBpYPG44CM0dTVm1LjLtUWWVz1Bcf8tEx0zs8O2A2YVHRxKYOiy/aOVoAaMu0i7ubu43njjmd4ibMHU1sIDHaQNKrZND/FZYdk54oCXetjq7E7IVl9eAL7t+oHnwXXtLx44czzoRFHBztYVwtH1d+NOMkupZ5MTM+gUmq90X+Bh9zjRlmaQ+m7YMqUL/veemcecAtOJ0yq1JnVlN27di2E0+Klp1tAJ4KRw1eMI7aJjsO3R8kPSI3fUFXnIOfdQe86sIIVtWDL7h//Ok6vj8vwDk08NEcI8zz7OhBy+WwalzZeZ4+0XniRfst9pAJqQHDGLzVQ2pheZnnv1OWhwO43/AgcvAEXEVVpa4db9sGvNK8wjaENHkfFQ4Ci5i7dqnQlPoLQrHXZDvO3BIXZbJOBrOaEbML6sFL798I4FhKihjHMsPjBUZYCMFr6nvaArxqXPn4lCa+cHfSa2cP27g3Z3ziYTRrcbQNGLQmGF3F3cBdzzzX7AILx0IB9rbwn9kx2G1FW3Inic+ZLIsVvKR8Zwfj0l1fkqo8LWY1M3IX14OX3r9RKTIO+d9XzAI8qRPGPn/4NC2n6o4rN8XJ82TOIvuVA8zLKUHRFgBCetlDZlqR1gLKjS39xoE7Bt8UvA6BxuEDjU3tFsEijgA+615tmZkXKqiEENrh41iLDDZNq4pKTWR3LZfnos81LOuNa15cD956vLMsJd1rqYp51gDUQqMYm2XsxnUhD2jg1DM7SeuJxxgrmpfISSXVIJIS5qJJSvJPEQ49DQTVIbYWJ9QWa/E2+c/oPK1drmC7WSfJRNKBO5Yjvcp7Gc3dmmI/Xh1kDTEuiSnWqQf37h+fTMhGnDf6dsS8SQfQWlqqwXXGlc/PEZ/SC5mtzIV0nAshlQdM/LvUtYutrEZ/Y+EAFtq1k28zQhOwLr1AIeANzhF8t9qzTdZf2qRKO6MWE9ohBYwibbOmrFtNmg3mcS+tB28xv2uKd/agYCvOP+GkSc+0lr7RXzyufL7QbkUpjLjEWFLqOIkAGu2B0tNlO9Eau2W1qcOUvVRgKzypKIQZ5KI3q0MLzqTNRYqiZOqmtqloIRlmkBHVpHmRYV6/HixbO6UC47KOFJnoMrVyr7wYz+SlW6GUaghYbY1I6kkxA2W1fSJokUdSh2LQ1GAimRGm0MT+uu57H5l7QgOWxERpO9moLRPgTtquWCfFlGlIjQaRly9odmzMOWY+IBO5tB4sW/0+VWGUh32qYk79EidWKrjWuiLpiVNGFWFRJVktyeXWmbgBBzVl8anPuXyNJlBJOlKLTgAbi/EYHVHxWiDaVR06GnHQNpJcWcK2jJtiCfG2sEHLzuI66sGrMK47nPIInPnu799935aOK2cvmvubrE38ZzZjrELCmXM2hM7UcpXD2oC3+ECVp7xtIuxptJ0jUr3sBmBS47TVxlvJ1Sqb/E0uLdvLj0lLr29ypdd/eMX3f6lrxGlKwKQxEGvw0qHbkbwrF3uHKwVENbIV2wZ13kNEF6zD+x24aLNMfDTCbDPnEikZFyTNttxWBXDaBuM8KtI2rmaMdUY7cXcUPstqTGvBGSrFWIpNMfbdea990bvAOC1YX0qbc6smDS1mPxSJoW4fwEXvjMmhlijDRq6qale6aJEuFGoppYDoBELQzLBuh/mZNx7jkinv0EtnUp50lO9hbNK57lZaMAWuWR5Yo9/kYwcYI0t4gWM47Umnl3YmpeBPqSyNp3K7s2DSAS/39KRuEN2bS4xvowV3dFRMx/VFcp2Yp8w2nTO9hCXtHG1kF1L4KlrJr2wKfyq77R7MKpFKzWlY9UkhYxyHWW6nBWPaudvEAl3CGcNpSXPZ6R9BbBtIl6cHL3gIBi+42CYXqCx1gfGWe7Ap0h3luyXdt1MKy4YUT9xSF01G16YEdWsouW9mgDHd3veyA97H+Ya47ZmEbqMY72oPztCGvK0onL44AvgC49saZKkWRz4veWljE1FHjbRJaWv6ZKKtl875h4CziFCZhG5rx7tefsl0aRT1bMHZjm8dwL/6u7wCRysaQblQoG5yAQN5zpatMNY/+yf8z+GLcH/Qn0iX2W2oEfXP4GvwQHuIL9AYGnaO3zqAX6946nkgqZNnUhx43DIdQtMFeOPrgy/y3Yd85HlJWwjLFkU3kFwq28xPnuPhMWeS+tDLV9Otllq7pQCf3uXJDN9wFDiUTgefHaiYbdfi3b3u8+iY6TnzhgehI1LTe8lcd7s1wJSzKbahCRxKKztTLXstGAiu3a6rPuQs5pk9TWAan5f0BZmGf7Ylxzzk/A7PAs4QPPPAHeFQ2hbFHszlgZuKZsJcUmbDC40sEU403cEjczstOEypa+YxevL4QBC8oRYqWdK6b7sK25tfE+oDZgtOQ2Jg8T41HGcBE6fTWHn4JtHcu9S7uYgU5KSCkl/mcnq+5/YBXOEr6lCUCwOTOM1taOI8mSxx1NsCXBEmLKbMAg5MkwbLmpBaFOPrNSlO2HnLiEqW3tHEwd8AeiQLmn+2gxjC3k6AxREqvKcJbTEzlpLiw4rNZK6oJdidbMMGX9FULKr0AkW+2qDEPBNNm5QAt2Ik2nftNWHetubosHLo2nG4vQA7GkcVCgVCgaDixHqo9UUn1A6OshapaNR/LPRYFV8siT1cCtJE0k/3WtaNSuUZYKPnsVIW0xXWnMUxq5+En4Kvw/MqQmVXnAXj9Z+9zM98zM/Agy7F/qqj2Nh67b8HjFnPP3iBn/tkpdzwEJX/whIcQUXOaikeliCRGUk7tiwF0rItwMEhjkZ309hikFoRAmLTpEXWuHS6y+am/KB/fM50aLEhGnSMwkpxzOov4H0AvgovwJ1iGzDLtJn/9BU+fAINfwUe6FHSLhu83viV/+/HrOePX+STT2B9uWGbrMHHLldRBlhS/CJQmcRxJFqZica01XixAZsYiH1uolZxLrR/SgxVIJjkpQP4PE9sE59LKLr7kltSBogS5tyszzH8Fvw8/AS8rNOg0xUS9fIaHwb+6et8Q/gyvKRjf5OusOzGx8evA/BP4IP11uN/grca5O0lcsPLJ5YjwI4QkJBOHa0WdMZYGxPbh2W2nR9v3WxEWqgp/G3+6VZbRLSAAZ3BhdhAaUL33VUSw9yjEsvbaQ9u4A/gGXwZXoEHOuU1GSj2chf+Mo+f8IcfcAxfIKVmyunRbYQVnoevwgfw3TXXcw++xNuP4fhyueEUNttEduRVaDttddoP0eSxLe2LENk6itYxlrxBNBYrNNKSQmeaLcm9c8UsaB5WyO6675yyQIAWSDpBVoA/gxmcwEvwoDv0m58UE7gHn+fJOa8/Ywan8EKRfjsopF83eCglX/Sfr7OeaRoQfvt1CGvIDccH5BCvw1sWIzRGC/66t0VTcLZQZtm6PlAasbOJ9iwWtUo7biktTSIPxnR24jxP1ZKaqq+2RcXM9OrBAm/AAs7hDJ5bNmGb+KIfwCs8a3jnjBrOFeMjHSCdbKr+2uOLfnOd9eiA8Hvvwwq54VbP2OqwkB48Ytc4YEOiH2vTXqodabfWEOzso4qxdbqD5L6tbtNPECqbhnA708DZH4QOJUXqScmUlks7Ot6FBuZw3n2mEbaUX7kDzxHOOQk8nKWMzAzu6ZZ8sOFw4RK+6PcuXo9tB4SbMz58ApfKDXf3szjNIIbGpD5TKTRxGkEMLjLl+K3wlWXBsCUxIDU+jbOiysESqAy1MGUJpXgwbTWzNOVEziIXZrJ+VIztl1PUBxTSo0dwn2bOmfDRPD3TRTGlfbCJvO9KvuhL1hMHhB9wPuPRLGHcdOWG2xc0U+5bQtAJT0nRTewXL1pgk2+rZAdeWmz3jxAqfNQQdzTlbF8uJ5ecEIWvTkevAHpwz7w78QujlD/Lr491bD8/1vhM2yrUQRrWXNQY4fGilfctMWYjL72UL/qS9eiA8EmN88nbNdour+PBbbAjOjIa4iBhfFg6rxeKdEGcL6p3EWR1Qq2Qkhs2DrnkRnmN9tG2EAqmgPw6hoL7Oza7B+3SCrR9tRftko+Lsf2F/mkTndN2LmzuMcKTuj/mX2+4Va3ki16+nnJY+S7MefpkidxwnV+4wkXH8TKnX0tsYzYp29DOOoSW1nf7nTh2akYiWmcJOuTidSaqESrTYpwjJJNVGQr+rLI7WsqerHW6Kp/oM2pKuV7T1QY9gjqlZp41/WfKpl56FV/0kvXQFRyeQ83xaTu5E8p5dNP3dUF34ihyI3GSpeCsywSh22ZJdWto9winhqifb7VRvgktxp13vyjrS0EjvrRfZ62uyqddSWaWYlwTPAtJZ2oZ3j/Sgi/mi+6vpzesfAcWNA0n8xVyw90GVFGuZjTXEQy+6GfLGLMLL523f5E0OmxVjDoOuRiH91RKU+vtoCtH7TgmvBLvtFXWLW15H9GTdVw8ow4IlRLeHECN9ym1e9K0I+Cbnhgv4Yu+aD2HaQJ80XDqOzSGAV4+4yCqBxrsJAX6ZTIoX36QnvzhhzzMfFW2dZVLOJfo0zbce5OvwXMFaZ81mOnlTVXpDZsQNuoYWveketKb5+6JOOsgX+NTm7H49fUTlx+WLuWL7qxnOFh4BxpmJx0p2gDzA/BUARuS6phR+pUsY7MMboAHx5xNsSVfVZcYSwqCKrqon7zM+8ecCkeS4nm3rINuaWvVNnMRI1IRpxTqx8PZUZ0Br/UEduo3B3hNvmgZfs9gQPj8vIOxd2kndir3awvJ6BLvoUuOfFWNYB0LR1OQJoUySKb9IlOBx74q1+ADC2G6rOdmFdJcD8BkfualA+BdjOOzP9uUhGUEX/TwhZsUduwRr8wNuXKurCixLBgpQI0mDbJr9dIqUuV+92ngkJZ7xduCk2yZKbfWrH1VBiTg9VdzsgRjW3CVXCvAwDd+c1z9dWw9+B+8MJL/eY15ZQ/HqvTwVdsZn5WQsgRRnMaWaecu3jFvMBEmgg+FJFZsnSl0zjB9OqPYaBD7qmoVyImFvzi41usesV0julaAR9dfR15Xzv9sEruRDyk1nb+QaLU67T885GTls6YgcY+UiMa25M/pwGrbCfzkvR3e0jjtuaFtnwuagHTSb5y7boBH119HXhvwP487jJLsLJ4XnUkHX5sLbS61dpiAXRoZSCrFJ+EjpeU3puVfitngYNo6PJrAigKktmwjyQdZpfq30mmtulaAx9Zfx15Xzv+cyeuiBFUs9zq8Kq+XB9a4PVvph3GV4E3y8HENJrN55H1X2p8VyqSKwVusJDKzXOZzplWdzBUFK9e+B4+uv468xvI/b5xtSAkBHQaPvtqWzllVvEOxPbuiE6+j2pvjcKsbvI7txnRErgfH7LdXqjq0IokKzga14GzQ23SSbCQvO6r+Or7SMIr/efOkkqSdMnj9mBx2DRsiY29Uj6+qK9ZrssCKaptR6HKURdwUYeUWA2kPzVKQO8ku2nU3Anhs/XWkBx3F/7wJtCTTTIKftthue1ty9xvNYLY/zo5KSbIuKbXpbEdSyeRyYdAIwKY2neyoc3+k1XUaufYga3T9daMUx/r8z1s10ITknIO0kuoMt+TB8jK0lpayqqjsJ2qtXAYwBU932zinimgmd6mTRDnQfr88q36NAI+tv24E8Pr8zxtasBqx0+xHH9HhlrwsxxNUfKOHQaZBITNf0uccj8GXiVmXAuPEAKSdN/4GLHhs/XWj92dN/uetNuBMnVR+XWDc25JLjo5Mg5IZIq226tmCsip2zZliL213YrTlL2hcFjpCduyim3M7/eB16q/blQsv5X/esDRbtJeabLIosWy3ycavwLhtxdWzbMmHiBTiVjJo6lCLjXZsi7p9PEPnsq6X6wd4bP11i0rD5fzPm/0A6brrIsllenZs0lCJlU4abakR59enZKrKe3BZihbTxlyZ2zl1+g0wvgmA166/bhwDrcn/7Ddz0eWZuJvfSESug6NzZsox3Z04FIxz0mUjMwVOOVTq1CQ0AhdbBGVdjG/CgsfUX7esJl3K/7ytWHRv683praW/8iDOCqWLLhpljDY1ZpzK75QiaZoOTpLKl60auHS/97oBXrv+umU9+FL+5+NtLFgjqVLCdbmj7pY5zPCPLOHNCwXGOcLquOhi8CmCWvbcuO73XmMUPab+ug3A6/A/78Bwe0bcS2+tgHn4J5pyS2WbOck0F51Vq3LcjhLvZ67p1ABbaL2H67bg78BfjKi/jr3+T/ABV3ilLmNXTI2SpvxWBtt6/Z//D0z/FXaGbSBgylzlsEGp+5//xrd4/ae4d8DUUjlslfIYS3t06HZpvfQtvv0N7AHWqtjP2pW08QD/FLy//da38vo8PNlKHf5y37Dxdfe/oj4kVIgFq3koLReSR76W/bx//n9k8jonZxzWTANVwEniDsg87sOSd/z7//PvMp3jQiptGVWFX2caezzAXwfgtzYUvbr0iozs32c3Uge7varH+CNE6cvEYmzbPZ9hMaYDdjK4V2iecf6EcEbdUDVUARda2KzO/JtCuDbNQB/iTeL0EG1JSO1jbXS+nLxtPMDPw1fh5+EPrgSEKE/8Gry5A73ui87AmxwdatyMEBCPNOCSKUeRZ2P6Myb5MRvgCHmA9ywsMifU+AYXcB6Xa5GibUC5TSyerxyh0j6QgLVpdyhfArRTTLqQjwe4HOD9s92D4Ap54odXAPBWLAwB02igG5Kkc+piN4lvODIFGAZgT+EO4Si1s7fjSR7vcQETUkRm9O+MXyo9OYhfe4xt9STQ2pcZRLayCV90b4D3jR0DYAfyxJ+eywg2IL7NTMXna7S/RpQ63JhWEM8U41ZyQGjwsVS0QBrEKLu8xwZsbi4wLcCT+OGidPIOCe1PiSc9Qt+go+vYqB7cG+B9d8cAD+WJPz0Am2gxXgU9IneOqDpAAXOsOltVuMzpdakJXrdPCzXiNVUpCeOos5cxnpQT39G+XVLhs1osQVvJKPZyNq8HDwd4d7pNDuWJPxVX7MSzqUDU6gfadKiNlUFTzLeFHHDlzO4kpa7aiKhBPGKwOqxsBAmYkOIpipyXcQSPlRTf+Tii0U3EJGaZsDER2qoB3h2hu0qe+NNwUooYU8y5mILbJe6OuX+2FTKy7bieTDAemaQyQ0CPthljSWO+xmFDIYiESjM5xKd6Ik5lvLq5GrQ3aCMLvmCA9wowLuWJb9xF59hVVP6O0CrBi3ZjZSNOvRy+I6klNVRJYRBaEzdN+imiUXQ8iVF8fsp+W4JXw7WISW7fDh7lptWkCwZ4d7QTXyBPfJMYK7SijjFppGnlIVJBJBYj7eUwtiP1IBXGI1XCsjNpbjENVpSAJ2hq2LTywEly3hUYazt31J8w2+aiLx3g3fohXixPfOMYm6zCGs9LVo9MoW3MCJE7R5u/WsOIjrqBoHUO0bJE9vxBpbhsd3+Nb4/vtPCZ4oZYCitNeYuC/8UDvDvy0qvkiW/cgqNqRyzqSZa/s0mqNGjtKOoTm14zZpUauiQgVfqtQiZjq7Q27JNaSK5ExRcrGCXO1FJYh6jR6CFqK7bZdQZ4t8g0rSlPfP1RdBtqaa9diqtzJkQ9duSryi2brQXbxDwbRUpFMBHjRj8+Nt7GDKgvph9okW7LX47gu0SpGnnFQ1S1lYldOsC7hYteR574ZuKs7Ei1lBsfdz7IZoxzzCVmmVqaSySzQbBVAWDek+N4jh9E/4VqZrJjPwiv9BC1XcvOWgO8275CVyBPvAtTVlDJfZkaZGU7NpqBogAj/xEHkeAuJihWYCxGN6e8+9JtSegFXF1TrhhLGP1fak3pebgPz192/8gB4d/6WT7+GdYnpH7hH/DJzzFiYPn/vjW0SgNpTNuPIZoAEZv8tlGw4+RLxy+ZjnKa5NdFoC7UaW0aduoYse6+bXg1DLg6UfRYwmhGEjqPvF75U558SANrElK/+MdpXvmqBpaXOa/MTZaa1DOcSiLaw9j0NNNst3c+63c7EKTpkvKHzu6bPbP0RkuHAVcbRY8ijP46MIbQeeT1mhA+5PV/inyDdQipf8LTvMXbwvoDy7IruDNVZKTfV4CTSRUYdybUCnGU7KUTDxLgCknqUm5aAW6/1p6eMsOYsphLzsHrE0Y/P5bQedx1F/4yPHnMB3/IOoTU9+BL8PhtjuFKBpZXnYNJxTuv+2XqolKR2UQgHhS5novuxVySJhBNRF3SoKK1XZbbXjVwWNyOjlqWJjrWJIy+P5bQedyldNScP+HZ61xKSK3jyrz+NiHG1hcOLL/+P+PDF2gOkekKGiNWKgJ+8Z/x8Iv4DdQHzcpZyF4v19I27w9/yPGDFQvmEpKtqv/TLiWMfn4sofMm9eAH8Ao0zzh7h4sJqYtxZd5/D7hkYPneDzl5idlzNHcIB0jVlQ+8ULzw/nc5/ojzl2juE0apD7LRnJxe04dMz2iOCFNtGFpTuXA5AhcTRo8mdN4kz30nVjEC4YTZQy4gpC7GlTlrePKhGsKKgeXpCYeO0MAd/GH7yKQUlXPLOasOH3FnSphjHuDvEu4gB8g66oNbtr6eMbFIA4fIBJkgayoXriw2XEDQPJrQeROAlY6aeYOcMf+IVYTU3XFlZufMHinGywaW3YLpObVBAsbjF4QJMsVUSayjk4voPsHJOQfPWDhCgDnmDl6XIRerD24HsGtw86RMHOLvVSHrKBdeVE26gKB5NKHzaIwLOmrqBWJYZDLhASG16c0Tn+CdRhWDgWXnqRZUTnPIHuMJTfLVpkoYy5CzylHVTGZMTwkGAo2HBlkQplrJX6U+uF1wZz2uwS1SQ12IqWaPuO4baZaEFBdukksJmkcTOm+YJSvoqPFzxFA/YUhIvWxcmSdPWTWwbAKVp6rxTtPFUZfKIwpzm4IoMfaYQLWgmlG5FME2gdBgm+J7J+rtS/XBbaVLsR7bpPQnpMFlo2doWaVceHk9+MkyguZNCJ1He+kuHTWyQAzNM5YSUg/GlTk9ZunAsg1qELVOhUSAK0LABIJHLKbqaEbHZLL1VA3VgqoiOKXYiS+HRyaEKgsfIqX64HYWbLRXy/qWoylIV9gudL1OWBNgBgTNmxA6b4txDT4gi3Ri7xFSLxtXpmmYnzAcWDZgY8d503LFogz5sbonDgkKcxGsWsE1OI+rcQtlgBBCSOKD1mtqYpIU8cTvBmAT0yZe+zUzeY92fYjTtGipXLhuR0ePoHk0ofNWBX+lo8Z7pAZDk8mEw5L7dVyZZoE/pTewbI6SNbiAL5xeygW4xPRuLCGbhcO4RIeTMFYHEJkYyEO9HmJfXMDEj/LaH781wHHZEtqSQ/69UnGpzH7LKIAZEDSPJnTesJTUa+rwTepI9dLJEawYV+ZkRn9g+QirD8vF8Mq0jFQ29js6kCS3E1+jZIhgPNanHdHFqFvPJLHqFwQqbIA4jhDxcNsOCCQLDomaL/dr5lyJaJU6FxPFjO3JOh3kVMcROo8u+C+jo05GjMF3P3/FuDLn5x2M04xXULPwaS6hBYki+MrMdZJSgPHlcB7nCR5bJ9Kr5ACUn9jk5kivdd8tk95SOGrtqu9lr2IhK65ZtEl7ZKrp7DrqwZfRUSN1el7+7NJxZbywOC8neNKTch5vsTEMNsoCCqHBCqIPRjIPkm0BjvFODGtto99rCl+d3wmHkW0FPdpZtC7MMcVtGFQjJLX5bdQ2+x9ypdc313uj8xlsrfuLgWXz1cRhZvJYX0iNVBRcVcmCXZs6aEf3RQF2WI/TcCbKmGU3IOoDJGDdDub0+hYckt6PlGu2BcxmhbTdj/klhccLGJMcqRjMJP1jW2ETqLSWJ/29MAoORluJ+6LPffBZbi5gqi5h6catQpmOT7/OFf5UorRpLzCqcMltBLhwd1are3kztrSzXO0LUbXRQcdLh/RdSZ+swRm819REDrtqzC4es6Gw4JCKlSnjYVpo0xeq33PrADbFLL3RuCmObVmPN+24kfa+AojDuM4umKe2QwCf6EN906HwjujaitDs5o0s1y+k3lgbT2W2i7FJdnwbLXhJUBq/9liTctSmFC/0OqUinb0QddTWamtjbHRFuWJJ6NpqZ8vO3fZJ37Db+2GkaPYLGHs7XTTdiFQJ68SkVJFVmY6McR5UycflNCsccHFaV9FNbR4NttLxw4pQ7wJd066Z0ohVbzihaxHVExd/ay04oxUKWt+AsdiQ9OUyZ2krzN19IZIwafSTFgIBnMV73ADj7V/K8u1MaY2sJp2HWm0f41tqwajEvdHWOJs510MaAqN4aoSiPCXtN2KSi46dUxHdaMquar82O1x5jqhDGvqmoE9LfxcY3zqA7/x3HA67r9ZG4O6Cuxu12/+TP+eLP+I+HErqDDCDVmBDO4larujNe7x8om2rMug0MX0rL1+IWwdwfR+p1TNTyNmVJ85ljWzbWuGv8/C7HD/izjkHNZNYlhZcUOKVzKFUxsxxN/kax+8zPWPSFKw80rJr9Tizyj3o1gEsdwgWGoxPezDdZ1TSENE1dLdNvuKL+I84nxKesZgxXVA1VA1OcL49dFlpFV5yJMhzyCmNQ+a4BqusPJ2bB+xo8V9u3x48VVIEPS/mc3DvAbXyoYr6VgDfh5do5hhHOCXMqBZUPhWYbWZECwVJljLgMUWOCB4MUuMaxGNUQDVI50TQ+S3kFgIcu2qKkNSHVoM0SHsgoZxP2d5HH8B9woOk4x5bPkKtAHucZsdykjxuIpbUrSILgrT8G7G5oCW+K0990o7E3T6AdW4TilH5kDjds+H64kS0mz24grtwlzDHBJqI8YJQExotPvoC4JBq0lEjjQkyBZ8oH2LnRsQ4Hu1QsgDTJbO8fQDnllitkxuVskoiKbRF9VwzMDvxHAdwB7mD9yCplhHFEyUWHx3WtwCbSMMTCUCcEmSGlg4gTXkHpZXWQ7kpznK3EmCHiXInqndkQjunG5kxTKEeGye7jWz9cyMR2mGiFQ15ENRBTbCp+Gh86vAyASdgmJq2MC6hoADQ3GosP0QHbnMHjyBQvQqfhy/BUbeHd5WY/G/9LK/8Ka8Jd7UFeNWEZvzPb458Dn8DGLOe3/wGL/4xP+HXlRt+M1PE2iLhR8t+lfgxsuh7AfO2AOf+owWhSZRYQbd622hbpKWKuU+XuvNzP0OseRDa+mObgDHJUSc/pKx31QdKffQ5OIJpt8GWjlgTwMc/w5MPCR/yl1XC2a2Yut54SvOtMev55Of45BOat9aWG27p2ZVORRvnEk1hqWMVUmqa7S2YtvlIpspuF1pt0syuZS2NV14mUidCSfzQzg+KqvIYCMljIx2YK2AO34fX4GWdu5xcIAb8MzTw+j/lyWM+Dw/gjs4GD6ehNgA48kX/AI7XXM/XAN4WHr+9ntywqoCakCqmKP0rmQrJJEErG2Upg1JObr01lKQy4jskWalKYfJ/EDLMpjNSHFEUAde2fltaDgmrNaWQ9+AAb8I5vKjz3L1n1LriB/BXkG/wwR9y/oRX4LlioHA4LzP2inzRx/DWmutRweFjeP3tNeSGlaE1Fde0OS11yOpmbIp2u/jF1n2RRZviJM0yBT3IZl2HWImKjQOxIyeU325b/qWyU9Moj1o07tS0G7qJDoGHg5m8yeCxMoEH8GU45tnrNM84D2l297DQ9t1YP7jki/7RmutRweEA77/HWXOh3HCxkRgldDQkAjNTMl2Iloc1qN5JfJeeTlyTRzxURTdn1Ixv2uKjs12AbdEWlBtmVdk2k7FFwj07PCZ9XAwW3dG+8xKzNFr4EnwBZpy9Qzhh3jDXebBpYcpuo4fQ44u+fD1dweEnHzI7v0xuuOALRUV8rXpFyfSTQYkhd7IHm07jpyhlkCmI0ALYqPTpUxXS+z4jgDj1Pflvmz5ecuItpIBxyTHpSTGWd9g1ApfD/bvwUhL4nT1EzqgX7cxfCcNmb3mPL/qi9SwTHJ49oj5ZLjccbTG3pRmlYi6JCG0mQrAt1+i2UXTZ2dv9IlQpN5naMYtviaXlTrFpoMsl3bOAFEa8sqPj2WCMrx3Yjx99qFwO59Aw/wgx+HlqNz8oZvA3exRDvuhL1jMQHPaOJ0+XyA3fp1OfM3qObEVdhxjvynxNMXQV4+GJyvOEFqeQBaIbbO7i63rpxCltdZShPFxkjM2FPVkn3TG+Rp9pO3l2RzFegGfxGDHIAh8SteR0C4HopXzRF61nheDw6TFN05Ebvq8M3VKKpGjjO6r7nhudTEGMtYM92HTDaR1FDMXJ1eThsbKfywyoWwrzRSXkc51flG3vIid62h29bIcFbTGhfV+faaB+ohj7dPN0C2e2lC96+XouFByen9AsunLDJZ9z7NExiUc0OuoYW6UZkIyx2YUR2z6/TiRjyKMx5GbbjLHvHuf7YmtKghf34LJfx63Yg8vrvN2zC7lY0x0tvKezo4HmGYDU+Gab6dFL+KI761lDcNifcjLrrr9LWZJctG1FfU1uwhoQE22ObjdfkSzY63CbU5hzs21WeTddH2BaL11Gi7lVdlxP1nkxqhnKhVY6knS3EPgVGg1JpN5cP/hivujOelhXcPj8HC/LyI6MkteVjlolBdMmF3a3DbsuAYhL44dxzthWSN065xxUd55Lmf0wRbOYOqH09/o9WbO2VtFdaMb4qBgtFJoT1SqoN8wPXMoXLb3p1PUEhxfnnLzGzBI0Ku7FxrKsNJj/8bn/H8fPIVOd3rfrklUB/DOeO+nkghgSPzrlPxluCMtOnDL4Yml6dK1r3vsgMxgtPOrMFUZbEUbTdIzii5beq72G4PD0DKnwjmBULUVFmy8t+k7fZ3pKc0Q4UC6jpVRqS9Umv8bxw35flZVOU1X7qkjnhZlsMbk24qQ6Hz7QcuL6sDC0iHHki96Uh2UdvmgZnjIvExy2TeJdMDZNSbdZyAHe/Yd1xsQhHiKzjh7GxQ4yqMPaywPkjMamvqrYpmO7Knad+ZQC5msCuAPWUoxrxVhrGv7a+KLXFhyONdTMrZ7ke23qiO40ZJUyzgYyX5XyL0mV7NiUzEs9mjtbMN0dERqwyAJpigad0B3/zRV7s4PIfXSu6YV/MK7+OrYe/JvfGMn/PHJe2fyUdtnFrKRNpXV0Y2559aWPt/G4BlvjTMtXlVIWCnNyA3YQBDmYIodFz41PvXPSa6rq9lWZawZ4dP115HXV/M/tnFkkrBOdzg6aP4pID+MZnTJ1SuuB6iZlyiox4HT2y3YBtkUKWooacBQUDTpjwaDt5poBHl1/HXltwP887lKKXxNUEyPqpGTyA699UqY/lt9yGdlUKra0fFWS+36iylVWrAyd7Uw0CZM0z7xKTOduznLIjG2Hx8cDPLb+OvK6Bv7n1DYci4CxUuRxrjBc0bb4vD3rN5Zz36ntLb83eVJIB8LiIzCmn6SMPjlX+yNlTjvIGjs+QzHPf60Aj62/jrzG8j9vYMFtm1VoRWCJdmw7z9N0t+c8cxZpPeK4aTRicS25QhrVtUp7U578chk4q04Wx4YoQSjFryUlpcQ1AbxZ/XVMknIU//OGl7Q6z9Zpxi0+3yFhSkjUDpnCIUhLWVX23KQ+L9vKvFKI0ZWFQgkDLvBoylrHNVmaw10zwCPrr5tlodfnf94EWnQ0lFRWy8pW9LbkLsyUVDc2NSTHGDtnD1uMtchjbCeb1mpxFP0YbcClhzdLu6lfO8Bj6q+bdT2sz/+8SZCV7VIxtt0DUn9L7r4cLYWDSXnseEpOGFuty0qbOVlS7NNzs5FOGJUqQpl2Q64/yBpZf90sxbE+//PGdZ02HSipCbmD6NItmQ4Lk5XUrGpDMkhbMm2ZVheNYV+VbUWTcv99+2NyX1VoafSuC+AN6q9bFIMv5X/eagNWXZxEa9JjlMwNWb00akGUkSoepp1/yRuuqHGbUn3UdBSTxBU6SEVklzWRUkPndVvw2PrrpjvxOvzPmwHc0hpmq82npi7GRro8dXp0KXnUQmhZbRL7NEVp1uuZmO45vuzKsHrktS3GLWXODVjw+vXXLYx4Hf7njRPd0i3aoAGX6W29GnaV5YdyDj9TFkakje7GHYzDoObfddHtOSpoi2SmzJHrB3hM/XUDDEbxP2/oosszcRlehWXUvzHv4TpBVktHqwenFo8uLVmy4DKLa5d3RtLrmrM3aMFr1183E4sewf+85VWeg1c5ag276NZrM9IJVNcmLEvDNaV62aq+14IAOGFsBt973Ra8Xv11YzXwNfmft7Jg2oS+XOyoC8/cwzi66Dhmgk38kUmP1CUiYWOX1bpD2zWXt2FCp7uq8703APAa9dfNdscR/M/bZLIyouVxqJfeWvG9Je+JVckHQ9+CI9NWxz+blX/KYYvO5n2tAP/vrlZ7+8/h9y+9qeB/Hnt967e5mevX10rALDWK//FaAT5MXdBXdP0C/BAes792c40H+AiAp1e1oH8HgH94g/Lttx1gp63op1eyoM/Bvw5/G/7xFbqJPcCXnmBiwDPb/YKO4FX4OjyCb289db2/Noqicw4i7N6TVtoz8tNwDH+8x/i6Ae7lmaQVENzJFb3Di/BFeAwz+Is9SjeQySpPqbLFlNmyz47z5a/AF+AYFvDmHqibSXTEzoT4Gc3OALaqAP4KPFUJ6n+1x+rGAM6Zd78bgJ0a8QN4GU614vxwD9e1Amy6CcskNrczLx1JIp6HE5UZD/DBHrFr2oNlgG4Odv226BodoryjGJ9q2T/AR3vQrsOCS0ctXZi3ruLlhpFDJYl4HmYtjQCP9rhdn4suySLKDt6wLcC52h8xPlcjju1fn+yhuw4LZsAGUuo2b4Fx2UwQu77uqRHXGtg92aN3tQCbFexc0uk93vhTXbct6y7MulLycoUljx8ngDMBg1tvJjAazpEmOtxlzclvj1vQf1Tx7QlPDpGpqgtdSKz/d9/hdy1vTfFHSmC9dGDZbLiezz7Ac801HirGZsWjydfZyPvHXL/Y8Mjzg8BxTZiuwKz4Eb8sBE9zznszmjvFwHKPIWUnwhqfVRcd4Ck0K6ate48m1oOfrX3/yOtvAsJ8zsPAM89sjnddmuLuDPjX9Bu/L7x7xpMzFk6nWtyQfPg278Gn4Aekz2ZgOmU9eJ37R14vwE/BL8G3aibCiWMWWDQ0ZtkPMnlcGeAu/Ag+8ZyecU5BPuy2ILD+sQqyZhAKmn7XZd+jIMTN9eBL7x95xVLSX4On8EcNlXDqmBlqS13jG4LpmGbkF/0CnOi3H8ETOIXzmnmtb0a16Tzxj1sUvQCBiXZGDtmB3KAefPH94xcUa/6vwRn80GOFyjEXFpba4A1e8KQfFF+259tx5XS4egYn8fQsLGrqGrHbztr+uByTahWuL1NUGbDpsnrwBfePPwHHIf9X4RnM4Z2ABWdxUBlqQ2PwhuDxoS0vvqB1JzS0P4h2nA/QgTrsJFn+Y3AOjs9JFC07CGWX1oNX3T/yHOzgDjwPn1PM3g9Jk9lZrMEpxnlPmBbjyo2+KFXRU52TJM/2ALcY57RUzjObbjqxVw++4P6RAOf58pcVsw9Daje3htriYrpDOonre3CudSe6bfkTEgHBHuDiyu5MCsc7BHhYDx7ePxLjqigXZsw+ijMHFhuwBmtoTPtOxOrTvYJDnC75dnUbhfwu/ZW9AgYd+peL68HD+0emKquiXHhWjJg/UrkJYzuiaL3E9aI/ytrCvAd4GcYZMCkSQxfUg3v3j8c4e90j5ZTPdvmJJGHnOCI2nHS8081X013pHuBlV1gB2MX1YNmWLHqqGN/TWmG0y6clJWthxNUl48q38Bi8vtMKyzzpFdSDhxZ5WBA5ZLt8Jv3895DduBlgbPYAj8C4B8hO68FDkoh5lydC4FiWvBOVqjYdqjiLv92t8yPDjrDaiHdUD15qkSURSGmXJwOMSxWAXYwr3zaAufJ66l+94vv3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/wHuD9tQd4f+0B3l97gPfXHuD9tQd4f+0B3l97gG8LwP8G/AL8O/A5OCq0Ys2KIdv/qOIXG/4mvFAMF16gZD+2Xvu/B8as5+8bfllWyg0zaNO5bfXj6vfhhwD86/Aq3NfRS9t9WPnhfnvCIw/CT8GLcFTMnpntdF/z9V+PWc/vWoIH+FL3Znv57PitcdGP4R/C34avw5fgRVUInCwbsn1yyA8C8zm/BH8NXoXnVE6wVPjdeCI38kX/3+Ct9dbz1pTmHFRu+Hm4O9Ch3clr99negxfwj+ER/DR8EV6B5+DuQOnTgUw5rnkY+FbNU3gNXh0o/JYTuWOvyBf9FvzX663HH/HejO8LwAl8Hl5YLTd8q7sqA3wbjuExfAFegQdwfyDoSkWY8swzEf6o4Qyewefg+cHNbqMQruSL/u/WWc+E5g7vnnEXgDmcDeSGb/F4cBcCgT+GGRzDU3hZYburAt9TEtHgbM6JoxJ+6NMzzTcf6c2bycv2+KK/f+l6LBzw5IwfqZJhA3M472pWT/ajKxnjv4AFnMEpnBTPND6s2J7qHbPAqcMK74T2mZ4VGB9uJA465It+/eL1WKhYOD7xHOkr1ajK7d0C4+ke4Hy9qXZwpgLr+Znm/uNFw8xQOSy8H9IzjUrd9+BIfenYaylf9FsXr8fBAadnPIEDna8IBcwlxnuA0/Wv6GAWPd7dDIKjMdSWueAsBj4M7TOd06qBbwDwKr7oleuxMOEcTuEZTHWvDYUO7aHqAe0Bbq+HEFRzOz7WVoTDQkVds7A4sIIxfCQdCefFRoIOF/NFL1mPab/nvOakSL/Q1aFtNpUb/nFOVX6gzyg/1nISyDfUhsokIzaBR9Kxm80s5mK+6P56il1jXic7nhQxsxSm3OwBHl4fFdLqi64nDQZvqE2at7cWAp/IVvrN6/BFL1mPhYrGMBfOi4PyjuSGf6wBBh7p/FZTghCNWGgMzlBbrNJoPJX2mW5mwZfyRffXo7OFi5pZcS4qZUrlViptrXtw+GQoyhDPS+ANjcGBNRiLCQDPZPMHuiZfdFpPSTcQwwKYdRNqpkjm7AFeeT0pJzALgo7g8YYGrMHS0iocy+YTm2vyRUvvpXCIpQ5pe666TJrcygnScUf/p0NDs/iAI/nqDHC8TmQT8x3NF91l76oDdQGwu61Z6E0ABv7uO1dbf/37Zlv+Zw/Pbh8f1s4Avur6657/+YYBvur6657/+YYBvur6657/+YYBvur6657/+aYBvuL6657/+VMA8FXWX/f8zzcN8BXXX/f8zzcNMFdbf93zP38KLPiK6697/uebtuArrr/u+Z9vGmCusP6653/+1FjwVdZf9/zPN7oHX339dc//fNMu+irrr3v+50+Bi+Zq6697/uebA/jz8Pudf9ht/fWv517J/XUzAP8C/BAeX9WCDrUpZ3/dEMBxgPcfbtTVvsYV5Yn32u03B3Ac4P3b8I+vxNBKeeL9dRMAlwO83959qGO78sT769oB7g3w/vGVYFzKE++v6wV4OMD7F7tckFkmT7y/rhHgpQO8b+4Y46XyxPvrugBeNcB7BRiX8sT767oAvmCA9woAHsoT76+rBJjLBnh3txOvkifeX1dswZcO8G6N7sXyxPvr6i340gHe3TnqVfLE++uKAb50gHcXLnrX8sR7gNdPRqwzwLu7Y/FO5Yn3AK9jXCMGeHdgxDuVJ75VAI8ljP7PAb3/RfjcZfePHBB+79dpfpH1CanN30d+mT1h9GqAxxJGM5LQeeQ1+Tb+EQJrElLb38VHQ94TRq900aMIo8cSOo+8Dp8QfsB8zpqE1NO3OI9Zrj1h9EV78PqE0WMJnUdeU6E+Jjyk/hbrEFIfeWbvId8H9oTRFwdZaxJGvziW0Hn0gqYB/wyZ0PwRlxJST+BOw9m77Amj14ii1yGM/txYQudN0qDzGe4EqfA/5GJCagsHcPaEPWH0esekSwmjRxM6b5JEcZ4ww50ilvAOFxBSx4yLW+A/YU8YvfY5+ALC6NGEzhtmyZoFZoarwBLeZxUhtY4rc3bKnjB6TKJjFUHzJoTOozF2YBpsjcyxDgzhQ1YRUse8+J4wenwmaylB82hC5w0zoRXUNXaRBmSMQUqiWSWkLsaVqc/ZE0aPTFUuJWgeTei8SfLZQeMxNaZSIzbII4aE1Nmr13P2hNHjc9E9guYNCZ032YlNwESMLcZiLQHkE4aE1BFg0yAR4z1h9AiAGRA0jyZ03tyIxWMajMPWBIsxYJCnlITU5ShiHYdZ94TR4wCmSxg9jtB5KyPGYzymAYexWEMwAPIsAdYdV6aObmNPGD0aYLoEzaMJnTc0Ygs+YDw0GAtqxBjkuP38bMRWCHn73xNGjz75P73WenCEJnhwyVe3AEe8TtKdJcYhBl97wuhNAObK66lvD/9J9NS75v17wuitAN5fe4D31x7g/bUHeH/tAd5fe4D3AO+vPcD7aw/w/toDvL/2AO+vPcD7aw/w/toDvAd4f/24ABzZ8o+KLsSLS+Pv/TqTb3P4hKlQrTGh+fbIBT0Axqznnb+L/V2mb3HkN5Mb/nEHeK7d4IcDld6lmDW/iH9E+AH1MdOw/Jlu2T1xNmY98sv4wHnD7D3uNHu54WUuOsBTbQuvBsPT/UfzNxGYzwkP8c+Yz3C+r/i6DcyRL/rZ+utRwWH5PmfvcvYEt9jLDS/bg0/B64DWKrQM8AL8FPwS9beQCe6EMKNZYJol37jBMy35otdaz0Bw2H/C2Smc7+WGB0HWDELBmOByA3r5QONo4V+DpzR/hFS4U8wMW1PXNB4TOqYz9urxRV++ntWCw/U59Ty9ebdWbrgfRS9AYKKN63ZokZVygr8GZ/gfIhZXIXPsAlNjPOLBby5c1eOLvmQ9lwkOy5x6QV1j5TYqpS05JtUgUHUp5toHGsVfn4NX4RnMCe+AxTpwmApTYxqMxwfCeJGjpXzRF61nbcHhUBPqWze9svwcHJ+S6NPscKrEjug78Dx8Lj3T8D4YxGIdxmJcwhi34fzZUr7olevZCw5vkOhoClq5zBPZAnygD/Tl9EzDh6kl3VhsHYcDEb+hCtJSvuiV69kLDm+WycrOTArHmB5/VYyP6jOVjwgGawk2zQOaTcc1L+aLXrKeveDwZqlKrw8U9Y1p66uK8dEzdYwBeUQAY7DbyYNezBfdWQ97weEtAKYQg2xJIkuveAT3dYeLGH+ShrWNwZgN0b2YL7qznr3g8JYAo5bQBziPjx7BPZ0d9RCQp4UZbnFdzBddor4XHN4KYMrB2qHFRIzzcLAHQZ5the5ovui94PCWAPefaYnxIdzRwdHCbuR4B+tbiy96Lzi8E4D7z7S0mEPd+eqO3cT53Z0Y8SV80XvB4Z0ADJi/f7X113f+7p7/+UYBvur6657/+YYBvur6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+aYBvuL6657/+VMA8FXWX/f8z58OgK+y/rrnf75RgLna+uue//lTA/CV1V/3/M837aKvvv6653++UQvmauuve/7nTwfAV1N/3fM/fzr24Cuuv+75nz8FFnxl9dc9//MOr/8/glixwRuUfM4AAAAASUVORK5CYII="}function
5071D(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}return Nu}var qu={},zv={},n8;function Voe(){return n8||(n8=1,Object.defineProperty(zv,"__esModule",{value:!0}),zv.background_frag=void 0,zv.background_frag=` 5072precision mediump float; 5073precision mediump samplerCube; 5074precision mediump sampler2D; 5075 5076#if defined(dVariant_skybox) 5077 uniform samplerCube tSkybox; 5078 uniform mat4 uViewDirectionProjectionInverse; 5079 uniform float uBlur; 5080 uniform float uOpacity; 5081 uniform float uSaturation; 5082 uniform float uLightness; 5083 uniform mat3 uRotation; 5084#elif defined(dVariant_image) 5085 uniform sampler2D tImage; 5086 uniform vec2 uImageScale; 5087 uniform vec2 uImageOffset; 5088 uniform float uBlur; 5089 uniform float uOpacity; 5090 uniform float uSaturation; 5091 uniform float uLightness; 5092#elif defined(dVariant_horizontalGradient) || defined(dVariant_radialGradient) 5093 uniform vec3 uGradientColorA; 5094 uniform vec3 uGradientColorB; 5095 uniform float uGradientRatio; 5096#endif 5097 5098uniform vec2 uTexSize; 5099uniform vec4 uViewport; 5100uniform bool uViewportAdjusted; 5101varying vec4 vPosition; 5102 5103// TODO: add as general pp option to remove banding? 5104// Iestyn's RGB dither from http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf 5105vec3 ScreenSpaceDither(vec2 vScreenPos) { 5106 vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy)); 5107 vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0)); 5108 return vDither.rgb / 255.0; 5109} 5110 5111vec3 saturateColor(vec3 c, float amount) { 5112 // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance 5113 const vec3 W = vec3(0.2125, 0.7154, 0.0721); 5114 vec3 intensity = vec3(dot(c, W)); 5115 return mix(intensity, c, 1.0 + amount); 5116} 5117 5118vec3 lightenColor(vec3 c, float amount) { 5119 return c + amount; 5120} 5121 5122void main() { 5123 #if defined(dVariant_skybox) 5124 vec4 t = uViewDirectionProjectionInverse * vPosition; 5125 #ifdef enabledShaderTextureLod 5126 gl_FragColor = textureCubeLodEXT(tSkybox, uRotation * normalize(t.xyz / t.w), uBlur * 8.0); 5127 #else 5128 gl_FragColor = textureCube(tSkybox, uRotation * normalize(t.xyz / t.w)); 5129 #endif 5130 gl_FragColor.a = uOpacity; 5131 gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness); 5132 #elif defined(dVariant_image) 5133 vec2 coords; 5134 if (uViewportAdjusted) { 5135 coords = ((gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uImageScale) + uImageOffset; 5136 } else { 5137 coords = (gl_FragCoord.xy / uImageScale) + uImageOffset; 5138 } 5139 #ifdef enabledShaderTextureLod 5140 gl_FragColor = texture2DLodEXT(tImage, vec2(coords.x, 1.0 - coords.y), uBlur * 8.0); 5141 #else 5142 gl_FragColor = texture2D(tImage, vec2(coords.x, 1.0 - coords.y)); 5143 #endif 5144 gl_FragColor.a = uOpacity; 5145 gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness); 5146 #elif defined(dVariant_horizontalGradient) 5147 float d; 5148 if (uViewportAdjusted) { 5149 d = ((gl_FragCoord.y - uViewport.y) * (uTexSize.y / uViewport.w) / uTexSize.y) + 1.0 - (uGradientRatio * 2.0); 5150 } else { 5151 d = (gl_FragCoord.y / uTexSize.y) + 1.0 - (uGradientRatio * 2.0); 5152 } 5153 gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, clamp(d, 0.0, 1.0)), 1.0); 5154 gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy); 5155 #elif defined(dVariant_radialGradient) 5156 float d; 5157 if (uViewportAdjusted) { 5158 d = distance(vec2(0.5), (gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uTexSize) + uGradientRatio - 0.5; 5159 } else { 5160 d = distance(vec2(0.5), gl_FragCoord.xy / uTexSize) + uGradientRatio - 0.5; 5161 } 5162 gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, 1.0 - clamp(d, 0.0, 1.0)), 1.0); 5163 gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy); 5164 #endif 5165} 5166`),zv}var Hv={},i8;function Eoe(){return i8||(i8=1,Object.defineProperty(Hv,"__esMo
5166dule",{value:!0}),Hv.background_vert=void 0,Hv.background_vert=` 5167precision mediump float; 5168 5169attribute vec2 aPosition; 5170 5171varying vec4 vPosition; 5172 5173void main() { 5174 vPosition = vec4(aPosition, 1.0, 1.0); 5175 gl_Position = vec4(aPosition, 1.0, 1.0); 5176} 5177`),Hv}var a8;function Boe(){if(a8)return qu;a8=1,Object.defineProperty(qu,"__esModule",{value:!0}),qu.BackgroundPass=qu.BackgroundParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Voe(),c=Eoe(),o=Zt(),s=bn(),h=Xr(),f=Kr(),y=Ne(),_=Ct(),g=ta(),a=wt(),d=ns(),p=vt(),u=Ha(),m=Fa(),v=er(),b=K_(),P=zQ(),C={opacity:y.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),saturation:y.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01}),lightness:y.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01})},l={faces:y.ParamDefinition.MappedStatic("urls",{urls:y.ParamDefinition.Group({nx:y.ParamDefinition.Text("",{label:"Negative X / Left"}),ny:y.ParamDefinition.Text("",{label:"Negative Y / Bottom"}),nz:y.ParamDefinition.Text("",{label:"Negative Z / Back"}),px:y.ParamDefinition.Text("",{label:"Positive X / Right"}),py:y.ParamDefinition.Text("",{label:"Positive Y / Top"}),pz:y.ParamDefinition.Text("",{label:"Positive Z / Front"})},{isExpanded:!0,label:"URLs"}),files:y.ParamDefinition.Group({nx:y.ParamDefinition.File({label:"Negative X / Left",accept:"image/*"}),ny:y.ParamDefinition.File({label:"Negative Y / Bottom",accept:"image/*"}),nz:y.ParamDefinition.File({label:"Negative Z / Back",accept:"image/*"}),px:y.ParamDefinition.File({label:"Positive X / Right",accept:"image/*"}),py:y.ParamDefinition.File({label:"Positive Y / Top",accept:"image/*"}),pz:y.ParamDefinition.File({label:"Positive Z / Front",accept:"image/*"})},{isExpanded:!0,label:"Files"})}),blur:y.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or when "EXT_shader_texture_lod" is available.'}),rotation:y.ParamDefinition.Group({x:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),y:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),z:y.ParamDefinition.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0})}),...C},S={source:y.ParamDefinition.MappedStatic("url",{url:y.ParamDefinition.Text(""),file:y.ParamDefinition.File({accept:"image/*"})}),blur:y.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or with power-of-two images and when "EXT_shader_texture_lod" is available.'}),...C,coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))},T={topColor:y.ParamDefinition.Color((0,p.Color)(14540253)),bottomColor:y.ParamDefinition.Color((0,p.Color)(15658734)),ratio:y.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))},A={centerColor:y.ParamDefinition.Color((0,p.Color)(14540253)),edgeColor:y.ParamDefinition.Color((0,p.Color)(15658734)),ratio:y.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),coverage:y.ParamDefinition.Select("viewport",y.ParamDefinition.arrayToOptions(["viewport","canvas"]))};qu.BackgroundParams={variant:y.ParamDefinition.MappedStatic("off",{off:y.ParamDefinition.EmptyGroup(),skybox:y.ParamDefinition.Group(l,{isExpanded:!0}),image:y.ParamDefinition.Group(S,{isExpanded:!0}),horizontalGradient:y.ParamDefinition.Group(T,{isExpanded:!0}),radialGradient:y.ParamDefinition.Group(A,{isExpanded:!0})},{label:"Environment"})};class x{constructor(k,j,H,G){this.webgl=k,this.assetManager=j,this.camera=new g.Camera,this.target=(0,a.Vec3)(),this.position=(0,a.Vec3)(),this.dir=(0,a.Vec3)(),this.bgColor=(0,a.Vec3)(),this.renderable=q(k,H,G)}setSize(k,j){const[H,G]=this.renderable.values.uTexSize.ref.value;(k!==H||j!==G)&&f.ValueCell.update(this.renderable.values.uTexSize,d.Vec2.set(this.renderable.values.uTexSize.ref.value,k,j))}clearSkybox(){this.skybox!==void 0&&(this.skybox.texture.destroy(),this.skybox.assets.forEach(k=>this.assetManager.release(k)),this.skybox=void 0)}updateSkybox(k,j,H){var G;const z=(G=this.skybox)===null||G===void 0?void 0:G.props.faces,W=j.faces.params;if(!W.nx||!W.ny||!W.nz||!W.px||!W.py||!W.pz){this.clearSkybox(),H?.(!1);return}
5177if(!this.skybox||!z||!E(j.faces,this.skybox.props.faces)){this.clearSkybox();const{texture:Q,assets:J}=I(this.webgl,this.assetManager,j.faces,ae=>{this.skybox&&(this.skybox.loaded=!ae),H?.(!0)});this.skybox={texture:Q,props:{...j},assets:J,loaded:!1},f.ValueCell.update(this.renderable.values.tSkybox,Q),this.renderable.update(
5177)}else H?.(!1);if(!this.skybox)return;let X=k;k.state.mode==="orthographic"&&(this.camera.setState({...k.state,mode:"perspective"}),this.camera.update(),X=this.camera);const Y=this.renderable.values.uViewDirectionProjectionInverse.ref.value;h.Mat4.isZero(k.headRotation)?(a.Vec3.sub(this.dir,X.state.position,X.state.target),a.Vec3.setMagnitude(this.dir,this.dir,.1),a.Vec3.copy(this.position,this.dir),h.Mat4.lookAt(Y,this.position,this.target,X.state.up)):h.Mat4.invert(Y,k.headRotation),h.Mat4.mul(Y,X.projection,Y),h.Mat4.invert(Y,Y),f.ValueCell.update(this.renderable.values.uViewDirectionProjectionInverse,Y);const K=this.renderable.values.uRotation.ref.value;b.Mat3.fromEuler(K,P.Euler.create((0,v.degToRad)(j.rotation.x),(0,v.degToRad)(j.rotation.y),(0,v.degToRad)(j.rotation.z)),"XYZ"),f.ValueCell.update(this.renderable.values.uRotation,K),f.ValueCell.updateIfChanged(this.renderable.values.uBlur,j.blur),f.ValueCell.updateIfChanged(this.renderable.values.uOpacity,j.opacity),f.ValueCell.updateIfChanged(this.renderable.values.uSaturation,j.saturation),f.ValueCell.updateIfChanged(this.renderable.values.uLightness,j.lightness),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,"skybox"),this.renderable.update()}clearImage(){this.image!==void 0&&(this.image.texture.destroy(),this.assetManager.release(this.image.asset),this.image=void 0)}updateImage(k,j){if(!k.source.params){this.clearImage(),j?.(!1);return}if(!this.image||!this.image.props.source.params||!O(k.source,this.image.props.source)){this.clearImage();const{texture:H,asset:G}=F(this.webgl,this.assetManager,k.source,z=>{this.image&&(this.image.loaded=!z),j?.(!0)});this.image={texture:H,props:{...k},asset:G,loaded:!1},f.ValueCell.update(this.renderable.values.tImage,H),this.renderable.update()}else j?.(!1);this.image&&(f.ValueCell.updateIfChanged(this.renderable.values.uBlur,k.blur),f.ValueCell.updateIfChanged(this.renderable.values.uOpacity,k.opacity),f.ValueCell.updateIfChanged(this.renderable.values.uSaturation,k.saturation),f.ValueCell.updateIfChanged(this.renderable.values.uLightness,k.lightness),f.ValueCell.updateIfChanged(this.renderable.values.uViewportAdjusted,k.coverage==="viewport"),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,"image"),this.renderable.update())}updateImageScaling(){var k,j;const H=this.renderable.values,[G,z]=H.uTexSize.ref.value,W=((k=this.image)===null||k===void 0?void 0:k.texture.getWidth())||0,X=((j=this.image)===null||j===void 0?void 0:j.texture.getHeight())||0,Y=G/z,K=W/X;Y<K?f.ValueCell.update(H.uImageScale,d.Vec2.set(H.uImageScale.ref.value,W*z/X,z)):f.ValueCell.update(H.uImageScale,d.Vec2.set(H.uImageScale.ref.value,G,X*G/W));const[Q,J]=H.uImageScale.ref.value,ae=Q/J;ae>Y?f.ValueCell.update(H.uImageOffset,d.Vec2.set(H.uImageOffset.ref.value,(1-Y/ae)/2,0)):f.ValueCell.update(H.uImageOffset,d.Vec2.set(H.uImageOffset.ref.value,0,(1-ae/Y)/2))}updateGradient(k,j,H,G,z){f.ValueCell.update(this.renderable.values.uGradientColorA,p.Color.toVec3Normalized(this.renderable.values.uGradientColorA.ref.value,k)),f.ValueCell.update(this.renderable.values.uGradientColorB,p.Color.toVec3Normalized(this.renderable.values.uGradientColorB.ref.value,j)),f.ValueCell.updateIfChanged(this.renderable.values.uGradientRatio,H),f.ValueCell.updateIfChanged(this.renderable.values.uViewportAdjusted,z),f.ValueCell.updateIfChanged(this.renderable.values.dVariant,G),this.renderable.update()}update(k,j,H){if(j.variant.name==="off"){this.clearSkybox(),this.clearImage(),H?.(!1);return}else j.variant.name==="skybox"?(this.clearImage(),this.updateSkybox(k,j.variant.params,H)):j.variant.name==="image"?(this.clearSkybox(),this.updateImage(j.variant.params,H)):j.variant.name==="horizontalGradient"?(this.clearSkybox(),this.clearImage(),this.updateGradient(j.variant.params.topColor,j.variant.params.bottomColor,j.variant.params.ratio,j.variant.name,j.variant.params.coverage==="viewport"),H?.(!1)):j.variant.name==="radialGradient"&&(this.clearSkybox(),this.clearImage(),this.updateGradient(j.variant.params.centerColor,j.variant.params.edgeColor,j.variant.params.ratio,j.variant.name,j.variant.params.coverage==="viewport"),H?.(!1));const{x:G,y:z,width:W,height:X}=k.viewport;f.ValueCell.update(this.renderable.values.uViewport,m.Vec4.set(this.renderable.values.uViewport.ref.value,G,z,W,X))}_isEnabled(k){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||k.variant.name==="horizontalGradient"||k.variant.name==="radialGradient")}isEnabled(k){return k.enabled&&this._isEnabled(k.background)}isReady(){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||this.renderable.values.dVariant.ref.value==="horizontalGradient"||this.renderable.values.dVariant.ref.value==="radialGradient")}clear(k,j,H){const{gl:G,state:z}=this.webgl;this._isEnabled(k)?(j?z.clearColor(0,0,0,0):(p.Color.toVec3Normalized(this.bgColor,H),z.clearColor(this.bgColor[0],this.bgColor[1],this.bgColor[2],1)),G.clear(G.COLOR_BUFFER_BIT),z.enable(G.BLEND),z.blendFuncSeparate(G.SRC_ALPHA,G.ONE_MINUS_SRC_ALPHA,G.ONE,G.ONE_MINUS_SRC_ALPHA)):(p.Color.toVec3Normalized(this.bgColor,H),z.clearColor(this.bgColor[0],this.bgColor[1],this.bgColor[2],1),G.clear(G.COLOR_BUFFER_BIT))}render(k){!this._isEnabled(k)||!this.isReady()||(this.renderable.values.dVariant.ref.value==="image"&&this.updateImageScaling(),_.isTimingMode&&this.webgl.timer.mark("Backgroun
5177dPass.render"),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("BackgroundPass.render"))}dispose(){this.clearSkybox(),this.clearImage()}}qu.BackgroundPass=x;const M="background-skybox";function D(N,k){return k.name==="urls"?{nx:u.Asset.getUrlAsset(N,k.params.nx),ny:u.Asset.getUrlAsset(N,k.params.ny),nz:u.Asset.getUrlAsset(N,k.params.nz),px:u.Asset.getUrlAsset(N,k.params.px),py:u.Asset.getUrlAsset(N,k.params.py),pz:u.Asset.getUrlAsset(N,k.params.pz)}:{nx:k.params.nx,ny:k.params.ny,nz:k.params.nz,px:k.params.px,py:k.params.py,pz:k.params.pz}}function V(N,k){const j=H=>N.resolve(H,"binary").run().then(G=>new Blob([G.data]));return{nx:j(k.nx),ny:j(k.ny),nz:j(k.nz),px:j(k.px),py:j(k.py),pz:j(k.pz)}}function R(N){var k,j,H,G,z,W;return N.name==="urls"?`${M}_${N.params.nx}|${N.params.ny}|${N.params.nz}|${N.params.px}|${N.params.py}|${N.params.pz}`:`${M}_${(k=N.params.nx)===null||k===void 0?void 0:k.id}|${(j=N.params.ny)===null||j===void 0?void 0:j.id}|${(H=N.params.nz)===null||H===void 0?void 0:H.id}|${(G=N.params.px)===null||G===void 0?void 0:G.id}|${(z=N.params.py)===null||z===void 0?void 0:z.id}|${(W=N.params.pz)===null||W===void 0?void 0:W.id}`}function E(N,k){return R(N)===R(k)}function I(N,k,j,H){const G=D(k,j),z=V(k,G),W=[G.nx,G.ny,G.nz,G.px,G.py,G.pz];return typeof HTMLImageElement>"u"?(console.error('Missing "HTMLImageElement" required for background skybox'),H?.(!0),{texture:(0,s.createNullTexture)(),assets:W}):{texture:N.resources.cubeTexture(z,!0,H),assets:W}}const B="background-image";function w(N){var k;return N.name==="url"?`${B}_${N.params}`:`${B}_${(k=N.params)===null||k===void 0?void 0:k.id}`}function O(N,k){return w(N)===w(k)}function F(N,k,j,H){var G;const z=j.name==="url"?(G=k.tryFindFilename(j.params))!==null&&G!==void 0?G:u.Asset.getUrlAsset(k,j.params):j.params;if(typeof HTMLImageElement>"u")return console.error('Missing "HTMLImageElement" required for background image'),H?.(!0),{texture:(0,s.createNullTexture)(),asset:z};const W=N.resources.texture("image-uint8","rgba","ubyte","linear"),X=new Image;return X.onload=()=>{W.load(X),(N.isWebGL2||(0,v.isPowerOfTwo)(X.width)&&(0,v.isPowerOfTwo)(X.height))&&W.mipmap(),H?.()},X.onerror=()=>{H?.(!0)},k.resolve(z,"binary").run().then(Y=>{const K=new Blob([Y.data]);X.src=URL.createObjectURL(K)}),{texture:W,asset:z}}const L={drawCount:(0,r.ValueSpec)("number"),instanceCount:(0,r.ValueSpec)("number"),aPosition:(0,r.AttributeSpec)("float32",2,0),tSkybox:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tImage:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uImageScale:(0,r.UniformSpec)("v2"),uImageOffset:(0,r.UniformSpec)("v2"),uTexSize:(0,r.UniformSpec)("v2"),uViewport:(0,r.UniformSpec)("v4"),uViewportAdjusted:(0,r.UniformSpec)("b"),uViewDirectionProjectionInverse:(0,r.UniformSpec)("m4"),uGradientColorA:(0,r.UniformSpec)("v3"),uGradientColorB:(0,r.UniformSpec)("v3"),uGradientRatio:(0,r.UniformSpec)("f"),uBlur:(0,r.UniformSpec)("f"),uOpacity:(0,r.UniformSpec)("f"),uSaturation:(0,r.UniformSpec)("f"),uLightness:(0,r.UniformSpec)("f"),uRotation:(0,r.UniformSpec)("m3"),dVariant:(0,r.DefineSpec)("string",["skybox","image","verticalGradient","horizontalGradient","radialGradient"])},U=(0,n.ShaderCode)("background",c.background_vert,i.background_frag,{shaderTextureLod:"optional"});function q(N,k,j){const H={drawCount:f.ValueCell.create(6),instanceCount:f.ValueCell.create(1),aPosition:f.ValueCell.create(e.QuadPositions),tSkybox:f.ValueCell.create((0,s.createNullTexture)()),tImage:f.ValueCell.create((0,s.createNullTexture)()),uImageScale:f.ValueCell.create((0,d.Vec2)()),uImageOffset:f.ValueCell.create((0,d.Vec2)()),uTexSize:f.ValueCell.create(d.Vec2.create(k,j)),uViewport:f.ValueCell.create((0,m.Vec4)()),uViewportAdjusted:f.ValueCell.create(!0),uViewDirectionProjectionInverse:f.ValueCell.create((0,h.Mat4)()),uGradientColorA:f.ValueCell.create((0,a.Vec3)()),uGradientColorB:f.ValueCell.create((0,a.Vec3)()),uGradientRatio:f.ValueCell.create(.5),uBlur:f.ValueCell.create(0),uOpacity:f.ValueCell.create(1),uSaturation:f.ValueCell.create(0),uLightness:f.ValueCell.create(0),uRotation:f.ValueCell.create(b.Mat3.identity()),dVariant:f.ValueCell.create("skybox")},G={...L},z=(0,o.createComputeRenderItem)(N,"triangles",U,G,H);return(0,t.createComputeRenderable)(z,H)}return qu}var Uu={},Wv={},o8;function Roe(){return o8||(o8=1,Object.defineProperty(Wv,"__esMo
5177dule",{value:!0}),Wv.cas_frag=void 0,Wv.cas_frag=` 5178precision mediump float; 5179precision mediump sampler2D; 5180 5181uniform sampler2D tColor; 5182uniform vec2 uTexSizeInv; 5183 5184uniform float uSharpness; 5185 5186// adapted from https://www.shadertoy.com/view/stXSWB 5187 5188/* 5189* FidelityFX Super Resolution scales up a low resolution 5190* image, while adding fine detail. 5191* 5192* MIT Open License 5193* 5194* https://gpuopen.com/fsr 5195* 5196* Left: FSR processed 5197* Right: Original texture, bilinear interpolation 5198* 5199* Mouse at top: Sharpness 0 stops (maximum) 5200* Mouse at bottom: Sharpness 2 stops (minimum) 5201* 5202* It works in two passes- 5203* EASU upsamples the image with a clamped Lanczos kernel. 5204* RCAS sharpens the image at the target resolution. 5205* 5206* I needed to make a few changes to improve readability and 5207* WebGL compatibility in an algorithm I don't fully understand. 5208* Expect bugs. 5209* 5210* Shader not currently running for WebGL1 targets (eg. mobile Safari) 5211* 5212* There is kind of no point to using FSR in Shadertoy, as it renders buffers 5213* at full target resolution. But this might be useful for WebGL based demos 5214* running smaller-than-target render buffers. 5215* 5216* For sharpening with a full resolution render buffer, 5217* FidelityFX CAS is a better option. 5218* https://www.shadertoy.com/view/ftsXzM 5219* 5220* For readability and compatibility, these optimisations have been removed: 5221* * Fast approximate inverse and inversesqrt 5222* * textureGather fetches (not WebGL compatible) 5223* * Multiplying by reciprocal instead of division 5224* 5225* Apologies to AMD for the numerous slowdowns and errors I have introduced. 5226* 5227*/ 5228 5229/***** RCAS *****/ 5230#define FSR_RCAS_LIMIT (0.25-(1.0/16.0)) 5231 5232// Input callback prototypes that need to be implemented by calling shader 5233vec4 FsrRcasLoadF(vec2 p); 5234//------------------------------------------------------------------------------------------------------------------------------ 5235void FsrRcasCon( 5236 out float con, 5237 // The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. 5238 float sharpness 5239) { 5240 // Transform from stops to linear value. 5241 con = exp2(-sharpness); 5242} 5243 5244vec3 FsrRcasF( 5245 vec2 ip, // Integer pixel position in output. 5246 float con 5247) { 5248 // Constant generated by RcasSetup(). 5249 // Algorithm uses minimal 3x3 pixel neighborhood. 5250 // b 5251 // d e f 5252 // h 5253 vec2 sp = vec2(ip); 5254 vec3 b = FsrRcasLoadF(sp + vec2( 0,-1)).rgb; 5255 vec3 d = FsrRcasLoadF(sp + vec2(-1, 0)).rgb; 5256 vec3 e = FsrRcasLoadF(sp).rgb; 5257 vec3 f = FsrRcasLoadF(sp + vec2( 1, 0)).rgb; 5258 vec3 h = FsrRcasLoadF(sp + vec2( 0, 1)).rgb; 5259 5260 // Luma times 2. 5261 float bL = b.g + .5 * (b.b + b.r); 5262 float dL = d.g + .5 * (d.b + d.r); 5263 float eL = e.g + .5 * (e.b + e.r); 5264 float fL = f.g + .5 * (f.b + f.r); 5265 float hL = h.g + .5 * (h.b + h.r); 5266 5267 // Noise detection. 5268 #ifdef dDenoise 5269 float nz = .25 * (bL + dL + fL + hL) - eL; 5270 nz=clamp( 5271 abs(nz) 5272 /( 5273 max(max(bL,dL),max(eL,max(fL,hL))) 5274 -min(min(bL,dL),min(eL,min(fL,hL))) 5275 ), 5276 0., 1. 5277 ); 5278 nz=1.-.5*nz; 5279 #endif 5280 5281 // Min and max of ring. 5282 vec3 mn4 = min(b, min(f, h)); 5283 vec3 mx4 = max(b, max(f, h)); 5284 5285 // Immediate constants for peak range. 5286 vec2 peakC = vec2(1., -4.); 5287 5288 // Limiters, these need to be high precision RCPs. 5289 vec3 hitMin = mn4 / (4. * mx4); 5290 vec3 hitMax = (peakC.x - mx4) / (4.* mn4 + peakC.y); 5291 vec3 lobeRGB = max(-hitMin, hitMax); 5292 float lobe = max( 5293 -FSR_RCAS_LIMIT, 5294 min(max(lobeRGB.r, max(lobeRGB.g, lobeRGB.b)), 0.) 5295 )*con; 5296 5297 // Apply noise removal. 5298 #ifdef dDenoise 5299 lobe *= nz; 5300 #endif 5301 5302 // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. 5303 return (lobe * (b + d + h + f) + e) / (4. * lobe + 1.); 5304} 5305 5306 5307vec4 FsrRcasLoadF(vec2 p) { 5308 return texture2D(tColor, p * uTexSizeInv); 5309} 5310 5311void main() { 5312 // Set up constants 5313 float con; 5314 FsrRcasCon(con, uSharpness); 5315 5316 // Perform RCAS pass 5317 vec3 col = FsrRcasF(gl_FragCoord.xy, con); 5318 5319 gl_FragColor = vec4(col, FsrRcasLoadF(gl_FragCoord.xy).a); 5320} 5321`),Wv}var s8;function Ooe(){if(s8)return Uu;
5321s8=1,Object.defineProperty(Uu,"__esModule",{value:!0}),Uu.CasPass=Uu.CasParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Ct(),y=Roe();Uu.CasParams={sharpness:s.ParamDefinition.Numeric(.5,{min:0,max:1,step:.05}),denoise:s.ParamDefinition.Boolean(!0)};class _{constructor(u,m){this.webgl=u,this.renderable=d(u,m)}updateState(u){const{gl:m,state:v}=this.webgl;v.enable(m.SCISSOR_TEST),v.disable(m.BLEND),v.disable(m.DEPTH_TEST),v.depthMask(!1);const{x:b,y:P,width:C,height:l}=u;v.viewport(b,P,C,l),v.scissor(b,P,C,l),v.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT)}setSize(u,m){o.ValueCell.update(this.renderable.values.uTexSizeInv,c.Vec2.set(this.renderable.values.uTexSizeInv.ref.value,1/u,1/m))}update(u,m){const{values:v}=this.renderable,{sharpness:b,denoise:P}=m;let C=!1;v.tColor.ref.value!==u&&(o.ValueCell.update(this.renderable.values.tColor,u),C=!0),o.ValueCell.updateIfChanged(v.uSharpness,2-2*Math.pow(b,.25)),v.dDenoise.ref.value!==P&&(C=!0),o.ValueCell.updateIfChanged(v.dDenoise,P),C&&this.renderable.update()}render(u,m){f.isTimingMode&&this.webgl.timer.mark("CasPass.render"),m?m.bind():this.webgl.bindDrawingBuffer(),this.updateState(u),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("CasPass.render")}}Uu.CasPass=_;const g={...e.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uSharpness:(0,r.UniformSpec)("f"),dDenoise:(0,r.DefineSpec)("boolean")},a=(0,n.ShaderCode)("cas",h.quad_vert,y.cas_frag);function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tColor:o.ValueCell.create(u),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/m,1/v)),uSharpness:o.ValueCell.create(.5),dDenoise:o.ValueCell.create(!0)},P={...g},C=(0,i.createComputeRenderItem)(p,"triangles",a,P,b);return(0,t.createComputeRenderable)(C,b)}return Uu}var ju={},$v={},c8;function koe(){return c8||(c8=1,Object.defineProperty($v,"__esModule",{value:!0}),$v.dof_frag=void 0,$v.dof_frag=` 5322precision highp float; 5323precision highp int; 5324precision highp sampler2D; 5325 5326#include common 5327 5328uniform sampler2D tColor; 5329uniform sampler2D tDepthOpaque; 5330uniform sampler2D tDepthTransparent; 5331 5332uniform vec2 uTexSize; 5333uniform vec4 uBounds; 5334 5335uniform float uBlurSpread; 5336uniform float uInFocus; 5337uniform float uPPM; 5338 5339uniform float uNear; // Near plane 5340uniform float uFar; // Far plane 5341 5342uniform mat4 uInvProjection; // Inverse projection 5343uniform mat4 uProjection; // projection 5344 5345uniform int uMode; // 0-planar, 1-spherical 5346uniform vec3 uCenter; // Center of focus sphere in view space 5347 5348// Function to convert depth value from depth buffer to view space Z 5349float getViewZ(const in float depth) { 5350 #if dOrthographic == 1 5351 return orthographicDepthToViewZ(depth, uNear, uFar); 5352 #else 5353 return perspectiveDepthToViewZ(depth, uNear, uFar); 5354 #endif 5355} 5356 5357// Retrieve depth from opaque depth texture 5358float getDepthOpaque(const in vec2 coords) { 5359 #ifdef depthTextureSupport 5360 return texture2D(tDepthOpaque, coords).r; 5361 #else 5362 return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); 5363 #endif 5364} 5365 5366// Retrieve depth from transparent depth texture 5367float getDepthTransparent(const in vec2 coords) { 5368 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x; 5369} 5370 5371bool isBackground(const in float depth) { 5372 return depth == 1.0; 5373} 5374 5375float getDepth(const in vec2 coords) { 5376 return min(getDepthOpaque(coords), getDepthTransparent(coords)); 5377} 5378 5379float getCOC(vec2 uv) { 5380 float depth = getDepth(uv); 5381 float viewDist = getViewZ(depth); 5382 vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection); 5383 float focusDist = length(aposition - uCenter); 5384 float coc = 0.0; // Circle of Confusion 5385 if (uMode == 0) { // planar Depth of field 5386 coc = (abs(viewDist) - uInFocus) / uPPM; //focus distance, focus range 5387 } else if(uMode == 1) { // spherical Depth of field 5388 coc = focusDist / uPPM ; 5389 } 5390 coc = clamp(coc, -1.0, 1.0); 5391 return coc; 5392} 5393 5394// Simple box blur for blurring the image 5395vec3 getBlurredImage(vec2 coords) { 5396 vec4 blurColor = vec4(0); 5397 vec2 texelSize = vec2(1.0 / uTexSize.x, 1.0 / uTexSize.y); 5398 float count = 0.0; 5399 for (int x = 0; x < int(dBlurSize); x++) { 5400 for (int y = 0; y < int(dBlurSize); y++) { 5401 vec2 offset = vec2(float(x) - float(dBlurSize) / 2.0, float(y) - float(dBlurSize) / 2.0); 5402 vec2 uvPixel = coords.xy + offset * texelSize * uBlurSpread; 5403 float coc = getCOC(uvPixel); 5404 coc = smoothstep(0.0, 1.0, abs(coc)); 5405 // mix blurColor with new color with weight coc 5406 blurColor.rgb = blurColor.rgb + texture2D(tColor, uvPixel).xyz * coc; 5407 count+=coc; 5408 } 5409 } 5410 blurColor = blurColor / count; 5411 return blurColor.rgb; 5412} 5413 5414// simplification from https://catlikecoding.com/unity/tutorials/advanced-rendering/depth-of-field/ 5415void main() { 5416 vec2 uv = gl_FragCoord.xy / uTexSize; 5417 vec4 color = texture2D(tColor, uv); 5418 float depth = getDepth(uv); 5419 5420 float viewDist = getViewZ(depth); 5421 5422 vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection); 5423 float focusDist = length(aposition - uCenter); 5424 vec3 blurColor = getBlurredImage(uv); 5425 5426 float coc = getCOC(uv); // Circle of Confusion 5427 5428 // for debugging the coc 5429 // color.rgb = (coc < 0.0) ? (1.0 - abs(coc)) * vec3(1.0,0.0,0.0) : vec3(0.0, 1.0 - coc, 0.0) ;//mix(color.rgb, blurColor.rgb, abs(coc)); 5430 color.rgb = mix(color.rgb, blurColor, smoothstep(0.0, 1.0, abs(coc))); // Smooth blending based on CoC 5431 gl_FragColor = color; 5432} 5433`),$v}var u8;function Fw(){if(u8)return ju;
5433u8=1,Object.defineProperty(ju,"__esModule",{value:!0}),ju.DofPass=ju.DofParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Gr(),y=koe(),_=Ct();ju.DofParams={blurSize:h.ParamDefinition.Numeric(9,{min:1,max:32,step:1}),blurSpread:h.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),inFocus:h.ParamDefinition.Numeric(0,{min:-5e3,max:5e3,step:1},{description:"Distance from the scene center that will be in focus"}),PPM:h.ParamDefinition.Numeric(20,{min:0,max:5e3,step:.1},{description:"Size of the area that will be in focus"}),center:h.ParamDefinition.Select("camera-target",h.ParamDefinition.arrayToOptions(["scene-center","camera-target"])),mode:h.ParamDefinition.Select("plane",h.ParamDefinition.arrayToOptions(["plane","sphere"]))};class g{static isEnabled(m){return m.enabled&&m.dof.name!=="off"}constructor(m,v,b){this.webgl=m,this.target=m.createRenderTarget(v,b,!1);const P=(0,c.createNullTexture)();this.renderable=p(m,P,P,P)}getByteCount(){return this.target.getByteCount()}updateState(m){const{gl:v,state:b}=this.webgl;b.enable(v.SCISSOR_TEST),b.disable(v.BLEND),b.disable(v.DEPTH_TEST),b.depthMask(!1);const{x:P,y:C,width:l,height:S}=m;b.viewport(P,C,l,S),b.scissor(P,C,l,S),b.clearColor(0,0,0,1),v.clear(v.COLOR_BUFFER_BIT)}setSize(m,v){const b=this.target.texture.getWidth(),P=this.target.texture.getHeight();(m!==b||v!==P)&&(this.target.setSize(m,v),s.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,m,v)))}update(m,v,b,P,C,l){let S=!1;this.renderable.values.tColor.ref.value!==v&&(s.ValueCell.update(this.renderable.values.tColor,v),S=!0),this.renderable.values.tDepthOpaque.ref.value!==b&&(s.ValueCell.update(this.renderable.values.tDepthOpaque,b),S=!0),this.renderable.values.tDepthTransparent.ref.value!==P&&(s.ValueCell.update(this.renderable.values.tDepthTransparent,P),S=!0);const T=m.state.mode==="orthographic"?1:0,A=this.renderable.values.uInvProjection.ref.value;o.Mat4.invert(A,m.projection);const[x,M]=this.renderable.values.uTexSize.ref.value,D=m.viewport;s.ValueCell.update(this.renderable.values.uProjection,m.projection),s.ValueCell.update(this.renderable.values.uInvProjection,A),s.ValueCell.update(this.renderable.values.uMode,C.mode==="sphere"?1:0),o.Vec4.set(this.renderable.values.uBounds.ref.value,D.x/x,D.y/M,(D.x+D.width)/x,(D.y+D.height)/M),s.ValueCell.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),s.ValueCell.updateIfChanged(this.renderable.values.uNear,m.near),s.ValueCell.updateIfChanged(this.renderable.values.uFar,m.far),s.ValueCell.updateIfChanged(this.renderable.values.dOrthographic,T);const V=Math.round(C.blurSize*this.webgl.pixelRatio);this.renderable.values.dBlurSize.ref.value!==V&&(s.ValueCell.update(this.renderable.values.dBlurSize,V),S=!0);const R=C.center==="scene-center"?l.center:m.state.target,I=o.Vec3.distance(m.state.position,R)+C.inFocus;s.ValueCell.updateIfChanged(this.renderable.values.uInFocus,I*m.scale);const B=this.renderable.values.uCenter.ref.value;o.Vec3.transformMat4(B,R,m.view),s.ValueCell.update(this.renderable.values.uCenter,B),s.ValueCell.updateIfChanged(this.renderable.values.uBlurSpread,C.blurSpread),s.ValueCell.updateIfChanged(this.renderable.values.uPPM,C.PPM*m.scale),S&&this.renderable.update()}render(m,v){_.isTimingMode&&this.webgl.timer.mark("DofPass.render"),v?v.bind():this.webgl.bindDrawingBuffer(),this.updateState(m),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("DofPass.render")}}ju.DofPass=g;const a={...e.QuadSchema,tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tColor:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),uProjection:(0,r.UniformSpec)("m4"),uInvProjection:(0,r.UniformSpec)("m4"),uBounds:(0,r.UniformSpec)("v4"),uCenter:(0,r.UniformSpec)("v3"),uMode:(0,r.UniformSpec)("i"),dOrthographic:(0,r.DefineSpec)("number"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),dBlurSize:(0,r.DefineSpec)("number"),uBlurSpread:(0,r.UniformSpec)("f"),uInFocus:(0,r.UniformSpec)("f"),uPPM:(0,r.UniformSpec)("f")},d=(0,n.ShaderCode)("dof",f.quad_vert,y.dof_frag);function p(u,m,v,b){const P=m.getWidth(),C=m.getHeight(),l={...e.QuadValues,tDepthOpaque:s.ValueCell.create(v),tDepthTransparent:s.ValueCell.create(b),tColor:s.ValueCell.create(m),uTexSize:s.ValueCell.create(o.Vec2.create(P,C)),uProjection:s.ValueCell.create(o.Mat4.identity()),uInvProjection:s.ValueCell.create(o.Mat4.identity()),uBounds:s.ValueCell.create((0,o.Vec4)()),uCenter:s.ValueCell.create((0,o.Vec3)()),uMode:s.ValueCell.create(0),dOrthographic:s.ValueCell.create(0),uNear:s.ValueCell.create(1),uFar:s.ValueCell.create(1e4),dBlurSize:s.ValueCell.create(5),uBlurSpread:s.ValueCell.create(300),uInFocus:s.ValueCell.create(20),uPPM:s.ValueCell.create(20)},S={...a},T=(0,i.createComputeRenderItem)(u,"triangles",d,S,l);return(0,t.createComputeRenderable)(T,l)}return ju}var Gu={},Xv={},l8;function Foe(){return l8||(l8=1,Object.defineProperty(Xv,"__esMo
5433dule",{value:!0}),Xv.composite_frag=void 0,Xv.composite_frag=` 5434precision highp float; 5435precision highp int; 5436precision highp sampler2D; 5437 5438uniform vec2 uTexSizeInv; 5439 5440uniform sampler2D tBlur1; 5441uniform sampler2D tBlur2; 5442uniform sampler2D tBlur3; 5443uniform sampler2D tBlur4; 5444uniform sampler2D tBlur5; 5445uniform float uBloomStrength; 5446uniform float uBloomRadius; 5447uniform float uBloomFactors[5]; 5448uniform vec3 uBloomTints[5]; 5449 5450float lerpBloomFactor(const in float factor) { 5451 float mirrorFactor = 1.2 - factor; 5452 return mix(factor, mirrorFactor, uBloomRadius); 5453} 5454 5455void main(void) { 5456 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 5457 5458 gl_FragColor = uBloomStrength * ( 5459 lerpBloomFactor(uBloomFactors[0]) * vec4(uBloomTints[0], 1.0) * texture2D(tBlur1, coords) + 5460 lerpBloomFactor(uBloomFactors[1]) * vec4(uBloomTints[1], 1.0) * texture2D(tBlur2, coords) + 5461 lerpBloomFactor(uBloomFactors[2]) * vec4(uBloomTints[2], 1.0) * texture2D(tBlur3, coords) + 5462 lerpBloomFactor(uBloomFactors[3]) * vec4(uBloomTints[3], 1.0) * texture2D(tBlur4, coords) + 5463 lerpBloomFactor(uBloomFactors[4]) * vec4(uBloomTints[4], 1.0) * texture2D(tBlur5, coords) 5464 ); 5465} 5466`),Xv}var Kv={},d8;function Loe(){return d8||(d8=1,Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.luminosity_frag=void 0,Kv.luminosity_frag=` 5467precision highp float; 5468precision highp int; 5469precision highp sampler2D; 5470 5471uniform sampler2D tColorOpaque; 5472uniform sampler2D tColorTransparent; 5473uniform sampler2D tEmissive; 5474uniform sampler2D tDepthOpaque; 5475uniform sampler2D tDepthTransparent; 5476uniform vec2 uTexSizeInv; 5477 5478uniform vec3 uDefaultColor; 5479uniform float uDefaultOpacity; 5480uniform float uLuminosityThreshold; 5481uniform float uSmoothWidth; 5482 5483uniform float uNear; 5484uniform float uFar; 5485uniform float uIsOrtho; 5486uniform float uFogNear; 5487uniform float uFogFar; 5488uniform bool uOpaqueFogged; 5489 5490#include common 5491 5492float getDepthOpaque(const in vec2 coords) { 5493 #ifdef depthTextureSupport 5494 return texture2D(tDepthOpaque, coords).r; 5495 #else 5496 return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); 5497 #endif 5498} 5499 5500float getDepthTransparent(const in vec2 coords) { 5501 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x; 5502} 5503 5504float getDepth(const in vec2 coords) { 5505 return min(getDepthOpaque(coords), getDepthTransparent(coords)); 5506} 5507 5508bool isBackground(const in float depth) { 5509 // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32. 5510 return depth >= 0.99999994; 5511} 5512 5513void main(void) { 5514 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 5515 vec4 opaqueTexel = texture2D(tColorOpaque, coords); 5516 vec4 transparentTexel = texture2D(tColorTransparent, coords); 5517 // fog illumination's un-fogged opaque seed by the opaque depth, matching standard's per-layer fog 5518 if (!uOpaqueFogged) { 5519 opaqueTexel.rgb *= 1.0 - smoothstep(uFogNear, uFogFar, abs(depthToViewZ(uIsOrtho, getDepthOpaque(coords), uNear, uFar))); 5520 } 5521 // PMA OVER composite, matches postprocessing's final transparency blend. 5522 vec4 texel = transparentTexel + opaqueTexel * (1.0 - transparentTexel.a); 5523 float emissive = texture2D(tEmissive, coords).a; 5524 float depth = getDepth(coords); 5525 5526 if (isBackground(depth)) { 5527 gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); 5528 return; 5529 } 5530 5531 vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity); 5532 5533 #if defined(dMode_luminosity) 5534 vec3 luma = vec3(0.299, 0.587, 0.114); 5535 float v = dot(texel.xyz, luma); 5536 float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v); 5537 5538 gl_FragColor = mix(outputColor, texel, alpha); 5539 #elif defined(dMode_emissive) 5540 // the prepass already holds the fogged emissive color, free of lighting/exposure 5541 gl_FragColor = texture2D(tEmissive, coords); 5542 #endif 5543} 5544`),Kv}var Yv={},f8;function Noe(){return f8||(f8=1,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.blur_frag=void 0,Yv.blur_frag=` 5545precision highp float; 5546precision highp int; 5547precision highp sampler2D; 5548 5549uniform sampler2D tInput; 5550uniform vec2 uTexSizeInv; 5551 5552uniform vec2 uDirection; 5553uniform float uGaussianCoefficients[dKernelRadius]; 5554 5555void main(void) { 5556 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 5557 float weightSum = uGaussianCoefficients[0]; 5558 vec4 diffuseSum = texture2D(tInput, coords) * weightSum; 5559 5560 for(int i = 1; i < dKernelRadius; ++i) { 5561 float x = float(i); 5562 float w = uGaussianCoefficients[i]; 5563 vec2 offset = uDirection * uTexSizeInv * x; 5564 vec4 sample1 = texture2D(tInput, coords + offset); 5565 vec4 sample2 = texture2D(tInput, coords - offset); 5566 diffuseSum += (sample1 + sample2) * w; 5567 weightSum += 2.0 * w; 5568 } 5569 5570 gl_FragColor = diffuseSum / weightSum; 5571} 5572`),Yv}var m8;
5572function m2(){if(m8)return Gu;m8=1,Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.BloomPass=Gu.BloomParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=bn(),o=Ge(),s=et(),h=Ne(),f=Gr(),y=Ct(),_=Foe(),g=Loe(),a=Noe(),d=Af(),p=5;Gu.BloomParams={strength:h.ParamDefinition.Numeric(1,{min:0,max:3,step:.1}),radius:h.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),threshold:h.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{description:"Luminosity threshold",hideIf:E=>E.mode==="emissive"}),mode:h.ParamDefinition.Select("emissive",[["luminosity","Luminosity"],["emissive","Emissive"]]),transparency:h.ParamDefinition.Boolean(!0,{description:"Include transparent objects in emissive bloom",hideIf:E=>E.mode!=="emissive"})};class u{static isEnabled(I){return I.enabled&&I.bloom.name==="on"}constructor(I,B,w){this.webgl=I,this.horizontalBlurTargets=[],this.verticalBlurTargets=[],this.emissiveTarget=I.createRenderTarget(B,w,!0,"uint8","linear","rgba"),this.luminosityTarget=I.createRenderTarget(B,w,!1,"uint8","linear"),this.compositeTarget=I.createRenderTarget(B,w,!1,"uint8","linear");let O=Math.round(B/2),F=Math.round(w/2);for(let U=0;U<p;++U)this.horizontalBlurTargets[U]=I.createRenderTarget(O,F,!1,"uint8","linear"),this.verticalBlurTargets[U]=I.createRenderTarget(O,F,!1,"uint8","linear"),O=Math.round(O/2),F=Math.round(F/2);const L=(0,c.createNullTexture)();this.luminosityRenderable=b(I,L,L,L,L,L),this.blurRenderable=M(I,L),this.compositeRenderable=R(I,B,w,this.verticalBlurTargets[0].texture,this.verticalBlurTargets[1].texture,this.verticalBlurTargets[2].texture,this.verticalBlurTargets[3].texture,this.verticalBlurTargets[4].texture)}getByteCount(){return this.emissiveTarget.getByteCount()+this.luminosityTarget.getByteCount()+this.compositeTarget.getByteCount()+this.horizontalBlurTargets.reduce((I,B)=>I+B.getByteCount(),0)+this.verticalBlurTargets.reduce((I,B)=>I+B.getByteCount(),0)}setSize(I,B){const w=this.luminosityTarget.getWidth(),O=this.luminosityTarget.getHeight();if(I!==w||B!==O){this.emissiveTarget.setSize(I,B),this.luminosityTarget.setSize(I,B),this.compositeTarget.setSize(I,B);let F=Math.round(I/2),L=Math.round(B/2);for(let U=0;U<p;++U)this.horizontalBlurTargets[U].setSize(F,L),this.verticalBlurTargets[U].setSize(F,L),F=Math.round(F/2),L=Math.round(L/2);s.ValueCell.update(this.luminosityRenderable.values.uTexSizeInv,o.Vec2.set(this.luminosityRenderable.values.uTexSizeInv.ref.value,1/I,1/B)),s.ValueCell.update(this.compositeRenderable.values.uTexSizeInv,o.Vec2.set(this.compositeRenderable.values.uTexSizeInv.ref.value,1/I,1/B))}}update(I,B,w,O,F,L,U,q){let N=!1;this.luminosityRenderable.values.tColorOpaque.ref.value!==I&&(s.ValueCell.update(this.luminosityRenderable.values.tColorOpaque,I),N=!0),this.luminosityRenderable.values.tColorTransparent.ref.value!==B&&(s.ValueCell.update(this.luminosityRenderable.values.tColorTransparent,B),N=!0),this.luminosityRenderable.values.tEmissive.ref.value!==w&&(s.ValueCell.update(this.luminosityRenderable.values.tEmissive,w),N=!0),this.luminosityRenderable.values.tDepthOpaque.ref.value!==O&&(s.ValueCell.update(this.luminosityRenderable.values.tDepthOpaque,O),N=!0),this.luminosityRenderable.values.tDepthTransparent.ref.value!==F&&(s.ValueCell.update(this.luminosityRenderable.values.tDepthTransparent,F),N=!0),this.luminosityRenderable.values.dMode.ref.value!==L.mode&&(s.ValueCell.update(this.luminosityRenderable.values.dMode,L.mode),N=!0),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uLuminosityThreshold,L.threshold),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uNear,U.near),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFar,U.far),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uIsOrtho,U.state.mode==="orthographic"?1:0),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFogNear,U.fogNear),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uFogFar,U.fogFar),s.ValueCell.updateIfChanged(this.luminosityRenderable.values.uOpaqueFogged,q),N&&this.luminosityRenderable.update(),s.ValueCell.updateIfChanged(this.compositeRenderable.values.uBloomRadius,L.radius),s.ValueCell.updateIfChanged(this.compositeRenderable.values.uBloomStrength,L.strength)}render(I){y.isTimingMode&&this.webgl.timer.mark("BloomPass.render");const{gl:B,state:w}=this.webgl,{x:O,y:F,width:L,height:U}=I;w.viewport(O,F,L,U),w.scissor(O,F,L,U),w.enable(B.SCISSOR_TEST),w.disable(B.BLEND),w.disable(B.DEPTH_TEST),w.depthMask(!1),this.luminosityTarget.bind(),this.luminosityRenderable.render();for(let q=0;q<p;++q){const N=this.horizontalBlurTargets[q].getWidth(),k=this.horizontalBlurTargets[q].getHeight();w.viewport(0,0,N,k),w.scissor(0,0,N,k),s.ValueCell.update(this.blurRenderable.values.dKernelRadius,l[q]),s.ValueCell.update(this.blurRenderable.values.uGaussianCoefficients,C(l[q])),s.V
5572alueCell.update(this.blurRenderable.values.uTexSizeInv,o.Vec2.set(this.blurRenderable.values.uTexSizeInv.ref.value,1/N,1/k)),this.horizontalBlurTargets[q].bind(),s.ValueCell.update(this.blurRenderable.values.tInput,q===0?this.luminosityTarget.texture:this.verticalBlurTargets[q-1].texture),s.ValueCell.update(this.blurRenderable.values.uDirection,S),this.blurRenderable.update(),this.blurRenderable.render(),this.verticalBlurTargets[q].bind(),s.ValueCell.update(this.blurRenderable.values.tInput,this.horizontalBlurTargets[q].texture),s.ValueCell.update(this.blurRenderable.values.uDirection,T),this.blurRenderable.update(),this.blurRenderable.render()}w.viewport(O,F,L,U),w.scissor(O,F,L,U),this.compositeTarget.bind(),this.compositeRenderable.update(),this.compositeRenderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("BloomPass.render")}}Gu.BloomPass=u;const m={...e.QuadSchema,tColorOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tColorTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tEmissive:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,r.UniformSpec)("v2"),uDefaultColor:(0,r.UniformSpec)("v3"),uDefaultOpacity:(0,r.UniformSpec)("f"),uLuminosityThreshold:(0,r.UniformSpec)("f"),uSmoothWidth:(0,r.UniformSpec)("f"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),uIsOrtho:(0,r.UniformSpec)("f"),uFogNear:(0,r.UniformSpec)("f"),uFogFar:(0,r.UniformSpec)("f"),uOpaqueFogged:(0,r.UniformSpec)("b"),dMode:(0,r.DefineSpec)("string",["luminosity","emissive"])},v=(0,n.ShaderCode)("Bloom Luminosity",f.quad_vert,g.luminosity_frag);function b(E,I,B,w,O,F){const L=I.getWidth(),U=I.getHeight(),q={...e.QuadValues,tColorOpaque:s.ValueCell.create(I),tColorTransparent:s.ValueCell.create(B),tEmissive:s.ValueCell.create(w),tDepthOpaque:s.ValueCell.create(O),tDepthTransparent:s.ValueCell.create(F),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/L,1/U)),uDefaultColor:s.ValueCell.create((0,o.Vec3)()),uDefaultOpacity:s.ValueCell.create(0),uLuminosityThreshold:s.ValueCell.create(0),uSmoothWidth:s.ValueCell.create(1),uNear:s.ValueCell.create(1),uFar:s.ValueCell.create(1e4),uIsOrtho:s.ValueCell.create(0),uFogNear:s.ValueCell.create(1e4),uFogFar:s.ValueCell.create(1e4),uOpaqueFogged:s.ValueCell.create(!0),dMode:s.ValueCell.create("emissive")},N={...m},k=(0,i.createComputeRenderItem)(E,"triangles",v,N,q);return(0,t.createComputeRenderable)(k,q)}function P(E){const I=[];for(let B=0;B<E;++B)I.push(.39894*Math.exp(-.5*B*B/(E*E))/E);return I}const C=(0,d.memoize1)(P),l=[3,5,7,9,11],S=o.Vec2.create(1,0),T=o.Vec2.create(0,1),A={...e.QuadSchema,tInput:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uDirection:(0,r.UniformSpec)("v2"),uGaussianCoefficients:(0,r.UniformSpec)("f[]"),dKernelRadius:(0,r.DefineSpec)("number")},x=(0,n.ShaderCode)("Bloom Blur",f.quad_vert,a.blur_frag);function M(E,I){const B=I.getWidth(),w=I.getHeight(),O={...e.QuadValues,tInput:s.ValueCell.create(I),uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/B,1/w)),uDirection:s.ValueCell.create((0,o.Vec2)()),uGaussianCoefficients:s.ValueCell.create([]),dKernelRadius:s.ValueCell.create(l[0])},F={...A},L=(0,i.createComputeRenderItem)(E,"triangles",x,F,O);return(0,t.createComputeRenderable)(L,O)}const D={...e.QuadSchema,tBlur1:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur2:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur3:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur4:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),tBlur5:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uBloomStrength:(0,r.UniformSpec)("f"),uBloomRadius:(0,r.UniformSpec)("f"),uBloomFactors:(0,r.UniformSpec)("f[]"),uBloomTints:(0,r.UniformSpec)("v3[]")},V=(0,n.ShaderCode)("Bloom Composite",f.quad_vert,_.composite_frag);function R(E,I,B,w,O,F,L,U){const q={...e.QuadValues,uTexSizeInv:s.ValueCell.create(o.Vec2.create(1/I,1/B)),tBlur1:s.ValueCell.create(w),tBlur2:s.ValueCell.create(O),tBlur3:s.ValueCell.create(F),tBlur4:s.ValueCell.create(L),tBlur5:s.ValueCell.create(U),uBloomStrength:s.ValueCell.create(1),uBloomRadius:s.ValueCell.create(0),uBloomFactors:s.ValueCell.create([1,.8,.6,.4,.2]),uBloomTints:s.ValueCell.create(new Array(15).fill(1))},N={...D},k=(0,i.createComputeRenderItem)(E,"triangles",V,N,q);return(0,t.createComputeRenderable)(k,q)}return Gu}var CA={},Qv={},p8;function qoe(){return p8||(p8=1,Object.defineProperty(Qv,"__esMo
5572dule",{value:!0}),Qv.outlines_frag=void 0,Qv.outlines_frag=` 5573precision highp float; 5574precision highp int; 5575precision highp sampler2D; 5576 5577uniform sampler2D tDepthOpaque; 5578uniform sampler2D tDepthTransparent; 5579uniform vec2 uTexSize; 5580 5581uniform float uNear; 5582uniform float uFar; 5583uniform mat4 uInvProjection; 5584 5585uniform float uOutlineThreshold; 5586 5587#include common 5588 5589float getViewZ(const in float depth) { 5590 #if dOrthographic == 1 5591 return orthographicDepthToViewZ(depth, uNear, uFar); 5592 #else 5593 return perspectiveDepthToViewZ(depth, uNear, uFar); 5594 #endif 5595} 5596 5597float getDepthOpaque(const in vec2 coords) { 5598 #ifdef depthTextureSupport 5599 return texture2D(tDepthOpaque, coords).r; 5600 #else 5601 return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); 5602 #endif 5603} 5604 5605vec2 getDepthTransparentWithAlpha(const in vec2 coords) { 5606 #ifdef dTransparentOutline 5607 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)); 5608 #else 5609 return vec2(1.0, 0.0); 5610 #endif 5611} 5612 5613bool isBackground(const in float depth) { 5614 return depth == 1.0; 5615} 5616 5617float getPixelSize(const in vec2 coords, const in float depth) { 5618 vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); 5619 vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); 5620 return distance(viewPos0, viewPos1); 5621} 5622 5623void main(void) { 5624 float backgroundViewZ = 2.0 * uFar; 5625 5626 vec2 coords = gl_FragCoord.xy / uTexSize; 5627 vec2 invTexSize = 1.0 / uTexSize; 5628 5629 float selfDepthOpaque = getDepthOpaque(coords); 5630 float selfViewZOpaque = isBackground(selfDepthOpaque) ? backgroundViewZ : getViewZ(selfDepthOpaque); 5631 float pixelSizeOpaque = getPixelSize(coords, selfDepthOpaque) * uOutlineThreshold; 5632 5633 vec2 selfDepthTransparentWithAlpha = getDepthTransparentWithAlpha(coords); 5634 float selfDepthTransparent = selfDepthTransparentWithAlpha.x; 5635 float selfViewZTransparent = isBackground(selfDepthTransparent) ? backgroundViewZ : getViewZ(selfDepthTransparent); 5636 float pixelSizeTransparent = getPixelSize(coords, selfDepthTransparent) * uOutlineThreshold; 5637 5638 float bestOpaqueDepth = 1.0; 5639 float bestTransparentDepth = 1.0; 5640 float bestTransparentAlpha = 0.0; 5641 5642 float opaqueOutlineFlag = 0.0; 5643 float transparentOutlineFlag = 0.0; 5644 5645 for (int y = -1; y <= 1; y++) { 5646 for (int x = -1; x <= 1; x++) { 5647 vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize; 5648 5649 // Opaque 5650 float sampleDepthOpaque = getDepthOpaque(sampleCoords); 5651 float sampleViewZOpaque = isBackground(sampleDepthOpaque) ? backgroundViewZ : getViewZ(sampleDepthOpaque); 5652 if (abs(selfViewZOpaque - sampleViewZOpaque) > pixelSizeOpaque && selfDepthOpaque > sampleDepthOpaque && sampleDepthOpaque <= bestOpaqueDepth) { 5653 bestOpaqueDepth = sampleDepthOpaque; 5654 opaqueOutlineFlag = 1.0; 5655 } 5656 5657 // Transparent 5658 vec2 sampleDepthTransparentWithAlpha = getDepthTransparentWithAlpha(sampleCoords); 5659 float sampleDepthTransparent = sampleDepthTransparentWithAlpha.x; 5660 float sampleAlphaTransparent = sampleDepthTransparentWithAlpha.y; 5661 float sampleViewZTransparent = isBackground(sampleDepthTransparent) ? backgroundViewZ : getViewZ(sampleDepthTransparent); 5662 if (abs(selfViewZTransparent - sampleViewZTransparent) > pixelSizeTransparent && selfDepthTransparent > sampleDepthTransparent && sampleDepthTransparent <= bestTransparentDepth) { 5663 bestTransparentDepth = sampleDepthTransparent; 5664 bestTransparentAlpha = sampleAlphaTransparent; 5665 transparentOutlineFlag = 1.0; 5666 } 5667 } 5668 } 5669 5670 if (transparentOutlineFlag > 0.0 && abs(selfViewZOpaque - getViewZ(bestTransparentDepth)) < pixelSizeOpaque) { // Disable transparent outline close to opaque elements 5671 transparentOutlineFlag = 0.0; 5672 } 5673 5674 // lazy curvature veto: only compute if an outline was found and center is not background 5675 const float kCurvatureGate = 0.75;
5676 vec2 dx = vec2(invTexSize.x, 0.0); 5677 vec2 dy = vec2(0.0, invTexSize.y); 5678 5679 if (opaqueOutlineFlag > 0.0 && !isBackground(selfDepthOpaque)) { 5680 float dL = getDepthOpaque(coords - dx); 5681 float dR = getDepthOpaque(coords + dx); 5682 float dU = getDepthOpaque(coords + dy); 5683 float dD = getDepthOpaque(coords - dy); 5684 5685 float vzL = isBackground(dL) ? backgroundViewZ : getViewZ(dL); 5686 float vzR = isBackground(dR) ? backgroundViewZ : getViewZ(dR); 5687 float vzU = isBackground(dU) ? backgroundViewZ : getViewZ(dU); 5688 float vzD = isBackground(dD) ? backgroundViewZ : getViewZ(dD); 5689 5690 float ddx = abs(vzL + vzR - 2.0 * selfViewZOpaque); 5691 float ddy = abs(vzU + vzD - 2.0 * selfViewZOpaque); 5692 float curvOpaque = max(ddx, ddy); 5693 5694 if (curvOpaque < pixelSizeOpaque * kCurvatureGate) { 5695 opaqueOutlineFlag = 0.0; 5696 bestOpaqueDepth = 1.0; 5697 } 5698 } 5699 5700 if (transparentOutlineFlag > 0.0 && !isBackground(selfDepthTransparent)) { 5701 vec2 daL = getDepthTransparentWithAlpha(coords - dx); 5702 vec2 daR = getDepthTransparentWithAlpha(coords + dx); 5703 vec2 daU = getDepthTransparentWithAlpha(coords + dy); 5704 vec2 daD = getDepthTransparentWithAlpha(coords - dy); 5705 5706 float dL = daL.x; 5707 float dR = daR.x; 5708 float dU = daU.x; 5709 float dD = daD.x; 5710 5711 float vzL = isBackground(dL) ? backgroundViewZ : getViewZ(dL); 5712 float vzR = isBackground(dR) ? backgroundViewZ : getViewZ(dR); 5713 float vzU = isBackground(dU) ? backgroundViewZ : getViewZ(dU); 5714 float vzD = isBackground(dD) ? backgroundViewZ : getViewZ(dD); 5715 5716 float ddx = abs(vzL + vzR - 2.0 * selfViewZTransparent); 5717 float ddy = abs(vzU + vzD - 2.0 * selfViewZTransparent); 5718 float curvTransparent = max(ddx, ddy); 5719 5720 if (curvTransparent < pixelSizeTransparent * kCurvatureGate) { 5721 transparentOutlineFlag = 0.0; 5722 bestTransparentDepth = 1.0; 5723 bestTransparentAlpha = 0.0; 5724 } 5725 } 5726 5727 vec2 depthPacked; // Pack depth in G/B channels 5728 float outlineTypeFlag = 0.0; 5729 if (opaqueOutlineFlag > 0.0 && transparentOutlineFlag > 0.0) { 5730 outlineTypeFlag = 0.75; // Both 5731 depthPacked = packUnitIntervalToRG(bestOpaqueDepth); 5732 } else if (transparentOutlineFlag > 0.0) { 5733 outlineTypeFlag = 0.5; // Transparent only 5734 depthPacked = packUnitIntervalToRG(bestTransparentDepth); 5735 } else if (opaqueOutlineFlag > 0.0) { 5736 outlineTypeFlag = 0.25; // Opaque only 5737 depthPacked = packUnitIntervalToRG(bestOpaqueDepth); 5738 } 5739 5740 float alpha = clamp(bestTransparentAlpha, 0.0, 0.5) * 2.0; // limiting to range [0.0, 0.5] to improve alpha precision since we don't need a wider range 5741 float packedFlagWithAlpha = pack2x4(vec2(outlineTypeFlag, alpha)); // pack outlineType with alpha 5742 gl_FragColor = vec4(packedFlagWithAlpha, depthPacked.x, depthPacked.y, bestTransparentDepth); 5743} 5744`),Qv}var h8;function HQ(){return h8||(h8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OutlinesSchema=e.OutlinePass=e.OutlineParams=void 0,e.getOutlinesRenderable=d;const t=Mr(),r=Yt(),n=Kt(),i=et(),c=Zt(),o=Jt(),s=Ge(),h=Ne(),f=Gr(),y=qoe(),_=Ct(),g=vt();e.OutlineParams={scale:h.ParamDefinition.Numeric(1,{min:1,max:5,step:1}),threshold:h.ParamDefinition.Numeric(.33,{min:.01,max:1,step:.01}),color:h.ParamDefinition.Color((0,g.Color)(0)),includeTransparent:h.ParamDefinition.Boolean(!0,{description:"Whether to show outline for transparent objects"})};class a{static isEnabled(u){return u.enabled&&u.outline.name!=="off"}constructor(u,m,v,b,P){this.webgl=u,this.target=u.createRenderTarget(m,v,!1),this.renderable=d(u,P,b,!0)}getByteCount(){return this.target.getByteCount()}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.target.setSize(u,m),i.ValueCell.update(this.renderable.values.uTexSize,s.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}update(u,m,v,b){var P;let C=!1;const l=u.state.mode==="orthographic"?1:0,S=this.renderable.values.uInvProjection.ref.value;s.Mat4.invert(S,u.projection);const T=(P=m.includeTransparent)!==null&&P!==void 0?P:!0,A=Math.max(1,Math.round(m.scale*this.webgl.pixelRatio))-1,x=50*m.threshold*this.webgl.pixelRatio;return i.ValueCell.updateIfChanged(this.renderable.values.uNear,u.near),i.ValueCell.updateIfChanged(this.renderable.values.uFar,u.far),i.ValueCell.update(this.renderable.values.uInvProjection,S),this.renderable.values.dTransparentOutline.ref.value!==T&&(C=!0,i.ValueCell.update(this.renderable.values.dTransparentOutline,T)),this.renderable.values.dOrthographic.ref.value!==l&&(C=!0,i.ValueCell.update(this.renderable.values.dOrthographic,l)),i.V
5744alueCell.updateIfChanged(this.renderable.values.uOutlineThreshold,x),this.renderable.values.tDepthTransparent.ref.value!==v&&(C=!0,i.ValueCell.update(this.renderable.values.tDepthTransparent,v)),this.renderable.values.tDepthOpaque.ref.value!==b&&(C=!0,i.ValueCell.update(this.renderable.values.tDepthOpaque,b)),C&&this.renderable.update(),{transparentOutline:T,outlineScale:A}}render(){_.isTimingMode&&this.webgl.timer.mark("OutlinePass.render"),this.target.bind(),this.renderable.render(),_.isTimingMode&&this.webgl.timer.markEnd("OutlinePass.render")}}e.OutlinePass=a,e.OutlinesSchema={...t.QuadSchema,tDepthOpaque:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),dOrthographic:(0,r.DefineSpec)("number"),uNear:(0,r.UniformSpec)("f"),uFar:(0,r.UniformSpec)("f"),uInvProjection:(0,r.UniformSpec)("m4"),uOutlineThreshold:(0,r.UniformSpec)("f"),dTransparentOutline:(0,r.DefineSpec)("boolean")};function d(p,u,m,v){const b=u.getWidth(),P=u.getHeight(),C={...t.QuadValues,tDepthOpaque:i.ValueCell.create(u),tDepthTransparent:i.ValueCell.create(m),uTexSize:i.ValueCell.create(s.Vec2.create(b,P)),dOrthographic:i.ValueCell.create(0),uNear:i.ValueCell.create(1),uFar:i.ValueCell.create(1e4),uInvProjection:i.ValueCell.create(s.Mat4.identity()),uOutlineThreshold:i.ValueCell.create(.33),dTransparentOutline:i.ValueCell.create(v)},l={...e.OutlinesSchema},S=(0,n.ShaderCode)("outlines",f.quad_vert,y.outlines_frag),T=(0,c.createComputeRenderItem)(p,"triangles",S,l,C);return(0,o.createComputeRenderable)(T,C)}})(CA)),CA}var zu={},Zv={},g8;function Uoe(){return g8||(g8=1,Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.shadows_frag=void 0,Zv.shadows_frag=` 5745precision highp float; 5746precision highp int; 5747precision highp sampler2D; 5748 5749#include common 5750 5751uniform sampler2D tDepth; 5752uniform vec2 uTexSize; 5753uniform vec4 uBounds; 5754 5755uniform float uNear; 5756uniform float uFar; 5757 5758#if dLightCount != 0 5759 uniform vec3 uLightDirection[dLightCount]; 5760 uniform vec3 uLightColor[dLightCount]; 5761#endif 5762 5763uniform vec3 uAmbientColor; 5764 5765uniform mat4 uProjection; 5766uniform mat4 uInvProjection; 5767 5768uniform float uMaxDistance; 5769uniform float uTolerance; 5770 5771// Map full [0,1] coords -> bounds [0,1] coords 5772vec2 fullCoordsToBoundsCoords(vec2 fullCoords) { 5773 return (fullCoords - uBounds.xy) / (uBounds.zw - uBounds.xy); 5774} 5775 5776// Map bounds [0,1] coords -> full [0,1] coords 5777vec2 boundsCoordsToFullCoords(vec2 boundsCoords) { 5778 return uBounds.xy + (uBounds.zw - uBounds.xy) * boundsCoords; 5779} 5780 5781bool isBackground(const in float depth) { 5782 return depth == 1.0; 5783} 5784 5785bool outsideBounds(const in vec2 p) { 5786 return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w; 5787} 5788 5789float getViewZ(const in float depth) { 5790 #if dOrthographic == 1 5791 return orthographicDepthToViewZ(depth, uNear, uFar); 5792 #else 5793 return perspectiveDepthToViewZ(depth, uNear, uFar); 5794 #endif 5795} 5796 5797float getDepth(const in vec2 coords) { 5798 #ifdef depthTextureSupport 5799 return texture2D(tDepth, coords).r; 5800 #else 5801 return unpackRGBAToDepth(texture2D(tDepth, coords)); 5802 #endif 5803} 5804 5805float screenFade(const in vec2 coords) { 5806 vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy); 5807 vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0)); 5808 return saturate(1.0 - dot(fade, fade)); 5809} 5810 5811// based on https://panoskarabelas.com/posts/screen_space_shadows/ 5812vec3 screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in vec3 lightColor, const in float stepLength) { 5813 // Ray position and direction (in view-space) 5814 vec3 rayPos = position; 5815 vec3 rayDir = -lightDirection; 5816 5817 // Compute ray step 5818 vec3 rayStep = rayDir * stepLength; 5819 5820 // Ray march towards the light 5821 vec4 rayCoords = vec4(0.0); 5822 for (int i = 0; i < dSteps; ++i) { 5823 // Step the ray 5824 rayPos += rayStep; 5825 5826 rayCoords = uProjection * vec4(rayPos, 1.0); 5827 rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5; 5828 rayCoords.xy = boundsCoordsToFullCoords(rayCoords.xy); 5829 5830 if (outsideBounds(rayCoords.xy)) { 5831 return lightColor; 5832 } 5833 5834 // Compute the difference between the ray's and the camera's depth 5835 float depth = getDepth(rayCoords.xy); 5836 float viewZ = getViewZ(depth); 5837 float zDelta = rayPos.z - viewZ; 5838 5839 if (zDelta < uTolerance) { 5840 // Fade out as we approach the edges of the screen 5841 return mix(vec3(0.0), lightColor, 1.0 - screenFade(rayCoords.xy)); 5842 } 5843 } 5844 5845 return lightColor; 5846} 5847 5848void main(void) { 5849 vec2 invTexSize = 1.0 / uTexSize; 5850 vec2 selfCoords = gl_FragCoord.xy * invTexSize; 5851 float selfDepth = getDepth(selfCoords); 5852
5853 if (isBackground(selfDepth)) { 5854 gl_FragColor = vec4(0.0); 5855 return; 5856 } 5857 5858 vec2 selfBoundsCoords = fullCoordsToBoundsCoords(selfCoords); 5859 if (any(lessThan(selfBoundsCoords, vec2(0.0))) || any(greaterThan(selfBoundsCoords, vec2(1.0)))) { 5860 gl_FragColor = vec4(0.0); 5861 return; 5862 } 5863 5864 vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfBoundsCoords, selfDepth), uInvProjection); 5865 float stepLength = uMaxDistance / float(dSteps); 5866 5867 float l = length(uAmbientColor); 5868 float a = l; 5869 #if dLightCount != 0 5870 vec3 s; 5871 #pragma unroll_loop_start 5872 for (int i = 0; i < dLightCount; ++i) { 5873 s = screenSpaceShadow(selfViewPos, uLightDirection[i], uLightColor[i], stepLength); 5874 l += length(s); 5875 a += length(uLightColor[i]); 5876 } 5877 #pragma unroll_loop_end 5878 #endif 5879 5880 gl_FragColor = vec4(l / a); 5881} 5882`),Zv}var y8;function joe(){if(y8)return zu;y8=1,Object.defineProperty(zu,"__esModule",{value:!0}),zu.ShadowPass=zu.ShadowParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Ct(),y=i2(),_=Uoe();zu.ShadowParams={steps:s.ParamDefinition.Numeric(1,{min:1,max:64,step:1}),maxDistance:s.ParamDefinition.Numeric(3,{min:0,max:256,step:1}),tolerance:s.ParamDefinition.Numeric(1,{min:0,max:10,step:.1})};class g{static isEnabled(u){return u.enabled&&u.shadow.name!=="off"}constructor(u,m,v,b){this.webgl=u,this.invProjection=o.Mat4.identity(),this.invHeadRotation=o.Mat4.identity(),this.target=u.createRenderTarget(m,v,!1),this.renderable=d(u,b)}getByteCount(){return this.target.getByteCount()}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.target.setSize(u,m),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}update(u,m,v,b){let P=!1;const C=u.state.mode==="orthographic"?1:0,[l,S]=this.renderable.values.uTexSize.ref.value,T=u.viewport;n.ValueCell.update(this.renderable.values.uProjection,u.projection),n.ValueCell.update(this.renderable.values.uInvProjection,o.Mat4.invert(this.invProjection,u.projection)),o.Vec4.set(this.renderable.values.uBounds.ref.value,T.x/l,T.y/S,(T.x+T.width)/l,(T.y+T.height)/S),n.ValueCell.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),n.ValueCell.updateIfChanged(this.renderable.values.uNear,u.near),n.ValueCell.updateIfChanged(this.renderable.values.uFar,u.far),this.renderable.values.dOrthographic.ref.value!==C&&(n.ValueCell.update(this.renderable.values.dOrthographic,C),P=!0),n.ValueCell.updateIfChanged(this.renderable.values.uMaxDistance,b.maxDistance*u.scale),n.ValueCell.updateIfChanged(this.renderable.values.uTolerance,b.tolerance*u.scale),this.renderable.values.dSteps.ref.value!==b.steps&&(n.ValueCell.update(this.renderable.values.dSteps,b.steps),P=!0),!o.Mat4.isZero(u.headRotation)?n.ValueCell.update(this.renderable.values.uLightDirection,(0,y.getTransformedLightDirection)(m,o.Mat4.invert(this.invHeadRotation,u.headRotation))):n.ValueCell.update(this.renderable.values.uLightDirection,m.direction),n.ValueCell.update(this.renderable.values.uLightColor,m.color),this.renderable.values.dLightCount.ref.value!==m.count&&(n.ValueCell.update(this.renderable.values.dLightCount,m.count),P=!0),n.ValueCell.update(this.renderable.values.uAmbientColor,v),P&&this.renderable.update()}render(){f.isTimingMode&&this.webgl.timer.mark("ShadowPass.render"),this.target.bind(),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("ShadowPass.render")}}zu.ShadowPass=g;const a={...e.QuadSchema,tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),dSteps:(0,t.DefineSpec)("number"),uMaxDistance:(0,t.UniformSpec)("f"),uTolerance:(0,t.UniformSpec)("f"),uLightDirection:(0,t.UniformSpec)("v3[]"),uLightColor:(0,t.UniformSpec)("v3[]"),dLightCount:(0,t.DefineSpec)("number"),uAmbientColor:(0,t.UniformSpec)("v3")};function d(p,u){const m=u.getWidth(),v=u.getHeight(),b={...e.QuadValues,tDepth:n.ValueCell.create(u),uTexSize:n.ValueCell.create(o.Vec2.create(m,v)),uProjection:n.ValueCell.create(o.Mat4.identity()),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uBounds:n.ValueCell.create((0,o.Vec4)()),dOrthographic:n.ValueCell.create(0),uNear:n.ValueCell.create(1),uFar:n.ValueCell.create(1e4),dSteps:n.ValueCell.create(1),uMaxDistance:n.ValueCell.create(3),uTolerance:n.ValueCell.create(1),uLightDirection:n.ValueCell.create([]),uLightColor:n.ValueCell.create([]),dLightCount:n.ValueCell.create(0),uAmbientColor:n.ValueCell.create((0,o.Vec3)())},P={...a},C=(0,r.ShaderCode)("shadows",h.quad_vert,_.shadows_frag),l=(0,i.createComputeRenderItem)(p,"triangles",C,P,b);return(0,c.createComputeRenderable)(l,b)}return zu}var Hu={},Jv={},v8;function Goe(){return v8||(v8=1,Object.defineProperty(Jv,"__esMo
5882dule",{value:!0}),Jv.ssao_frag=void 0,Jv.ssao_frag
vendor: 12,051 bytes, lines 5882-6180
5882=` 5883precision highp float; 5884precision highp int; 5885precision highp sampler2D; 5886 5887#include common 5888 5889 5890uniform sampler2D tDepth; 5891uniform sampler2D tDepthHalf; 5892uniform sampler2D tDepthQuarter; 5893 5894#if defined(dIncludeTransparent) 5895 uniform sampler2D tDepthTransparent; 5896 uniform sampler2D tDepthHalfTransparent; 5897 uniform sampler2D tDepthQuarterTransparent; 5898#endif 5899 5900uniform int uTransparencyFlag; 5901 5902uniform vec2 uTexSize; 5903uniform vec4 uBounds; 5904 5905uniform vec3 uSamples[dNSamples]; 5906 5907uniform mat4 uProjection; 5908uniform mat4 uInvProjection; 5909 5910#ifdef dMultiScale 5911 uniform float uLevelRadius[dLevels]; 5912 uniform float uLevelBias[dLevels]; 5913 uniform float uNearThreshold; 5914 uniform float uFarThreshold; 5915#else 5916 uniform float uRadius; 5917#endif 5918uniform float uBias; 5919 5920float smootherstep(float edge0, float edge1, float x) { 5921 x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); 5922 return x * x * x * (x * (x * 6.0 - 15.0) + 10.0); 5923} 5924 5925float noise(const in vec2 coords) { 5926 float a = 12.9898; 5927 float b = 78.233; 5928 float c = 43758.5453; 5929 float dt = dot(coords, vec2(a,b)); 5930 float sn = mod(dt, PI); 5931 return abs(fract(sin(sn) * c)); // is abs necessary? 5932} 5933 5934vec2 getNoiseVec2(const in vec2 coords) { 5935 return vec2(noise(coords), noise(coords + vec2(PI, 2.71828))); 5936} 5937 5938bool isBackground(const in float depth) { 5939 return depth == 1.0; 5940} 5941 5942bool isOutsideBounds(const in vec2 coords) { 5943 return coords.x < uBounds.x || coords.x > uBounds.z || coords.y < uBounds.y || coords.y > uBounds.w; 5944} 5945 5946float getDepth(const in vec2 coords, const in int transparentFlag) { 5947 if (transparentFlag == 1){ 5948 #if defined(dIncludeTransparent) 5949 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x; 5950 #else 5951 return 1.0; 5952 #endif 5953 } else { 5954 #ifdef depthTextureSupport 5955 return texture2D(tDepth, coords).r; 5956 #else 5957 return unpackRGBAToDepth(texture2D(tDepth, coords)); 5958 #endif 5959 } 5960} 5961 5962#if defined(dIncludeTransparent) 5963 vec2 getDepthTransparentWithAlpha(const in vec2 coords){ 5964 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)); 5965 } 5966#endif 5967 5968#define dQuarterThreshold 0.1 5969#define dHalfThreshold 0.05 5970 5971float getMappedDepth(const in vec2 coords, const in vec2 selfCoords) { 5972 float d = distance(coords, selfCoords); 5973 #ifdef depthTextureSupport 5974 if (d > dQuarterThreshold) { 5975 return texture2D(tDepthQuarter, coords).r; 5976 } else if (d > dHalfThreshold) { 5977 return texture2D(tDepthHalf, coords).r; 5978 } else { 5979 return texture2D(tDepth, coords).r; 5980 } 5981 #else 5982 if (d > dQuarterThreshold) { 5983 return unpackRGBAToDepth(texture2D(tDepthQuarter, coords)); 5984 } else if (d > dHalfThreshold) { 5985 return unpackRGBAToDepth(texture2D(tDepthHalf, coords)); 5986 } else { 5987 return unpackRGBAToDepth(texture2D(tDepth, coords)); 5988 } 5989 #endif 5990} 5991 5992#if defined(dIncludeTransparent) 5993 vec2 getMappedDepthTransparentWithAlpha(const in vec2 coords, const in vec2 selfCoords) { 5994 float d = distance(coords, selfCoords); 5995 if (d > dQuarterThreshold) { 5996 return unpackRGBAToDepthWithAlpha(texture2D(tDepthQuarterTransparent, coords)); 5997 } else if (d > dHalfThreshold) { 5998 return unpackRGBAToDepthWithAlpha(texture2D(tDepthHalfTransparent, coords)); 5999 } else { 6000 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)); 6001 } 6002 } 6003#endif 6004 6005// adapted from https://gist.github.com/bgolus/a07ed65602c009d5e2f753826e8078a0 6006vec3 viewNormalAtPixelPositionAccurate(const in vec2 vpos, const in int transparentFlag) { 6007 // current pixel's depth 6008 float c = getDepth(vpos, transparentFlag); 6009 6010 // get current pixel's view space position 6011 vec3 viewSpacePos_c = screenSpaceToViewSpace(vec3(vpos, c), uInvProjection); 6012 6013 // get view space position at 1 pixel offsets in each major direction 6014 vec3 viewSpacePos_l = screenSpaceToViewSpace(vec3(vpos + vec2(-1.0, 0.0) / uTexSize, getDepth(vpos + vec2(-1.0, 0.0) / uTexSize, transparentFlag)), uInvProjection); 6015 vec3 viewSpacePos_r = screenSpaceToViewSpace(vec3(vpos + vec2( 1.0, 0.0) / uTexSize, getDepth(vpos + vec2( 1.0, 0.0) / uTexSize, transparentFlag)), uInvProjection); 6016 vec3 viewSpacePos_d = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0,-1.0) / uTexSize, getDepth(vpos + vec2( 0.0,-1.0) / uTexSize, transparentFlag)), uInvProjection); 6017 vec3 viewSpacePos_u = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0, 1.0) / uTexSize, getDepth(vpos + vec2( 0.0, 1.0) / uTexSize, transparentFlag)), uInvProjection); 6018 6019 // get the difference between the current and each offset position 6020 vec3 l = viewSpacePos_c - viewSpacePos_l; 6021 vec3 r = viewSpacePos_r - viewSpacePos_c; 6022 vec3 d = viewSpacePos_c - viewSpacePos_d; 6023 vec3 u = viewSpacePos_u - viewSpacePos_c; 6024 6025 // get depth values at 1 & 2 pixels offsets from current along the horizontal axis 6026 vec4 H = vec4( 6027 getDepth(vpos + vec2(-1.0, 0.0) / uTexSize, transparentFlag), 6028 getDepth(vpos + vec2( 1.0, 0.0) / uTexSize, transparentFlag), 6029 getDepth(vpos + vec2(-2.0, 0.0) / uTexSize, transparentFlag), 6030 getDepth(vpos + vec2( 2.0, 0.0) / uTexSize, transparentFlag) 6031 ); 6032 6033 // get depth values at 1 & 2 pixels offsets from current along the vertical axis 6034 vec4 V = vec4( 6035 getDepth(vpos + vec2(0.0,-1.0) / uTexSize, transparentFlag), 6036 getDepth(vpos + vec2(0.0, 1.0) / uTexSize, transparentFlag), 6037 getDepth(vpos + vec2(0.0,-2.0) / uTexSize, transparentFlag), 6038 getDepth(vpos + vec2(0.0, 2.0) / uTexSize, transparentFlag) 6039 ); 6040 6041 // current pixel's depth difference from slope of offset depth samples 6042 // differs from original article because we're using non-linear depth values 6043 // see article's comments 6044 vec2 he = abs((2.0 * H.xy - H.zw) - c); 6045 vec2 ve = abs((2.0 * V.xy - V.zw) - c); 6046 6047 // pick horizontal and vertical diff with the smallest depth difference from slopes 6048 vec3 hDeriv = he.x < he.y ? l : r; 6049 vec3 vDeriv = ve.x < ve.y ? d : u; 6050 6051 // get view space normal from the cross product of the best derivatives 6052 vec3 viewNormal = normalize(cross(hDeriv, vDeriv)); 6053 6054 return viewNormal; 6055} 6056 6057float getPixelSize(const in vec2 coords, const in float depth) { 6058 vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); 6059 vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); 6060 return distance(viewPos0, viewPos1); 6061} 6062 6063// StarCraft II Ambient Occlusion by [Filion and McNaughton 2008] 6064void main(void) { 6065 vec2 invTexSize = 1.0 / uTexSize; 6066 vec2 selfCoords = gl_FragCoord.xy * invTexSize; 6067 float selfDepth = getDepth(selfCoords, uTransparencyFlag); 6068 vec2 selfPackedDepth = packUnitIntervalToRG(selfDepth); 6069 6070 if (isBackground(selfDepth)) { 6071 gl_FragColor = vec4(packUnitIntervalToRG(1.0), selfPackedDepth); 6072 return; 6073 } 6074 6075 vec3 selfViewNormal = viewNormalAtPixelPositionAccurate(selfCoords, uTransparencyFlag); 6076 vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection); 6077 6078 vec3 randomVec = normalize(vec3(getNoiseVec2(selfCoords) * 2.0 - 1.0, 0.0)); 6079 vec3 tangent = normalize(randomVec - selfViewNormal * dot(randomVec, selfViewNormal)); 6080 vec3 bitangent = cross(selfViewNormal, tangent); 6081 mat3 TBN = mat3(tangent, bitangent, selfViewNormal); 6082 6083 float occlusion = 0.0; 6084 #ifdef dMultiScale 6085 float pixelSize = getPixelSize(selfCoords, selfDepth); 6086 6087 for(int l = 0; l < dLevels; l++) { 6088 // TODO: smooth transition 6089 if (pixelSize * uNearThreshold > uLevelRadius[l]) continue; 6090 if (pixelSize * uFarThreshold < uLevelRadius[l]) continue; 6091 6092 float nSamples = float(dNSamples); 6093 float levelOcclusion = 0.0; 6094 for(int i = 0; i < dNSamples; i++) { 6095 // get sample position: 6096 vec3 sampleViewPos = TBN * uSamples[i]; 6097 sampleViewPos = selfViewPos + sampleViewPos * uLevelRadius[l]; 6098 6099 // project sample position: 6100 vec4 offset = vec4(sampleViewPos, 1.0); 6101 offset = uProjection * offset; 6102 offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5; 6103 if (isOutsideBounds(offset.xy)) { 6104 nSamples -= 1.0; 6105 continue; 6106 } 6107 6108 // get sample depth: 6109 float sampleOcc = 0.0; 6110 #ifdef dIllumination 6111 if (uTransparencyFlag == 1) { 6112 #endif 6113 float sampleDepth = getMappedDepth(offset.xy, selfCoords); 6114 if (!isBackground(sampleDepth)) { 6115 float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z; 6116 sampleOcc = step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZ)) * uLevelBias[l]; 6117 } 6118 #ifdef dIllumination 6119 } 6120 #endif 6121 #if defined(dIncludeTransparent) 6122 vec2 sampleDepthWithAlpha = getMappedDepthTransparentWithAlpha(offset.xy, selfCoords); 6123 if (!isBackground(sampleDepthWithAlpha.x)) { 6124 float sampleViewZWithAlpha = screenSpaceToViewSpace(vec3(offset.xy, sampleDepthWithAlpha.x), uInvProjection).z; 6125 sampleOcc = max(sampleOcc, step(sampleViewPos.z + 0.025, sampleViewZWithAlpha) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZWithAlpha)) * uLevelBias[l] * sampleDepthWithAlpha.y); 6126 } 6127 #endif 6128 6129 levelOcclusion += sampleOcc; 6130 } 6131 levelOcclusion /= nSamples; 6132 occlusion = max(occlusion, levelOcclusion); 6133 } 6134 #else 6135 float nSamples = float(dNSamples); 6136 for(int i = 0; i < dNSamples; i++) { 6137 vec3 sampleViewPos = TBN * uSamples[i]; 6138 sampleViewPos = selfViewPos + sampleViewPos * uRadius; 6139 6140 vec4 offset = vec4(sampleViewPos, 1.0); 6141 offset = uProjection * offset; 6142 offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5; 6143 if (isOutsideBounds(offset.xy)) { 6144 nSamples -= 1.0; 6145 continue; 6146 } 6147 6148 float sampleOcc = 0.0; 6149 #ifdef dIllumination 6150 if (uTransparencyFlag == 1) { 6151 #endif 6152 // NOTE: using getMappedDepth here causes issues on some mobile devices 6153 float sampleDepth = getDepth(offset.xy, 0); 6154 if (!isBackground(sampleDepth)) { 6155 float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z; 6156 sampleOcc = step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZ)); 6157 } 6158 #ifdef dIllumination 6159 } 6160 #endif 6161 #if defined(dIncludeTransparent) 6162 vec2 sampleDepthWithAlpha = getDepthTransparentWithAlpha(offset.xy); 6163 if (!isBackground(sampleDepthWithAlpha.x)) { 6164 float sampleViewZWithAlpha = screenSpaceToViewSpace(vec3(offset.xy, sampleDepthWithAlpha.x), uInvProjection).z; 6165 sampleOcc = max(sampleOcc, step(sampleViewPos.z + 0.025, sampleViewZWithAlpha) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZWithAlpha)) * sampleDepthWithAlpha.y); 6166 } 6167 #endif 6168 6169 occlusion += sampleOcc; 6170 } 6171 6172 occlusion /= nSamples; 6173 #endif 6174 occlusion = 1.0 - (uBias * occlusion); 6175 6176 vec2 packedOcclusion = packUnitIntervalToRG(clamp(occlusion, 0.01, 1.0)); 6177 6178 gl_FragColor = vec4(packedOcclusion, selfPackedDepth); 6179} 6180`
6180),Jv}var eb={},b8;function zoe(){return b8||(b8=1,Object.defineProperty(eb,"__esModule",{value:!0}),eb.ssaoBlur_frag=void 0,eb.ssaoBlur_frag=` 6181precision highp float; 6182precision highp int; 6183precision highp sampler2D; 6184 6185uniform sampler2D tSsaoDepth; 6186uniform vec2 uTexSize; 6187uniform vec4 uBounds; 6188 6189uniform float uKernel[dOcclusionKernelSize]; 6190uniform float uBlurDepthBias; 6191 6192uniform float uBlurDirectionX; 6193uniform float uBlurDirectionY; 6194 6195uniform mat4 uInvProjection; 6196uniform float uNear; 6197uniform float uFar; 6198 6199#include common 6200 6201float getViewZ(const in float depth) { 6202 #if dOrthographic == 1 6203 return orthographicDepthToViewZ(depth, uNear, uFar); 6204 #else 6205 return perspectiveDepthToViewZ(depth, uNear, uFar); 6206 #endif 6207} 6208 6209bool isBackground(const in float depth) { 6210 return depth == 1.0; 6211} 6212 6213bool isNearClip(const in float depth) { 6214 return depth == 0.0; 6215} 6216 6217bool outsideBounds(const in vec2 p) { 6218 return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w; 6219} 6220 6221float getPixelSize(const in vec2 coords, const in float depth) { 6222 vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); 6223 vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); 6224 return distance(viewPos0, viewPos1); 6225} 6226 6227void main(void) { 6228 vec2 coords = gl_FragCoord.xy / uTexSize; 6229 6230 vec2 packedDepth = texture2D(tSsaoDepth, coords).zw; 6231 6232 if (outsideBounds(coords)) { 6233 gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth); 6234 return; 6235 } 6236 6237 float selfDepth = unpackRGToUnitInterval(packedDepth); 6238 // (if background and if second pass) or if near clip 6239 if ((isBackground(selfDepth) && uBlurDirectionY != 0.0) || isNearClip(selfDepth)) { 6240 gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth); 6241 return; 6242 } 6243 6244 float selfViewZ = getViewZ(selfDepth); 6245 float pixelSize = getPixelSize(coords, selfDepth); 6246 6247 vec2 offset = vec2(uBlurDirectionX, uBlurDirectionY) / uTexSize; 6248 6249 float sum = 0.0; 6250 float kernelSum = 0.0; 6251 const int halfKernelSize = dOcclusionKernelSize / 2; 6252 // only if kernelSize is odd 6253 for (int i = -halfKernelSize; i <= halfKernelSize; i++) { 6254 if (abs(float(i)) > 1.0 && abs(float(i)) * pixelSize > 0.8) continue; 6255 6256 vec2 sampleCoords = coords + float(i) * offset; 6257 if (outsideBounds(sampleCoords)) { 6258 continue; 6259 } 6260 6261 vec4 sampleSsaoDepth = texture2D(tSsaoDepth, sampleCoords); 6262 6263 float sampleDepth = unpackRGToUnitInterval(sampleSsaoDepth.zw); 6264 if (isBackground(sampleDepth) || isNearClip(sampleDepth)) { 6265 continue; 6266 } 6267 6268 float sampleViewZ = getViewZ(sampleDepth); 6269 if (abs(selfViewZ - sampleViewZ) >= uBlurDepthBias) { 6270 continue; 6271 } 6272 6273 float kernel = uKernel[int(abs(float(i)))]; // abs is not defined for int in webgl1 6274 float sampleValue = unpackRGToUnitInterval(sampleSsaoDepth.xy); 6275 6276 sum += kernel * sampleValue; 6277 kernelSum += kernel; 6278 } 6279 gl_FragColor = vec4(packUnitIntervalToRG(sum / kernelSum), packedDepth); 6280} 6281`),eb}var _8;function Hoe(){if(_8)return Hu;_8=1,Object.defineProperty(Hu,"__esModule",{value:!0}),Hu.SsaoPass=Hu.SsaoParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Goe(),y=zoe(),_=vt(),g=Ct(),a=Dn();Hu.SsaoParams={samples:s.ParamDefinition.Numeric(32,{min:1,max:256,step:1}),multiScale:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group({levels:s.ParamDefinition.ObjectList({radius:s.ParamDefinition.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x"}),bias:s.ParamDefinition.Numeric(1,{min:0,max:3,step:.1})},M=>`${M.radius}, ${M.bias}`,{defaultValue:[{radius:2,bias:1},{radius:5,bias:1},{radius:8,bias:1},{radius:11,bias:1}]}),nearThreshold:s.ParamDefinition.Numeric(10,{min:0,max:50,step:1}),farThreshold:s.ParamDefinition.Numeric(1500,{min:0,max:1e4,step:100})}),off:s.ParamDefinition.Group({})},{cycle:!0}),radius:s.ParamDefinition.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x",hideIf:M=>M?.multiScale.name==="on"}),bias:s.ParamDefinition.Numeric(.8,{min:0,max:3,step:.1}),blurKernelSize:s.ParamDefinition.Numeric(15,{min:1,max:25,step:2}),blurDepthBias:s.ParamDefinition.Numeric(.5,{min:0,max:1,step:.
628101}),resolutionScale:s.ParamDefinition.Numeric(1,{min:.1,max:1,step:.05},{description:"Adjust resolution of occlusion calculation"}),color:s.ParamDefinition.Color((0,_.Color)(0)),transparentThreshold:s.ParamDefinition.Numeric(.4,{min:0,max:1,step:.05})};function d(M,D,V){const R=M.length,{radius:E,bias:I}={radius:new Array(R*3).fill(0),bias:new Array(R*3).fill(0)};M=M.slice().sort((B,w)=>B.radius-w.radius);for(let B=0;B<R;++B){const w=M[B];E[B]=Math.pow(2,w.radius)*D,I[B]=w.bias}return{count:R,radius:E,bias:I}}class p{static isEnabled(D){return D.enabled&&D.occlusion.name!=="off"}static isTransparentEnabled(D,V){return D.opacityAverage<1&&D.transparencyMin<V.transparentThreshold}calcSsaoScale(D){return Math.min(1,1/this.webgl.pixelRatio)*D}getDepthTexture(){return this.ssaoScale===1?this.depthTextureOpaque:this.downsampledDepthTargetOpaque.texture}getTransparentDepthTexture(){return this.ssaoScale===1?this.depthTextureTransparent:this.downsampledDepthTargetTransparent.texture}constructor(D,V,R,E,I,B){this.webgl=D,this.invProjection=o.Mat4.identity(),this.levelsCameraScale=-1;const{textureFloatLinear:w}=D.extensions;this.depthTextureOpaque=I,this.depthTextureTransparent=B,this.nSamples=1,this.blurKernelSize=1,this.ssaoScale=this.calcSsaoScale(1),this.texSize=[V,R],this.levels=[],this.framebuffer=D.resources.framebuffer(),this.blurFirstPassFramebuffer=D.resources.framebuffer(),this.blurSecondPassFramebuffer=D.resources.framebuffer();const O=Math.floor(V*this.ssaoScale),F=Math.floor(R*this.ssaoScale),L=Math.max(1,Math.floor(O*.5)),U=Math.max(1,Math.floor(F*.5)),q=Math.max(1,Math.floor(O*.25)),N=Math.max(1,Math.floor(F*.25)),k=w?"linear":"nearest";this.downsampledDepthTargetOpaque=E?D.createRenderTarget(O,F,!1,"uint8","linear","rgba"):D.createRenderTarget(O,F,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.downsampleDepthRenderableOpaque=(0,e.createCopyRenderable)(D,I);const j=this.getDepthTexture();this.depthHalfTargetOpaque=E?D.createRenderTarget(L,U,!1,"uint8","linear","rgba"):D.createRenderTarget(L,U,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.depthHalfRenderableOpaque=(0,e.createCopyRenderable)(D,j),this.depthQuarterTargetOpaque=E?D.createRenderTarget(q,N,!1,"uint8","linear","rgba"):D.createRenderTarget(q,N,!1,"float32",k,D.isWebGL2?"alpha":"rgba"),this.depthQuarterRenderableOpaque=(0,e.createCopyRenderable)(D,this.depthHalfTargetOpaque.texture),this.downsampledDepthTargetTransparent=D.createRenderTarget(O,F,!1,"uint8","linear","rgba"),this.downsampleDepthRenderableTransparent=(0,e.createCopyRenderable)(D,B);const H=this.getTransparentDepthTexture();this.depthHalfTargetTransparent=D.createRenderTarget(L,U,!1,"uint8","linear","rgba"),this.depthHalfRenderableTransparent=(0,e.createCopyRenderable)(D,H),this.depthQuarterTargetTransparent=D.createRenderTarget(q,N,!1,"uint8","linear","rgba"),this.depthQuarterRenderableTransparent=(0,e.createCopyRenderable)(D,this.depthHalfTargetTransparent.texture),this.ssaoDepthTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.ssaoDepthTexture.define(O,F),this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),this.ssaoDepthTransparentTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.ssaoDepthTransparentTexture.define(O,F),this.depthBlurProxyTexture=D.resources.texture("image-uint8","rgba","ubyte","linear"),this.depthBlurProxyTexture.define(O,F),this.depthBlurProxyTexture.attachFramebuffer(this.blurFirstPassFramebuffer,"color0"),this.renderable=m(D,j,this.depthHalfTargetOpaque.texture,this.depthQuarterTargetOpaque.texture,H,this.depthHalfTargetTransparent.texture,this.depthQuarterTargetTransparent.texture),this.blurFirstPassRenderable=b(D,this.ssaoDepthTransparentTexture,"horizontal"),this.blurSecondPassRenderable=b(D,this.depthBlurProxyTexture,"vertical")}getByteCount(){return this.downsampledDepthTargetOpaque.getByteCount()+this.depthHalfTargetOpaque.getByteCount()+this.depthQuarterTargetOpaque.getByteCount()+this.downsampledDepthTargetTransparent.getByteCount()+this.depthHalfTargetTransparent.getByteCount()+this.depthQuarterTargetTransparent.getByteCount()+this.ssaoDepthTexture.getByteCount()+this.ssaoDepthTransparentTexture.getByteCount()+this.depthBlurProxyTexture.getByteCount()}setSize(D,V){const[R,E]=this.texSize,I=this.calcSsaoScale(1);if(D!==R||V!==E||this.ssaoScale!==I){this.texSize.splice(0,2,D,V);const B=Math.floor(D*this.ssaoScale),w=Math.floor(V*this.ssaoScale);this.ssaoDepthTexture.define(B,w),this.ssaoDepthTransparentTexture.define(B,w),this.depthBlurProxyTexture.define(B,w);const O=Math.max(1,Math.floor(B*.5)),F=Math.max(1,Math.floor(w*.5)),L=Math.max(1,Math.floor(B*.25)),U=Math.max(1,Math.floor(w*.25));this.downsampledDepthTargetOpaque.setSize(B,w),this.depthHalfTargetOpaque.setSize(O,F),this.depthQuarterTargetOpaque.setSize(L,U),n.ValueCell.update(this.downsampleDepthRenderableOpaque.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableOpaque.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.depthHalfRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthHalfRenderableOpaque.values.uTexSize.ref.value,O,F)),n.V
6281alueCell.update(this.depthQuarterRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableOpaque.values.uTexSize.ref.value,L,U)),this.downsampledDepthTargetTransparent.setSize(B,w),this.depthHalfTargetTransparent.setSize(O,F),this.depthQuarterTargetTransparent.setSize(L,U),n.ValueCell.update(this.downsampleDepthRenderableTransparent.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableTransparent.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.depthHalfRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthHalfRenderableTransparent.values.uTexSize.ref.value,O,F)),n.ValueCell.update(this.depthQuarterRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableTransparent.values.uTexSize.ref.value,L,U)),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.blurFirstPassRenderable.values.uTexSize,o.Vec2.set(this.blurFirstPassRenderable.values.uTexSize.ref.value,B,w)),n.ValueCell.update(this.blurSecondPassRenderable.values.uTexSize,o.Vec2.set(this.blurSecondPassRenderable.values.uTexSize.ref.value,B,w));const q=this.getDepthTexture(),N=this.getTransparentDepthTexture();n.ValueCell.update(this.depthHalfRenderableOpaque.values.tColor,q),n.ValueCell.update(this.depthHalfRenderableTransparent.values.tColor,N),n.ValueCell.update(this.renderable.values.tDepth,q),n.ValueCell.update(this.renderable.values.tDepthTransparent,N),this.depthHalfRenderableOpaque.update(),this.depthHalfRenderableTransparent.update(),this.renderable.update()}}reset(){this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),this.depthBlurProxyTexture.attachFramebuffer(this.blurFirstPassFramebuffer,"color0")}update(D,V,R,E=!1){let I=!1,B=!1,w=!1;const O=D.state.mode==="orthographic"?1:0,F=o.Mat4.invert(this.invProjection,D.projection),[L,U]=this.texSize,q=D.viewport;n.ValueCell.update(this.renderable.values.uProjection,D.projection),n.ValueCell.update(this.renderable.values.uInvProjection,F);const N=this.renderable.values.uBounds,k=this.ssaoScale;o.Vec4.set(N.ref.value,Math.floor(q.x*k)/(L*k),Math.floor(q.y*k)/(U*k),Math.ceil((q.x+q.width)*k)/(L*k),Math.ceil((q.y+q.height)*k)/(U*k)),n.ValueCell.update(N,N.ref.value),n.ValueCell.update(this.blurFirstPassRenderable.values.uBounds,N.ref.value),n.ValueCell.update(this.blurSecondPassRenderable.values.uBounds,N.ref.value),n.ValueCell.updateIfChanged(this.blurFirstPassRenderable.values.uNear,D.near),n.ValueCell.updateIfChanged(this.blurSecondPassRenderable.values.uNear,D.near),n.ValueCell.updateIfChanged(this.blurFirstPassRenderable.values.uFar,D.far),n.ValueCell.updateIfChanged(this.blurSecondPassRenderable.values.uFar,D.far),n.ValueCell.update(this.blurFirstPassRenderable.values.uInvProjection,F),n.ValueCell.update(this.blurSecondPassRenderable.values.uInvProjection,F),n.ValueCell.update(this.blurFirstPassRenderable.values.uBlurDepthBias,R.blurDepthBias*D.scale),n.ValueCell.update(this.blurSecondPassRenderable.values.uBlurDepthBias,R.blurDepthBias*D.scale),this.blurFirstPassRenderable.values.dOrthographic.ref.value!==O&&(B=!0,n.ValueCell.update(this.blurFirstPassRenderable.values.dOrthographic,O),n.ValueCell.update(this.blurSecondPassRenderable.values.dOrthographic,O));const j=p.isTransparentEnabled(V,R);this.renderable.values.dIncludeTransparent.ref.value!==j&&(I=!0,n.ValueCell.update(this.renderable.values.dIncludeTransparent,j)),this.renderable.values.dIllumination.ref.value!==E&&(I=!0,n.ValueCell.update(this.renderable.values.dIllumination,E)),this.nSamples!==R.samples&&(I=!0,this.nSamples=R.samples,n.ValueCell.update(this.renderable.values.uSamples,x(this.nSamples)),n.ValueCell.updateIfChanged(this.renderable.values.dNSamples,this.nSamples));const H=R.multiScale.name==="on";if(this.renderable.values.dMultiScale.ref.value!==H&&(I=!0,n.ValueCell.update(this.renderable.values.dMultiScale,H)),R.multiScale.name==="on"){const z=R.multiScale.params;if(this.levelsCameraScale!==D.scale||!(0,n.deepEqual)(this.levels,z.levels)){I=!0,this.levelsCameraScale=D.scale,this.levels=z.levels;const W=d(z.levels,D.scale);n.ValueCell.updateIfChanged(this.renderable.values.dLevels,W.count),n.ValueCell.update(this.renderable.values.uLevelRadius,W.radiu
6281s),n.ValueCell.update(this.renderable.values.uLevelBias,W.bias)}n.ValueCell.updateIfChanged(this.renderable.values.uNearThreshold,z.nearThreshold),n.ValueCell.updateIfChanged(this.renderable.values.uFarThreshold,z.farThreshold)}else n.ValueCell.updateIfChanged(this.renderable.values.uRadius,Math.pow(2,R.radius)*D.scale);if(n.ValueCell.updateIfChanged(this.renderable.values.uBias,R.bias),this.blurKernelSize!==R.blurKernelSize){B=!0,this.blurKernelSize=R.blurKernelSize;const z=P(this.blurKernelSize);n.ValueCell.update(this.blurFirstPassRenderable.values.uKernel,z),n.ValueCell.update(this.blurSecondPassRenderable.values.uKernel,z),n.ValueCell.update(this.blurFirstPassRenderable.values.dOcclusionKernelSize,this.blurKernelSize),n.ValueCell.update(this.blurSecondPassRenderable.values.dOcclusionKernelSize,this.blurKernelSize)}const G=this.calcSsaoScale(R.resolutionScale);if(this.ssaoScale!==G){I=!0,w=!0,this.ssaoScale=G;const z=Math.floor(L*this.ssaoScale),W=Math.floor(U*this.ssaoScale);this.ssaoDepthTexture.define(z,W),this.ssaoDepthTransparentTexture.define(z,W),this.depthBlurProxyTexture.define(z,W);const X=Math.floor(z*.5),Y=Math.floor(W*.5),K=Math.floor(z*.25),Q=Math.floor(W*.25);this.downsampledDepthTargetOpaque.setSize(z,W),this.depthHalfTargetOpaque.setSize(X,Y),this.depthQuarterTargetOpaque.setSize(K,Q);const J=this.getDepthTexture();n.ValueCell.update(this.depthHalfRenderableOpaque.values.tColor,J),n.ValueCell.update(this.renderable.values.tDepth,J),n.ValueCell.update(this.renderable.values.tDepthHalf,this.depthHalfTargetOpaque.texture),n.ValueCell.update(this.renderable.values.tDepthQuarter,this.depthQuarterTargetOpaque.texture),n.ValueCell.update(this.downsampleDepthRenderableOpaque.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableOpaque.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.depthHalfRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthHalfRenderableOpaque.values.uTexSize.ref.value,X,Y)),n.ValueCell.update(this.depthQuarterRenderableOpaque.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableOpaque.values.uTexSize.ref.value,K,Q)),this.downsampledDepthTargetTransparent.setSize(z,W),this.depthHalfTargetTransparent.setSize(X,Y),this.depthQuarterTargetTransparent.setSize(K,Q);const ae=this.getTransparentDepthTexture();n.ValueCell.update(this.depthHalfRenderableTransparent.values.tColor,ae),n.ValueCell.update(this.renderable.values.tDepthTransparent,ae),n.ValueCell.update(this.renderable.values.tDepthHalfTransparent,this.depthHalfTargetTransparent.texture),n.ValueCell.update(this.renderable.values.tDepthQuarterTransparent,this.depthQuarterTargetTransparent.texture),n.ValueCell.update(this.downsampleDepthRenderableTransparent.values.uTexSize,o.Vec2.set(this.downsampleDepthRenderableTransparent.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.depthHalfRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthHalfRenderableTransparent.values.uTexSize.ref.value,X,Y)),n.ValueCell.update(this.depthQuarterRenderableTransparent.values.uTexSize,o.Vec2.set(this.depthQuarterRenderableTransparent.values.uTexSize.ref.value,K,Q)),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.blurFirstPassRenderable.values.uTexSize,o.Vec2.set(this.blurFirstPassRenderable.values.uTexSize.ref.value,z,W)),n.ValueCell.update(this.blurSecondPassRenderable.values.uTexSize,o.Vec2.set(this.blurSecondPassRenderable.values.uTexSize.ref.value,z,W))}I&&this.renderable.update(),B&&(this.blurFirstPassRenderable.update(),this.blurSecondPassRenderable.update()),w&&(this.depthHalfRenderableOpaque.update(),this.depthHalfRenderableTransparent.update())}render(D){g.isTimingMode&&this.webgl.timer.mark("SSAO.render");const{state:V}=this.webgl,{x:R,y:E,width:I,height:B}=D.viewport,w=this.renderable.values.dIncludeTransparent.ref.value,O=this.renderable.values.dMultiScale.ref.value,F=Math.floor(R*this.ssaoScale),L=Math.floor(E*this.ssaoScale),U=Math.ceil(I*this.ssaoScale),q=Math.ceil(B*this.ssaoScale);if(V.viewport(F,L,U,q),V.scissor(F,L,U,q),this.ssaoScale<1&&(g.isTimingMode&&this.webgl.timer.mark("SSAO.downsample"),this.downsampledDepthTargetOpaque.bind(),this.downsampleDepthRenderableOpaque.render(),w&&(this.downsampledDepthTargetTransparent.bind(),this.downsampleDepthRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.downsample")),O){const N=Math.floor(F*.5),k=Math.floor(L*.5),j=Math.ceil(U*.5),H=Math.ceil(q*.5);V.viewport(N,k,j,H),V.scissor(N,k,j,H),g.isTimingMode&&this.webgl.timer.mark("SSAO.half"),this.depthHalfTargetOpaque.bind(),this.depthHalfRenderableOpaque.render(),w&&(this.depthHalfTargetTransparent.bind(),this.depthHalfRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.half");const G=Math.floor(F*.25),z=Math.floor(L*.25),W=Math.ceil(U*.25),X=Math.ceil(q*.25);V.viewport(G,z,W,X),V.scissor(G,z,W,X),g.isTimingMode&&this.webgl.timer.mark("SSAO.quarter"),this.depthQuarterTargetOpaque.bind(),this.depthQuarterRenderableOpaque.render(),w&&(this.depthQuarterTargetTransparent.bind(),this.depthQuarterRenderableTransparent.render()),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.quarter"),V.viewport(F,L,U,q),V.scissor(F,L,U,q)}
6281g.isTimingMode&&this.webgl.timer.mark("SSAO.opaque"),this.ssaoDepthTexture.attachFramebuffer(this.framebuffer,"color0"),n.ValueCell.update(this.renderable.values.uTransparencyFlag,0),this.framebuffer.bind(),this.renderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.opaque"),g.isTimingMode&&this.webgl.timer.mark("SSAO.blurOpaque"),n.ValueCell.update(this.blurFirstPassRenderable.values.tSsaoDepth,this.ssaoDepthTexture),this.blurFirstPassRenderable.update(),this.blurFirstPassFramebuffer.bind(),this.blurFirstPassRenderable.render(),this.ssaoDepthTexture.attachFramebuffer(this.blurSecondPassFramebuffer,"color0"),this.blurSecondPassFramebuffer.bind(),this.blurSecondPassRenderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.blurOpaque"),w&&(g.isTimingMode&&this.webgl.timer.mark("SSAO.transparent "),this.ssaoDepthTransparentTexture.attachFramebuffer(this.framebuffer,"color0"),n.ValueCell.update(this.renderable.values.uTransparencyFlag,1),this.framebuffer.bind(),this.renderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.transparent "),g.isTimingMode&&this.webgl.timer.mark("SSAO.blurTransparent "),n.ValueCell.update(this.blurFirstPassRenderable.values.tSsaoDepth,this.ssaoDepthTransparentTexture),this.blurFirstPassRenderable.update(),this.blurFirstPassFramebuffer.bind(),this.blurFirstPassRenderable.render(),this.ssaoDepthTransparentTexture.attachFramebuffer(this.blurSecondPassFramebuffer,"color0"),this.blurSecondPassFramebuffer.bind(),this.blurSecondPassRenderable.render(),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.blurTransparent ")),g.isTimingMode&&this.webgl.timer.markEnd("SSAO.render")}}Hu.SsaoPass=p;const u={...e.QuadSchema,tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthHalf:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthQuarter:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dIllumination:(0,t.DefineSpec)("boolean"),uTransparencyFlag:(0,t.UniformSpec)("i"),dIncludeTransparent:(0,t.DefineSpec)("boolean"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthHalfTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),tDepthQuarterTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),uSamples:(0,t.UniformSpec)("v3[]"),dNSamples:(0,t.DefineSpec)("number"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),uTexSize:(0,t.UniformSpec)("v2"),uRadius:(0,t.UniformSpec)("f"),uBias:(0,t.UniformSpec)("f"),dMultiScale:(0,t.DefineSpec)("boolean"),dLevels:(0,t.DefineSpec)("number"),uLevelRadius:(0,t.UniformSpec)("f[]"),uLevelBias:(0,t.UniformSpec)("f[]"),uNearThreshold:(0,t.UniformSpec)("f"),uFarThreshold:(0,t.UniformSpec)("f")};function m(M,D,V,R,E,I,B){const w={...e.QuadValues,tDepth:n.ValueCell.create(D),tDepthHalf:n.ValueCell.create(V),tDepthQuarter:n.ValueCell.create(R),dIllumination:n.ValueCell.create(!1),dIncludeTransparent:n.ValueCell.create(!0),uTransparencyFlag:n.ValueCell.create(0),tDepthTransparent:n.ValueCell.create(E),tDepthHalfTransparent:n.ValueCell.create(I),tDepthQuarterTransparent:n.ValueCell.create(B),uSamples:n.ValueCell.create(x(32)),dNSamples:n.ValueCell.create(32),uProjection:n.ValueCell.create(o.Mat4.identity()),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uBounds:n.ValueCell.create((0,o.Vec4)()),uTexSize:n.ValueCell.create(o.Vec2.create(M.gl.drawingBufferWidth,M.gl.drawingBufferHeight)),uRadius:n.ValueCell.create(Math.pow(2,5)),uBias:n.ValueCell.create(.8),dMultiScale:n.ValueCell.create(!1),dLevels:n.ValueCell.create(3),uLevelRadius:n.ValueCell.create([Math.pow(2,2),Math.pow(2,5),Math.pow(2,8)]),uLevelBias:n.ValueCell.create([.8,.8,.8]),uNearThreshold:n.ValueCell.create(10),uFarThreshold:n.ValueCell.create(1500)},O={...u},F=(0,r.ShaderCode)("ssao",h.quad_vert,f.ssao_frag),L=(0,i.createComputeRenderItem)(M,"triangles",F,O,w);return(0,c.createComputeRenderable)(L,w)}const v={...e.QuadSchema,tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uKernel:(0,t.UniformSpec)("f[]"),dOcclusionKernelSize:(0,t.DefineSpec)("number"),uBlurDepthBias:(0,t.UniformSpec)("f"),uBlurDirectionX:(0,t.UniformSpec)("f"),uBlurDirectionY:(0,t.UniformSpec)("f"),uInvProjection:(0,t.UniformSpec)("m4"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uBounds:(0,t.UniformSpec)("v4"),dOrthographic:(0,t.DefineSpec)("number")};function b(M,D,V){const R={...e.QuadValues,tSsaoDepth:n.ValueCell.create(D),uTexSize:n.ValueCell.create(o.Vec2.create(D.getWidth(),D.getHeight())),uKernel:n.ValueCell.create(P(15)),dOcclusionKernelSize:n.ValueCell.create(15),uBlurDepthBias:n.ValueCell.create(.5),uBlurDirectionX:n.ValueCell.create(V==="horizontal"?1:0),uBlurDirectionY:n.ValueCell.create(V==="vertical"?1:0),uInvProjection:n.ValueCell.create(o.Mat4.identity()),uNear:n.ValueCell.create(0),uFar:n.ValueCell.create(1e4),uBounds:n.ValueCell.create((0,o.Vec4)()),dOrthographic:n.ValueCell.create(0)},E={...v},I=(0,r.ShaderCode)("ssao_blur",h.quad_vert,y.ssaoBlur_frag),B=(0,i.createComputeRenderItem)(M,"triangles",I,E,R);return(0,c.createComputeRenderable)(B,R)}function P(M){const D=M/3,V=Math.floor((M+1)/2),R=[];for(let E=0;E<V;E++)R.push(1/(Math.sqrt(2*Math.PI)*D)*Math.exp(-E*E/(2*D*D)));return R}const C=new a.PCG;
6281function l(){const M=(0,o.Vec3)();for(;;){const D=C.float()*2-1,V=C.float()*2-1;if(D*D+V*V<1){const R=2*Math.sqrt(1-D*D-V*V)*(C.float()<.5?-1:1);o.Vec3.set(M,D,V,R),o.Vec3.normalize(M,M),o.Vec3.scale(M,M,C.float());break}}return M[2]<0&&(M[2]=-M[2]),M}function S(M,D){if(D.length>=M)return D;D.length===0&&D.push(l());const V=Math.max(10,Math.min(30,Math.floor(M/10)));for(let R=D.length;R<M;R++){let E,I=-1;for(let B=0;B<V;B++){const w=l();let O=1/0;for(const F of D){const L=o.Vec3.distance(w,F);O=Math.min(O,L)}O>I&&(I=O,E=w)}D.push(E)}return D}let T=[];function A(M){return T.length<M&&(T=S(M,T)),T}function x(M){const D=A(M),V=[];for(let R=0;R<M;R++){let E=(R*R+2*R+1)/(M*M);E=.1+E*(1-.1),V.push(D[R][0]*E),V.push(D[R][1]*E),V.push(D[R][2]*E)}return V}return Hu}var S8;function XS(){if(S8)return Xo;S8=1,Object.defineProperty(Xo,"__esModule",{value:!0}),Xo.AntialiasingPass=Xo.PostprocessingPass=Xo.PostprocessingParams=void 0;const e=Mr(),t=Yt(),r=Kt(),n=et(),i=Zt(),c=Jt(),o=Ge(),s=Ne(),h=Gr(),f=Soe(),y=vt(),_=Poe(),g=woe(),a=Ct(),d=Boe(),p=Ooe(),u=Fw(),m=m2(),v=HQ(),b=joe(),P=Hoe(),C={...e.QuadSchema,tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tSsaoDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tTransparentColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),dBlendTransparency:(0,t.DefineSpec)("boolean"),tDepthOpaque:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShadows:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tOutlines:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tBloom:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dBloomEnable:(0,t.DefineSpec)("boolean"),uTexSize:(0,t.UniformSpec)("v2"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uOutlineColor:(0,t.UniformSpec)("v3"),uOcclusionColor:(0,t.UniformSpec)("v3"),uTransparentBackground:(0,t.UniformSpec)("b"),dOcclusionEnable:(0,t.DefineSpec)("boolean"),dOcclusionSingleDepth:(0,t.DefineSpec)("boolean"),dOcclusionIncludeOpacity:(0,t.DefineSpec)("boolean"),dOcclusionIncludeTransparency:(0,t.DefineSpec)("boolean"),uOcclusionOffset:(0,t.UniformSpec)("v2"),dShadowEnable:(0,t.DefineSpec)("boolean"),dOutlineEnable:(0,t.DefineSpec)("boolean"),dOutlineScale:(0,t.DefineSpec)("number"),dTransparentOutline:(0,t.DefineSpec)("boolean")};function l(A,x,M,D,V,R,E,I,B,w,O){const F={...e.QuadValues,tSsaoDepth:n.ValueCell.create(I),tSsaoDepthTransparent:n.ValueCell.create(B),tColor:n.ValueCell.create(x),tTransparentColor:n.ValueCell.create(M),dBlendTransparency:n.ValueCell.create(!0),tDepthOpaque:n.ValueCell.create(D),tDepthTransparent:n.ValueCell.create(V),tShadows:n.ValueCell.create(R),tOutlines:n.ValueCell.create(E),tBloom:n.ValueCell.create(w),dBloomEnable:n.ValueCell.create(!1),uTexSize:n.ValueCell.create(o.Vec2.create(x.getWidth(),x.getHeight())),dOrthographic:n.ValueCell.create(0),uNear:n.ValueCell.create(1),uFar:n.ValueCell.create(1e4),uFogNear:n.ValueCell.create(1e4),uFogFar:n.ValueCell.create(1e4),uFogColor:n.ValueCell.create(o.Vec3.create(1,1,1)),uOutlineColor:n.ValueCell.create(o.Vec3.create(0,0,0)),uOcclusionColor:n.ValueCell.create(o.Vec3.create(0,0,0)),uTransparentBackground:n.ValueCell.create(!1),dOcclusionEnable:n.ValueCell.create(!0),dOcclusionSingleDepth:n.ValueCell.create(!1),dOcclusionIncludeOpacity:n.ValueCell.create(!0),dOcclusionIncludeTransparency:n.ValueCell.create(!1),uOcclusionOffset:n.ValueCell.create(o.Vec2.create(0,0)),dShadowEnable:n.ValueCell.create(!1),dOutlineEnable:n.ValueCell.create(!1),dOutlineScale:n.ValueCell.create(1),dTransparentOutline:n.ValueCell.create(O)},L={...C},U=(0,r.ShaderCode)("postprocessing",h.quad_vert,f.postprocessing_frag),q=(0,i.createComputeRenderItem)(A,"triangles",U,L,F);return(0,c.createComputeRenderable)(q,F)}Xo.PostprocessingParams={enabled:s.ParamDefinition.Boolean(!0),occlusion:s.ParamDefinition.MappedStatic("on",{on:s.ParamDefinition.Group(P.SsaoParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Darken occluded crevices with the ambient occlusion effect",hideIf:A=>A.enabled===!1}),shadow:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(b.ShadowParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Simplistic shadows",hideIf:A=>A.enabled===!1}),outline:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(v.OutlineParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Draw outline around 3D objects",hideIf:A=>A.enabled===!1}),dof:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(u.DofParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"DOF",hideIf:A=>A.enabled===!1}),antialiasing:s.ParamDefinition.MappedStatic("smaa",{fxaa:s.ParamDefinition.Group(_.FxaaParams),smaa:s.ParamDefinition.Group(g.SmaaParams),off:s.ParamDefinition.Group({})},{options:[["fxaa","FXAA"],["smaa","SMAA"],["off","Off"]],description:"Smooth pixel edges",hideIf:A=>A.enabled===!1}),sharpening:s.ParamDefinition.MappedStatic("off",{on:s.ParamDefinition.Group(p.CasParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Contrast Adaptive Sharpening",hideIf:A=>A.enabled===!1}
6281),background:s.ParamDefinition.Group(d.BackgroundParams,{isFlat:!0,hideIf:A=>A.enabled===!1}),bloom:s.ParamDefinition.MappedStatic("on",{on:s.ParamDefinition.Group(m.BloomParams),off:s.ParamDefinition.Group({})},{cycle:!0,description:"Bloom",hideIf:A=>A.enabled===!1})};class S{static isEnabled(x){return x.enabled&&(P.SsaoPass.isEnabled(x)||b.ShadowPass.isEnabled(x)||v.OutlinePass.isEnabled(x)||x.background.variant.name!=="off"||m.BloomPass.isEnabled(x))}static isTransparentDepthRequired(x,M){return M.enabled&&(u.DofPass.isEnabled(M)||v.OutlinePass.isEnabled(M)&&S.isTransparentOutlineEnabled(M)||P.SsaoPass.isEnabled(M)&&S.isTransparentSsaoEnabled(x,M)||m.BloomPass.isEnabled(M))&&x.opacityAverage<1}static isTransparentOutlineEnabled(x){var M;return x.enabled&&v.OutlinePass.isEnabled(x)&&((M=x.outline.params.includeTransparent)!==null&&M!==void 0?M:!0)}static isTransparentSsaoEnabled(x,M){return M.enabled&&P.SsaoPass.isEnabled(M)&&P.SsaoPass.isTransparentEnabled(x,M.occlusion.params)}static isSsaoEnabled(x){return x.enabled&&P.SsaoPass.isEnabled(x)}constructor(x,M,D){this.webgl=x,this.drawPass=D,this.occlusionOffset=[0,0],this.transparentBackground=!1;const{colorTarget:V,transparentColorTarget:R,depthTextureOpaque:E,depthTextureTransparent:I,packedDepth:B}=D,w=V.getWidth(),O=V.getHeight();this.target=x.createRenderTarget(w,O,!1,"uint8","linear"),this.ssao=new P.SsaoPass(x,w,O,B,E,I),this.shadow=new b.ShadowPass(x,w,O,E),this.outline=new v.OutlinePass(x,w,O,I,E),this.bloom=new m.BloomPass(x,w,O),this.renderable=l(x,V.texture,R.texture,E,I,this.shadow.target.texture,this.outline.target.texture,this.ssao.ssaoDepthTexture,this.ssao.ssaoDepthTransparentTexture,this.bloom.compositeTarget.texture,!0),this.background=new d.BackgroundPass(x,M,w,O)}getByteCount(){return this.target.getByteCount()+this.ssao.getByteCount()+this.shadow.getByteCount()+this.outline.getByteCount()+this.bloom.getByteCount()}setSize(x,M){const[D,V]=this.renderable.values.uTexSize.ref.value;(x!==D||M!==V)&&(this.target.setSize(x,M),n.ValueCell.update(this.renderable.values.uTexSize,o.Vec2.set(this.renderable.values.uTexSize.ref.value,x,M))),this.ssao.setSize(x,M),this.shadow.setSize(x,M),this.outline.setSize(x,M),this.bloom.setSize(x,M),this.background.setSize(x,M)}reset(){this.ssao.reset()}updateState(x,M,D,V,R,E,I){let B=!1;const w=x.state.mode==="orthographic"?1:0,O=v.OutlinePass.isEnabled(R),F=b.ShadowPass.isEnabled(R),L=P.SsaoPass.isEnabled(R);if(L){const k=R.occlusion.params;this.ssao.update(x,M,k);const j=P.SsaoPass.isTransparentEnabled(M,k);this.renderable.values.dOcclusionIncludeTransparency.ref.value!==j&&(B=!0,n.ValueCell.update(this.renderable.values.dOcclusionIncludeTransparency,j)),n.ValueCell.update(this.renderable.values.uOcclusionColor,y.Color.toVec3Normalized(this.renderable.values.uOcclusionColor.ref.value,k.color))}if(F&&this.shadow.update(x,E,I,R.shadow.params),O){const k=R.outline.params,{transparentOutline:j,outlineScale:H}=this.outline.update(x,k,this.drawPass.depthTextureTransparent,this.drawPass.depthTextureOpaque);n.ValueCell.update(this.renderable.values.uOutlineColor,y.Color.toVec3Normalized(this.renderable.values.uOutlineColor.ref.value,k.color)),this.renderable.values.dOutlineScale.ref.value!==H&&(B=!0,n.ValueCell.update(this.renderable.values.dOutlineScale,H)),this.renderable.values.dTransparentOutline.ref.value!==j&&(B=!0,n.ValueCell.update(this.renderable.values.dTransparentOutline,j))}n.ValueCell.updateIfChanged(this.renderable.values.uFar,x.far),n.ValueCell.updateIfChanged(this.renderable.values.uNear,x.near),n.ValueCell.updateIfChanged(this.renderable.values.uFogFar,x.fogFar),n.ValueCell.updateIfChanged(this.renderable.values.uFogNear,x.fogNear),n.ValueCell.update(this.renderable.values.uFogColor,y.Color.toVec3Normalized(this.renderable.values.uFogColor.ref.value,V)),n.ValueCell.updateIfChanged(this.renderable.values.uTransparentBackground,D),this.renderable.values.dOrthographic.ref.value!==w&&(B=!0,n.ValueCell.update(this.renderable.values.dOrthographic,w)),this.renderable.values.dOutlineEnable.ref.value!==O&&(B=!0,n.ValueCell.update(this.renderable.values.dOutlineEnable,O)),this.renderable.values.dShadowEnable.ref.value!==F&&(B=!0,n.ValueCell.update(this.renderable.values.dShadowEnable,F)),this.renderable.values.dOcclusionEnable.ref.value!==L&&(B=!0,n.ValueCell.update(this.renderable.values.dOcclusionEnable,L));const U=M.opacityAverage<1;this.renderable.values.dBlendTransparency.ref.value!==U&&(B=!0,n.ValueCell.update(this.renderable.values.dBlendTransparency,U)),B&&this.renderable.update(
6281);const{gl:q,state:N}=this.webgl;N.enable(q.SCISSOR_TEST),N.disable(q.BLEND),N.disable(q.DEPTH_TEST),N.depthMask(!1)}setOcclusionOffset(x,M){this.occlusionOffset[0]=x,this.occlusionOffset[1]=M,n.ValueCell.update(this.renderable.values.uOcclusionOffset,o.Vec2.set(this.renderable.values.uOcclusionOffset.ref.value,x,M))}setTransparentBackground(x){this.transparentBackground=x}render(x,M,D,V,R,E,I,B,w=!1){a.isTimingMode&&this.webgl.timer.mark("PostprocessingPass.render"),this.updateState(x,M,V,R,E,I,B),this.renderable.values.dBloomEnable.ref.value!==w&&(n.ValueCell.update(this.renderable.values.dBloomEnable,w),this.renderable.update());const O=this.background.isEnabled(E)||w&&!this.transparentBackground,{gl:F,state:L}=this.webgl,{x:U,y:q,width:N,height:k}=x.viewport;E.occlusion.name==="on"&&this.occlusionOffset[0]===0&&this.occlusionOffset[1]===0&&this.ssao.render(x),L.viewport(U,q,N,k),L.scissor(U,q,N,k),E.outline.name==="on"&&this.outline.render(),E.shadow.name==="on"&&this.shadow.render(),D?this.webgl.bindDrawingBuffer():this.target.bind(),this.background.update(x,E.background),this.background.clear(E.background,this.transparentBackground,R),this.background.render(E.background),O&&(L.enable(F.BLEND),L.blendFuncSeparate(F.ONE,F.ONE_MINUS_SRC_ALPHA,F.ONE,F.ONE_MINUS_SRC_ALPHA)),this.renderable.render(),a.isTimingMode&&this.webgl.timer.markEnd("PostprocessingPass.render")}}Xo.PostprocessingPass=S;class T{static isEnabled(x){return x.enabled&&(x.antialiasing.name!=="off"||x.sharpening.name!=="off")}constructor(x,M,D){this.target=x.createRenderTarget(M,D,!1),this.internalTarget=x.createRenderTarget(M,D,!1),this.fxaa=new _.FxaaPass(x,this.target.texture),this.smaa=new g.SmaaPass(x,this.target.texture),this.cas=new p.CasPass(x,this.target.texture)}getByteCount(){return this.target.getByteCount()+this.internalTarget.getByteCount()+this.smaa.getByteCount()}setSize(x,M){const D=this.target.texture.getWidth(),V=this.target.texture.getHeight();(x!==D||M!==V)&&(this.target.setSize(x,M),this.internalTarget.setSize(x,M),this.fxaa.setSize(x,M),this.smaa.supported&&this.smaa.setSize(x,M),this.cas.setSize(x,M))}_renderFxaa(x,M,D,V){V.antialiasing.name==="fxaa"&&(this.fxaa.update(M,V.antialiasing.params),this.fxaa.render(x.viewport,D))}_renderSmaa(x,M,D,V){V.antialiasing.name==="smaa"&&(this.smaa.update(M,V.antialiasing.params),this.smaa.render(x.viewport,D))}_renderAntialiasing(x,M,D,V){V.antialiasing.name==="fxaa"?this._renderFxaa(x,M,D,V):V.antialiasing.name==="smaa"&&this._renderSmaa(x,M,D,V)}_renderCas(x,M,D,V){V.sharpening.name==="on"&&(V.antialiasing.name!=="off"&&(M=this.internalTarget.texture),this.cas.update(M,V.sharpening.params),this.cas.render(x.viewport,D))}render(x,M,D,V){if(V.antialiasing.name==="off"&&V.sharpening.name==="off")return;if(V.antialiasing.name==="smaa"&&!this.smaa.supported){console.error('SMAA not supported, missing "HTMLImageElement"');return}const R=D===!0?void 0:D===!1?this.target:D;V.sharpening.name==="off"?this._renderAntialiasing(x,M,R,V):V.antialiasing.name==="off"?this._renderCas(x,M,R,V):(this._renderAntialiasing(x,M,this.internalTarget,V),this._renderCas(x,M,R,V))}}return Xo.AntialiasingPass=T,Xo}var PA={},tb={},C8;function WQ(){return C8||(C8=1,Object.defineProperty(tb,"__esModule",{value:!0}),tb.compose_frag=void 0,tb.compose_frag=` 6282precision highp float; 6283precision highp sampler2D; 6284 6285uniform sampler2D tColor; 6286uniform vec2 uTexSize; 6287uniform float uWeight; 6288 6289void main() { 6290 vec2 coords = gl_FragCoord.xy / uTexSize; 6291 gl_FragColor = texture2D(tColor, coords) * uWeight; 6292} 6293`),tb}var P8;function p2(){return P8||(P8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MultiSampleHelper=e.JitterVectors=e.MultiSamplePass=e.MultiSampleParams=void 0;const t=Mr(),r=Yt(),n=et(),i=Ge(),c=Kt(),o=Zt(),s=Jt(),h=Ne(),f=ta(),y=Gr(),_=WQ(),g=Ct(),a={...t.QuadSchema,tColor:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.UniformSpec)("v2"),uWeight:(0,r.UniformSpec)("f")},d=(0,c.ShaderCode)("compose",y.quad_vert,_.compose_frag);function p(v,b){const P={...t.QuadValues,tColor:n.ValueCell.create(b),uTexSize:n.ValueCell.create(i.Vec2.create(b.getWidth(),b.getHeight())),uWeight:n.ValueCell.create(1)},C={...a},l=(0,o.createComputeRenderItem)(v,"triangles",d,C,P);return(0,s.createComputeRenderable)(l,P)}
6293e.MultiSampleParams={mode:h.ParamDefinition.Select("temporal",[["off","Off"],["on","On"],["temporal","Temporal"]]),sampleLevel:h.ParamDefinition.Numeric(2,{min:0,max:5,step:1},{description:"Take level^2 samples."}),reduceFlicker:h.ParamDefinition.Boolean(!0,{description:'Reduce flicker in "temporal" mode.'}),reuseOcclusion:h.ParamDefinition.Boolean(!0,{description:"Reuse occlusion data. It is faster but has some artefacts."})};class u{static isEnabled(b){return b.mode!=="off"}constructor(b,P){this.webgl=b,this.drawPass=P;const{colorBufferFloat:C,textureFloat:l,colorBufferHalfFloat:S,textureHalfFloat:T}=b.extensions,A=P.colorTarget.getWidth(),x=P.colorTarget.getHeight();this.colorTarget=b.createRenderTarget(A,x,!1);const M=S&&T?"fp16":C&&l?"float32":"uint8";this.composeTarget=b.createRenderTarget(A,x,!1,M),this.holdTarget=b.createRenderTarget(A,x,!1),this.compose=p(b,P.colorTarget.texture)}getByteCount(){return this.colorTarget.getByteCount()+this.composeTarget.getByteCount()+this.holdTarget.getByteCount()}syncSize(){const b=this.drawPass.colorTarget.getWidth(),P=this.drawPass.colorTarget.getHeight(),[C,l]=this.compose.values.uTexSize.ref.value;(b!==C||P!==l)&&(this.colorTarget.setSize(b,P),this.composeTarget.setSize(b,P),this.holdTarget.setSize(b,P),n.ValueCell.update(this.compose.values.uTexSize,i.Vec2.set(this.compose.values.uTexSize.ref.value,b,P)))}render(b,P,C,l,S){return C.multiSample.mode==="temporal"&&!S?this.renderTemporalMultiSample(b,P,C,l):(this.renderMultiSample(P,l,C),-2)}bindOutputTarget(b){b?this.webgl.bindDrawingBuffer():this.colorTarget.bind()}renderMultiSample(b,P,C){const{camera:l}=b,{compose:S,composeTarget:T,drawPass:A,webgl:x}=this,{gl:M,state:D}=x;g.isTimingMode&&x.timer.mark("MultiSamplePass.renderMultiSample");const V=e.JitterVectors[Math.max(0,Math.min(C.multiSample.sampleLevel,5))],{x:R,y:E,width:I,height:B}=l.viewport,w=1/V.length,O=1/32;l.viewOffset.enabled=!0,n.ValueCell.update(S.values.tColor,A.getColorTarget(C.postprocessing).texture),S.update();for(let F=0;F<V.length;++F){const L=V[F];f.Camera.setViewOffset(l.viewOffset,I,B,L[0],L[1],I,B),l.update();const U=-.5+(F+.5)/V.length,q=w+O*U;n.ValueCell.update(S.values.uWeight,q),F===0||!C.multiSample.reuseOcclusion?A.postprocessing.setOcclusionOffset(0,0):A.postprocessing.setOcclusionOffset(L[0]/I,L[1]/B),A.render(b,C,!1),T.bind(),D.enable(M.BLEND),D.blendEquationSeparate(M.FUNC_ADD,M.FUNC_ADD),D.blendFuncSeparate(M.ONE,M.ONE,M.ONE,M.ONE),D.disable(M.DEPTH_TEST),D.depthMask(!1),D.viewport(R,E,I,B),D.scissor(R,E,I,B),F===0&&(D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT)),S.render()}A.postprocessing.setOcclusionOffset(0,0),n.ValueCell.update(S.values.uWeight,1),n.ValueCell.update(S.values.tColor,T.texture),S.update(),this.bindOutputTarget(P),D.viewport(R,E,I,B),D.scissor(R,E,I,B),D.disable(M.BLEND),S.render(),l.viewOffset.enabled=!1,l.update(),g.isTimingMode&&x.timer.markEnd("MultiSamplePass.renderMultiSample")}renderTemporalMultiSample(b,P,C,l){const{camera:S}=P,{compose:T,composeTarget:A,holdTarget:x,drawPass:M,webgl:D}=this,{gl:V,state:R}=D;g.isTimingMode&&D.timer.mark("MultiSamplePass.renderTemporalMultiSample");const E=e.JitterVectors[Math.max(0,Math.min(C.multiSample.sampleLevel,5))];if(b===-2||b>=E.length)return-2;const{x:I,y:B,width:w,height:O}=S.viewport,F=1/E.length;if(b===-1)M.render(P,C,!1),n.ValueCell.update(T.values.uWeight,1),n.ValueCell.update(T.values.tColor,M.getColorTarget(C.postprocessing).texture),T.update(),x.bind(),R.disable(V.BLEND),R.disable(V.DEPTH_TEST),R.depthMask(!1),R.viewport(I,B,w,O),R.scissor(I,B,w,O),T.render(),b+=1;else{S.viewOffset.enabled=!0,n.ValueCell.update(T.values.tColor,M.getColorTarget(C.postprocessing).texture),n.ValueCell.update(T.values.uWeight,F),T.update();const U=Math.pow(2,Math.max(0,C.multiSample.sampleLevel-2));for(let q=0;q<U;++q){const N=E[b];if(f.Camera.setViewOffset(S.viewOffset,w,O,N[0],N[1],w,O),S.update(),b===0||!C.multiSample.reuseOcclusion?M.postprocessing.setOcclusionOffset(0,0):M.postprocessing.setOcclusionOffset(N[0]/w,N[1]/O),M.render(P,C,!1),A.bind(),R.enable(V.BLEND),R.blendEquationSeparate(V.FUNC_ADD,V.FUNC_ADD),R.blendFuncSeparate(V.ONE,V.ONE,V.ONE,V.ONE),R.disable(V.DEPTH_TEST),R.depthMask(!1),R.viewport(I,B,w,O),R.scissor(I,B,w,O),b===0&&(R.clearColor(0,0,0,0),V.clear(V.COLOR_BUFFER_BIT)),T.render(),b+=1,b>=E.length)break}}M.postprocessing.setOcclusionOffset(0,0),this.bindOutputTarget(l),R.viewport(I,B,w,O),R.scissor(I,B,w,O);const L=b*F;return L>0&&(n.ValueCell.update(T.values.uWeight,1),n.ValueCell.update(T.values.tColor,A.texture),T.update(
6293),R.disable(V.BLEND),T.render()),L<1&&(n.ValueCell.update(T.values.uWeight,1-L),n.ValueCell.update(T.values.tColor,x.texture),T.update(),L===0?R.disable(V.BLEND):R.enable(V.BLEND),T.render()),S.viewOffset.enabled=!1,S.update(),g.isTimingMode&&D.timer.markEnd("MultiSamplePass.renderTemporalMultiSample"),b>=E.length?-2:b}}e.MultiSamplePass=u,e.JitterVectors=[[[0,0]],[[0,0],[-4,-4]],[[0,0],[6,-2],[-6,2],[2,6]],[[0,0],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[0,0],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[0,0],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]],e.JitterVectors.forEach(v=>{v.forEach(b=>{b[0]*=.0625,b[1]*=.0625})});class m{update(b,P){return b&&(this.sampleIndex=-1),P.mode==="temporal"?this.sampleIndex!==-2:!1}render(b,P,C,l){return this.sampleIndex=this.multiSamplePass.render(this.sampleIndex,b,P,C,!!l),this.sampleIndex<0}constructor(b){this.multiSamplePass=b,this.sampleIndex=-2}}e.MultiSampleHelper=m})(PA)),PA}var Ui={},T8;function h2(){if(T8)return Ui;T8=1,Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.PickBuffers=Ui.AsyncPickStatus=Ui.PickPass=Ui.DefaultPickOptions=void 0,Ui.checkAsyncPickingSupport=f;const e=_n(),t=i2(),r=on(),n=Ct(),i=ci(),c=nc(),o=Kn();Ui.DefaultPickOptions={pickPadding:1,maxAsyncReadLag:5};class s{constructor(a,d,p,u){this.webgl=a,this.width=d,this.height=p,this.pickScale=u;const m=u/a.pixelRatio;this.pickWidth=Math.ceil(d*m),this.pickHeight=Math.ceil(p*m);const{resources:v,extensions:{drawBuffers:b},gl:P}=a;b?(this.objectPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture=v.texture("image-uint8","rgba","ubyte","nearest"),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.framebuffer=v.framebuffer(),this.objectPickFramebuffer=v.framebuffer(),this.instancePickFramebuffer=v.framebuffer(),this.groupPickFramebuffer=v.framebuffer(),this.depthPickFramebuffer=v.framebuffer(),this.framebuffer.bind(),b.drawBuffers([b.COLOR_ATTACHMENT0,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2,b.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer=(0,r.isWebGL2)(P)?v.renderbuffer("depth32f","depth",this.pickWidth,this.pickHeight):v.renderbuffer("depth16","depth",this.pickWidth,this.pickHeight),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0")):(this.objectPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.instancePickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.groupPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight),this.depthPickTarget=a.createRenderTarget(this.pickWidth,this.pickHeight))}getByteCount(){return this.webgl.extensions.drawBuffers?this.objectPickTexture.getByteCount()+this.instancePickTexture.getByteCount()+this.groupPickTexture.getByteCount()+this.depthPickTexture.getByteCount()+this.depthRenderbuffer.getByteCount():this.objectPickTarget.getByteCount()+this.instancePickTarget.getByteCount()+this.groupPickTarget.getByteCount()+this.depthPickTarget.getByteCount()}dispose(){this.webgl.extensions.drawBuffers?(this.framebuffer.destroy(),this.objectPickTexture.destroy(),this.instancePickTexture.destroy(),this.groupPickTexture.destroy(),this.depthPickTexture.destroy(),this.objectPickFramebuffer.destroy(),this.instancePickFramebuffer.destroy(),this.groupPickFramebuffer.destroy(),this.depthPickFramebuffer.destroy(),this.depthRenderbuffer.destroy()):(this.objectPickTarget.destroy(),this.instancePickTarget.destroy(),this.groupPickTarget.destroy(),this.depthPickTarget.destroy())}get pickRatio(){return this.pickScale/this.webgl.pixelRatio}setPickScale(a){this.pickScale=a,this.setSize(this.width,this.height)}bindObject(){this.webgl.extensions.drawBuffers?this.objectPickFramebuffer.bind():this.objectPickTarget.bind()}bindInstance(){this.webgl.extensions.drawBuffers?this.instancePickFramebuffer.bind():this.instancePickTarget.bind()}bindGroup(){this.webgl.extensions.drawBuffers?this.groupPickFramebuffer.bind():this.groupPickTarget.bind()}bindDepth(){this.webgl.extensions.drawBuffers?this.depthPickFramebuffer.bind():this.depthPickTarget.bind()}get drawingBufferHeight(){return this.height}setSize(a,d){this.width=a,this.height=d;const p=this.pickScale/this.webgl.pixelRatio,u=Math.ceil(this.width*p),m=
6293Math.ceil(this.height*p);(u!==this.pickWidth||m!==this.pickHeight)&&(this.pickWidth=u,this.pickHeight=m,this.webgl.extensions.drawBuffers?(this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.depthRenderbuffer.setSize(this.pickWidth,this.pickHeight)):(this.objectPickTarget.setSize(this.pickWidth,this.pickHeight),this.instancePickTarget.setSize(this.pickWidth,this.pickHeight),this.groupPickTarget.setSize(this.pickWidth,this.pickHeight),this.depthPickTarget.setSize(this.pickWidth,this.pickHeight)))}reset(){const{drawBuffers:a}=this.webgl.extensions;a&&(this.framebuffer.bind(),a.drawBuffers([a.COLOR_ATTACHMENT0,a.COLOR_ATTACHMENT1,a.COLOR_ATTACHMENT2,a.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0"))}renderVariant(a,d,p,u,m,v){a.clear(!1),a.update(d,p),a.renderPick(p.primitives,d,m,v),u.handle.isEnabled&&a.renderPick(u.handle.scene,d,m,v),u.camera.isEnabled&&(u.camera.update(d),a.update(u.camera.camera,u.camera.scene),a.renderPick(u.camera.scene,u.camera.camera,m,v))}render(a,d,p,u){this.webgl.extensions.drawBuffers?(this.framebuffer.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.None)):(this.objectPickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Object),this.instancePickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Instance),this.groupPickTarget.bind(),this.renderVariant(a,d,p,u,"pick",t.PickType.Group),this.depthPickTarget.bind(),this.renderVariant(a,d,p,u,"depth",t.PickType.None))}}Ui.PickPass=s;let h=!1;function f(g){return g.isWebGL2?!0:(n.isDebugMode&&!h&&(console.log("WebGL2 required for async picking. Falling back to synchronous picking."),h=!0),!1)}var y;(function(g){g[g.Pending=0]="Pending",g[g.Resolved=1]="Resolved",g[g.Failed=2]="Failed"})(y||(Ui.AsyncPickStatus=y={}));class _{setup(){const a=this.viewport.width*this.viewport.height*4;(!this.object||this.object.length!==a)&&(this.object=new Uint8Array(a),this.instance=new Uint8Array(a),this.group=new Uint8Array(a),this.depth=new Uint8Array(a))}setViewport(a,d,p,u){o.Viewport.set(this.viewport,a,d,p,u),this.setup()}read(){n.isTimingMode&&this.webgl.timer.mark("PickBuffers.read");const{x:a,y:d,width:p,height:u}=this.viewport;this.pickPass.bindObject(),this.webgl.readPixels(a,d,p,u,this.object),this.pickPass.bindInstance(),this.webgl.readPixels(a,d,p,u,this.instance),this.pickPass.bindGroup(),this.webgl.readPixels(a,d,p,u,this.group),this.pickPass.bindDepth(),this.webgl.readPixels(a,d,p,u,this.depth),this.ready=!0,n.isTimingMode&&this.webgl.timer.markEnd("PickBuffers.read")}asyncRead(){const{gl:a}=this.webgl;if(!(0,r.isWebGL2)(a))return;n.isTimingMode&&this.webgl.timer.mark("PickBuffers.asyncRead"),this.fenceSync!==null&&a.deleteSync(this.fenceSync);const{x:d,y:p,width:u,height:m}=this.viewport;this.pickPass.bindObject(),this.objectBuffer.read(d,p,u,m),this.pickPass.bindInstance(),this.instanceBuffer.read(d,p,u,m),this.pickPass.bindGroup(),this.groupBuffer.read(d,p,u,m),this.pickPass.bindDepth(),this.depthBuffer.read(d,p,u,m),this.fenceTimestamp=(0,i.now)(),this.fenceSync=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0),a.flush(),this.ready=!1,n.isTimingMode&&this.webgl.timer.markEnd("PickBuffers.asyncRead")}check(){if(this.ready)return y.Resolved;if(this.fenceSync===null)return y.Failed;const{gl:a}=this.webgl;if(!(0,r.isWebGL2)(a))return y.Failed;const d=a.clientWaitSync(this.fenceSync,0,0);return d===a.WAIT_FAILED||this.lag>=this.maxAsyncReadLag?d!==a.WAIT_FAILED&&(0,i.now)()-this.fenceTimestamp<1e3/60?(this.lag+=1,y.Pending):(a.deleteSync(this.fenceSync),this.fenceSync=null,this.lag=0,this.ready=!1,y.Failed):d===a.TIMEOUT_EXPIRED?(this.lag+=1,y.Pending):(this.objectBuffer.getSubData(this.object),this.instanceBuffer.getSubData(this.instance),this.groupBuffer.getSubData(this.group),this.depthBuffer.getSubData(this.depth),a.deleteSync(this.fenceSync),this.fenceSync=null,this.lag=0,this.ready=!0,y.Resolved)}getIdx(a,d){return(d*this.viewport.width+a)*4}getDepth(a,d){if(!this.ready)return-1;const p=this.getIdx(a,d),u=this.depth;return(0,c.unpackRGBAToDepth)(u[p],u[p+1],u[p+2],u[p+3])}getId(a,d,p){if(!this.ready)return-1;const u=this.getIdx(a,d);return(0,c.unpackRGBToInt)(p[u],p[u+1],p[u+2])}getObjectId(a,d){return this.getId(a,d,this.object)}getInstanceId(a,d){return this.getId(a,d,this.instance)}getGroupId(a,d){return this.getId(a,d,this.group)}getPickingId(a,d){const p=this.getObjectId(a,d);if(p===-1||p===e.PickingId.Null)return;const u=this.getInstanceId(a,d);if(u===-1||u===e.PickingId.Null)return;const m=this.getGroupId(a,d);if(m!==-1)return{objectId:p,instanceId:u,groupId:m}}reset(){this.fenceSync=null,this.ready=!1,this.lag=0,this.fenceTimestamp=0}dispose(){const{gl:a}=this.webgl;(0,r.isWebGL2)(a)&&(this.objectBuffer.destroy(),this.instanceBuffer.destroy(),this.groupBuffer.destroy(),this.depthBuffer.destroy(),this.fenceSync!==null&&(a.deleteSync(this.fenceSync),this.fenceSync=null))}constructor(a,d,p=5){this.webgl=a,this.pickPass=d,this.maxAsyncReadLag=p,this.viewport=o.Viewport.create(0,0,0,0),this.fenceSync=null,this.fenceTimestamp=0,this.ready=!1,this.lag=0,a.isWebG
6293L2&&(this.objectBuffer=a.resources.pixelPack("rgba","ubyte"),this.instanceBuffer=a.resources.pixelPack("rgba","ubyte"),this.groupBuffer=a.resources.pixelPack("rgba","ubyte"),this.depthBuffer=a.resources.pixelPack("rgba","ubyte")),this.setup()}}return Ui.PickBuffers=_,Ui}var rb={},TA={},x8;function Lw(){return x8||(x8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StereoCamera=e.DefaultStereoCameraProps=e.StereoCameraParams=void 0;const t=Ge(),r=Ne(),n=ta(),i=Kn();e.StereoCameraParams={eyeSeparation:r.ParamDefinition.Numeric(.062,{min:.02,max:.1,step:.001},{description:"Distance between left and right camera."}),focus:r.ParamDefinition.Numeric(10,{min:1,max:20,step:.1},{description:"Apparent object distance."})},e.DefaultStereoCameraProps=r.ParamDefinition.getDefaultValues(e.StereoCameraParams);class c{get viewport(){return this.parent.viewport}get viewOffset(){return this.parent.viewOffset}constructor(d,p={}){this.parent=d,this.left=new o,this.right=new o,this.props={...e.DefaultStereoCameraProps,...p}}setProps(d){Object.assign(this.props,d)}update(d){this.parent.update(),d?_(this.parent,this.left,this.right,d):y(this.parent,this.props,this.left,this.right)}}e.StereoCamera=c,(function(a){function d(p){return"left"in p&&"right"in p}a.is=d})(c||(e.StereoCamera=c={}));class o{constructor(){this.viewport=i.Viewport.create(0,0,0,0),this.view=(0,t.Mat4)(),this.projection=(0,t.Mat4)(),this.projectionView=(0,t.Mat4)(),this.inverseProjectionView=(0,t.Mat4)(),this.headRotation=(0,t.Mat4)(),this.viewEye=(0,t.Mat4)(),this.isAsymmetricProjection=!0,this.state=n.Camera.createDefaultSnapshot(),this.viewOffset=n.Camera.ViewOffset(),this.far=0,this.near=0,this.fogFar=0,this.fogNear=0,this.forceFull=!1,this.scale=0,this.minTargetDistance=0,this.disabled=!1}getRay(d,p,u){return t.Mat4.getTranslation(d.origin,t.Mat4.invert((0,t.Mat4)(),this.view)),t.Vec3.set(d.direction,p,u,.5),(0,i.cameraUnproject)(d.direction,d.direction,this.viewport,this.inverseProjectionView),t.Vec3.normalize(d.direction,t.Vec3.sub(d.direction,d.direction,d.origin)),d}}const s=t.Mat4.identity(),h=t.Mat4.identity();function f(a,d){i.Viewport.copy(d.viewport,a.viewport),t.Mat4.copy(d.view,a.view),t.Mat4.copy(d.projection,a.projection),t.Mat4.copy(d.headRotation,a.headRotation),n.Camera.copySnapshot(d.state,a.state),n.Camera.copyViewOffset(d.viewOffset,a.viewOffset),d.far=a.far,d.near=a.near,d.fogFar=a.fogFar,d.fogNear=a.fogNear,d.forceFull=a.forceFull,d.scale=a.scale,d.minTargetDistance=a.minTargetDistance}function y(a,d,p,u){f(a,p),f(a,u);const m=Math.floor(a.viewport.width/2),v=m/a.viewport.height;p.viewport.width=m,u.viewport.x+=m,u.viewport.width-=m;const b=d.eyeSeparation/2,P=b*a.near/d.focus,C=a.near*Math.tan(a.state.fov*.5);let l,S;s[12]=-b,h[12]=b,l=-C*v+P,S=C*v+P,p.projection[0]=2*a.near/(S-l),p.projection[8]=(S+l)/(S-l),t.Mat4.mul(p.view,p.view,s),t.Mat4.mul(p.projectionView,p.projection,p.view),t.Mat4.invert(p.inverseProjectionView,p.projectionView),l=-C*v-P,S=C*v-P,u.projection[0]=2*a.near/(S-l),u.projection[8]=(S+l)/(S-l),t.Mat4.mul(u.view,u.view,h),t.Mat4.mul(u.projectionView,u.projection,u.view),t.Mat4.invert(u.inverseProjectionView,u.projectionView),p.disabled=!1,u.disabled=!1}function _(a,d,p,u){g(a,d,u.pose.views[0],u.layer),u.pose.views.length===1?p.disabled=!0:g(a,p,u.pose.views[1],u.layer)}function g(a,d,p,u){f(a,d);const m=u.getViewport(p);i.Viewport.set(d.viewport,m.x,m.y,m.width,m.height),t.Mat4.fromArray(d.projection,p.projectionMatrix,0),t.Mat4.fromArray(d.view,p.transform.inverse.matrix,0),t.Mat4.mul(d.projectionView,d.projection,d.view),t.Mat4.invert(d.inverseProjectionView,d.projectionView),d.disabled=!1}})(TA)),TA}var A8;function Woe(){if(A8)return rb;A8=1,Object.defineProperty(rb,"__esModule",{value:!0}),rb.PickHelper=void 0;const e=wt(),t=er(),r=Ct(),n=Lw(),i=Kn(),c=h2();class o{setViewport(h,f,y,_){i.Viewport.set(this.viewport,h,f,y,_),this.update()}setPickPadding(h){this.pickPadding!==h&&(this.pickPadding=h,this.update())}update(){const{x:h,y:f,width:y,height:_}=this.viewport;this.pickRatio=this.pickPass.pickRatio,this.pickX=Math.ceil(h*this.pickRatio),this.pickY=Math.ceil(f*this.pickRatio);const g=Math.floor(y*this.pickRatio),a=Math.floor(_*this.pickRatio);(g!==this.pickWidth||a!==this.pickHeight)&&(this.pickWidth=g,this.pickHeight=a,this.halfPickWidth=Math.floor(this.pickWidth/2),this.buffers.setVie
6293wport(this.pickX,this.pickY,this.pickWidth,this.pickHeight)),this.spiral=(0,t.spiral2d)(Math.ceil(this.pickRatio*this.pickPadding)),this.dirty=!0}render(h){r.isTimingMode&&this.webgl.timer.mark("PickHelper.render",{captureStats:!0});const{pickX:f,pickY:y,pickWidth:_,pickHeight:g,halfPickWidth:a}=this,{renderer:d,scene:p,helper:u}=this;d.setTransparentBackground(!1),d.setDrawingBufferSize(_,g),d.setPixelRatio(this.pickRatio),n.StereoCamera.is(h)?(d.setViewport(f,y,a,g),this.pickPass.render(d,h.left,p,u),d.setViewport(f+a,y,_-a,g),this.pickPass.render(d,h.right,p,u)):(d.setViewport(f,y,_,g),this.pickPass.render(d,h,p,u)),this.dirty=!1,r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.render")}identifyInternal(h,f,y){if(this.webgl.isContextLost)return;const{webgl:_,pickRatio:g}=this;if(_.isContextLost)return;h*=_.pixelRatio,f*=_.pixelRatio,f=this.pickPass.drawingBufferHeight-f;const{viewport:a}=this;if(h<a.x||f<a.y||h>a.x+a.width||f>a.y+a.height)return;const d=h-a.x,p=f-a.y,u=Math.floor(d*g),m=Math.floor(p*g),v=this.buffers.getPickingId(u,m);if(v===void 0)return;const b=this.buffers.getDepth(u,m),P=e.Vec3.create(h,f,b);if(n.StereoCamera.is(y)){const C=Math.floor(a.width/2);h>a.x+C?(P[0]=a.x+(d-C)*2,(0,i.cameraUnproject)(P,P,a,y.right.inverseProjectionView)):(P[0]=a.x+d*2,(0,i.cameraUnproject)(P,P,a,y.left.inverseProjectionView))}else(0,i.cameraUnproject)(P,P,a,y.inverseProjectionView);return{id:v,position:P}}prepare(){this.pickRatio!==this.pickPass.pickRatio&&this.update()}getPickData(h,f,y){for(const _ of this.spiral){const g=this.identifyInternal(h+_[0],f+_[1],y);if(g)return g}}identify(h,f,y){return this.prepare(),this.dirty&&(r.isTimingMode&&this.webgl.timer.mark("PickHelper.identify"),this.webgl.resources.finalizePrograms(["pick"],!0),this.render(y),this.buffers.read(),r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.identify")),this.getPickData(h,f,y)}asyncIdentify(h,f,y){return this.prepare(),this.dirty&&(r.isTimingMode&&this.webgl.timer.mark("PickHelper.asyncIdentify"),this.render(y),this.buffers.asyncRead(),r.isTimingMode&&this.webgl.timer.markEnd("PickHelper.asyncIdentify")),{tryGet:()=>{const _=this.buffers.check();if(_===c.AsyncPickStatus.Resolved)return this.getPickData(h,f,y);if(_===c.AsyncPickStatus.Pending)return"pending";_===c.AsyncPickStatus.Failed&&(this.dirty=!0)}}}reset(){this.buffers.reset(),this.dirty=!0}dispose(){this.buffers.dispose()}constructor(h,f,y,_,g,a,d){this.webgl=h,this.renderer=f,this.scene=y,this.helper=_,this.pickPass=g,this.dirty=!0,this.buffers=new c.PickBuffers(this.webgl,this.pickPass),this.viewport=(0,i.Viewport)(),this.setViewport(a.x,a.y,a.width,a.height),this.pickPadding=d.pickPadding,(0,c.checkAsyncPickingSupport)(h)||(this.asyncIdentify=(p,u,m)=>({tryGet:()=>this.identify(p,u,m)}))}}return rb.PickHelper=o,rb}var xA={},nb={},ib={},ab={},M8;function $oe(){return M8||(M8=1,Object.defineProperty(ab,"__esModule",{value:!0}),ab.evaluateWboit_frag=void 0,ab.evaluateWboit_frag=` 6294precision highp float; 6295 6296uniform sampler2D tWboitA; 6297uniform sampler2D tWboitB; 6298uniform vec2 uTexSize; 6299 6300void main() { 6301 vec2 coords = gl_FragCoord.xy / uTexSize; 6302 6303 vec4 accum = texture2D(tWboitA, coords); 6304 float r = 1.0 - accum.a; 6305 6306 accum.a = texture2D(tWboitB, coords).r; 6307 // divisor needs to allow very small values for nice fading 6308 gl_FragColor = vec4(accum.rgb / clamp(accum.a, 0.00000001, 50000.0), r); 6309} 6310`),ab}var D8;function Xoe(){if(D8)return ib;D8=1,Object.defineProperty(ib,"__esModule",{value:!0}),ib.WboitPass=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=et(),o=Gr(),s=$oe(),h=Ge(),f=Ct(),y=on(),_={...e.QuadSchema,tWboitA:(0,r.TextureSpec)("texture","rgba","float","nearest"),tWboitB:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},g=(0,n.ShaderCode)("evaluate-wboit",o.quad_vert,s.evaluateWboit_frag);function a(p,u,m){const v={...e.QuadValues,tWboitA:c.ValueCell.create(u),tWboitB:c.ValueCell.create(m),uTexSize:c.ValueCell.create(h.Vec2.create(u.getWidth(),u.getHeight()))},b={..._},P=(0,i.createComputeRenderItem)(p,"triangles",g,b,v);return(0,t.createComputeRenderable)(P,v)}class d{get supported(){return this._supported}getByteCount(){return this._supported?this.textureA.getByteCount()+this.textureB.getByteCount()+this.depthRenderbuffer.getByteCount():0}bind(){const{state:u,gl:m}=this.webgl;this.framebuffer.bind(),u.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT),u.disable(m.DEPTH_TEST),u.blendFuncSeparate(m.ONE,m.ONE,m.ZERO,m.ONE_MINUS_SRC_ALPHA),u.enable(m.BLEND)}render(){f.isTimingMode&&this.webgl.timer.mark("WboitPass.render");const{state:u,gl:m}=this.webgl;u.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA),u.enable(m.BLEND),this.renderable.update(
6310),this.renderable.render(),f.isTimingMode&&this.webgl.timer.markEnd("WboitPass.render")}setSize(u,m){const[v,b]=this.renderable.values.uTexSize.ref.value;(u!==v||m!==b)&&(this.textureA.define(u,m),this.textureB.define(u,m),this.depthRenderbuffer.setSize(u,m),c.ValueCell.update(this.renderable.values.uTexSize,h.Vec2.set(this.renderable.values.uTexSize.ref.value,u,m)))}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:u}}=this.webgl;this.framebuffer.bind(),u.drawBuffers([u.COLOR_ATTACHMENT0,u.COLOR_ATTACHMENT1]),this.textureA.attachFramebuffer(this.framebuffer,"color0"),this.textureB.attachFramebuffer(this.framebuffer,"color1"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer)}static isSupported(u){const{extensions:{drawBuffers:m,textureFloat:v,colorBufferFloat:b,depthTexture:P}}=u;if(!v||!b||!P||!m){if(f.isDebugMode){const C=[];v||C.push("textureFloat"),b||C.push("colorBufferFloat"),P||C.push("depthTexture"),m||C.push("drawBuffers"),console.log(`Missing "${C.join('", "')}" extensions required for "wboit"`)}return!1}else return!0}constructor(u,m,v){if(this.webgl=u,this._supported=!1,!d.isSupported(u))return;const{resources:b,gl:P}=u;this.textureA=b.texture("image-float32","rgba","float","nearest"),this.textureA.define(m,v),this.textureB=b.texture("image-float32","rgba","float","nearest"),this.textureB.define(m,v),this.depthRenderbuffer=(0,y.isWebGL2)(P)?b.renderbuffer("depth32f","depth",m,v):b.renderbuffer("depth16","depth",m,v),this.renderable=a(u,this.textureA,this.textureB),this.framebuffer=b.framebuffer(),this._supported=!0,this._init()}}return ib.WboitPass=d,ib}var ob={},sb={},I8;function Koe(){return I8||(I8=1,Object.defineProperty(sb,"__esModule",{value:!0}),sb.evaluateDpoit_frag=void 0,sb.evaluateDpoit_frag=` 6311precision highp float; 6312 6313uniform sampler2D tDpoitFrontColor; 6314uniform vec2 uTexSize; 6315 6316void main() { 6317 vec2 coords = gl_FragCoord.xy / uTexSize; 6318 gl_FragColor = texture2D(tDpoitFrontColor, coords); 6319} 6320`),sb}var cb={},w8;function Yoe(){return w8||(w8=1,Object.defineProperty(cb,"__esModule",{value:!0}),cb.blendBackDpoit_frag=void 0,cb.blendBackDpoit_frag=` 6321 precision highp float; 6322 6323 uniform sampler2D tDpoitBackColor; 6324 uniform vec2 uTexSize; 6325 6326 void main() { 6327 vec2 coords = gl_FragCoord.xy / uTexSize; 6328 gl_FragColor = texture2D(tDpoitBackColor, coords); 6329 if (gl_FragColor.a == 0.0) { 6330 discard; 6331 } 6332 } 6333`),cb}var V8;function Qoe(){if(V8)return ob;V8=1,Object.defineProperty(ob,"__esModule",{value:!0}),ob.DpoitPass=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=et(),o=Gr(),s=Koe(),h=Yoe(),f=Ge(),y=Ct(),_=on(),g={...e.QuadSchema,tDpoitBackColor:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},a=(0,n.ShaderCode)("blend-back-dpoit",o.quad_vert,h.blendBackDpoit_frag);function d(b,P){const C={...e.QuadValues,tDpoitBackColor:c.ValueCell.create(P),uTexSize:c.ValueCell.create(f.Vec2.create(P.getWidth(),P.getHeight()))},l={...g},S=(0,i.createComputeRenderItem)(b,"triangles",a,l,C);return(0,t.createComputeRenderable)(S,C)}const p={...e.QuadSchema,tDpoitFrontColor:(0,r.TextureSpec)("texture","rgba","float","nearest"),uTexSize:(0,r.UniformSpec)("v2")},u=(0,n.ShaderCode)("evaluate-dpoit",o.quad_vert,s.evaluateDpoit_frag);function m(b,P){const C={...e.QuadValues,tDpoitFrontColor:c.ValueCell.create(P),uTexSize:c.ValueCell.create(f.Vec2.create(P.getWidth(),P.getHeight()))},l={...p},S=(0,i.createComputeRenderItem)(b,"triangles",u,l,C);return(0,t.createComputeRenderable)(S,C)}class v{get supported(){return this._supported}getByteCount(){return this._supported?this.depthTextures[0].getByteCount()+this.depthTextures[1].getByteCount()+this.colorFrontTextures[0].getByteCount()+this.colorFrontTextures[1].getByteCount()+this.colorBackTextures[0].getByteCount()+this.colorBackTextures[1].getByteCount():0}bind(){const{state:P,gl:C,extensions:{blendMinMax:l}}=this.webgl;return this.passCount=0,this.depthFramebuffers[0].bind(),P.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[1].bind(),P.clearColor(-this.MIN_DEPTH,this.MAX_DEPTH,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[0].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[1].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[0].bind(),P.blendEquation(l.MAX),P.depthMask(!1),{depth:this.depthTextures[1],frontColor:this.colorFrontTextures[1],backColor:this.colorBackTextures[1]}}bindDualDepthPeeling(){const{state:P,gl:C,extensions:{blendMinMax:l}}=this.webgl;return this.readId=this.passCount%2,this.writeId=1-this.readId,this.passCount+=1,this.depthFramebuffers[this.writeId].bind(),P.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),C.clear(C.COLOR_BUFFER_BIT),this.colorFramebuffers[this.writeId].bind(),P.clearColor(0,0,0,0),C.clear(C.COLOR_BUFFER_BIT),this.depthFramebuffers[this.writeId].bind(),P.blendEquation(l.MAX),P.depthMask(!1),{depth:this.depthTextures[this.readId],frontColor:this.colorFrontTextures[this.readId],backColor:this.colorBackTextures[this.readId]}}renderBlendBack(){y.isTimingMode&&this.webgl.timer.mark("DpoitPass.renderBlendBack");const{state:P,gl:C}=this.webgl;P.blendEquation(C.FUNC_ADD),P.blendFuncSeparate(C.SRC_ALPHA,C.ONE_MINUS_SRC_ALPHA,C.ONE,C.ONE_MINUS_SRC_ALPHA),c.ValueCell.update(this.blendBackRenderable.values.tDpoitBackColor,this.colorBackTextures[this.writeId]),this.blendBackRenderable.update(
6333),this.blendBackRenderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.renderBlendBack")}render(){y.isTimingMode&&this.webgl.timer.mark("DpoitPass.render");const{state:P,gl:C}=this.webgl;P.blendEquation(C.FUNC_ADD),P.blendFunc(C.ONE,C.ONE_MINUS_SRC_ALPHA),c.ValueCell.update(this.renderable.values.tDpoitFrontColor,this.colorFrontTextures[this.writeId]),this.renderable.update(),this.renderable.render(),y.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.render")}setSize(P,C){const[l,S]=this.renderable.values.uTexSize.ref.value;if(P!==l||C!==S){for(let T=0;T<2;T++)this.depthTextures[T].define(P,C),this.colorFrontTextures[T].define(P,C),this.colorBackTextures[T].define(P,C);c.ValueCell.update(this.renderable.values.uTexSize,f.Vec2.set(this.renderable.values.uTexSize.ref.value,P,C)),c.ValueCell.update(this.blendBackRenderable.values.uTexSize,f.Vec2.set(this.blendBackRenderable.values.uTexSize.ref.value,P,C))}}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:P}}=this.webgl;for(let C=0;C<2;C++)this.depthFramebuffers[C].bind(),P.drawBuffers([P.COLOR_ATTACHMENT0,P.COLOR_ATTACHMENT1,P.COLOR_ATTACHMENT2]),this.colorFrontTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color0"),this.colorBackTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color1"),this.depthTextures[C].attachFramebuffer(this.depthFramebuffers[C],"color2"),this.colorFramebuffers[C].bind(),P.drawBuffers([P.COLOR_ATTACHMENT0,P.COLOR_ATTACHMENT1]),this.colorFrontTextures[C].attachFramebuffer(this.colorFramebuffers[C],"color0"),this.colorBackTextures[C].attachFramebuffer(this.colorFramebuffers[C],"color1")}static isSupported(P){const{extensions:{drawBuffers:C,textureFloat:l,colorBufferFloat:S,depthTexture:T,blendMinMax:A}}=P;if(!l||!S||!T||!C||!A){if(y.isDebugMode){const x=[];l||x.push("textureFloat"),S||x.push("colorBufferFloat"),T||x.push("depthTexture"),C||x.push("drawBuffers"),A||x.push("blendMinMax"),console.log(`Missing "${x.join('", "')}" extensions required for "dpoit"`)}return!1}else return!0}constructor(P,C,l){if(this.webgl=P,this.DEPTH_CLEAR_VALUE=-99999,this.MAX_DEPTH=1,this.MIN_DEPTH=0,this.passCount=0,this._supported=!1,!v.isSupported(P))return;const{resources:S,extensions:{colorBufferHalfFloat:T,textureHalfFloat:A}}=P;(0,_.isWebGL2)(P.gl)?(this.depthTextures=[S.texture("image-float32","rg","float","nearest"),S.texture("image-float32","rg","float","nearest")],this.colorFrontTextures=T&&A?[S.texture("image-float16","rgba","fp16","nearest"),S.texture("image-float16","rgba","fp16","nearest")]:[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=T&&A?[S.texture("image-float16","rgba","fp16","nearest"),S.texture("image-float16","rgba","fp16","nearest")]:[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")]):(this.depthTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorFrontTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=[S.texture("image-float32","rgba","float","nearest"),S.texture("image-float32","rgba","float","nearest")]),this.depthTextures[0].define(C,l),this.depthTextures[1].define(C,l),this.colorFrontTextures[0].define(C,l),this.colorFrontTextures[1].define(C,l),this.colorBackTextures[0].define(C,l),this.colorBackTextures[1].define(C,l),this.depthFramebuffers=[S.framebuffer(),S.framebuffer()],this.colorFramebuffers=[S.framebuffer(),S.framebuffer()],this.blendBackRenderable=d(P,this.colorBackTextures[0]),this.renderable=m(P,this.colorFrontTextures[0]),this._supported=!0,this._init()}}return ob.DpoitPass=v,ob}var Wu={},ub={},E8;function Zoe(){return E8||(E8=1,Object.defineProperty(ub,"__esModule",{value:!0}),ub.overlay_frag=void 0,ub.overlay_frag=` 6334precision highp float; 6335precision highp sampler2D; 6336 6337uniform vec2 uTexSizeInv; 6338uniform sampler2D tEdgeTexture; 6339uniform vec3 uHighlightEdgeColor; 6340uniform vec3 uSelectEdgeColor; 6341uniform float uHighlightEdgeStrength; 6342uniform float uSelectEdgeStrength; 6343uniform float uGhostEdgeStrength; 6344uniform float uInnerEdgeFactor; 6345 6346void main() { 6347 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 6348 vec4 edgeValue = texture2D(tEdgeTexture, coords); 6349 if (edgeValue.a > 0.0) { 6350 vec3 edgeColor = edgeValue.b == 1.0 ? uHighlightEdgeColor : uSelectEdgeColor; 6351 gl_FragColor.rgb = edgeValue.g > 0.0 ? edgeColor : edgeColor * uInnerEdgeFactor; 6352 gl_FragColor.a = (edgeValue.r == 1.0 ? uGhostEdgeStrength : 1.0) * edgeValue.a; 6353 float edgeStrength = edgeValue.b == 1.0 ? uHighlightEdgeStrength : uSelectEdgeStrength; 6354 gl_FragColor.a *= edgeStrength; 6355 } else { 6356 gl_FragColor = vec4(0.0); 6357 } 6358} 6359`),ub}var lb={},B8;function Joe(){return B8||(B8=1,Object.defineProperty(lb,"__esMo
6359dule",{value:!0}),lb.edge_frag=void 0,lb.edge_frag=` 6360precision highp float; 6361precision highp sampler2D; 6362 6363uniform sampler2D tMaskTexture; 6364uniform vec2 uTexSizeInv; 6365 6366void main() { 6367 vec2 coords = gl_FragCoord.xy * uTexSizeInv; 6368 vec4 offset = vec4(float(dEdgeScale), 0.0, 0.0, float(dEdgeScale)) * vec4(uTexSizeInv, uTexSizeInv); 6369 vec4 c0 = texture2D(tMaskTexture, coords); 6370 vec4 c1 = texture2D(tMaskTexture, coords + offset.xy); 6371 vec4 c2 = texture2D(tMaskTexture, coords - offset.xy); 6372 vec4 c3 = texture2D(tMaskTexture, coords + offset.yw); 6373 vec4 c4 = texture2D(tMaskTexture, coords - offset.yw); 6374 float diff1 = (c1.r - c2.r) * 0.5; 6375 float diff2 = (c3.r - c4.r) * 0.5; 6376 float d = length(vec2(diff1, diff2)); 6377 if (d <= 0.0) 6378 discard; 6379 float a1 = min(c1.g, c2.g); 6380 float a2 = min(c3.g, c4.g); 6381 float visibility = min(a1, a2) > 0.001 ? 1.0 : 0.0; 6382 float mask = c0.r; 6383 float marker = min(c1.b, min(c2.b, min(c3.b, c4.b))); 6384 float fogAlpha = min(c1.a, min(c2.a, min(c3.a, c4.a))); 6385 gl_FragColor = vec4(visibility, mask, marker, fogAlpha); 6386} 6387`),lb}var R8;function KS(){if(R8)return Wu;R8=1,Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.MarkingPass=Wu.MarkingParams=void 0;const e=Mr(),t=Jt(),r=Yt(),n=Kt(),i=Zt(),c=Ge(),o=et(),s=Ne(),h=Gr(),f=Zoe(),y=vt(),_=Joe(),g=Ct();Wu.MarkingParams={enabled:s.ParamDefinition.Boolean(!0),highlightEdgeColor:s.ParamDefinition.Color(y.Color.darken(y.Color.fromNormalizedRgb(1,.4,.6),1)),selectEdgeColor:s.ParamDefinition.Color(y.Color.darken(y.Color.fromNormalizedRgb(.2,1,.1),1)),edgeScale:s.ParamDefinition.Numeric(1,{min:1,max:3,step:1},{description:"Thickness of the edge."}),highlightEdgeStrength:s.ParamDefinition.Numeric(1,{min:0,max:1,step:.1}),selectEdgeStrength:s.ParamDefinition.Numeric(1,{min:0,max:1,step:.1}),ghostEdgeStrength:s.ParamDefinition.Numeric(.3,{min:0,max:1,step:.1},{description:"Opacity of the hidden edges that are covered by other geometry. When set to 1, one less geometry render pass is done."}),innerEdgeFactor:s.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.1},{description:"Factor to multiply the inner edge color with - for added contrast."})};class a{static isEnabled(C){return C.enabled}constructor(C,l,S){this.webgl=C,this.depthTarget=C.createRenderTarget(l,S),this.maskTarget=C.createRenderTarget(l,S),this.edgesTarget=C.createRenderTarget(l,S),this.edge=u(C,this.maskTarget.texture),this.overlay=b(C,this.edgesTarget.texture)}getByteCount(){return this.depthTarget.getByteCount()+this.maskTarget.getByteCount()+this.edgesTarget.getByteCount()}setEdgeState(C){const{gl:l,state:S}=this.webgl;S.enable(l.SCISSOR_TEST),S.enable(l.BLEND),S.blendFunc(l.ONE,l.ONE),S.blendEquation(l.FUNC_ADD),S.disable(l.DEPTH_TEST),S.depthMask(!1);const{x:T,y:A,width:x,height:M}=C;S.viewport(T,A,x,M),S.scissor(T,A,x,M),S.clearColor(0,0,0,0),l.clear(l.COLOR_BUFFER_BIT)}setOverlayState(C){const{gl:l,state:S}=this.webgl;S.enable(l.SCISSOR_TEST),S.enable(l.BLEND),S.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA),S.blendEquation(l.FUNC_ADD),S.disable(l.DEPTH_TEST),S.depthMask(!1);const{x:T,y:A,width:x,height:M}=C;S.viewport(T,A,x,M),S.scissor(T,A,x,M)}setSize(C,l){const S=this.depthTarget.getWidth(),T=this.depthTarget.getHeight();(C!==S||l!==T)&&(this.depthTarget.setSize(C,l),this.maskTarget.setSize(C,l),this.edgesTarget.setSize(C,l),o.ValueCell.update(this.edge.values.uTexSizeInv,c.Vec2.set(this.edge.values.uTexSizeInv.ref.value,1/C,1/l)),o.ValueCell.update(this.overlay.values.uTexSizeInv,c.Vec2.set(this.overlay.values.uTexSizeInv.ref.value,1/C,1/l)))}update(C){const{highlightEdgeColor:l,selectEdgeColor:S,edgeScale:T,innerEdgeFactor:A,ghostEdgeStrength:x,highlightEdgeStrength:M,selectEdgeStrength:D}=C,{values:V}=this.edge,R=Math.max(1,Math.round(T*this.webgl.pixelRatio));V.dEdgeScale.ref.value!==R&&(o.ValueCell.update(V.dEdgeScale,R),this.edge.update());const{values:E}=this.overlay;o.ValueCell.update(E.uHighlightEdgeColor,y.Color.toVec3Normalized(E.uHighlightEdgeColor.ref.value,l)),o.ValueCell.update(E.uSelectEdgeColor,y.Color.toVec3Normalized(E.uSelectEdgeColor.ref.value,S)),o.ValueCell.updateIfChanged(E.uInnerEdgeFactor,A),o.
6387ValueCell.updateIfChanged(E.uGhostEdgeStrength,x),o.ValueCell.updateIfChanged(E.uHighlightEdgeStrength,M),o.ValueCell.updateIfChanged(E.uSelectEdgeStrength,D)}render(C,l){g.isTimingMode&&this.webgl.timer.mark("MarkingPass.render"),this.edgesTarget.bind(),this.setEdgeState(C),this.edge.render(),l.bind(),this.setOverlayState(C),this.overlay.render(),g.isTimingMode&&this.webgl.timer.markEnd("MarkingPass.render")}}Wu.MarkingPass=a;const d={...e.QuadSchema,tMaskTexture:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),dEdgeScale:(0,r.DefineSpec)("number")},p=(0,n.ShaderCode)("edge",h.quad_vert,_.edge_frag);function u(P,C){const l=C.getWidth(),S=C.getHeight(),T={...e.QuadValues,tMaskTexture:o.ValueCell.create(C),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/l,1/S)),dEdgeScale:o.ValueCell.create(1)},A={...d},x=(0,i.createComputeRenderItem)(P,"triangles",p,A,T);return(0,t.createComputeRenderable)(x,T)}const m={...e.QuadSchema,tEdgeTexture:(0,r.TextureSpec)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,r.UniformSpec)("v2"),uHighlightEdgeColor:(0,r.UniformSpec)("v3"),uSelectEdgeColor:(0,r.UniformSpec)("v3"),uHighlightEdgeStrength:(0,r.UniformSpec)("f"),uSelectEdgeStrength:(0,r.UniformSpec)("f"),uGhostEdgeStrength:(0,r.UniformSpec)("f"),uInnerEdgeFactor:(0,r.UniformSpec)("f")},v=(0,n.ShaderCode)("overlay",h.quad_vert,f.overlay_frag);function b(P,C){const l=C.getWidth(),S=C.getHeight(),T={...e.QuadValues,tEdgeTexture:o.ValueCell.create(C),uTexSizeInv:o.ValueCell.create(c.Vec2.create(1/l,1/S)),uHighlightEdgeColor:o.ValueCell.create((0,c.Vec3)()),uSelectEdgeColor:o.ValueCell.create((0,c.Vec3)()),uHighlightEdgeStrength:o.ValueCell.create(1),uSelectEdgeStrength:o.ValueCell.create(1),uGhostEdgeStrength:o.ValueCell.create(0),uInnerEdgeFactor:o.ValueCell.create(0)},A={...m},x=(0,i.createComputeRenderItem)(P,"triangles",v,A,T);return(0,t.createComputeRenderable)(x,T)}return Wu}var O8;function $Q(){if(O8)return nb;O8=1,Object.defineProperty(nb,"__esModule",{value:!0}),nb.DrawPass=void 0;const e=et(),t=Ge(),r=Lw(),n=Xoe(),i=Qoe(),c=XS(),o=KS(),s=Mr(),h=Ct(),f=Fw(),y=m2();class _{setTransparency(a){a==="wboit"?(this.transparencyMode=this.wboit.supported?"wboit":"blended",h.isDebugMode&&!this.wboit.supported&&console.log('Missing "wboit" support, falling back to "blended".')):a==="dpoit"?(this.transparencyMode=this.dpoit.supported?"dpoit":"blended",h.isDebugMode&&!this.dpoit.supported&&console.log('Missing "dpoit" support, falling back to "blended".')):this.transparencyMode="blended",this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth")}get transparency(){return this.transparencyMode}constructor(a,d,p,u,m){this.webgl=a,this.transparencyMode="blended";const{extensions:v,resources:b,isWebGL2:P}=a;this.drawTarget=a.createDrawTarget(),this.colorTarget=a.createRenderTarget(p,u,!0,"uint8","linear"),this.transparentColorTarget=a.createRenderTarget(p,u,!1,"uint8","linear"),this.packedDepth=!v.depthTexture,this.depthTargetTransparent=a.createRenderTarget(p,u),this.depthTextureTransparent=this.depthTargetTransparent.texture,this.depthTargetOpaque=this.packedDepth?a.createRenderTarget(p,u):null,this.depthTextureOpaque=this.depthTargetOpaque?this.depthTargetOpaque.texture:b.texture("image-depth","depth",P?"float":"ushort","nearest"),this.packedDepth||this.depthTextureOpaque.define(p,u),this.wboit=new n.WboitPass(a,p,u),this.dpoit=new i.DpoitPass(a,p,u),this.marking=new o.MarkingPass(a,p,u),this.postprocessing=new c.PostprocessingPass(a,d,this),this.antialiasing=new c.AntialiasingPass(a,p,u),this.dof=new f.DofPass(a,p,u),this.copyFboTarget=(0,s.createCopyRenderable)(a,this.colorTarget.texture),this.copyFboPostprocessing=(0,s.createCopyRenderable)(a,this.postprocessing.target.texture),this.setTransparency(m)}getByteCount(){return this.drawTarget.getByteCount()+this.colorTarget.getByteCount()+this.transparentColorTarget.getByteCount()+this.depthTargetTransparent.getByteCount()+(this.depthTargetOpaque?this.depthTargetOpaque.getByteCount():this.depthTextureOpaque.getByteCount())+this.wboit.getByteCount()+this.dpoit.getByteCount()+this.marking.getByteCount()+this.postprocessing.getByteCount()+this.antialiasing.getByteCount()+this.dof.getByteCount()}reset(){this.wboit.reset(),this.dpoit.reset(),this.postprocessing.reset()}setSize(a,d){const p=this.colorTarget.getWidth(),u=this.colorTarget.getHeight();(a!==p||d!==u)&&(this.colorTarget.setSize(a,d),this.depthTargetTransparent.setSize(a,d),this.transparentColorTarget.setSize(a,d),this.depthTargetOpaque?this.depthTargetOpaque.setSize(a,d):this.depthTextureOpaque.define(a,d),e.ValueCell.update(this.copyFboTarget.values.uTexSize,t.Vec2.set(this.copyFboTarget.values.uTexSize.ref.value,a,d)),e.ValueCell.update(this.copyFboPostprocessing.values.uTexSize,t.Vec2.set(this.copyFboPostprocessing.values.uTexSize.ref.value,a,d))),this.wboit.supported&&this.wboit.setSize(a,d),this.dpoit.supported&&this.dpoit.setSize(a,d),this.marking.setSize(a,d),this.postprocessing.setSize(a,d),this.antialiasing.setSize(a,d),this.dof.setSize(a,d)}renderEmissiveBloom(a,d,p,u){var m;const v=this.postprocessing.bloom;v.emissiveTarget.bind(),a.clear(!1,!0,!0);const b=!this.packedDepth;b&&this.depthTextureOpaque.attachFramebuffer(v.emissiveTarget.framebuffer,"depth"),a.renderEmissiveOpaque(p.primitives,d,this.depthTextureTransparent,b),u&&p.opacityAverage<1&&a.renderEmissiveTransparent
6387(p.primitives,d,this.depthTextureTransparent),b&&(this.depthTextureOpaque.detachFramebuffer(v.emissiveTarget.framebuffer,"depth"),(m=v.emissiveTarget.depthRenderbuffer)===null||m===void 0||m.attachFramebuffer(v.emissiveTarget.framebuffer))}_renderBloom(a,d,p,u){if(!y.BloomPass.isEnabled(u)||u.bloom.name!=="on")return!1;const m=this.postprocessing.bloom,v=u.bloom.params,b=v.mode==="emissive";return b&&p.emissiveAverage===0?!1:(b&&this.renderEmissiveBloom(a,d,p,v.transparency),p.opacityAverage>=1&&(this.transparentColorTarget.bind(),a.clear(!1,!1,!0),this.depthTargetTransparent.bind(),a.clearDepth(!0)),m.update(this.colorTarget.texture,this.transparentColorTarget.texture,m.emissiveTarget.texture,this.depthTextureOpaque,this.depthTextureTransparent,v,d,!0),m.render(d.viewport),!0)}_renderDpoit(a,d,p,u,m,v){if(!this.dpoit.supported)throw new Error("expected dpoit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),this.depthTextureOpaque.detachFramebuffer(this.colorTarget.framebuffer,"depth"),c.PostprocessingPass.isTransparentDepthRequired(p,v)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const b=c.PostprocessingPass.isEnabled(v);if(p.opacityAverage<1){const P=b?this.transparentColorTarget:this.colorTarget;b&&(P.bind(),a.clear(!1,!1,!0));const C=this.dpoit.bind();a.renderDpoitTransparent(p.primitives,d,this.depthTextureOpaque,C);for(let l=0;l<u;l++){h.isTimingMode&&this.webgl.timer.mark("DpoitPass.layer");const S=this.dpoit.bindDualDepthPeeling();a.renderDpoitTransparent(p.primitives,d,this.depthTextureOpaque,S),u>1&&(P.bind(),this.dpoit.renderBlendBack()),h.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.layer")}P.bind(),this.dpoit.render()}c.PostprocessingPass.isEnabled(v)&&this.postprocessing.render(d,p,!1,m,a.props.backgroundColor,v,a.light,a.ambientColor,this._renderBloom(a,d,p,v)),p.volumes.renderables.length>0&&a.renderVolume(p.volumes,d,this.depthTextureOpaque)}_renderWboit(a,d,p,u,m){if(!this.wboit.supported)throw new Error("expected wboit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),c.PostprocessingPass.isTransparentDepthRequired(p,m)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const v=c.PostprocessingPass.isEnabled(m);if(p.opacityAverage<1){const b=v?this.transparentColorTarget:this.colorTarget;v&&(b.bind(),a.clear(!1,!1,!0)),this.wboit.bind(),a.renderWboitTransparent(p.primitives,d,this.depthTextureOpaque),b.bind(),this.wboit.render()}c.PostprocessingPass.isEnabled(m)&&this.postprocessing.render(d,p,!1,u,a.props.backgroundColor,m,a.light,a.ambientColor,this._renderBloom(a,d,p,m)),p.volumes.renderables.length>0&&(this.wboit.bind(),a.renderWboitTransparent(p.volumes,d,this.depthTextureOpaque),(v?this.postprocessing.target:this.colorTarget).bind(),this.wboit.render())}_renderBlended(a,d,p,u,m,v){var b,P,C,l,S,T;if(u?this.drawTarget.bind():this.packedDepth?this.colorTarget.bind():this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),a.clear(!0),p.hasOpaque&&a.renderOpaque(p.primitives,d),u)p.opacityAverage<1&&a.renderBlendedTransparent(p.primitives,d);else{this.depthTargetOpaque&&(this.depthTargetOpaque.bind(),a.clearDepth(!0),a.renderDepthOpaque(p.primitives,d),this.colorTarget.bind()),c.PostprocessingPass.isTransparentDepthRequired(p,v)&&(this.depthTargetTransparent.bind(),a.clearDepth(!0),p.opacityAverage<1&&a.renderDepthTransparent(p.primitives,d,this.depthTextureOpaque));const A=c.PostprocessingPass.isEnabled(v);if(p.opacityAverage<1&&(A&&(this.transparentColorTarget.bind(),a.clear(!1,!1,!0),this.packedDepth?(b=this.colorTarget.depthRenderbuffer)===null||b===void 0||b.attachFramebuffer(this.transparentColorTarget.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.transparentColorTarget.framebuffer,"depth")),a.renderBlendedTransparent
6387(p.primitives,d),A&&(this.packedDepth?(P=this.colorTarget.depthRenderbuffer)===null||P===void 0||P.detachFramebuffer(this.transparentColorTarget.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.transparentColorTarget.framebuffer,"depth"))),A&&(this.packedDepth?(C=this.colorTarget.depthRenderbuffer)===null||C===void 0||C.detachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth"),this.postprocessing.render(d,p,!1,m,a.props.backgroundColor,v,a.light,a.ambientColor,this._renderBloom(a,d,p,v)),this.packedDepth?(l=this.colorTarget.depthRenderbuffer)===null||l===void 0||l.attachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.postprocessing.target.framebuffer,"depth")),p.volumes.renderables.length>0){const x=c.PostprocessingPass.isEnabled(v)?this.postprocessing.target:this.colorTarget;this.packedDepth?(S=this.colorTarget.depthRenderbuffer)===null||S===void 0||S.detachFramebuffer(x.framebuffer):this.depthTextureOpaque.detachFramebuffer(x.framebuffer,"depth"),x.bind(),a.renderVolume(p.volumes,d,this.depthTextureOpaque),this.packedDepth?(T=this.colorTarget.depthRenderbuffer)===null||T===void 0||T.attachFramebuffer(x.framebuffer):this.depthTextureOpaque.attachFramebuffer(x.framebuffer,"depth"),x.bind()}}}_render(a,d,p,u,m,v,b){var P;if(d.disabled)return;const C=p.volumes.renderables.length>0,l=c.PostprocessingPass.isEnabled(b.postprocessing),S=c.AntialiasingPass.isEnabled(b.postprocessing),T=o.MarkingPass.isEnabled(b.marking),A=f.DofPass.isEnabled(b.postprocessing),{x,y:M,width:D,height:V}=d.viewport;a.setViewport(x,M,D,V),a.update(d,p),v&&!S&&m&&!l&&(this.drawTarget.bind(),a.clear(!1));let R=!1;this.transparencyMode==="wboit"&&this.wboit.supported?(this._renderWboit(a,d,p,v,b.postprocessing),R=!0):this.transparencyMode==="dpoit"&&this.dpoit.supported?(this._renderDpoit(a,d,p,b.dpoitIterations,v,b.postprocessing),R=!0):this._renderBlended(a,d,p,!C&&!l&&!S&&m,v,b.postprocessing);const E=l?this.postprocessing.target:!m||C||R?this.colorTarget:this.drawTarget;if(T&&p.markerAverage>0){const B=b.marking.ghostEdgeStrength<1;B&&p.markerAverage!==1&&(this.marking.depthTarget.bind(),a.clear(!1,!0),a.renderMarkingDepth(p.primitives,d)),this.marking.maskTarget.bind(),a.clear(!1,!0),a.renderMarkingMask(p.primitives,d,B?this.marking.depthTarget.texture:null),this.marking.update(b.marking),this.marking.render(d.viewport,E)}else E.bind();if(u.debug.isEnabled||u.pointer.isEnabled){if(this.packedDepth||this.depthTextureOpaque.attachFramebuffer(E.framebuffer,"depth"),u.debug.isEnabled){u.debug.syncVisibility();for(const B of u.debug.scenes)a.renderBlended(B,d)}u.pointer.isEnabled&&(u.pointer.setCamera(d),a.update(u.pointer.camera,u.pointer.scene),a.renderBlended(u.pointer.scene,u.pointer.camera)),this.packedDepth||this.depthTextureOpaque.detachFramebuffer(E.framebuffer,"depth")}u.handle.isEnabled&&a.renderBlended(u.handle.scene,d),u.camera.isEnabled&&(u.camera.update(d),a.update(u.camera.camera,u.camera.scene),a.renderBlended(u.camera.scene,u.camera.camera));let I=!1;if(S){const B=c.PostprocessingPass.isEnabled(b.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.antialiasing.render(d,B,m&&!A,b.postprocessing)}else m&&!f.DofPass.isEnabled(b.postprocessing)&&(I=!0);if(A&&b.postprocessing.dof.name==="on"){const B=c.AntialiasingPass.isEnabled(b.postprocessing)?this.antialiasing.target.texture:c.PostprocessingPass.isEnabled(b.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.dof.update(d,B,((P=this.depthTargetOpaque)===null||P===void 0?void 0:P.texture)||this.depthTextureOpaque,this.depthTextureTransparent,b.postprocessing.dof.params,p.boundingSphereVisible),this.dof.render(d.viewport,m?void 0:this.getColorTarget(b.postprocessing))}else m&&!c.AntialiasingPass.isEnabled(b.postprocessing)&&(I=!0);I&&(this.drawTarget.bind(),this.webgl.state.disable(this.webgl.gl.DEPTH_TEST),l?this.copyFboPostprocessing.render():(C||R)&&this.copyFboTarget.render()),this.webgl.gl.flush()}render(a,d,p){h.isTimingMode&&this.webgl.timer.mark("DrawPass.render");const{renderer:u,camera:m,scene:v,helper:b}=a;
6387this.postprocessing.setTransparentBackground(d.transparentBackground);const P=d.postprocessing,C=this.postprocessing.background.isEnabled(P),l=!d.transparentBackground&&!C&&y.BloomPass.isEnabled(P)&&P.bloom.name==="on"&&!(P.bloom.params.mode==="emissive"&&v.emissiveAverage===0),S=d.transparentBackground||C||l;u.setTransparentBackground(S),u.setDrawingBufferSize(this.colorTarget.getWidth(),this.colorTarget.getHeight()),u.setPixelRatio(this.webgl.pixelRatio),r.StereoCamera.is(m)?(h.isTimingMode&&this.webgl.timer.mark("StereoCamera.left"),this._render(u,m.left,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("StereoCamera.left"),h.isTimingMode&&this.webgl.timer.mark("StereoCamera.right"),this._render(u,m.right,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("StereoCamera.right")):this._render(u,m,v,b,p,S,d),h.isTimingMode&&this.webgl.timer.markEnd("DrawPass.render")}getColorTarget(a){return f.DofPass.isEnabled(a)?this.dof.target:c.AntialiasingPass.isEnabled(a)?this.antialiasing.target:c.PostprocessingPass.isEnabled(a)?this.postprocessing.target:this.colorTarget}}return nb.DrawPass=_,nb}var db={},k8;function ese(){if(k8)return db;k8=1,Object.defineProperty(db,"__esModule",{value:!0}),db.PixelData=void 0;var e;return(function(t){function r(c,o,s){return{array:c,width:o,height:s}}t.create=r;function n(c){const{array:o,width:s,height:h}=c,f=o.length/(s*h),y=s*f;for(let _=0,g=h/2;_<g;++_)for(let a=0,d=y;a<d;++a){const p=_*y+a,u=(h-_-1)*y+a,m=o[p];o[p]=o[u],o[u]=m}return c}t.flipY=n;function i(c){const{array:o}=c,s=o instanceof Uint8Array?255:1;for(let h=0,f=o.length;h<f;h+=4){const y=o[h+3]/s;y!==0&&(o[h]=Math.min(s,o[h]/y),o[h+1]=Math.min(s,o[h+1]/y),o[h+2]=Math.min(s,o[h+2]/y))}return c}t.divideByAlpha=i})(e||(db.PixelData=e={})),db}var Va={},F8;function YS(){if(F8)return Va;F8=1,Object.defineProperty(Va,"__esModule",{value:!0}),Va.CameraHelperAxis=Va.CameraHelper=Va.CameraHelperParams=void 0,Va.isCameraAxesLoci=T;const e=Lf(),t=In(),r=ba(),n=Jn(),i=Rt(),c=$t(),o=ya(),s=Kf(),h=f2(),f=rt(),y=Ge(),_=gt(),g=pn(),a=Ul(),d=Vr(),p=cn(),u=Ne(),m=Gt(),v=ta(),b={alpha:u.ParamDefinition.Numeric(.51,{min:0,max:1,step:.01},{isEssential:!0,label:"Opacity"}),colorX:u.ParamDefinition.Color(d.ColorNames.red,{isEssential:!0}),colorY:u.ParamDefinition.Color(d.ColorNames.green,{isEssential:!0}),colorZ:u.ParamDefinition.Color(d.ColorNames.blue,{isEssential:!0}),scale:u.ParamDefinition.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0}),location:u.ParamDefinition.Select("bottom-left",u.ParamDefinition.arrayToOptions(["bottom-left","bottom-right","top-left","top-right"])),locationOffsetX:u.ParamDefinition.Numeric(0),locationOffsetY:u.ParamDefinition.Numeric(0),originColor:u.ParamDefinition.Color(d.ColorNames.grey),radiusScale:u.ParamDefinition.Numeric(.075,{min:.01,max:.3,step:.001}),showPlanes:u.ParamDefinition.Boolean(!0),planeColorXY:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color XY"}),planeColorXZ:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color XZ"}),planeColorYZ:u.ParamDefinition.Color(d.ColorNames.grey,{label:"Plane Color YZ"}),showLabels:u.ParamDefinition.Boolean(!1),labelX:u.ParamDefinition.Text("X"),labelY:u.ParamDefinition.Text("Y"),labelZ:u.ParamDefinition.Text("Z"),labelColorX:u.ParamDefinition.Color(d.ColorNames.grey),labelColorY:u.ParamDefinition.Color(d.ColorNames.grey),labelColorZ:u.ParamDefinition.Color(d.ColorNames.grey),labelOpacity:u.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),labelScale:u.ParamDefinition.Numeric(.25,{min:.1,max:1,step:.01})};Va.CameraHelperParams={axes:u.ParamDefinition.MappedStatic("on",{on:u.ParamDefinition.Group(b),off:u.ParamDefinition.Group({})},{cycle:!0,description:"Show camera orientation axes"})};class P{constructor(B,w={}){this.webgl=B,this.props={axes:{name:"off",params:{}}},this.pixelRatio=1,this.eachGroup=(O,F)=>{if(!T(O))return!1;let L=!1;if(this.meshRenderObject){const U=this.meshRenderObject.values.uGroupCount.ref.value;for(const{groupId:q,instanceId:N}of O.elements){const k=N*U+q;F(t.Interval.ofSingleton(k))&&(L=!0)}}if(this.textRenderObject){const U=this.textRenderObject.values.uGroupCount.ref.value;for(const{groupId:q,instanceId:N}of O.elements){const k=N*U+q;F(t.Interval.ofSingleton(k))&&(L=!0)}}return L},this.scene=h.Scene.create(B,"blended"),this.camera=new v.Camera,y.Vec3.set(this.camera.up,0,1,0),y.Vec3.set(this.camera.target,0,0,0),this.setProps(w)}setProps(B){this.props=(0,e.produce)(this.props,w=>
6387{if(B.axes!==void 0&&(w.axes.name=B.axes.name,B.axes.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const O={...B.axes.params,scale:B.axes.params.scale*this.pixelRatio,labelScale:B.axes.params.labelScale*this.pixelRatio};this.meshRenderObject=D(O),this.scene.add(this.meshRenderObject),B.axes.params.showLabels?(this.textRenderObject=E(O),this.scene.add(this.textRenderObject)):this.textRenderObject=void 0,this.scene.commit(),y.Vec3.set(this.camera.position,0,0,O.scale*200),y.Mat4.lookAt(this.camera.view,this.camera.position,this.camera.target,this.camera.up),w.axes.params={...B.axes.params}}})}get isEnabled(){return this.props.axes.name==="on"}getLoci(B){const{objectId:w,groupId:O,instanceId:F}=B;return(!this.meshRenderObject||w!==this.meshRenderObject.id)&&(!this.textRenderObject||w!==this.textRenderObject.id)||O===C.None?_.EmptyLoci:S(this,O,F)}mark(B,w){return!p.MarkerActions.is(p.MarkerActions.Highlighting,w)||!(0,_.isEveryLoci)(B)&&(!T(B)||B.data!==this)?!1:a.Visual.mark(this.meshRenderObject,B,w,this.eachGroup)||a.Visual.mark(this.textRenderObject,B,w,this.eachGroup)}update(B){if(!this.meshRenderObject||this.props.axes.name==="off")return;this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),A(this.camera,B.viewport,B.viewOffset),y.Mat4.extractRotation(this.scene.view,B.view);const w=this.textRenderObject?this.textRenderObject.values.boundingSphere.ref.value.radius:this.meshRenderObject.values.boundingSphere.ref.value.radius,O=this.props.axes.params.location,F=this.props.axes.params.locationOffsetX*this.pixelRatio,L=this.props.axes.params.locationOffsetY*this.pixelRatio;O==="bottom-left"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(-B.viewport.width/2+w+F,-B.viewport.height/2+w+L,0)):O==="bottom-right"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(B.viewport.width/2-w-F,-B.viewport.height/2+w+L,0)):O==="top-left"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(-B.viewport.width/2+w+F,B.viewport.height/2-w-L,0)):O==="top-right"?y.Mat4.setTranslation(this.scene.view,y.Vec3.create(B.viewport.width/2-w-F,B.viewport.height/2-w-L,0)):(0,m.assertUnreachable)(O)}}Va.CameraHelper=P;var C;(function(I){I[I.None=0]="None",I[I.X=1]="X",I[I.Y=2]="Y",I[I.Z=3]="Z",I[I.XY=4]="XY",I[I.XZ=5]="XZ",I[I.YZ=6]="YZ",I[I.Origin=7]="Origin"})(C||(Va.CameraHelperAxis=C={}));function l(I,B){const w=B.props.axes,O=w.name==="on"?w.params.labelX:"X",F=w.name==="on"?w.params.labelY:"Y",L=w.name==="on"?w.params.labelZ:"Z";switch(I){case C.X:return`${O} Axis`;case C.Y:return`${F} Axis`;case C.Z:return`${L} Axis`;case C.XY:return`${O}${F} Plane`;case C.XZ:return`${O}${L} Plane`;case C.YZ:return`${F}${L} Plane`;case C.Origin:return"Origin";default:return"Axes"}}function S(I,B,w){return(0,_.DataLoci)("camera-axes",I,[{groupId:B,instanceId:w}],void 0,()=>l(B,I))}function T(I){return I.kind==="data-loci"&&I.tag==="camera-axes"}function A(I,B,w){const{near:O,far:F}=I,L=-B.width/2,U=B.width/2,q=B.height/2,N=-B.height/2,k=(U-L)/2,j=(q-N)/2,H=(U+L)/2,G=(q+N)/2;let z=H-k,W=H+k,X=G+j,Y=G-j;if(w.enabled){const K=(U-L)/w.width,Q=(q-N)/w.height;z+=K*w.offsetX,W=z+K*w.width,X-=Q*w.offsetY,Y=X-Q*w.height}y.Mat4.ortho(I.projection,z,W,X,Y,O,F)}function x(I,B){const w=c.MeshBuilder.createState(512,256,B),O=100*I.scale,F=I.radiusScale*O,L=I.showLabels?100*I.labelScale/3:0,U=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitX,O-L),q=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitY,O-L),N=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitZ,O-L),k={radiusTop:F,radiusBottom:F,radialSegments:32};if(w.currentGroup=C.Origin,(0,n.addSphere)(w,y.Vec3.origin,F,2),w.currentGroup=C.X,(0,n.addSphere)(w,U,F,2),(0,r.addCylinder)(w,y.Vec3.origin,U,1,k),w.currentGroup=C.Y,(0,n.addSphere)(w,q,F,2),(0,r.addCylinder)(w,y.Vec3.origin,q,1,k),w.currentGroup=C.Z,(0,n.addSphere)(w,N,F,2),(0,r.addCylinder)(w,y.Vec3.origin,N,1,k),I.showPlanes){y.Vec3.scale(U,U,.5),y.Vec3.scale(q,q,.5),y.Vec3.scale(N,N,.5),w.currentGroup=C.XY,c.MeshBuilder.addTriangle(w,y.Vec3.origin,U,q),c.MeshBuilder.addTriangle(w,y.Vec3.origin,q,U);const j=y.Vec3.add((0,y.Vec3)(),U,q);c.MeshBuilder.addTriangle(w,j,U,q),c.MeshBuilder.addTriangle(w,j,q,U),w.currentGroup=C.XZ,c.MeshBuilder.addTriangle(w,y.Vec3.origin,U,N),c.MeshBuilder.addTriangle(w,y.Vec3.origin,N,U);const H=y.Vec3.add((0,y.Vec3)(),U,N);c.MeshBuilder.addTriangle(w,H,U,N),c.MeshBuilder.addTriangle(w,H,N,U),w.currentGroup=C.YZ,c.MeshBuilder.addTriangle(w,y.Vec3.origin,q,N),c.MeshBuilder.addTriangle(w,y.Vec3.origin,N,q);const G=y.Vec3.add((0,y.Vec3)(),q,N);c.MeshBuilder.addTriangle(w,G,q,N),c.MeshBuilder.addTriangle(w,G,N,q)}return c.MeshBuilder.getMesh(w)}function M(I,B){const w=100*I.scale,O=x(I,void 0);O.setBoundingSphere(f.Sphere3D.create(y.Vec3.create(w/2,w/2,w/2),w+w/4));const F=L=>{switch(L){case C.X:return I.colorX;case C.Y:return I.colorY;case C.Z:return I.colorZ;case C.XY:return I.planeColorXY;case C.XZ:return I.planeColorXZ;case C.YZ:return I.planeColorYZ;case C.Origin:return I.originColor;default:return d.ColorNames.grey}};return g.Shape.create("axes-mesh",{},O,F,()=>1,()=>"")}function D(I){const B=M(I);return g.Shape.createRenderObject(B,{...u.ParamDefinition.getDefaultValues(i.Mesh.Params),...I,ignoreLight:!0,cellSize:0})}function V(I,B){const w=s.TextBuilder.create(I,8,8,B),O=100*I.scale,F=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitX,O),L=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitY,O),U=y.Vec3.scale((0,y.Vec3)(),y.Vec3.unitZ,O),q=100*I.labelScale;return w.add(I.labelX,F[0],F[1],F[2],0,q,C.X),w.add(I.labelY,L[0],L[1],L[2],0,q,C.Y),w.add(I.labelZ,U[0],U[1],U[2],0,q,C.Z),w.getText()}function R(I,B){const w=100*I.scale,O=V(I,void 0);O.setBoundingSphere(f.Sphere3D.create(y.Vec3.create(w/2,w/2,w/2),w));const F=L=>{switch(L){case C.X:return I.labelColorX;case C.Y:return I.labelColorY;case C.Z:return I.labelColorZ;default:return d.ColorNames.grey}};return g.Shape.create("axes-text",{},O,F,()=>1,()=>"")}function E(I){const B=R(I);return g.Shape.createRenderObject(B,{...u.ParamDefinition.getDefaultValues(o.Text.Params),...I,alpha:I.labelOpacity,cellSize:0})}return Va}var $u={},fb={},L8;function tse(){return L8||(L8=1,Object.defineProperty(fb,"__esMo
6387dule",{value:!0}),fb.compose_frag=void 0,fb.compose_frag
vendor: 10,285 bytes, lines 6387-6687
6387=` 6388precision highp float; 6389precision highp sampler2D; 6390 6391uniform sampler2D tShaded; 6392uniform sampler2D tColor; 6393uniform sampler2D tNormal; 6394uniform sampler2D tTransparentColor; 6395uniform sampler2D tSsaoDepth; 6396uniform sampler2D tSsaoDepthTransparent; 6397uniform sampler2D tDepthOpaque; 6398uniform sampler2D tDepthTransparent; 6399uniform sampler2D tOutlines; 6400uniform sampler2D tBloom; 6401uniform vec2 uTexSize; 6402 6403uniform float uNear; 6404uniform float uFar; 6405uniform float uFogNear; 6406uniform float uFogFar; 6407uniform vec3 uFogColor; 6408uniform vec3 uOutlineColor; 6409uniform vec3 uOcclusionColor; 6410uniform bool uTransparentBackground; 6411 6412uniform float uDenoiseThreshold; 6413 6414#include common 6415 6416float getViewZ(const in float depth) { 6417 #if dOrthographic == 1 6418 return orthographicDepthToViewZ(depth, uNear, uFar); 6419 #else 6420 return perspectiveDepthToViewZ(depth, uNear, uFar); 6421 #endif 6422} 6423 6424float getDepthOpaque(const in vec2 coords) { 6425 #ifdef depthTextureSupport 6426 return texture2D(tDepthOpaque, coords).r; 6427 #else 6428 return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); 6429 #endif 6430} 6431 6432float getDepthTransparent(const in vec2 coords) { 6433 #if defined(dTransparentOutline) || defined(dOcclusionEnable) || defined(dBloomEnable) 6434 return unpackRGBAToDepthWithAlpha(texture2D(tDepthTransparent, coords)).x; 6435 #else 6436 return 1.0; 6437 #endif 6438} 6439 6440bool isBackground(const in float depth) { 6441 // (2^24 - 1) / 2^24, max of 24-bit packed depth; also passes raw fp32. 6442 return depth >= 0.99999994; 6443} 6444 6445float getSsao(vec2 coords) { 6446 float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy); 6447 if (rawSsao > 0.999) { 6448 return 1.0; 6449 } else if (rawSsao > 0.001) { 6450 return rawSsao; 6451 } 6452 // treat values close to 0.0 as errors and return no occlusion 6453 return 1.0; 6454} 6455 6456float getSsaoTransparent(vec2 coords) { 6457 float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepthTransparent, coords).xy); 6458 if (rawSsao > 0.999) { 6459 return 1.0; 6460 } else if (rawSsao > 0.001) { 6461 return rawSsao; 6462 } 6463 // treat values close to 0.0 as errors and return no occlusion 6464 return 1.0; 6465} 6466 6467// 6468 6469// TODO: investigate 6470// https://interplayoflight.wordpress.com/2022/03/26/raytraced-global-illumination-denoising/ 6471 6472// 6473 6474#define INV_SQRT_OF_2PI 0.39894228040143267793994605993439 // 1.0/SQRT_OF_2PI 6475#define INV_PI 0.31830988618379067153776752674503 6476 6477// https://github.com/BrutPitt/glslSmartDeNoise 6478// 6479// smartDeNoise - parameters 6480//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6481// 6482// sampler2D tex - sampler image / texture 6483// vec2 uv - actual fragment coord 6484// float sigma > 0 - sigma Standard Deviation 6485// float kSigma >= 0 - sigma coefficient 6486// kSigma * sigma --> radius of the circular kernel 6487// float threshold - edge sharpening threshold 6488 6489float NormalWeightStrength = 6.0; 6490 6491vec4 smartDeNoise(sampler2D tex, vec2 uv) { 6492 float sigma = 3.0; 6493 float kSigma = 2.0; 6494 float threshold = uDenoiseThreshold; 6495 6496 vec4 centrPx = texture2D(tex, uv); 6497 if (threshold == 0.0) return centrPx; 6498 6499 float invSigmaQx2 = 0.5 / (sigma * sigma); // 1.0 / (sigma^2 * 2.0) 6500 float invSigmaQx2PI = INV_PI * invSigmaQx2; // 1.0 / (sqrt(PI) * sigma) 6501 6502 float invThresholdSqx2 = 0.5 / (threshold * threshold); // 1.0 / (sigma^2 * 2.0) 6503 float invThresholdSqrt2PI = INV_SQRT_OF_2PI / threshold; // 1.0 / (sqrt(2*PI) * sigma) 6504 6505 float zBuff = 0.0; 6506 vec4 aBuff = vec4(0.0); 6507 6508 vec3 normal = texture2D(tNormal, uv).xyz; 6509 6510 for (int x = -6; x <= 6; ++x) { 6511 for (int y = -6; y <= 6; ++y) { 6512 vec2 d = vec2(float(x), float(y)); 6513 6514 float blurFactor = exp(-dot(d , d) * invSigmaQx2) * invSigmaQx2PI; 6515 vec2 uvSample = uv + d / uTexSize; 6516 6517 vec3 normalSample = texture2D(tNormal, uvSample).xyz; 6518 float normalW = saturate(dot(normal, normalSample)); 6519 normalW = pow(normalW, NormalWeightStrength); 6520 blurFactor *= normalW; 6521 6522 vec4 walkPx = texture2D(tex, uvSample); 6523 6524 vec4 dC = walkPx - centrPx; 6525 float deltaFactor = exp(-dot(dC, dC) * invThresholdSqx2) * invThresholdSqrt2PI * blurFactor; 6526 6527 zBuff += deltaFactor; 6528 aBuff += deltaFactor * walkPx; 6529 } 6530 } 6531 6532 if (zBuff <= EPSILON) { 6533 return centrPx; 6534 } 6535 6536 return aBuff / zBuff; 6537} 6538 6539int squaredOutlineScale = dOutlineScale * dOutlineScale; 6540void getOutline(const in vec2 coords, out bool hasOpaque, out bool hasTransparent, out float opaqueDepth, out float transparentDepth, out float alpha) { 6541 vec2 invTexSize = 1.0 / uTexSize; 6542 6543 hasOpaque = false; 6544 hasTransparent = false; 6545 opaqueDepth = 1.0; 6546 transparentDepth = 1.0; 6547 alpha = 0.0; 6548 for (int y = -dOutlineScale; y <= dOutlineScale; y++) { 6549 for (int x = -dOutlineScale; x <= dOutlineScale; x++) { 6550 if (x * x + y * y > squaredOutlineScale) { 6551 continue; 6552 } 6553 6554 vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize; 6555 6556 vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords); 6557 float sampleOpaqueDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb); 6558 float sampleTransparentDepth = sampleOutlineCombined.a; 6559 vec2 sampleFlagWithAlpha = unpack2x4(sampleOutlineCombined.r); 6560 6561 float sampleFlag = sampleFlagWithAlpha.x; 6562 float sampleAlpha = clamp(sampleFlagWithAlpha.y * 0.5, 0.01, 1.0); 6563 6564 if ((sampleFlag > 0.20 && sampleFlag < 0.30) || (sampleFlag > 0.70 && sampleFlag < 0.80)) { // transparent || both 6565 if (sampleOpaqueDepth < opaqueDepth) { 6566 hasOpaque = true; 6567 opaqueDepth = sampleOpaqueDepth; 6568 } 6569 } 6570 6571 if ((((sampleFlag > 0.45 && sampleFlag < 0.55) || (sampleFlag > 0.70 && sampleFlag < 0.80))) && sampleTransparentDepth < transparentDepth) { // transparent || both 6572 hasTransparent = true; 6573 transparentDepth = sampleTransparentDepth; 6574 alpha = sampleAlpha; 6575 } 6576 } 6577 } 6578} 6579 6580void main() { 6581 vec2 coords = gl_FragCoord.xy / uTexSize; 6582 6583 #ifdef dDenoise 6584 vec4 color = smartDeNoise(tColor, coords); 6585 #else 6586 vec4 color = texture2D(tColor, coords); 6587 #endif 6588 6589 float opaqueDepth = getDepthOpaque(coords); 6590 float backgroundViewZ = 2.0 * uFar; 6591 float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth); 6592 float fogFactor = smoothstep(uFogNear, uFogFar, abs(opaqueSelfViewZ)); 6593 float fogAlpha = 1.0 - fogFactor; 6594 6595 float transparentDepth = 1.0; 6596 #ifdef dBlendTransparency 6597 bool blendTransparency = true; 6598 vec4 transparentColor = texture2D(tTransparentColor, coords); 6599 6600 transparentDepth = getDepthTransparent(coords); 6601 #endif 6602 6603 float alpha = 1.0; 6604 if (!uTransparentBackground) { 6605 // mix opaque objects with background color 6606 color.rgb = mix(color.rgb, uFogColor, fogFactor); 6607 } else { 6608 // pre-multiplied alpha expected for transparent background 6609 alpha = fogAlpha; 6610 color.rgb *= fogAlpha; 6611 } 6612 6613 #if defined(dOcclusionEnable) 6614 if (!isBackground(opaqueDepth)) { 6615 float occlusionFactor = getSsao(coords); 6616 6617 if (!uTransparentBackground) { 6618 color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor); 6619 } else { 6620 color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor); 6621 } 6622 } 6623 #ifdef dBlendTransparency 6624 if (!isBackground(transparentDepth)) { 6625 float viewDist = abs(getViewZ(transparentDepth)); 6626 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 6627 float occlusionFactor = getSsaoTransparent(coords); 6628 transparentColor.rgb = mix(uOcclusionColor * (1.0 - fogFactor), transparentColor.rgb, occlusionFactor); 6629 } 6630 #endif 6631 #endif 6632 6633 #ifdef dOutlineEnable 6634 bool hasOpaque; 6635 bool hasTransparent; 6636 float outlineOpaqueDepth; 6637 float outlineTransparentDepth; 6638 float outlineAlpha; 6639 getOutline(coords, hasOpaque, hasTransparent, outlineOpaqueDepth, outlineTransparentDepth, outlineAlpha); 6640 6641 if (hasOpaque) { 6642 float viewDist = abs(getViewZ(outlineOpaqueDepth)); 6643 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 6644 if (!uTransparentBackground) { 6645 color.rgb = mix(uOutlineColor, uFogColor, fogFactor); 6646 } else { 6647 alpha = 1.0 - fogFactor; 6648 color.rgb = mix(uOutlineColor, vec3(0.0), fogFactor); 6649 } 6650 } 6651 6652 #ifdef dBlendTransparency 6653 if (hasTransparent) { 6654 if (hasOpaque && outlineOpaqueDepth < outlineTransparentDepth) { 6655 blendTransparency = false; 6656 } else { 6657 float finalOutlineAlpha = clamp(outlineAlpha * 2.0, 0.0, 1.0); 6658 float viewDist = abs(getViewZ(outlineTransparentDepth)); 6659 float fogFactor = smoothstep(uFogNear, uFogFar, viewDist); 6660 float finalAlpha = max(transparentColor.a, finalOutlineAlpha * (1.0 - fogFactor)); 6661 transparentColor.a = finalAlpha; 6662 transparentColor.rgb = uOutlineColor * finalAlpha; 6663 } 6664 } 6665 #endif 6666 #endif 6667 6668 #ifdef dBlendTransparency 6669 if (blendTransparency) { 6670 if (transparentColor.a != 0.0) { 6671 // blending 6672 color = transparentColor + color * (1.0 - transparentColor.a); 6673 alpha = transparentColor.a + alpha * (1.0 - transparentColor.a); 6674 } 6675 } 6676 #endif 6677 6678 #ifdef dBloomEnable 6679 vec4 bloom = texture2D(tBloom, coords); 6680 // additive glow over geometry and background alike; alpha just covers the premultiplied rgb 6681 color.rgb += bloom.rgb; 6682 alpha = min(max(alpha, max(color.r, max(color.g, color.b))), 1.0); 6683 #endif 6684 6685 gl_FragColor = vec4(color.rgb, alpha); 6686} 6687`
6687),fb}var Xu={},mb={},N8;function rse(){return N8||(N8=1,Object.defineProperty(mb,"__esModule",{value:!0}),mb.trace_frag=void 0,mb.trace_frag
vendor: 11,065 bytes, lines 6687-7053
6687=` 6688precision highp int; 6689precision highp float; 6690precision highp sampler2D; 6691 6692uniform sampler2D tColor; 6693uniform sampler2D tNormal; 6694uniform sampler2D tShaded; 6695uniform sampler2D tThickness; 6696uniform sampler2D tAccumulate; 6697uniform sampler2D tDepth; 6698uniform vec2 uTexSize; 6699uniform vec4 uBounds; 6700 6701uniform float uNear; 6702uniform float uFar; 6703uniform float uFogNear; 6704uniform float uFogFar; 6705uniform vec3 uFogColor; 6706 6707#if dLightCount != 0 6708 uniform vec3 uLightDirection[dLightCount]; 6709 uniform vec3 uLightColor[dLightCount]; 6710#endif 6711uniform vec3 uAmbientColor; 6712uniform vec3 uLightStrength; 6713 6714uniform int uFrameNo; 6715 6716uniform float uRayDistance; 6717uniform float uMinThickness; 6718uniform float uThicknessFactor; 6719uniform float uThickness; 6720 6721uniform float uShadowSoftness; 6722uniform float uShadowThickness; 6723 6724uniform mat4 uProjection; 6725uniform mat4 uInvProjection; 6726 6727#include common 6728 6729// parts adapted from 6730// - https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/ 6731// - https://github.com/0beqz/realism-effects/blob/v2-debug/src/ssgi/shader/ssgi.frag 6732 6733// 6734 6735// after a hit, it moves the ray this far along the normal away from a surface. 6736// Helps prevent incorrect intersections when rays bounce off of objects. 6737#define RayPosNormalNudge 0.0001 6738 6739#if __VERSION__ == 100 6740 #define StateType float 6741 6742 // from https://www.shadertoy.com/view/4djSRW 6743 float hash14(vec4 p4) { 6744 p4 = fract(p4 * vec4(0.1031, 0.1030, 0.0973, 0.1099)); 6745 p4 += dot(p4, p4.wzxy + 33.33); 6746 return fract((p4.x + p4.y) * (p4.z + p4.w)); 6747 } 6748 6749 float randomFloat(inout float state) { 6750 state += 0.06711056; 6751 return 1.0 - hash14(vec4(gl_FragCoord.xy, float(uFrameNo), state)); 6752 } 6753#else 6754 #define StateType uint 6755 6756 // https://www.pcg-random.org/ 6757 // https://jcgt.org/published/0009/03/02/ 6758 uint pcg(inout uint seed) { 6759 seed = seed * 747796405u + 2891336453u; 6760 uint word = ((seed >> ((seed >> 28u) + 4u)) ^ seed) * 277803737u; 6761 return (word >> 22u) ^ word; 6762 } 6763 6764 float randomFloat(inout uint state) { 6765 return float(pcg(state)) / 4294967296.0; 6766 } 6767#endif 6768 6769vec3 randomUnitVector(inout StateType state) { 6770 float z = randomFloat(state) * 2.0 - 1.0; 6771 float a = randomFloat(state) * TWO_PI; 6772 float r = sqrt(1.0 - z * z); 6773 float x = r * cos(a); 6774 float y = r * sin(a); 6775 return vec3(x, y, z); 6776} 6777 6778struct RayHitInfo { 6779 bool missed; 6780 vec3 position; 6781 vec3 normal; 6782 vec3 color; 6783 vec3 emissive; 6784}; 6785 6786// 6787 6788float getDepth(const in vec2 coords) { 6789 vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w)); 6790 return texture2D(tDepth, c).r; 6791} 6792 6793float getThickness(const in vec2 coords) { 6794 vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w)); 6795 return unpackRGBAToDepth(texture2D(tThickness, c)); 6796} 6797 6798bool isBackground(const in float depth) { 6799 return depth == 1.0; 6800} 6801 6802float getViewZ(const in float depth) { 6803 #if dOrthographic == 1 6804 return orthographicDepthToViewZ(depth, uNear, uFar); 6805 #else 6806 return perspectiveDepthToViewZ(depth, uNear, uFar); 6807 #endif 6808} 6809 6810vec2 viewSpaceToScreenSpace(const vec3 position) { 6811 vec4 projectedCoord = uProjection * vec4(position, 1.0); 6812 projectedCoord.xy /= projectedCoord.w; 6813 // [-1, 1] --> [0, 1] (NDC to screen position) 6814 projectedCoord.xy = projectedCoord.xy * 0.5 + 0.5; 6815 return projectedCoord.xy; 6816} 6817 6818vec2 binarySearch(inout vec3 dir, inout vec3 hitPos) { 6819 float rayHitDepthDifference; 6820 vec2 coords; 6821 6822 dir *= 0.5; 6823 hitPos -= dir; 6824 6825 for (int i = 0; i < dRefineSteps; i++) { 6826 coords = viewSpaceToScreenSpace(hitPos); 6827 float depth = getDepth(coords); 6828 float z = getViewZ(depth); 6829 rayHitDepthDifference = z - hitPos.z; 6830 6831 dir *= 0.5; 6832 if (rayHitDepthDifference >= 0.0) { 6833 hitPos -= dir; 6834 } else { 6835 hitPos += dir; 6836 } 6837 } 6838 6839 coords = viewSpaceToScreenSpace(hitPos); 6840 6841 return coords; 6842} 6843 6844float calculateGrowthFactor(float begin, float end, float steps) { 6845 return pow(end / begin, 1.0 / steps); 6846} 6847 6848vec2 rayMarch(in vec3 dir, in float thickness, inout vec3 hitPos, out bool missed) { 6849 float rayHitDepthDifference; 6850 vec2 coords; 6851 6852 float begin = float(dFirstStepSize); 6853 dir *= begin; 6854 missed = false; 6855 float gf = calculateGrowthFactor(begin, uRayDistance, float(dSteps)); 6856 6857 for (int i = 1; i < dSteps; i++) { 6858 hitPos += dir; 6859 dir *= gf; 6860 6861 coords = viewSpaceToScreenSpace(hitPos); 6862 float depth = getDepth(coords); 6863 float z = getViewZ(depth); 6864 rayHitDepthDifference = z - hitPos.z; 6865 6866 if (thickness == 0.0) { 6867 #ifdef dThicknessMode_auto 6868 thickness = max(uMinThickness, (getViewZ(getThickness(coords)) - z) * uThicknessFactor * texture2D(tColor, coords).a); 6869 #else 6870 thickness = uThickness; 6871 #endif 6872 } 6873 6874 if (rayHitDepthDifference >= 0.0 && rayHitDepthDifference < thickness) { 6875 if (dRefineSteps == 0) { 6876 return coords; 6877 } else { 6878 return binarySearch(dir, hitPos); 6879 } 6880 } 6881 } 6882 6883 missed = true; 6884 6885 return coords; 6886} 6887 6888// 6889 6890void trace(in vec3 rayPos, in vec3 rayDir, inout RayHitInfo hitInfo) { 6891 vec3 hitPos = vec3(rayPos); 6892 bool missed; 6893 vec2 coords; 6894 coords = rayMarch(rayDir, 0.0, hitPos, missed); 6895 6896 hitInfo.missed = missed; 6897 hitInfo.position = hitPos; 6898 hitInfo.normal = -texture2D(tNormal, coords).rgb; 6899 hitInfo.color = texture2D(tColor, coords).rgb; 6900 hitInfo.emissive = texture2D(tColor, coords).rgb * texture2D(tNormal, coords).a * 2.0; 6901 6902 float depth = getDepth(coords); 6903 if (isBackground(depth)) { 6904 hitInfo.emissive = vec3(0.0); 6905 } 6906} 6907 6908vec3 viewPos; 6909 6910vec3 colorForRay(in vec3 startRayPos, in vec3 startRayDir, inout StateType rngState) { 6911 vec3 ret = vec3(0.0, 0.0, 0.0); 6912 6913 vec3 throughput = vec3(1.0, 1.0, 1.0); 6914 vec3 rayPos = startRayPos; 6915 vec3 rayDir = startRayDir; 6916 6917 RayHitInfo hitInfo; 6918 RayHitInfo prevHitInfo; 6919 6920 for (int bounceIndex = 0; bounceIndex <= dBounces; ++bounceIndex) { 6921 // shoot a ray out into the world 6922 if (bounceIndex == 0) { 6923 vec2 coords = gl_FragCoord.xy / uTexSize; 6924 float depth = getDepth(coords); 6925 6926 hitInfo.missed = false; 6927 hitInfo.position = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); 6928 hitInfo.normal = -texture2D(tNormal, coords).rgb; 6929 hitInfo.color = texture2D(tShaded, coords).rgb; 6930 hitInfo.emissive = texture2D(tColor, coords).rgb * texture2D(tNormal, coords).a; 6931 6932 // shadow 6933 #ifdef dShadowEnable 6934 #if dLightCount != 0 6935 vec3 directLight = vec3(uAmbientColor); 6936 #pragma unroll_loop_start 6937 bool missed; 6938 vec3 hitPos; 6939 for (int i = 0; i < dLightCount; ++i) { 6940 missed = false; 6941 hitPos = viewPos + hitInfo.normal * RayPosNormalNudge; 6942 hitPos += -uLightDirection[i] * (randomFloat(rngState)); 6943 rayMarch(-uLightDirection[i] + randomUnitVector(rngState) * uShadowSoftness, uShadowThickness, hitPos, missed); 6944 if (missed) directLight += uLightColor[i]; 6945 } 6946 #pragma unroll_loop_end 6947 hitInfo.color *= directLight / uLightStrength; 6948 #endif 6949 #endif 6950 6951 if (hitInfo.normal == vec3(0.0)) { 6952 hitInfo.missed = true; 6953 } 6954 } else { 6955 prevHitInfo = hitInfo; 6956 trace(rayPos, rayDir, hitInfo); 6957 } 6958 6959 // if the ray missed, we are done 6960 if (hitInfo.missed) { 6961 vec3 accIrradiance = vec3(1.0); 6962 #ifdef dGlow 6963 if (bounceIndex > 1) { 6964 accIrradiance = uLightStrength; 6965 } 6966 #else 6967 if (bounceIndex > 1) { 6968 accIrradiance = uAmbientColor; 6969 #if dLightCount != 0 6970 #pragma unroll_loop_start 6971 float dotNL; 6972 vec3 irradiance; 6973 for (int i = 0; i < dLightCount; ++i) { 6974 dotNL = saturate(dot(prevHitInfo.normal, -uLightDirection[i])); 6975 irradiance = dotNL * uLightColor[i]; 6976 accIrradiance += irradiance; 6977 } 6978 #pragma unroll_loop_end 6979 #endif 6980 } 6981 #endif 6982 ret += prevHitInfo.color * accIrradiance * throughput; 6983 break; 6984 } 6985 6986 // add emissive light 6987 ret += hitInfo.emissive * throughput; 6988 6989 // update the ray position 6990 rayPos = hitInfo.position + hitInfo.normal * RayPosNormalNudge; 6991 6992 // new ray direction from normal oriented cosine weighted hemisphere sample 6993 rayDir = normalize(hitInfo.normal + randomUnitVector(rngState)); 6994 6995 if (bounceIndex == 0) { 6996 continue; 6997 } 6998 6999 // update the colorMultiplier. 7000 throughput *= hitInfo.color; 7001 7002 // Russian Roulette 7003 // As the throughput gets smaller, the ray is more likely to get terminated early. 7004 // Survivors have their value boosted to make up for fewer samples being in the average. 7005 { 7006 float p = max(throughput.r, max(throughput.g, throughput.b)); 7007 if (randomFloat(rngState) > p) 7008 break; 7009 7010 // Add the energy we 'lose' by randomly terminating paths 7011 throughput *= 1.0 / p; 7012 } 7013 } 7014 7015 // return pixel color 7016 return ret; 7017} 7018 7019void main() { 7020 vec2 coords = gl_FragCoord.xy / uTexSize; 7021 float depth = getDepth(coords); 7022 7023 if (isBackground(depth)) { 7024 gl_FragColor = texture2D(tColor, coords); 7025 return; 7026 } 7027 7028 #if __VERSION__ == 100 7029 float rngState = 26699.0; 7030 #else 7031 // initialize a random number state based on gl_FragCoord and uFrameNo 7032 uint rngState = uint(uint(gl_FragCoord.x) * 1973u + uint(gl_FragCoord.y) * 9277u + uint(uFrameNo) * 26699u) | 1u; 7033 #endif 7034 7035 vec3 cameraPos = vec3(0.0, 0.0, 0.0); 7036 viewPos = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); 7037 vec3 rayDir = normalize(viewPos); 7038 7039 // raytrace for this pixel 7040 vec3 color = vec3(0.0, 0.0, 0.0); 7041 for (int index = 0; index < int(dRendersPerFrame); ++index) { 7042 color += colorForRay(cameraPos, rayDir, rngState) / float(dRendersPerFrame); 7043 } 7044 7045 // average the frames together 7046 vec4 lastFrameColor = texture2D(tAccumulate, coords); 7047 float blend = (uFrameNo < 1 || lastFrameColor.a == 0.0) ? 1.0 : 1.0 / (1.0 + (1.0 / lastFrameColor.a)); 7048 color = mix(lastFrameColor.rgb, color, blend); 7049 7050 // show the result 7051 gl_FragColor = vec4(color, blend); 7052} 7053`
7053),mb}var pb={},q8;function nse(){return q8||(q8=1,Object.defineProperty(pb,"__esModule",{value:!0}),pb.accumulate_frag=void 0,pb.accumulate_frag=` 7054precision highp float; 7055precision highp sampler2D; 7056 7057uniform sampler2D tColor; 7058uniform vec2 uTexSize; 7059uniform float uWeight; 7060 7061void main() { 7062 vec2 coords = gl_FragCoord.xy / uTexSize; 7063 gl_FragColor = texture2D(tColor, coords) * uWeight; 7064} 7065`),pb}var U8;function ise(){if(U8)return Xu;U8=1,Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.TracingPass=Xu.TracingParams=void 0;const e=Mr(),t=Yt(),r=et(),n=Ct(),i=Kt(),c=Gr(),o=Jt(),s=rse(),h=ns(),f=Zt(),y=Xr(),_=Fa(),g=wt(),a=Ne(),d=wn(),p=nse(),u=ci(),m=ir();Xu.TracingParams={rendersPerFrame:a.ParamDefinition.Interval([1,16],{min:1,max:64,step:1},{description:"Number of rays per pixel each frame. May be adjusted to reach targetFps but will stay within given interval."}),targetFps:a.ParamDefinition.Numeric(30,{min:0,max:120,step:.1},{description:"Target FPS per frame. If observed FPS is lower or higher, some parameters may get adjusted."}),steps:a.ParamDefinition.Numeric(32,{min:1,max:1024,step:1}),firstStepSize:a.ParamDefinition.Numeric(.01,{min:.001,max:1,step:.001}),refineSteps:a.ParamDefinition.Numeric(4,{min:0,max:8,step:1},{description:"Number of refine steps per ray hit. May be lower to reach targetFps."}),rayDistance:a.ParamDefinition.Numeric(256,{min:1,max:8192,step:1},{description:"Maximum distance a ray can travel (in world units)."}),thicknessMode:a.ParamDefinition.Select("auto",a.ParamDefinition.arrayToOptions(["auto","fixed"])),minThickness:a.ParamDefinition.Numeric(.5,{min:.1,max:16,step:.1},{hideIf:A=>A.thicknessMode==="fixed"}),thicknessFactor:a.ParamDefinition.Numeric(1,{min:.1,max:2,step:.05},{hideIf:A=>A.thicknessMode==="fixed"}),thickness:a.ParamDefinition.Numeric(4,{min:.1,max:512,step:.1},{hideIf:A=>A.thicknessMode==="auto"}),bounces:a.ParamDefinition.Numeric(4,{min:1,max:32,step:1},{description:"Number of bounces for each ray."}),glow:a.ParamDefinition.Boolean(!0,{description:"Bounced rays always get the full light. This produces a slight glowing effect."}),shadowEnable:a.ParamDefinition.Boolean(!1),shadowSoftness:a.ParamDefinition.Numeric(.1,{min:.01,max:1,step:.01}),shadowThickness:a.ParamDefinition.Numeric(.5,{min:.1,max:32,step:.1})};class v{constructor(x,M){this.webgl=x,this.drawPass=M,this.clearAdjustedProps=!0,this.prevTime=0,this.currTime=0,this.rendersPerFrame=1,this.refineSteps=1,this.steps=16;const{extensions:{drawBuffers:D,colorBufferHalfFloat:V,textureHalfFloat:R},resources:E,isWebGL2:I}=x,{depthTextureOpaque:B}=M,w=B.getWidth(),O=B.getHeight();I?(this.shadedTextureOpaque=E.texture("image-uint8","rgba","ubyte","nearest"),this.shadedTextureOpaque.define(w,O),this.normalTextureOpaque=V&&R?E.texture("image-float16","rgba","fp16","nearest"):E.texture("image-float32","rgba","float","nearest"),this.normalTextureOpaque.define(w,O),this.colorTextureOpaque=E.texture("image-uint8","rgba","ubyte","nearest"),this.colorTextureOpaque.define(w,O)):(this.shadedTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.shadedTextureOpaque.define(w,O),this.normalTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.normalTextureOpaque.define(w,O),this.colorTextureOpaque=E.texture("image-float32","rgba","float","nearest"),this.colorTextureOpaque.define(w,O)),this.framebuffer=E.framebuffer(),this.framebuffer.bind(),D.drawBuffers([D.COLOR_ATTACHMENT0,D.COLOR_ATTACHMENT1,D.COLOR_ATTACHMENT2]),this.shadedTextureOpaque.attachFramebuffer(this.framebuffer,"color0"),this.normalTextureOpaque.attachFramebuffer(this.framebuffer,"color1"),this.colorTextureOpaque.attachFramebuffer(this.framebuffer,"color2"),this.thicknessTarget=x.createRenderTarget(w,O,!0,"uint8","nearest"),this.holdTarget=x.createRenderTarget(w,O,!1,"float32"),this.accumulateTarget=x.createRenderTarget(w,O,!1,"float32"),this.composeTarget=x.createRenderTarget(w,O,!1,"uint8","linear"),this.traceRenderable=C(x,this.colorTextureOpaque,this.normalTextureOpaque,this.shadedTextureOpaque,this.thicknessTarget.texture,this.accumulateTarget.texture,this.drawPass.depthTextureOpaque),this.accumulateRenderable=T(x,this.holdTarget.texture)}getByteCount(){return this.thicknessTarget.getByteCount()+this.holdTarget.getByteCount()+this.accumulateTarget.getByteCount()+this.composeTarget.getByteCount()+this.colorTextureOpaque.getByteCount()+this.normalTextureOpaque.getByteCount()+this.shadedTextureOpaque.getByteCount()}renderInput(x,M,D,V){n.isTimingMode&&this.webgl.timer.mark("TracePass.renderInput");const{gl:R,state:E}=this.webgl;this.framebuffer.bind(),this.drawPass.depthTextureOpaque.attachFramebuffer(this.framebuffer,"depth"),x.clear(!0),x.renderTracing(D.primitives,M),V.thicknessMode==="auto"&&(this.thicknessTarget.bind(),E.clearColor(0,0,0,0),R.clear(R.COLOR_BUFFER_BIT|R.DEPTH_BUFFER_BIT),x.renderDepthOpaqueBack(D.primitives,M)),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.renderInput")}setSize(x,M){const D=this.composeTarget.getWidth(),V=this.composeTarget.getHeight();(x!==D||M!==V)&&(this.thicknessTarget.setSize(x,M),this.holdTarget.setSize(x,M),this.accumulateTarget.setSize(x,M),this.composeTarget.setSize(x,M),this.colorTextureOpaque.define(x,M),this.normalTextureOpaque.define(x,M),this.shadedTextureOpaque.define(x,M),r.ValueCell.update(this.traceRenderable.values.uTexSize,h.Vec2.set(this.traceRenderable.values.uTexSize.ref.value,x,M)),r.ValueCell.update(this.accumulateRenderable.values.uTexSize,h.Vec2.set(this.accumulateRenderable.values.uTexSize.ref.value,x,M)))}reset(){const{drawBuffers:x}=this.webgl.extensions;this.framebuffer.bind(),x.drawBuffers([x.COLOR_ATTACHMENT0,x.COLOR_ATTACHMENT1,x.COLOR_ATTACHMENT2]),this.shadedTextureOpaque.attachFramebuffer(this.framebuffer,"color0"),this.normalTextureOpaque.attachFramebuffer(this.framebuffer,"color1"),this.colorTextureOpaque.attachFramebuffer(this.framebuffer,"color2"),this.restart(!0)}restart(x=!1){const{gl:M,state:D}=this.webgl;this.accumulateTarget.bind(),D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT),this.composeTarget.bind(),D.clearColor(0,0,0,0),M.clear(M.COLOR_BUFFER_BIT),x&&(this.prevTime=0,this.currTime=0,this.clearAdjustedProps=!0)}increaseAdjustedProps(x){this.steps+=1,this.steps>x.steps&&(this.refineSteps+=1),this.refineSteps>x.refineSteps&&(this.rendersPerFrame+=1)}decreaseAdjustedProps(x){const M=Math.min(1,x.refineSteps);this.rendersPerFrame-=1,this.rendersPerFrame<1&&(this.refineSteps-=1),this.refineSteps<M&&(this.steps-=1)}getAdjustedProps(x,M){this.currTime=(0,u.now)();const D=Math.min(1,x.refineSteps),V=Math.round(x.steps/2);if(this.clearAdjustedProps&&(this.rendersPerFrame=x.rendersPerFrame[0],this.refineSteps=D,this.steps=V,this.clearAdjustedProps=!1),M>0){const R=1e3/x.targetFps,E=this.currTime-this.prevTime;let I=Math.round(E/R);if(I>=2)for(;I>0;)this.decreaseAdjustedProps(x),I-=1;else E<R?this.increaseAdjustedProps(x):E>R+.5&&this.decreaseAdjustedProps(x)}return this.prevTime=this.currTime,this.rendersPerFrame=(0,m.clamp)(this.rendersPerFrame,x.rendersPerFrame[0],x.rendersPerFrame[1]),this.refineSteps=(0,m.clamp)(this.refineSteps,D,x.refineSteps),this.steps=(0,m.clamp)(this.steps,V,x.steps),{rendersPerFrame:M===0?Math.ceil(this.rendersPerFrame/2):this.rendersPerFrame,refineSteps:M===0?D:this.refineSteps,steps:M===0?V:this.steps}}render(x,M,D,V,R){const{rendersPerFrame:E,refineSteps:I,steps:B}=this.getAdjustedProps(D,V);n.isTimingMode&&this.webgl.timer.mark("TracePass.render",{note:`${E} rendersPerFrame, ${I} refineSteps, ${B} steps`});const{renderer:w,camera:O,scene:F}=x,{gl:L,state:U}=this.webgl,{x:q,y:N,width:k,height:j}=O.viewport;
7065(V===0||R)&&(w.setTransparentBackground(M),w.setDrawingBufferSize(this.composeTarget.getWidth(),this.composeTarget.getHeight()),w.setPixelRatio(this.webgl.pixelRatio),w.setViewport(q,N,k,j),w.update(O,F),this.renderInput(w,O,F,D)),U.disable(L.BLEND),U.disable(L.DEPTH_TEST),U.disable(L.CULL_FACE),U.depthMask(!1),U.viewport(q,N,k,j),U.scissor(q,N,k,j);const H=y.Mat4.identity();y.Mat4.invert(H,O.projection);const G=O.state.mode==="orthographic"?1:0,[z,W]=this.traceRenderable.values.uTexSize.ref.value,X=O.viewport,Y=(0,g.Vec3)();g.Vec3.scale(Y,d.Color.toArrayNormalized(w.props.ambientColor,Y,0),w.props.ambientIntensity);const K=g.Vec3.clone(Y);for(let J=0,ae=w.light.count;J<ae;++J){const te=g.Vec3.fromArray((0,g.Vec3)(),w.light.color,J*3);g.Vec3.add(K,K,te)}this.holdTarget.bind();let Q=!1;r.ValueCell.update(this.traceRenderable.values.uFrameNo,V),this.traceRenderable.values.dRendersPerFrame.ref.value!==E&&(r.ValueCell.update(this.traceRenderable.values.dRendersPerFrame,E),Q=!0),r.ValueCell.update(this.traceRenderable.values.uProjection,O.projection),r.ValueCell.update(this.traceRenderable.values.uInvProjection,H),_.Vec4.set(this.traceRenderable.values.uBounds.ref.value,X.x/z,X.y/W,(X.x+X.width)/z,(X.y+X.height)/W),r.ValueCell.update(this.traceRenderable.values.uBounds,this.traceRenderable.values.uBounds.ref.value),r.ValueCell.updateIfChanged(this.traceRenderable.values.uNear,O.near),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFar,O.far),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFogFar,O.fogFar),r.ValueCell.updateIfChanged(this.traceRenderable.values.uFogNear,O.fogNear),r.ValueCell.update(this.traceRenderable.values.uFogColor,d.Color.toVec3Normalized(this.traceRenderable.values.uFogColor.ref.value,w.props.backgroundColor)),this.traceRenderable.values.dOrthographic.ref.value!==G&&(r.ValueCell.update(this.traceRenderable.values.dOrthographic,G),Q=!0),r.ValueCell.update(this.traceRenderable.values.uLightDirection,w.light.direction),r.ValueCell.update(this.traceRenderable.values.uLightColor,w.light.color),this.traceRenderable.values.dLightCount.ref.value!==w.light.count&&(r.ValueCell.update(this.traceRenderable.values.dLightCount,w.light.count),Q=!0),r.ValueCell.update(this.traceRenderable.values.uAmbientColor,Y),r.ValueCell.update(this.traceRenderable.values.uLightStrength,K),this.traceRenderable.values.dGlow.ref.value!==D.glow&&(r.ValueCell.update(this.traceRenderable.values.dGlow,D.glow),Q=!0),this.traceRenderable.values.dBounces.ref.value!==D.bounces&&(r.ValueCell.update(this.traceRenderable.values.dBounces,D.bounces),Q=!0),this.traceRenderable.values.dSteps.ref.value!==B&&(r.ValueCell.update(this.traceRenderable.values.dSteps,B),Q=!0),this.traceRenderable.values.dFirstStepSize.ref.value!==D.firstStepSize&&(r.ValueCell.update(this.traceRenderable.values.dFirstStepSize,D.firstStepSize),Q=!0),this.traceRenderable.values.dRefineSteps.ref.value!==I&&(r.ValueCell.update(this.traceRenderable.values.dRefineSteps,I),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uRayDistance,D.rayDistance),this.traceRenderable.values.dThicknessMode.ref.value!==D.thicknessMode&&(r.ValueCell.update(this.traceRenderable.values.dThicknessMode,D.thicknessMode),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uMinThickness,D.minThickness),r.ValueCell.updateIfChanged(this.traceRenderable.values.uThicknessFactor,D.thicknessFactor),r.ValueCell.updateIfChanged(this.traceRenderable.values.uThickness,D.thickness),this.traceRenderable.values.dShadowEnable.ref.value!==D.shadowEnable&&(r.ValueCell.update(this.traceRenderable.values.dShadowEnable,D.shadowEnable),Q=!0),r.ValueCell.updateIfChanged(this.traceRenderable.values.uShadowSoftness,D.shadowSoftness),r.ValueCell.updateIfChanged(this.traceRenderable.values.uShadowThickness,D.shadowThickness),Q&&this.traceRenderable.update(),n.isTimingMode&&this.webgl.timer.mark("TracePass.renderTrace"),this.traceRenderable.render(),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.renderTrace"),this.accumulateTarget.bind(),this.accumulateRenderable.render(),n.isTimingMode&&this.webgl.timer.markEnd("TracePass.render")}}Xu.TracingPass=v;const b={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tNormal:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShaded:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tThickness:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tAccumulate:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uProjection:(0,t.UniformSpec)("m4"),uInvProjection:(0,t.UniformSpec)("m4"),uBounds:(0,t.UniformSpec)("v4"),uLightDirection:(0,t.UniformSpec)("v3[]"),uLightColor:(0,t.UniformSpec)("v3[]"),dLightCount:(0,t.DefineSpec)("number"),uAmbientColor:(0,t.UniformSpec)("v3"),uLightStrength:(0,t.UniformSpec)("v3"),uFrameNo:(0,t.UniformSpec)("i"),dRendersPerFrame:(0,t.DefineSpec)("number"),dGlow:(0,t.DefineSpec)("boolean"),dBounces:(0,t.DefineSpec)("number"),dSteps:(0,t.DefineSpec)("number"),dFirstStepSize:(0,t.DefineSpec)("number"),dRefineSteps:(0,t.DefineSpec)("number"),uRayDistance:(0,t.UniformSpec)("f"),dThicknessMode:(0,t.DefineSpec)("str
7065ing"),uMinThickness:(0,t.UniformSpec)("f"),uThicknessFactor:(0,t.UniformSpec)("f"),uThickness:(0,t.UniformSpec)("f"),dShadowEnable:(0,t.DefineSpec)("boolean"),uShadowSoftness:(0,t.UniformSpec)("f"),uShadowThickness:(0,t.UniformSpec)("f")},P=(0,i.ShaderCode)("trace",c.quad_vert,s.trace_frag);function C(A,x,M,D,V,R,E){const I={...e.QuadValues,tColor:r.ValueCell.create(x),tNormal:r.ValueCell.create(M),tShaded:r.ValueCell.create(D),tThickness:r.ValueCell.create(V),tAccumulate:r.ValueCell.create(R),tDepth:r.ValueCell.create(E),uTexSize:r.ValueCell.create(h.Vec2.create(x.getWidth(),x.getHeight())),dOrthographic:r.ValueCell.create(0),uNear:r.ValueCell.create(1),uFar:r.ValueCell.create(1e4),uFogNear:r.ValueCell.create(1e4),uFogFar:r.ValueCell.create(1e4),uFogColor:r.ValueCell.create(g.Vec3.create(1,1,1)),uProjection:r.ValueCell.create(y.Mat4.identity()),uInvProjection:r.ValueCell.create(y.Mat4.identity()),uBounds:r.ValueCell.create((0,_.Vec4)()),uLightDirection:r.ValueCell.create([]),uLightColor:r.ValueCell.create([]),dLightCount:r.ValueCell.create(0),uAmbientColor:r.ValueCell.create((0,g.Vec3)()),uLightStrength:r.ValueCell.create(g.Vec3.create(1,1,1)),uFrameNo:r.ValueCell.create(0),dRendersPerFrame:r.ValueCell.create(1),dGlow:r.ValueCell.create(!0),dBounces:r.ValueCell.create(4),dSteps:r.ValueCell.create(32),dFirstStepSize:r.ValueCell.create(.01),dRefineSteps:r.ValueCell.create(4),uRayDistance:r.ValueCell.create(256),dThicknessMode:r.ValueCell.create("auto"),uMinThickness:r.ValueCell.create(.5),uThicknessFactor:r.ValueCell.create(1),uThickness:r.ValueCell.create(4),dShadowEnable:r.ValueCell.create(!1),uShadowSoftness:r.ValueCell.create(.1),uShadowThickness:r.ValueCell.create(.1)},B={...b},w=(0,f.createComputeRenderItem)(A,"triangles",P,B,I);return(0,o.createComputeRenderable)(w,I)}const l={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uWeight:(0,t.UniformSpec)("f")},S=(0,i.ShaderCode)("accumulate",c.quad_vert,p.accumulate_frag);function T(A,x){const M={...e.QuadValues,tColor:r.ValueCell.create(x),uTexSize:r.ValueCell.create(h.Vec2.create(x.getWidth(),x.getHeight())),uWeight:r.ValueCell.create(1)},D={...l},V=(0,f.createComputeRenderItem)(A,"triangles",S,D,M);return(0,o.createComputeRenderable)(V,M)}return Xu}var j8;function g2(){if(j8)return $u;j8=1,Object.defineProperty($u,"__esModule",{value:!0}),$u.IlluminationPass=$u.IlluminationParams=void 0;const e=Mr(),t=Yt(),r=et(),n=Ct(),i=ta(),c=Kt(),o=Gr(),s=Jt(),h=tse(),f=ns(),y=Zt(),_=wt(),g=Ne(),a=wn(),d=XS(),p=KS(),u=Fw(),m=ise(),v=p2(),b=WQ(),P=ir(),C=HQ(),l=m2();let S=!1;function T(I){const{drawBuffers:B,textureFloat:w,colorBufferFloat:O,depthTexture:F}=I.extensions;if(!w||!O||!F||!B){if(n.isDebugMode&&!S){const L=[];w||L.push("textureFloat"),O||L.push("colorBufferFloat"),F||L.push("depthTexture"),B||L.push("drawBuffers"),console.log(`Missing "${L.join('", "')}" extensions required for "illumination"`),S=!0}return!1}else return!0}$u.IlluminationParams={enabled:g.ParamDefinition.Boolean(!1),maxIterations:g.ParamDefinition.Numeric(5,{min:0,max:16,step:1},{description:"Maximum number of tracing iterations. Final iteration count is 2^x."}),denoise:g.ParamDefinition.Boolean(!0),denoiseThreshold:g.ParamDefinition.Interval([.15,1],{min:0,max:4,step:.01},{description:"Threshold for denoising. Automatically adjusted within given interval based on current iteration."}),ignoreOutline:g.ParamDefinition.Boolean(!0,{description:"Ignore outline in illumination pass where it is generally not needed for visual clarity. Useful when illumination is often toggled on/off."}),...m.TracingParams};class A{get iteration(){return this._iteration}get colorTarget(){return this._colorTarget}get supported(){return this._supported}getByteCount(){return this._supported?this.tracing.getByteCount()+this.transparentTarget.getByteCount()+this.outputTarget.getByteCount()+this.multiSampleComposeTarget.getByteCount()+this.multiSampleHoldTarget.getByteCount()+this.multiSampleAccumulateTarget.getByteCount():0}getMaxIterations(B){return Math.pow(2,B.maxIterations)}static isSupported(B){return T(B)}static isEnabled(B,w){return w.enabled&&T(B)}constructor(B,w){if(this.webgl=B,this.drawPass=w,this._iteration=0,this._supported=!1,this.prevSampleIndex=-1,!A.isSupported(B))return;const{colorTarget:O}=w,F=O.getWidth(),L=O.getHeight();this.tracing=new m.TracingPass(B,this.drawPass),this.transparentTarget=B.createRenderTarget(F,L,!1,"uint8","nearest"),this.outputTarget=B.createRenderTarget(F,L,!1,"uint8","linear"),this.copyRenderable=(0,e.createCopyRenderable)(B,this.transparentTarget.texture),this.composeRenderable=D(B,this.tracing.accumulateTarget.texture,this.tracing.normalTextureOpaque,this.tracing.colorTextureOpaque,this.drawPass.depthTextureOpaque,this.drawPass.depthTargetTransparent.texture,this.drawPass.postprocessing.outline.target.texture,this.transparentTarget.texture,this.drawPass.postprocessing.ssao.ssaoDepthTexture,this.drawPass.postprocessing.ssao.ssaoDepthTransparentTexture,this.drawPass.postprocessing.bloom.compositeTarget.texture,!1),this.multiSampleComposeTarget=B.createRenderTarget(F,L,!1,"float32"),this.multiSampleHoldTarget=B.createRenderTarget(F,L,!1),this.multiSampleAccumulateTarget=B.createRenderTarget(F,L,!1,"float32"),this.multiSampleCompose=E(B,this.outputTarget.texture),this._supported=!0}
7065renderInput(B,w,O,F){n.isTimingMode&&this.webgl.timer.mark("IlluminationPass.renderInput");const{gl:L,state:U}=this.webgl,q=p.MarkingPass.isEnabled(F.marking),N=O.opacityAverage<1||O.volumes.renderables.length>0,k=q&&O.markerAverage>0;this.transparentTarget.bind(),U.clearColor(0,0,0,0),L.clear(L.COLOR_BUFFER_BIT);const j=d.PostprocessingPass.isTransparentOutlineEnabled(F.postprocessing)&&!F.illumination.ignoreOutline,H=u.DofPass.isEnabled(F.postprocessing),G=d.PostprocessingPass.isTransparentSsaoEnabled(O,F.postprocessing),z=l.BloomPass.isEnabled(F.postprocessing);if((j||H||G||z)&&(this.drawPass.depthTargetTransparent.bind(),B.clearDepth(!0)),N){if(this.drawPass.transparency==="wboit")this.drawPass.wboit.bind(),B.renderWboitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque),O.volumes.renderables.length>0&&B.renderWboitTransparent(O.volumes,w,this.drawPass.depthTextureOpaque),this.transparentTarget.bind(),this.drawPass.wboit.render();else if(this.drawPass.transparency==="dpoit"){const W=this.drawPass.dpoit.bind();B.renderDpoitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque,W);for(let X=0,Y=F.dpoitIterations;X<Y;X++){n.isTimingMode&&this.webgl.timer.mark("DpoitPass.layer");const K=this.drawPass.dpoit.bindDualDepthPeeling();B.renderDpoitTransparent(O.primitives,w,this.drawPass.depthTextureOpaque,K),Y>1&&(this.transparentTarget.bind(),this.drawPass.dpoit.renderBlendBack()),n.isTimingMode&&this.webgl.timer.markEnd("DpoitPass.layer")}this.transparentTarget.bind(),this.drawPass.dpoit.render(),O.volumes.renderables.length>0&&B.renderVolume(O.volumes,w,this.drawPass.depthTextureOpaque)}else this.transparentTarget.bind(),this.drawPass.depthTextureOpaque.attachFramebuffer(this.transparentTarget.framebuffer,"depth"),B.renderBlendedTransparent(O.primitives,w),this.drawPass.depthTextureOpaque.detachFramebuffer(this.transparentTarget.framebuffer,"depth"),O.volumes.renderables.length>0&&B.renderVolume(O.volumes,w,this.drawPass.depthTextureOpaque);(j||H||G||z)&&(this.drawPass.depthTargetTransparent.bind(),O.opacityAverage<1&&B.renderDepthTransparent(O.primitives,w,this.drawPass.depthTextureOpaque)),G&&(this.drawPass.postprocessing.ssao.update(w,O,F.postprocessing.occlusion.params,!0),this.drawPass.postprocessing.ssao.render(w))}if(k){const W=F.marking.ghostEdgeStrength<1;W&&O.markerAverage!==1&&(this.drawPass.marking.depthTarget.bind(),B.clear(!1,!0),B.renderMarkingDepth(O.primitives,w)),this.drawPass.marking.maskTarget.bind(),B.clear(!1,!0),B.renderMarkingMask(O.primitives,w,W?this.drawPass.marking.depthTarget.texture:null),this.drawPass.marking.update(F.marking),this.drawPass.marking.render(w.viewport,this.transparentTarget)}this.tracing.composeTarget.bind(),U.clearColor(0,0,0,0),L.clear(L.COLOR_BUFFER_BIT),n.isTimingMode&&this.webgl.timer.markEnd("IlluminationPass.renderInput")}shouldRender(B){return this._supported&&B.enabled&&this._iteration<this.getMaxIterations(B)}setSize(B,w){if(!this._supported)return;const O=this.outputTarget.getWidth(),F=this.outputTarget.getHeight();(B!==O||w!==F)&&(this.tracing.setSize(B,w),this.transparentTarget.setSize(B,w),this.outputTarget.setSize(B,w),r.ValueCell.update(this.copyRenderable.values.uTexSize,f.Vec2.set(this.copyRenderable.values.uTexSize.ref.value,B,w)),r.ValueCell.update(this.composeRenderable.values.uTexSize,f.Vec2.set(this.composeRenderable.values.uTexSize.ref.value,B,w)),this.multiSampleComposeTarget.setSize(B,w),this.multiSampleHoldTarget.setSize(B,w),this.multiSampleAccumulateTarget.setSize(B,w),r.ValueCell.update(this.multiSampleCompose.values.uTexSize,f.Vec2.set(this.multiSampleCompose.values.uTexSize.ref.value,B,w))),this.drawPass.setSize(B,w)}reset(){this._supported&&(this.tracing.reset(),this._iteration=0,this.prevSampleIndex=-1)}restart(B=!1){this._supported&&(this.tracing.restart(B),this._iteration=0,this.prevSampleIndex=-1)}renderInternal(B,w,O,F){if(!this.shouldRender(w.illumination))return;n.isTimingMode&&this.webgl.timer.mark("IlluminationPass.render",{note:`iteration ${this._iteration+1} of ${this.getMaxIterations(w.illumination)}`}
7065),this.tracing.render(B,w.transparentBackground,w.illumination,this._iteration,F);const{renderer:L,camera:U,scene:q,helper:N}=B,{gl:k,state:j}=this.webgl,{x:H,y:G,width:z,height:W}=U.viewport;if(this._iteration===0||F){if(L.setTransparentBackground(w.transparentBackground),L.setDrawingBufferSize(this.tracing.composeTarget.getWidth(),this.tracing.composeTarget.getHeight()),L.setPixelRatio(this.webgl.pixelRatio),L.setViewport(H,G,z,W),L.update(U,q),this.renderInput(L,U,q,w),this.transparentTarget.bind(),N.debug.isEnabled||N.pointer.isEnabled){if(this.drawPass.depthTextureOpaque.attachFramebuffer(this.transparentTarget.framebuffer,"depth"),N.debug.isEnabled){N.debug.syncVisibility();for(const fe of N.debug.scenes)L.renderBlended(fe,U)}N.pointer.isEnabled&&(N.pointer.setCamera(U),L.update(N.pointer.camera,N.pointer.scene),L.renderBlended(N.pointer.scene,N.pointer.camera)),this.drawPass.depthTextureOpaque.detachFramebuffer(this.transparentTarget.framebuffer,"depth")}N.handle.isEnabled&&L.renderBlended(N.handle.scene,U),N.camera.isEnabled&&(N.camera.update(U),L.update(N.camera.camera,N.camera.scene),L.renderBlended(N.camera.scene,N.camera.camera))}j.disable(k.BLEND),j.disable(k.DEPTH_TEST),j.disable(k.CULL_FACE),j.depthMask(!1),j.viewport(H,G,z,W),j.scissor(H,G,z,W);const X=U.state.mode==="orthographic"?1:0,Y=d.AntialiasingPass.isEnabled(w.postprocessing),K=C.OutlinePass.isEnabled(w.postprocessing)&&!w.illumination.ignoreOutline,Q=d.PostprocessingPass.isTransparentSsaoEnabled(q,w.postprocessing),J=l.BloomPass.isEnabled(w.postprocessing),ae=u.DofPass.isEnabled(w.postprocessing),te=p.MarkingPass.isEnabled(w.marking),ne=q.opacityAverage<1||q.volumes.renderables.length>0,$=te&&q.markerAverage>0;let ie=!1;if(this.composeRenderable.values.dOutlineEnable.ref.value!==K&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOutlineEnable,K)),K&&w.postprocessing.outline.name==="on"){const{transparentOutline:fe,outlineScale:de}=this.drawPass.postprocessing.outline.update(U,w.postprocessing.outline.params,this.drawPass.depthTargetTransparent.texture,this.drawPass.depthTextureOpaque);this.drawPass.postprocessing.outline.render(),r.ValueCell.update(this.composeRenderable.values.uOutlineColor,a.Color.toVec3Normalized(this.composeRenderable.values.uOutlineColor.ref.value,w.postprocessing.outline.params.color)),this.composeRenderable.values.dOutlineScale.ref.value!==de&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOutlineScale,de)),this.composeRenderable.values.dTransparentOutline.ref.value!==fe&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dTransparentOutline,fe))}this.composeRenderable.values.dOcclusionEnable.ref.value!==Q&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dOcclusionEnable,Q)),Q&&w.postprocessing.occlusion.name==="on"&&r.ValueCell.update(this.composeRenderable.values.uOcclusionColor,a.Color.toVec3Normalized(this.composeRenderable.values.uOcclusionColor.ref.value,w.postprocessing.occlusion.params.color));const Z=ne||$;this.composeRenderable.values.dBlendTransparency.ref.value!==Z&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dBlendTransparency,Z)),r.ValueCell.updateIfChanged(this.composeRenderable.values.uNear,U.near),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFar,U.far),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFogFar,U.fogFar),r.ValueCell.updateIfChanged(this.composeRenderable.values.uFogNear,U.fogNear),r.ValueCell.update(this.composeRenderable.values.uFogColor,a.Color.toVec3Normalized(this.composeRenderable.values.uFogColor.ref.value,L.props.backgroundColor)),this.composeRenderable.values.dOrthographic.ref.value!==X&&(r.ValueCell.update(this.composeRenderable.values.dOrthographic,X),ie=!0),L.setDrawingBufferSize(this.tracing.composeTarget.getWidth(),this.tracing.composeTarget.getHeight()),L.setPixelRatio(this.webgl.pixelRatio),L.setViewport(H,G,z,W),L.update(U,q);let re=!1;if(J&&w.postprocessing.bloom.name==="on"){const fe=w.postprocessing.bloom.params,de=this.drawPass.postprocessing.bloom,ge=fe.mode==="emissive";ge&&q.emissiveAverage===0||(ge&&this.drawPass.renderEmissiveBloom(L,U,q,fe.transparency),q.opacityAverage>=1&&(this.transparentTarget.bind(),L.clear(!1,!1,!0),this.drawPass.depthTargetTransparent.bind(),L.clearDepth(!0)),de.update(this.tracing.shadedTextureOpaque,this.transparentTarget.texture,de.emissiveTarget.texture,this.drawPass.depthTextureOpaque,this.drawPass.depthTextureTransparent,fe,U,!1),de.render(U.viewport),re=!0)}this.composeRenderable.values.dBloomEnable.ref.value!==re&&(ie=!0,r.ValueCell.update(this.composeRenderable.values.dBloomEnable,re)),O&&!Y&&!ae?this.webgl.bindDrawingBuffer():this.tracing.composeTarget.bind(),this._colorTarget=this.tracing.composeTarget,this.drawPass.postprocessing.background.update(U,w.postprocessing.background),this.drawPass.postprocessing.background.clear(w.postprocessing.background,w.transparentBackgroun
7065d,L.props.backgroundColor),this.drawPass.postprocessing.background.render(w.postprocessing.background);const ue=this.drawPass.postprocessing.background.isEnabled(w.postprocessing)||re&&!w.transparentBackground;r.ValueCell.updateIfChanged(this.composeRenderable.values.uTransparentBackground,w.transparentBackground||ue),this.composeRenderable.values.dDenoise.ref.value!==w.illumination.denoise&&(r.ValueCell.update(this.composeRenderable.values.dDenoise,w.illumination.denoise),ie=!0);const pe=w.multiSample.mode==="on"?w.illumination.denoiseThreshold[0]:(0,P.lerp)(w.illumination.denoiseThreshold[1],w.illumination.denoiseThreshold[0],(0,P.clamp)(this.iteration/(this.getMaxIterations(w.illumination)/2),0,1));r.ValueCell.updateIfChanged(this.composeRenderable.values.uDenoiseThreshold,pe),ie&&this.composeRenderable.update(),ue&&(j.enable(k.BLEND),j.blendFuncSeparate(k.ONE,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)),this.composeRenderable.render();let he=this.outputTarget;if(Y){const fe=O&&!ae;this.drawPass.antiali
7065asing.render(U,this.tracing.composeTarget.texture,fe?!0:this.outputTarget,w.postprocessing),fe||(this._colorTarget=this.outputTarget,he=this.tracing.composeTarget)}ae&&w.postprocessing.dof.name==="on"&&(this.drawPass.dof.update(U,this._colorTarget.texture,this.drawPass.depthTextureOpaque,this.drawPass.depthTargetTransparent.texture,w.postprocessing.dof.params,q.boundingSphereVisible),this.drawPass.dof.render(U.viewport,O?void 0:he),O||(this._colorTarget=he)),this._iteration+=1,n.isTimingMode&&this.webgl.timer.markEnd("IlluminationPass.render"),this.webgl.gl.flush()}renderMultiSample(B,w,O){const{camera:F}=B,{multiSampleCompose:L,multiSampleComposeTarget:U,multiSampleHoldTarget:q,webgl:N}=this,{gl:k,state:j}=N,H=v.JitterVectors[Math.max(0,Math.min(w.multiSample.sampleLevel,5))],G=this.getMaxIterations(w.illumination),z=Math.min(this._iteration,G),W=Math.floor(z/G*H.length);n.isTimingMode&&N.timer.mark("IlluminationPass.renderMultiSample",{note:`sampleIndex ${W+1} of ${H.length}`});const{x:X,y:Y,width:K,height:Q}=F.viewport,J=1/G;if(z===0)this.renderInternal(B,w,!1,!0),r.ValueCell.update(L.values.uWeight,1),r.ValueCell.update(L.values.tColor,this._colorTarget.texture),L.update(),q.bind(),j.disable(k.BLEND),j.disable(k.DEPTH_TEST),j.depthMask(!1),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q),L.render();else{F.viewOffset.enabled=!0,r.ValueCell.update(L.values.tColor,this._colorTarget.texture),r.ValueCell.update(L.values.uWeight,J),L.update();const te=H[W];i.Camera.setViewOffset(F.viewOffset,K,Q,te[0],te[1],K,Q),F.update(),this.renderInternal(B,w,!1,this.prevSampleIndex!==W),U.bind(),j.enable(k.BLEND),j.blendEquationSeparate(k.FUNC_ADD,k.FUNC_ADD),j.blendFuncSeparate(k.ONE,k.ONE,k.ONE,k.ONE),j.disable(k.DEPTH_TEST),j.depthMask(!1),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q),z===1&&(j.clearColor(0,0,0,0),k.clear(k.COLOR_BUFFER_BIT)),L.render()}this.prevSampleIndex=W,O?this.webgl.bindDrawingBuffer():this.multiSampleAccumulateTarget.bind(),j.viewport(X,Y,K,Q),j.scissor(X,Y,K,Q);const ae=z*J;ae>0&&(r.ValueCell.update(L.values.uWeight,1),r.ValueCell.update(L.values.tColor,U.texture),L.update(),j.disable(k.BLEND),L.render()),ae<1&&(r.ValueCell.update(L.values.uWeight,1-ae),r.ValueCell.update(L.values.tColor,q.texture),L.update(),ae===0?j.disable(k.BLEND):j.enable(k.BLEND),L.render()),O||(j.disable(k.BLEND),this.colorTarget.bind(),this.copyRenderable.values.tColor.ref.value!==this.multiSampleAccumulateTarget.texture&&(r.ValueCell.update(this.copyRenderable.values.tColor,this.multiSampleAccumulateTarget.texture),this.copyRenderable.update()),this.copyRenderable.render()),F.viewOffset.enabled=!1,F.update(),n.isTimingMode&&N.timer.markEnd("IlluminationPass.renderMultiSample")}render(B,w,O){this._supported&&(w.multiSample.mode==="on"?this.renderMultiSample(B,w,O):this.renderInternal(B,w,O,!1))}}$u.IlluminationPass=A;const x={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tNormal:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tShaded:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tTransparentColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),dBlendTransparency:(0,t.DefineSpec)("boolean"),tSsaoDepth:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tSsaoDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthOpaque:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tOutlines:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),tBloom:(0,t.TextureSpec)("texture","rgba","ubyte","linear"),dBloomEnable:(0,t.DefineSpec)("boolean"),uTexSize:(0,t.UniformSpec)("v2"),dDenoise:(0,t.DefineSpec)("boolean"),uDenoiseThreshold:(0,t.UniformSpec)("f"),dOrthographic:(0,t.DefineSpec)("number"),uNear:(0,t.UniformSpec)("f"),uFar:(0,t.UniformSpec)("f"),uFogNear:(0,t.UniformSpec)("f"),uFogFar:(0,t.UniformSpec)("f"),uFogColor:(0,t.UniformSpec)("v3"),uOutlineColor:(0,t.UniformSpec)("v3"),uOcclusionColor:(0,t.UniformSpec)("v3"),uTransparentBackground:(0,t.UniformSpec)("b"),dOcclusionEnable:(0,t.DefineSpec)("boolean"),dOutlineEnable:(0,t.DefineSpec)("boolean"),dOutlineScale:(0,t.DefineSpec)("number"),dTransparentOutline:(0,t.DefineSpec)("boolean")},M=(0,c.ShaderCode)("compose",o.quad_vert,h.compose_frag);function D(I,B,w,O,F,L,U,q,N,k,j,H){const G={...e.QuadValues,tColor:r.ValueCell.create(B),tNormal:r.ValueCell.create(w),tShaded:r.ValueCell.create(O),tTransparentColor:r.ValueCell.create(q),dBlendTransparency:r.ValueCell.create(!0),tSsaoDepth:r.ValueCell.create(N),tSsaoDepthTransparent:r.ValueCell.create(k),tDepthOpaque:r.ValueCell.create(F),tDepthTransparent:r.ValueCell.create(L),tOutlines:r.ValueCell.create(U),tBloom:r.ValueCell.create(j),dBloomEnable:r.ValueCell.create(!1),uTexSize:r.ValueCell.create(f.Vec2.create(B.getWidth(),B.getHeight())),dDenoise:r.ValueCell.create(!0),uDenoiseThreshold:r.ValueCell.create(.1),dOrthographic:r.ValueCell.create(0),uNear:r.ValueCell.create(1),uFar:r.ValueCell.create(1e4),uFogNear:r.ValueCell.create(1e4),uFogFar:r.ValueCell.create(1e4),uFogColor:r.ValueCell.create(_.Vec3.create(1,1,1)),uOutlineColor:r.ValueCell.create(_.Vec3.create(0,0,0)),uOcclusionColor:r.ValueCell.create(_.Vec3.create(0,0,0)),uTransparentBackgroun
7065d:r.ValueCell.create(!1),dOcclusionEnable:r.ValueCell.create(!1),dOutlineEnable:r.ValueCell.create(!1),dOutlineScale:r.ValueCell.create(1),dTransparentOutline:r.ValueCell.create(H)},z={...x},W=(0,y.createComputeRenderItem)(I,"triangles",M,z,G);return(0,s.createComputeRenderable)(W,G)}const V={...e.QuadSchema,tColor:(0,t.TextureSpec)("texture","rgba","ubyte","nearest"),uTexSize:(0,t.UniformSpec)("v2"),uWeight:(0,t.UniformSpec)("f")},R=(0,c.ShaderCode)("compose",o.quad_vert,b.compose_frag);function E(I,B){const w={...e.QuadValues,tColor:r.ValueCell.create(B),uTexSize:r.ValueCell.create(f.Vec2.create(B.getWidth(),B.getHeight())),uWeight:r.ValueCell.create(1)},O={...V},F=(0,y.createComputeRenderItem)(I,"triangles",R,O,w);return(0,s.createComputeRenderable)(F,w)}return $u}var hb={},G8;function XQ(){if(G8)return hb;G8=1,Object.defineProperty(hb,"__esModule",{value:!0}),hb.ShaderManager=void 0;const e=m2(),t=g2(),r=KS(),n=XS();class i{static ensureRequired(o,s,h){const f=new i(o,s);f.updateRequired(h),f.finalizeRequired(!0)}constructor(o,s){this.webgl=o,this.scene=s,this.required=[]}updateRequired(o){this.required.length=0,this.required.push("color"),t.IlluminationPass.isEnabled(this.webgl,o.illumination)&&this.required.push("tracing"),r.MarkingPass.isEnabled(o.marking)&&this.scene.markerAverage>0&&this.required.push("marking"),e.BloomPass.isEnabled(o.postprocessing)&&this.scene.emissiveAverage>0&&this.required.push("emissive"),(n.PostprocessingPass.isTransparentDepthRequired(this.scene,o.postprocessing)||!this.webgl.extensions.drawBuffers||!this.webgl.extensions.depthTexture||t.IlluminationPass.isEnabled(this.webgl,o.illumination))&&this.required.push("depth"),this.webgl.resources.linkPrograms(this.required)}finalizeRequired(o){return this.finalize(this.required,o)}finalize(o,s){return this.webgl.resources.finalizePrograms(o,s)}}return hb.ShaderManager=i,hb}var z8;function ase(){return z8||(z8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImagePass=e.ImageParams=void 0;const t=i2(),r=Ne(),n=$Q(),i=XS(),c=p2(),o=ta(),s=Kn(),h=ese(),f=YS(),y=KS(),_=g2(),g=Ct(),a=Cw(),d=XQ();e.ImageParams={transparentBackground:r.ParamDefinition.Boolean(!1),dpoitIterations:r.ParamDefinition.Numeric(2,{min:1,max:10,step:1}),multiSample:r.ParamDefinition.Group(c.MultiSampleParams),postprocessing:r.ParamDefinition.Group(i.PostprocessingParams),marking:r.ParamDefinition.Group(y.MarkingParams),illumination:r.ParamDefinition.Group(_.IlluminationParams),cameraHelper:r.ParamDefinition.Group(f.CameraHelperParams),renderer:r.ParamDefinition.Group(t.RendererParams)};class p{get colorTarget(){return this._colorTarget}get width(){return this._width}get height(){return this._height}constructor(m,v,b,P,C,l,S){this.webgl=m,this.renderer=b,this.scene=P,this.camera=C,this._width=0,this._height=0,this._camera=new o.Camera,this.props={...r.ParamDefinition.getDefaultValues(e.ImageParams),...S},this.drawPass=new n.DrawPass(m,v,128,128,P.transparency),this.illuminationPass=new _.IlluminationPass(m,this.drawPass),this.multiSamplePass=new c.MultiSamplePass(m,this.drawPass),this.multiSampleHelper=new c.MultiSampleHelper(this.multiSamplePass),this.helper={camera:new f.CameraHelper(m,this.props.cameraHelper),debug:l.debug,handle:l.handle,pointer:l.pointer},this.setSize(1024,768)}getByteCount(){return this.drawPass.getByteCount()+this.illuminationPass.getByteCount()+this.multiSamplePass.getByteCount()}
7065updateBackground(){return new Promise(m=>{this.drawPass.postprocessing.background.update(this.camera,this.props.postprocessing.background,()=>{m()})})}setSize(m,v){m===this._width&&v===this._height||(this._width=m,this._height=v,this.drawPass.setSize(m,v),this.illuminationPass.setSize(m,v),this.multiSamplePass.syncSize())}setProps(m={}){Object.assign(this.props,m),m.cameraHelper&&this.helper.camera.setProps(m.cameraHelper)}async render(m){this.drawPass.setTransparency(this.scene.transparency),d.ShaderManager.ensureRequired(this.webgl,this.scene,this.props),o.Camera.copySnapshot(this._camera.state,this.camera.state),s.Viewport.set(this._camera.viewport,0,0,this._width,this._height),this._camera.update(),this.renderer.setOcclusionTest(null);const v={renderer:this.renderer,camera:this._camera,scene:this.scene,helper:this.helper};if(this.illuminationPass.supported&&this.props.illumination.enabled){for(await m.update({message:"Tracing...",current:1,max:this.illuminationPass.getMaxIterations(this.props.illumination)}),this.illuminationPass.restart(!0);this.illuminationPass.shouldRender(this.props.illumination);)g.isTimingMode&&this.webgl.timer.mark("ImagePass.render",{captureStats:!0}),this.illuminationPass.render(v,this.props,!1),g.isTimingMode&&this.webgl.timer.markEnd("ImagePass.render"),m.shouldUpdate&&await m.update({current:this.illuminationPass.iteration}),await this.webgl.waitForGpuCommandsComplete();this._colorTarget=this.illuminationPass.colorTarget}else g.isTimingMode&&this.webgl.timer.mark("ImagePass.render",{captureStats:!0}),c.MultiSamplePass.isEnabled(this.props.multiSample)?(this.multiSampleHelper.render(v,this.props,!1),this._colorTarget=this.multiSamplePass.colorTarget):(this.drawPass.render(v,this.props,!1),this._colorTarget=this.drawPass.getColorTarget(this.props.postprocessing)),g.isTimingMode&&this.webgl.timer.markEnd("ImagePass.render");if(g.isTimingMode){const b=this.webgl.timer.resolve();if(b)for(const P of b)(0,a.printTimerResults)([P])}g.isDebugMode&&console.log(`image pass byte count ${(this.getByteCount()/1024/1024).toFixed(3)} MiB`)}async getImageData(m,v,b,P){var C,l;this.setSize(v,b),await this.render(m),this.colorTarget.bind();const S=(C=P?.width)!==null&&C!==void 0?C:v,T=(l=P?.height)!==null&&l!==void 0?l:b,A=new Uint8Array(S*T*4);P?this.webgl.readPixels(P.x,b-P.y-P.height,S,T,A):this.webgl.readPixels(0,0,S,T,A);const x=h.PixelData.create(A,S,T);return h.PixelData.flipY(x),h.PixelData.divideByAlpha(x),new ImageData(new Uint8ClampedArray(A),S,T)}}e.ImagePass=p})(xA)),xA}var AA={},H8;function KQ(){return H8||(H8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HandleGroup=e.HandleHelper=e.HandleHelperParams=void 0,e.isHandleLoci=C;const t=f2(),r=$t(),n=Ge(),i=Jn(),c=Rt(),o=Vr(),s=ba(),h=et(),f=rt(),y=Ne(),_=Lf(),g=pn(),a=gt(),d=cn(),p=Ul(),u=at(),m={...c.Mesh.Params,alpha:{...c.Mesh.Params.alpha,defaultValue:1},ignoreLight:{...c.Mesh.Params.ignoreLight,defaultValue:!0},colorX:y.ParamDefinition.Color(o.ColorNames.red,{isEssential:!0}),colorY:y.ParamDefinition.Color(o.ColorNames.green,{isEssential:!0}),colorZ:y.ParamDefinition.Color(o.ColorNames.blue,{isEssential:!0}),scale:y.ParamDefinition.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0})};e.HandleHelperParams={handle:y.ParamDefinition.MappedStatic("off",{on:y.ParamDefinition.Group(m),off:y.ParamDefinition.Group({})},{cycle:!0,description:"Show handle tool"})};class v{getBoundingSphere(A,x){return this.renderObject&&(f.Sphere3D.copy(A,this.renderObject.values.invariantBoundingSphere.ref.value),n.Mat4.fromArray(this._transform,this.renderObject.values.aTransform.ref.value,x*16),f.Sphere3D.transform(A,A,this._transform)),A}setProps(A){this.props=(0,_.produce)(this.props,x=>{if(A.handle!==void 0&&(x.handle.name=A.handle.name,A.handle.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const M={...A.handle.params,scale:A.handle.params.scale*this.webgl.pixelRatio,cellSize:0};this.renderObject=S(M),this.scene.add(this.renderObject),this.scene.commit(),x.handle.params={...A.handle.params}}})}get isEnabled(){return this.props.handle.name==="on"}update(A,x,M){this.renderObject&&(this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),n.Mat4.setTranslation(this.renderObject.values.aTransform.ref.value,x),n.Mat4.fromMat3(this.renderObject.values.aTransform.ref.value,M),h.ValueCell.update(this.renderObject.values.aTransform,this.renderObject.values.aTransform.ref.value),this.scene.update([this.renderObject],!0))}getLoci(A){const{objectId:x,groupId:M,instanceId:D}=A;return!this.renderObject||x!==this.renderObject.id?a.EmptyLoci:P(this,M,D)}mark(A,x){return!d.MarkerActions.is(d.MarkerActions.Highlighting,x)||!(0,a.isEveryLoci)(A)&&(!C(A)||A.data!==this)?!1:p.Visual.mark(this.renderObject,A,x,this.eachGroup)}constructor(A,x={}){this.webgl=A,this.props={handle:{name:"off",params:{}}},this.pixelRatio=1,this._transform=(0,n.Mat4)(),this.eachGroup=(M,D)=>
7065{if(!this.renderObject||!C(M))return!1;let V=!1;const R=this.renderObject.values.uGroupCount.ref.value,{elements:E}=M;for(const{groupId:I,instanceId:B}of E){const w=B*R+I;D(u.Interval.ofSingleton(w))&&(V=!0)}return V},this.scene=t.Scene.create(A,"blended"),this.setProps(x)}}e.HandleHelper=v;function b(T,A){const x=r.MeshBuilder.createState(512,256,A),M=.05*T,D=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitX,T),V=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitY,T),R=n.Vec3.scale((0,n.Vec3)(),n.Vec3.unitZ,T),E={radiusTop:M,radiusBottom:M,radialSegments:32};return x.currentGroup=e.HandleGroup.TranslateScreenXY,(0,i.addSphere)(x,n.Vec3.origin,M*3,2),x.currentGroup=e.HandleGroup.TranslateObjectX,(0,i.addSphere)(x,D,M,2),(0,s.addCylinder)(x,n.Vec3.origin,D,1,E),x.currentGroup=e.HandleGroup.TranslateObjectY,(0,i.addSphere)(x,V,M,2),(0,s.addCylinder)(x,n.Vec3.origin,V,1,E),x.currentGroup=e.HandleGroup.TranslateObjectZ,(0,i.addSphere)(x,R,M,2),(0,s.addCylinder)(x,n.Vec3.origin,R,1,E),r.MeshBuilder.getMesh(x)}e.HandleGroup={None:0,TranslateScreenXY:1,TranslateObjectX:3,TranslateObjectY:4,TranslateObjectZ:5};function P(T,A,x){return(0,a.DataLoci)("handle",T,[{groupId:A,instanceId:x}],M=>T.getBoundingSphere(M,x),()=>`Handle Helper | Group Id ${A} | Instance Id ${x}`)}function C(T){return T.kind==="data-loci"&&T.tag==="handle"}function l(T,A){const x=10*T.scale,M=b(x,void 0);M.setBoundingSphere(f.Sphere3D.create(n.Vec3.create(x/2,x/2,x/2),x+x/4));const D=V=>{switch(V){case e.HandleGroup.TranslateObjectX:return T.colorX;case e.HandleGroup.TranslateObjectY:return T.colorY;case e.HandleGroup.TranslateObjectZ:return T.colorZ;default:return o.ColorNames.grey}};return g.Shape.create("handle",{},M,D,()=>1,()=>"")}function S(T){const A=l(T);return g.Shape.createRenderObject(A,T)}})(AA)),AA}var MA={},gb={},W8;function ose(){if(W8)return gb;W8=1,Object.defineProperty(gb,"__esModule",{value:!0}),gb.DebugRegistry=void 0;const e=Ct();class t{constructor(n,i){this.entries=new Map,this.ctx=n,this.parent=i}register(n,i){this.entries.has(n)&&(e.isDebugMode&&console.warn(`Debug helper with name '${n}' already exists, replacing.`),this.entries.get(n).clear()),this.entries.set(n,i)}unregister(n){const i=this.entries.get(n);i&&(i.clear(),this.entries.delete(n))}get scenes(){return Array.from(this.entries.values()).map(n=>n.scene)}update(){this.entries.forEach(n=>{n.isEnabled&&n.update()})}syncVisibility(){this.entries.forEach(n=>{n.syncVisibility()})}clear(){this.entries.forEach(n=>{n.clear()})}get isEnabled(){let n=!1;return this.entries.forEach(i=>{i.isEnabled&&(n=!0)}),n}setProps(n){this.entries.forEach(i=>{i.setProps(n)})}}return gb.DebugRegistry=t,gb}var DA={},$8;function YQ(){return $8||($8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointerHelperGroup=e.PointerHelper=e.PointerHelperParams=void 0;const t=f2(),r=$t(),n=Ge(),i=Rt(),c=Vr(),o=et(),s=Ne(),h=Ll(),f=ba(),y=Jn(),_=ta(),g=Kn(),a=SQ();e.PointerHelperParams={...i.Mesh.Params,enabled:s.ParamDefinition.Select("off",s.ParamDefinition.arrayToOptions(["on","off"]),{isEssential:!0}),ignoreLight:{...i.Mesh.Params.ignoreLight,defaultValue:!0},color:s.ParamDefinition.Color(c.ColorNames.grey,{isEssential:!0}),hitColor:s.ParamDefinition.Color(c.ColorNames.pink,{isEssential:!0})};class d{setProps(l){Object.assign(this.props,l),this.isEnabled&&this.update(this.pointers,this.points,this.hit)}ensureEnabled(){this.props.enabled!=="on"&&(this.props.enabled="on")}get isEnabled(){return this.props.enabled==="on"}setCamera(l){_.Camera.copySnapshot(this.camera.state,l.state),g.Viewport.copy(this.camera.viewport,l.viewport),n.Mat4.copy(this.camera.view,l.view),n.Mat4.copy(this.camera.projection,l.projection),n.Mat4.copy(this.camera.projectionView,l.projectionView),n.Mat4.copy(this.camera.headRotation,l.headRotation),_.Camera.copyViewOffset(this.camera.viewOffset,l.viewOffset),this.camera.far=l.far,this.camera.near=l.near,this.camera.fogFar=l.fogFar,this.camera.fogNear=l.fogNear,this.camera.forceFull=l.forceFull,this.camera.scale=1,this.modelScale=l.scale}update(l,S,T){if(this.pointers=l,this.points=S,this.hit=T,this.props.enabled!=="on"){this.renderObject&&(this.renderObject.state.visible=!1);return}this.shape=b(this.getData(),this.props,this.shape),o.ValueCell.updateIfChanged(this.renderObject.values.drawCount,h.Geometry.getDrawCount(this.shape.geometry)),o.ValueCell.updateIfChanged(this.renderObject.values.uVertexCount,h.Geometry.getVertexCount(this.shape.geometry)),o.ValueCell.updateIfChanged(this.renderObject.values.uGroupCount,2),i.Mesh.Utils.updateBoundingSphere(this.renderObject.values,this.shape.geometry),i.Mesh.Utils.updateV
7065alues(this.renderObject.values,this.props),i.Mesh.Utils.updateRenderableState(this.renderObject.state,this.props),this.renderObject.state.visible=!0,this.scene.update(void 0,!1),this.scene.commit()}getData(){return{pointers:this.pointers,points:this.points,hit:this.hit,modelScale:this.modelScale,camera:this.camera,pixels:12}}constructor(l,S={}){this.pixelScale=1,this.modelScale=1,this.pointers=[],this.points=[],this.hit=void 0,this.scene=t.Scene.create(l,"blended"),this.props={...s.ParamDefinition.getDefaultValues(e.PointerHelperParams),...S},this.camera=new _.Camera,this.shape=b(this.getData(),this.props),this.renderObject=P(this.shape,this.props),this.scene.add(this.renderObject)}}e.PointerHelper=d;var p;(function(C){C[C.None=0]="None",C[C.Hit=1]="Hit"})(p||(e.PointerHelperGroup=p={}));const u=(0,n.Vec3)();function m(C,l,S,T){const A=n.Vec3.scale(u,S.state.position,T),x=n.Vec3.distance(C,A);return 2*Math.tan(S.state.fov/2)*x/S.viewport.height*l}function v(C,l){const S=r.MeshBuilder.createState(512,256,l),T=5e-4,A={radiusTop:T,radiusBottom:T,radialSegments:32},{modelScale:x,camera:M,pixels:D}=C;S.currentGroup=p.None;for(const V of C.pointers){(0,f.addCylinderFromRay3D)(S,V,.2,A);const R=m(V.origin,D,M,x);(0,y.addSphere)(S,V.origin,R,1)}for(const V of C.points){const R=m(V,D,M,x);(0,y.addSphere)(S,V,R,1)}if(C.hit){S.currentGroup=p.Hit;const V=m(C.hit,D,M,x);(0,y.addSphere)(S,C.hit,V,1)}return r.MeshBuilder.getMesh(S)}function b(C,l,S){const T=v(C,S?.geometry),A=x=>x===p.Hit?l.hitColor:l.color;return a.Shape.create("pointer-mesh",C,T,A,()=>1,()=>"",void 0,2)}function P(C,l){return a.Shape.createRenderObject(C,{...s.ParamDefinition.getDefaultValues(i.Mesh.Params),...l,ignoreLight:l.ignoreLight,cellSize:0})}})(DA)),DA}var X8;function sse(){return X8||(X8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Helper=e.DefaultHelperProps=e.HelperParams=void 0;const t=Ne(),r=ose(),n=YS(),i=KQ(),c=YQ();e.HelperParams={camera:t.ParamDefinition.Group({helper:t.ParamDefinition.Group(n.CameraHelperParams)}),handle:t.ParamDefinition.Group(i.HandleHelperParams),pointer:t.ParamDefinition.Group(c.PointerHelperParams)},e.DefaultHelperProps=t.ParamDefinition.getDefaultValues(e.HelperParams);class o{constructor(h,f,y={}){const _={...e.DefaultHelperProps,...y};this.debug=new r.DebugRegistry(h,f),this.camera=new n.CameraHelper(h,_.camera.helper),this.handle=new i.HandleHelper(h,_.handle),this.pointer=new c.PointerHelper(h,_.pointer)}}e.Helper=o})(MA)),MA}var yb={},K8;function cse(){if(K8)return yb;K8=1,Object.defineProperty(yb,"__esModule",{value:!0}),yb.Passes=void 0;const e=$Q(),t=h2(),r=p2(),n=g2();class i{constructor(o,s,h={}){this.webgl=o;const f=this.webgl.getDrawingBufferSize();this.draw=new e.DrawPass(o,s,f.width,f.height,h.transparency||"blended"),this.pick=new t.PickPass(o,f.width,f.height,h.pickScale||.25),this.multiSample=new r.MultiSamplePass(o,this.draw),this.illumination=new n.IlluminationPass(o,this.draw)}getByteCount(){return this.draw.getByteCount()+this.pick.getByteCount()+this.multiSample.getByteCount()+this.illumination.getByteCount()}setPickScale(o){this.pick.setPickScale(o)}setTransparency(o){this.draw.setTransparency(o)}updateSize(){const o=this.webgl.getDrawingBufferSize(),s=Math.max(o.width,2),h=Math.max(o.height,2);this.draw.setSize(s,h),this.pick.setSize(s,h),this.multiSample.syncSize(),this.illumination.setSize(s,h)}}return yb.Passes=i,yb}var IA={},GP={},vb={},Y8;function use(){return Y8||(Y8=1,Object.defineProperty(vb,"__esModule",{value:!0}),vb.hiZ_frag=void 0,vb.hiZ_frag=` 7066precision highp float; 7067precision highp sampler2D; 7068 7069uniform sampler2D tPreviousLevel; 7070uniform vec2 uInvSize; 7071uniform vec2 uOffset; 7072 7073void main(void) { 7074 vec2 position = gl_FragCoord.xy * uInvSize + uOffset; 7075 7076 float x = texture(tPreviousLevel, position).r; 7077 float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r; 7078 float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r; 7079 float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r; 7080 7081 gl_FragColor = vec4(max(max(x, y), max(z, w))); 7082} 7083`),vb}var Q8;
7083function lse(){if(Q8)return GP;Q8=1,Object.defineProperty(GP,"__esModule",{value:!0}),GP.createHiZRenderable=_;const e=ns(),t=Kr(),r=Jt(),n=Yt(),i=Kt(),c=use(),o=Gr(),s=Zt(),h=Mr(),f={...h.QuadSchema,tPreviousLevel:(0,n.TextureSpec)("texture","alpha","float","nearest"),uInvSize:(0,n.UniformSpec)("v2"),uOffset:(0,n.UniformSpec)("v2")},y=(0,i.ShaderCode)("hi-z",o.quad_vert,c.hiZ_frag);function _(g,a){const d={...h.QuadValues,tPreviousLevel:t.ValueCell.create(a),uInvSize:t.ValueCell.create((0,e.Vec2)()),uOffset:t.ValueCell.create((0,e.Vec2)())},p={...f},u=(0,s.createComputeRenderItem)(g,"triangles",y,p,d);return(0,r.createComputeRenderable)(u,d)}return GP}var cr={},Z8;function QQ(){if(Z8)return cr;Z8=1,Object.defineProperty(cr,"__esModule",{value:!0}),cr.fastPow2=n,cr.fasterPow2=s,cr.fastExp=h,cr.fasterExp=f,cr.fastLog2=a,cr.fasterLog2=m,cr.fastLog=v,cr.fasterLog=b,cr.fastLog10=P,cr.fasterLog10=C,cr.fastSinh=l,cr.fasterSinh=S,cr.fastCosh=T,cr.fasterCosh=A,cr.fastTanh=x,cr.fasterTanh=M,cr.fastSin=z,cr.fasterSin=W,cr.fastCos=X,cr.fasterCos=Y,cr.fastTan=$,cr.fasterTan=ie,cr.fastAtan=re,cr.fastAtan2=oe;const e=new ArrayBuffer(4),t=new Int32Array(e),r=new Float32Array(e);function n(ce){const ue=ce<0?1:0,pe=ce<-126?-126:ce,he=pe|0,fe=pe-he+ue;return t[0]=(1<<23)*(pe+121.2740575+27.7280233/(4.84252568-fe)-1.49012907*fe),r[0]}const i=new ArrayBuffer(4),c=new Int32Array(i),o=new Float32Array(i);function s(ce){const ue=ce<-126?-126:ce;return c[0]=(1<<23)*(ue+126.94269504),o[0]}function h(ce){return n(1.44269504*ce)}function f(ce){return s(1.44269504*ce)}const y=new ArrayBuffer(8),_=new Int32Array(y),g=new Float32Array(y);function a(ce){return g[0]=ce,_[1]=_[0]&8388607|1056964608,_[0]*11920928955078125e-23-124.22551499-1.498030302*g[1]-1.72587999/(.3520887068+g[1])}const d=new ArrayBuffer(4),p=new Int32Array(d),u=new Float32Array(d);function m(ce){return u[0]=ce,p[0]*11920928955078125e-23-126.94269504}function v(ce){return .6931471805599453*a(ce)}function b(ce){return .6931471805599453*m(ce)}function P(ce){return .30102999566398114*a(ce)}function C(ce){return .30102999566398114*m(ce)}function l(ce){return .5*(h(ce)-h(-ce))}function S(ce){return .5*(f(ce)-f(-ce))}function T(ce){return .5*(h(ce)+h(-ce))}function A(ce){return .5*(f(ce)+f(-ce))}function x(ce){return-1+2/(1+h(-2*ce))}function M(ce){return-1+2/(1+f(-2*ce))}const D=Math.PI/2,V=2*Math.PI,R=1/(2*Math.PI),E=2/Math.PI,I=4/Math.PI,B=4/(Math.PI*Math.PI),w=Math.PI/2-2*Math.PI,O=.7844448837454894,F=new ArrayBuffer(16),L=new Int32Array(F),U=new Float32Array(F);function q(ce){U[0]=.2036393768073031,U[1]=.015124940802184232,U[2]=-.003222590162557957,U[3]=ce;const ue=L[3]&2147483648;L[3]=L[3]&2147483647;const pe=I*ce-B*ce*U[3],he=pe*pe;return L[0]|=ue,L[1]|=ue,L[2]^=ue,O*pe+he*(U[0]+he*(U[1]+he*U[2]))}const N=.7844448837454894,k=new ArrayBuffer(8),j=new Int32Array(k),H=new Float32Array(k);function G(ce){H[0]=.22308510060189463,H[1]=ce;const ue=j[1]&2147483648;j[1]&=2147483647;const pe=I*ce-B*ce*H[1];return j[0]|=ue,pe*(N+H[0]*pe)}function z(ce){const ue=ce*R|0,pe=ce<0?-.5:.5;return q((pe+ue)*V-ce)}function W(ce){const ue=ce*R|0,pe=ce<0?-.5:.5;return G((pe+ue)*V-ce)}function X(ce){return z(ce+D)}function Y(ce){return W(ce+D)}function K(ce){const ue=ce>D?w:D;return q(ce+ue)}const Q=.5464133584567964,J=new ArrayBuffer(4),ae=new Int32Array(J),te=new Float32Array(J);function ne(ce){te[0]=ce,ae[0]&=2147483647;const ue=1-E*te[0];return ue+Q*ue*(1-ue*ue)}function $(ce){const ue=ce*R|0,pe=ce<0?-.5:.5,he=ce-(pe+ue)*V;return q(he)/K(he)}function ie(ce){const ue=ce*R|0,pe=ce<0?-.5:.5,he=ce-(pe+ue)*V;return G(he)/ne(he)}const Z=Math.PI/4;function re(ce){return Z*ce-ce*(Math.abs(ce)-1)*(.2447+.0663*Math.abs(ce))}function oe(ce,ue){let pe=Math.abs(ue),he=Math.abs(ce);const fe=Math.max(pe,he);return he=Math.min(pe,he),pe=re(he/fe),pe=Math.abs(ce)>Math.abs(ue)?D-pe:pe,pe=ue<0?Math.PI-pe:pe,pe=ce<0?-pe:pe,pe}return cr}var J8;function dse(){return J8||(J8=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.HiZPass=e.HiZParams=void 0;const t=lse(),r=on(),n=QQ(),i=Ge(),c=ns(),o=wt(),s=Ct(),h=Kr(),f=Kn(),y=Ne(),_=o.Vec3.transformMat4,g=i.Vec4.set,a=n.fasterLog2;function d(C,l,S){return l*S/((S-l)*C-S)}function p(C,l,S){return C*(l-S)-l}function u(C,l,S,T){return T[11]===-1?d(C,l,S):p(C,l,S)}function m(C,l,S,T){const A=l[0]*S,x=l[1]*S,M=l[2]*S,D=l[2]*l[2]-S*S,V=Math.sqrt(l[0]*l[0]+D),R=(V*l[0]-M)/(V*l[2]+A)*T[0],E=(V*l[0]+M)/(V*l[2]-A)*T[0],I=Math.sqrt(l[1]*l[1]+D),B=(I*l[1]-M)/(I*l[2]+x)*T[5],w=(I*l[1]+M)/(I*l[2]-x)*T[5];
7083return g(C,E*-.5+.5,B*.5+.5,R*-.5+.5,w*.5+.5)}function v(C,l,S,T){const A=T[0],x=T[5],M=(l[0]+S)*A,D=(l[0]-S)*A,V=(l[1]+S)*x,R=(l[1]-S)*x;return g(C,D*.5+.5,V*-.5+.5,M*.5+.5,R*-.5+.5)}function b(C,l,S,T){return T[11]===-1?m(C,l,S,T):v(C,l,S,T)}e.HiZParams={enabled:y.ParamDefinition.Boolean(!1,{description:"Hierarchical Z-buffer occlusion culling. Only available for WebGL2."}),maxFrameLag:y.ParamDefinition.Numeric(10,{min:1,max:30,step:1},{description:"Maximum number of frames to wait for Z-buffer data."}),minLevel:y.ParamDefinition.Numeric(3,{min:1,max:10,step:1})};class P{getByteCount(){return this.supported?this.tex.getByteCount()+this.buf.getByteCount()+this.levelData.reduce((l,S)=>l+S.texture.getByteCount(),0):0}clear(){if(!this.supported)return;const{gl:l}=this.webgl;(0,r.isWebGL2)(l)&&(this.sync!==null&&(l.deleteSync(this.sync),this.sync=null),this.frameLag=0,this.ready=!1,this.debug&&(this.debug.rect.style.display="none",this.debug.container.style.display="none"))}render(l){if(!this.supported||!this.props.enabled)return;const{gl:S,state:T}=this.webgl;if(!(0,r.isWebGL2)(S)||this.sync!==null)return;this.nextNear=l.near,this.nextFar=l.far,i.Mat4.copy(this.nextView,l.view),i.Mat4.copy(this.nextProjection,l.projection),s.isTimingMode&&this.webgl.timer.mark("hi-Z"),T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.disable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,!0,!0),T.clearColor(0,0,0,0);const A=this.renderable.values,x=Math.pow(2,Math.ceil(Math.log(Math.max(S.drawingBufferWidth,S.drawingBufferHeight))/Math.log(2))-1);for(let V=0,R=this.levelData.length;V<R;++V){const E=this.levelData[V];E.framebuffer.bind(),V>0?(h.ValueCell.update(A.uInvSize,E.invSize),h.ValueCell.update(A.uOffset,c.Vec2.set(A.uOffset.ref.value,0,0)),h.ValueCell.update(A.tPreviousLevel,this.levelData[V-1].texture)):(h.ValueCell.update(A.uInvSize,c.Vec2.set(A.uInvSize.ref.value,1/x,1/x)),h.ValueCell.update(A.uOffset,c.Vec2.set(A.uOffset.ref.value,this.viewport.x/S.drawingBufferWidth,this.viewport.y/S.drawingBufferHeight)),h.ValueCell.update(A.tPreviousLevel,this.drawPass.depthTextureOpaque)),T.currentRenderItemId=-1,T.viewport(0,0,E.size[0],E.size[1]),S.clear(S.COLOR_BUFFER_BIT),this.renderable.update(),this.renderable.render(),V>=this.props.minLevel&&(this.tex.bind(0),S.copyTexSubImage2D(S.TEXTURE_2D,0,E.offset,0,0,0,E.size[0],E.size[1]),this.tex.unbind(0))}this.tex.attachFramebuffer(this.fb,0);const M=this.tex.getWidth(),D=this.tex.getHeight();this.buf.read(0,0,M,D),this.sync=S.fenceSync(S.SYNC_GPU_COMMANDS_COMPLETE,0),S.flush(),s.isTimingMode&&this.webgl.timer.markEnd("hi-Z")}tick(){if(!this.supported||!this.props.enabled||this.sync===null)return;const{gl:l}=this.webgl;if(!(0,r.isWebGL2)(l))return;const S=l.clientWaitSync(this.sync,0,0);S===l.WAIT_FAILED||this.frameLag>=this.props.maxFrameLag?(l.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!1):S===l.TIMEOUT_EXPIRED?this.frameLag+=1:(this.buf.getSubData(this.buffer),l.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!0,this.near=this.nextNear,this.far=this.nextFar,i.Mat4.copy(this.view,this.nextView),i.Mat4.copy(this.projection,this.nextProjection))}transform(l){const{view:S,vp:T}=this;_(T,l.center,S);const A=l.radius*1.2+1.52;return{vp:T,r:A}}project(l,S){const{projection:T,aabb:A,viewport:x}=this;b(A,l,S,T);const M=A[2]-A[0],D=A[3]-A[1],V=Math.max(M*x.width,D*x.height),R=Math.ceil(a(V/2));return{aabb:A,w:M,h:D,pr:V,lod:R}}setViewport(l,S,T,A){if(!this.supported)return;T=Math.max(T,2),A=Math.max(A,2),f.Viewport.set(this.viewport,l,S,T,A);const x=Math.ceil(Math.log(Math.max(T,A))/Math.log(2));if(x===this.levelData.length)return;const{minLevel:M}=this.props;this.buffer=new Float32Array(Math.pow(2,x-M)*Math.pow(2,x-1-M)),this.tex.define(Math.pow(2,x-M),Math.pow(2,x-1-M));for(const V of this.levelData)V.framebuffer.destroy(),V.texture.destroy();this.levelData.length=0;for(let V=0;V<x;++V){const R=this.webgl.resources.framebuffer(),E=Math.pow(2,x-V-1),I=c.Vec2.create(E,E),B=c.Vec2.create(1/E,1/E),w=this.webgl.resources.texture("image-float32","alpha","float","nearest");w.define(E,E),w.attachFramebuffer(R,0),this.levelData.push({texture:w,framebuffer:R,size:I,invSize:B,offset:0})}let D=0;for(let V=0,R=x;V<R;++V){const E=this.levelData[V];V>=M&&(this.levelData[V].offset=D,D+=E.size[0])}this.clear()}setProps(l){if(this.supported)if(this.props.minLevel!==l.minLevel){Object.assign(this.props,l);const{x:S,y:T,width:A,height:x}=this.viewport;this.setViewport(S,T,A,x)}else Object.assign(this.props,l),this.props.enabled||this.clear()}initDebug(l){if(!l.parentElement)return;const S=document.createElement("div");Object.assign(S.style,{display:"block",position:"absolute",pointerEvents:"none"}),l.parentElement.appendChild(S);const T=document.createElement("canvas"),A=T.getContext("2d");if(!A)throw new Error("Could not create canvas 2d context");Object.assign(T.style,{width:"100%",height:"100%",imageRendering:"pixelated",position:"relative",pointerEvents:"none"}),S.appendChild(T);const x=document.createElement("div");Object.assign(x.style,{display:"none",position:"absolute",pointerEvents:"none"}),l.parentElement.appendChild(x),this.debug={container:S,canvas:T,ctx:A,rect:x}}canDebug(l){return this.supported&&this.props.enabled&&this.ready&&!!this.debug}showRect(l,S){if(!this.canDebug(this.debug))return;const{gl:{drawingBufferHeight:T},pixelRatio:A}=this.webgl,{viewport:{x,y:M,width:D,height:V}}=this,R=(l[0]*D+x)/A,E=(l[1]*V-M)/A,I=(l[2]*D+x)/A,B=(l[3]*V-M)/A,w=(T-V)/A;Object.assign(this.debug.rect.style,{border:S?"solid red":"solid green",display:"block",left:`${R}px`,top:`${E+w}px`,width:`${I-R}px`,height:`${B-E}px`})}showBuffer(l){if(!this.canDebug(this.debug))return;if(l>=this.levelData.length||l<this.props.minLevel){this.debug.container.style.display="none";return}const{offset:S,size:[T,A]}=this.levelData[l],x=this.tex.getWidth(),M=new Uint8ClampedArray(T*A*4);M.fill(255);for(let w=0;w<A;++w)for(let O=0;O<T;++O){const F=(A-w-1)*T+O,L=this.buffer[w*x+O+S]*255;M[F*4+0]=L,M[F*4+3]=255-L}const D=new ImageData(M,T,A);this.debug.canvas.width=D.width,this.debug.canvas.height=D.height,this.debug.ctx.putImageData(D,0,0);const{viewport:{x:V,y:R,width:E,height:I},webgl:{pixelRatio:B}}=this;Object.assign(this.debug.container.style,{display:"block",bottom:`${R/B}px`,left:`${V/B}px`,width:`${E/B}px`,height:`${I/B}px`})}debugOcclusion(l){if(!this.canDebug(this.debug))return;if(!l){this.debug.rect.style.display="none",this.debug.container.style.display="none";return}const S=this.isOccluded(l),{vp:T,r:A}=this.transform(l),{aabb:x,lod:M}=this.project(T,A);this.showRect(x,S),this.showBuffer(M)}reset(){this.sync=null,this.ready=!1,this.frameLag=0,this.levelData.length=0;const{x:l,y:S,width:T,height:A}=this.viewport;this.setViewport(l,S,T,A)}dispose(){if(this.supported){this.clear(),this.fb.destroy(),this.tex.destroy(),this.buf.destroy(),this.renderable.dispose();for(const l of this.levelData)l.framebuffer.destroy(),l.texture.destroy()}}constructor(l,S,T,A){this.webgl=l,this.drawPass=S,this.viewport=(0,f.Viewport)(),this.near=0,this.far=0,this.view=(0,i.Mat4)(),this.projection=(0,i.Mat4)(),this.nextNear=0,this.nextFar=0,this.nextView=(0,i.Mat4)(),this.nextProjection=(0,i.Mat4)(),this.aabb=(0,i.Vec4)(),this.vp=(0,o.Vec3)(),this.levelData=[],this.sync=null,this.buffer=new Float32Array(0),this.frameLag=0,this.ready=!1,this.isOccluded=R=>{if(!this.supported||!this.props.enabled||!this.ready)return!1;const{vp:E,r:I}=this.transform(R),{near:B,far:w,projection:O}=this,F=E[2]+I;if(-F<B)return!1;const{aabb:L,w:U,h:q,lod:N}=this.project(E,I);if(N>=this.levelData.length||N<this.props.minLevel)return!1;const{offset:k,size:j}=this.levelData[N],H=L[0]+U/2,G=L[1]+q/2,z=j[0],W=H*z,X=G*z,Y=Math.floor(W),K=Math.ceil(X),Q=this.tex.getWidth();if(Y+1>=z||K+1>=z)return!1;const J=(z-K-1)*Q+Y+k;if(F>u(this.buffer[J],B,w,O)||F>u(this.buffer[J+1],B,w,O))return!1;const ae=(z-K+1-1)*Q+Y+k;return!(F>u(this.buffer[ae],B,w,O)||F>u(this.buffer[ae+1],B,w,O))},this.props={...y.ParamDefinition.getDefaultValues(e.HiZParams),...A};const{gl:x,extensions:M}=l;if(!(0,r.isWebGL2)(x)||!M.colorBufferFloat){s.isDebugMode&&console.log('Missing webgl2 and/or colorBufferFloat support required for "Hi-Z"'),this.supported=!1;return}this.fb=l.resources.framebuffer(),this.tex=l.resources.texture("image-float32","alpha","float","nearest"),this.tex.attachFramebuffer(this.fb,0);const D=x.getParameter(x.IMPLEMENTATION_COLOR_READ_FORMAT),V=x.getParameter(x.IMPLEMENTATION_COLOR_READ_TYPE);if(D!==x.RED||V!==x.FLOAT){s.isDebugMode&&console.log('Missing red/float reading support required for "Hi-Z"'),this.supported=!1;return}this.supported=!0,this.buf=l.resources.pixelPack("alpha","float"),this.renderable=(0,t.createHiZRenderable)(l,this.drawPass.depthTextureOpaque),s.isDebugMode&&T&&this.initDebug(T)}}e.HiZPass=P})(IA)),IA}var wA={},eH;function fse(){return eH||(eH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.XRManager=e.XRManagerParams=e.DefaultXRManagerAttribs=e.DefaultXRManagerBindings=void 0;const t=Rn(),r=wt(),n=rs(),i=Xr(),c=ns(),o=cs(),s=DS(),h=Fa(),f=CT(),y=rt(),_=Ne(),g=Kn(),a=IS(),d=Ct(),p=o.ButtonsType,u=a.Binding.Trigger,m=a.Binding.TriggerKey;function v(C){const l=i.Mat4.getDecomposition(C);return new XRRigidTransform(r.Vec3.toObj(l.position),n.Quat.toObj(l.quaternion))}function b(C,l){const S=r.Vec3.fromObj(C.transform.position),T=i.Mat4.fromArray((0,i.Mat4)(),C.transform.matrix,0),A=i.Mat4.getDecomposition(T),x=i.Mat4.fromQuat((0,i.Mat4)(),A.quaternion),M=r.Vec3.transformMat4((0,r.Vec3)(),r.Vec3.negUnitZ,x),D=f.Ray3D.create(S,M);return l&&f.Ray3D.transform(D,D,i.Mat4.invert((0,i.Mat4)(),l)),D}e.DefaultXRManagerBindings={exit:(0,a.Binding)([m("GamepadB")]),togglePassthrough:(0,a.Binding)([m("GamepadA")]),gestureScale:(0,a.Binding)([u(p.Flag.Trigger)])},e.DefaultXRManagerAttribs={bindings:e.DefaultXRManagerBindings},e.XRManagerParams={minTargetDistance:_.ParamDefinition.Numeric(.4,{min:.001,max:1,step:.001}),disablePostprocessing:_.ParamDefinition.Boolean(!0),resolutionScale:_.ParamDefinition.Numeric(1,{min:.1,max:2,step:.1}),sceneRadiusInMeters:_.ParamDefinition.Numeric(.25,{min:.01,max:2,step:.01},{description:"The radius of the scene bounding sphere in meters, used to set the initial camera scale."})};class P{get session(){return this.xrSession}setProps(l){Object.assign(this.props,l)}setAttribs(l){Object.assign(this.attribs,l)}intersect(l,S,T,A){const x=(0,r.Vec3)(),M=b(A,S);if(s.Plane3D.intersectRay3D(x,T,M)){const{height:D}=l.viewport,V=(0,g.cameraProject)((0,h.Vec4)(),x,l.viewport,l.projectionView),R=c.Vec2.create(Math.floor(V[0]),D-Math.floor(V[1]));return{point:x,screen:R}}}setScaleFactor(l){this.scaleFactor=l}resetScale(){this.scaleFactor=1,this.prevScale=0}update(l){var S,T,A,x,M,D,V;const{xrSession:R,xrRefSpace:E,input:I,camera:B,stereoCamera:w,pointerHelper:O}=this;if(!l||!R||!E)return!1;B.scale=B.scale*this.scaleFactor,this.prevScale=B.scale;const F=r.Vec3.sub((0,r.Vec3)(),B.position,B.target);r.Vec3.scaleAndAdd(B.position,B.position,F,1-this.scaleFactor),this.scaleFactor=1;const L=v(B.view),U=E.getOffsetReferenceSpace(L),q=l.getViewerPose(U);if(!q)return!1;const N=l.getViewerPose(E);if(N){const te=n.Quat.fromObj(N.transform.orientation);i.Mat4.fromQuat(B.headRotation,te)}const{depthFar:k,depthNear:j,baseLayer:H}=R.renderState;if(!H)return!1;(k!==B.far||j!==B.near)&&R.updateRenderState({depthNear:B.near,depthFar:B.far}),w.update({pose:q,layer:H});const G=w.left,z=r.Vec3.scale((0,r.Vec3)(),G.state.target,G.scale),W=i.Mat4.getTranslation((0,r.Vec3)(),i.Mat4.invert((0,i.Mat4)(),G.view)),X=r.Vec3.sub((0,r.Vec3)(),W,z),Y=s.Plane3D.fromNormalAndCoplanarPoint((0,s.Plane3D)(),X,z),K=[],Q=[],J=[],ae=[];if(R.inputSources)for(const te of R.inputSources){if(te.targetRayMode==="screen"){if(te.gamepad){const{axes:se}=te.gamepad,{width:ye,height:Se}=G.viewport,Ae=(se[0]+1)/2*ye,_e=(se[1]+1)/2*Se,be=G.getRay((0,f.Ray3D)(),Ae,Se-_e);ae.push({x:Ae,y:_e,ray:be})}continue}if(te.targetRayMode!=="tracked-pointer")continue;const{handedness:ne,targetRaySpace:$,gamepad:ie}=te;if(!ne)continue;const Z=l.getPose($,E);if(!Z)continue;const re=b(Z,B.view);K.push(re);const oe=y.Sphere3D.scaleNX((0,y.Sphere3D)(),this.scene.boundingSphereVisible,G.scale),ce=(0,r.Vec3)();f.Ray3D.intersectSphere3D(ce,re,oe)&&Q.push(ce);let ue=o.ButtonsType.create(o.ButtonsType.Flag.None);!((S=ie?.buttons[0])===null||S===void 0)&&S.pressed&&(ue|=o.ButtonsType.Flag.Primary),!((T=ie?.buttons[1])===null||T===void 0)&&T.pressed&&(ue|=o.ButtonsType.Flag.Secondary),!((A=ie?.buttons[3])===null||A===void 0)&&A.pressed&&(ue|=o.ButtonsType.Flag.Auxilary),!((x=ie?.buttons[4])===null||x===void 0)&&x.pressed&&(ue|=o.ButtonsType.Flag.Forth),!((M=ie?.buttons[5])===null||M===void 0)&&M.pressed&&(ue|=o.ButtonsType.Flag.Five);const pe=ne==="left"?this.prevInput.left:this.prevInput.right,he=this.intersect(G,B.view,Y,Z),fe=pe?this.intersect(G,B.view,Y,pe.targetRayPose):void 0,[de,ge]=(D=he?.screen)!==null&&D!==void 0?D:[0,0],[Ce,ve]=(V=fe?.screen)!==null&&V!==void 0?V:[de,ge],le=c.Vec2.set((0,c.Vec2)(),de-Ce,ge-ve);c.Vec2.setMagnitude(le,le,Math.min(100,c.Vec2.magnitude(le)));const[me,ee]=c.Vec2.round(le,le);J.push({handedness:ne,buttons:ue,x:de,y:ge,dx:me,dy:ee,ray:re,axes:ie?.axes}),ne==="left"?this.prevInput.left={targetRayPose:Z}:this.prevInput.right={targetRayPose:Z}}else this.prevInput.left=void 0,this.prevInput.right=void 0;return I.updateTrackedPointers(J),I.updateScreenTouches(ae),O.ensureEnabled(),O.update(K,Q,this.hit),!0}async setSession(l){if(this.xrSession!==l)if(await this.webgl.xr.set(l,{resolutionScale:this.props.resolutionScale}),this.xrSession=this.webgl.xr.session,this.prevInput={},this.hit=void 0,this.xrSession){this.xrRefSpace=await this.xrSession.requestReferenceSpace("local"),this.pointerHelper.setProps({enabled:"on"});let S=this.prevScale;if(S===0){const{radius:T}=this.scene.boundingSphereVisible;S=T?1/T*this.props.sceneRadiusInMeters:.01}this.camera.forceFull=!0,this.camera.scale=S,this.camera.minTargetDistance=this.props.minTargetDistance,this.prevScale=S}else this.xrRefSpace=void 0,i.Mat4.setZero(this.camera.headRotation),this.pointerHelper.setProps({enabled:"off"}),this.camera.forceFull=!1,this.camera.scale=1,this.camera.minTargetDistance=0}async end(){await this.webgl.xr.end()}async request(){if(!navigator.xr)return;const l=await navigator.xr.isSessionSupported("immersive-ar")?await navigator.xr.requestSession("immersive-ar"):await navigator.xr.requestSession("immersive-vr");await this.setSession(l)}dispose(){var l;this.hoverSub.unsubscribe(),this.keyUpSub.unsubscribe(),this.gestureSub.unsubscribe(),this.sessionChangedSub.unsubscribe(),this.togglePassthrough.complete(),this.sessionChanged.complete(),this.isSupported.complete(),(l=navigator.xr)===null||l===void 0||l.removeEventListener("devicechange",this.checkSupported)}constructor(l,S,T,A,x,M,D,V={},R={}){var E;this.webgl=l,this.input=S,this.scene=T,this.camera=A,this.stereoCamera=x,this.pointerHelper=M,this.interactionHelper=D,this.togglePassthrough=new t.Subject,this.sessionChanged=new t.Subject,this.isSupported=new t.BehaviorSubject(!1),this.xrSession=void 0,this.xrRefSpace=void 0,this.scaleFactor=1,this.prevScale=0,this.prevInput={},this.hit=void 0,this.checkSupported=async()=>
7083{if(!navigator.xr){this.isSupported.next(!1);return}try{const[I,B]=await Promise.all([navigator.xr.isSessionSupported("immersive-ar"),navigator.xr.isSessionSupported("immersive-vr")]);this.isSupported.next(I||B)}catch(I){d.isDebugMode&&console.warn(I),this.isSupported.next(!1)}},this.props={..._.ParamDefinition.getDefaultValues(e.XRManagerParams),...V},this.attribs={...e.DefaultXRManagerAttribs,...R},this.hoverSub=this.interactionHelper.events.hover.subscribe(({position:I})=>{this.hit=I}),this.sessionChangedSub=l.xr.changed.subscribe(async()=>{await this.setSession(l.xr.session),this.sessionChanged.next()}),this.checkSupported(),(E=navigator.xr)===null||E===void 0||E.addEventListener("devicechange",this.checkSupported),this.keyUpSub=S.keyUp.subscribe(({code:I,modifiers:B,key:w})=>{const O=this.attribs.bindings;a.Binding.matchKey(O.exit,I,B,w)&&this.end(),a.Binding.matchKey(O.togglePassthrough,I,B,w)&&this.togglePassthrough.next()}),this.gestureSub=S.gesture.subscribe(({scale:I,button:B,modifiers:w})=>{const O=this.attribs.bindings;a.Binding.match(O.gestureScale,B,w)&&this.setScaleFactor(I)})}}e.XRManager=P})(wA)),wA}var bb={},tH;function mse(){if(tH)return bb;tH=1,Object.defineProperty(bb,"__esModule",{value:!0}),bb.RayHelper=void 0;const e=CT(),t=Ge(),r=er(),n=Ct(),i=ta(),c=Kn(),o=Kn(),s=h2(),h=ja();class f{setPickPadding(g){this.pickPadding!==g&&(this.pickPadding=g,this.update())}update(){const g=this.pickPadding*2+1;o.Viewport.set(this.viewport,0,0,g,g),this.buffers.setViewport(0,0,g,g),this.spiral=(0,r.spiral2d)(this.pickPadding),this.size=g,this.pickPass.setSize(g,g)}render(g){n.isTimingMode&&this.webgl.timer.mark("RayHelper.render",{captureStats:!0});const{renderer:a,scene:d,helper:p}=this;a.setTransparentBackground(!1),a.setDrawingBufferSize(this.size,this.size),a.setPixelRatio(1),a.setViewport(0,0,this.size,this.size),this.pickPass.render(a,g,d,p),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.render")}identifyInternal(g,a){if(this.webgl.isContextLost)return;const{viewport:d}=this,p=this.buffers.getPickingId(g,a);if(p===void 0)return;const u=this.buffers.getDepth(g,a),m=t.Vec3.create(g,a,u);return(0,c.cameraUnproject)(m,m,d,this.camera.inverseProjectionView),{id:p,position:m}}prepare(g,a){this.camera.far=a.far,this.camera.near=a.near,this.camera.fogFar=a.fogFar,this.camera.fogNear=a.fogNear,this.camera.forceFull=a.forceFull,this.camera.scale=a.scale,o.Viewport.copy(this.camera.viewport,this.viewport),i.Camera.copySnapshot(this.camera.state,{...a.state,mode:"orthographic"}),y(this.camera,g,a.up),t.Mat4.mul(this.camera.projectionView,this.camera.projection,this.camera.view),t.Mat4.tryInvert(this.camera.inverseProjectionView,this.camera.projectionView),t.Mat4.copy(this.camera.viewEye,a.view)}getPickData(){const g=this.pickPadding;for(const a of this.spiral){const d=this.identifyInternal(g+a[0],g+a[1]);if(d)return d}}intersectsScene(g,a){return h.Sphere3D.scaleNX(this.sphere,this.scene.boundingSphereVisible,a),e.Ray3D.isInsideSphere3D(g,this.sphere)||e.Ray3D.isIntersectingSphere3D(g,this.sphere)}identify(g,a){if(this.intersectsScene(g,a.scale))return this.prepare(g,a),n.isTimingMode&&this.webgl.timer.mark("RayHelper.identify"),this.render(this.camera),this.buffers.read(),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.identify"),this.getPickData()}asyncIdentify(g,a){if(this.intersectsScene(g,a.scale))return this.prepare(g,a),n.isTimingMode&&this.webgl.timer.mark("RayHelper.asyncIdentify"),this.render(this.camera),this.buffers.asyncRead(),n.isTimingMode&&this.webgl.timer.markEnd("RayHelper.asyncIdentify"),{tryGet:()=>{const d=this.buffers.check();if(d===s.AsyncPickStatus.Resolved)return this.getPickData();if(d===s.AsyncPickStatus.Pending)return"pending"}}}reset(){this.buffers.reset(),this.pickPass.reset()}dispose(){this.buffers.dispose(),this.pickPass.dispose()}constructor(g,a,d,p,u){this.webgl=g,this.renderer=a,this.scene=d,this.helper=p,this.viewport=(0,o.Viewport)(),this.sphere=(0,h.Sphere3D)();const m=u.pickPadding*2+1;this.camera=new i.Camera,this.pickPass=new s.PickPass(g,m,m,1),this.buffers=new s.PickBuffers(this.webgl,this.pickPass,u.maxAsyncReadLag),this.pickPadding=u.pickPadding,this.update(),(0,s.checkAsyncPickingSupport)(g)||(this.asyncIdentify=(v,b)=>({tryGet:()=>this.identify(v,b)}))}}bb.RayHelper=f;function y(_,g,a){const{near:d,far:p,viewport:u}=_,m=2*Math.tan((0,r.degToRad)(.1)/2)*t.Vec3.distance(_.position,_.target)*_.scale,v=u.height/m,b=-u.width/2,P=u.width/2,C=u.height/2,l=-u.height/2,S=(P-b)/(2*v),T=(C-l)/(2*v),A=(P+b)/2,x=(C+l)/2,M=A-S,D=A+S,V=x+T,R=x-T;t.Mat4.ortho(_.projection,M,D,V,R,d,p);const E=t.Vec3.normalize((0,t.Vec3)(),g.direction),I=t.Quat.fromUnitVec3((0,t.Quat)(),E,t.Vec3.negUnitZ);
7083t.Quat.invert(I,I);const B=t.Vec3.clone(g.origin),w=t.Vec3.add((0,t.Vec3)(),B,E);t.Mat4.lookAt(_.view,B,w,a)}return bb}var rH;function y2(){return rH||(rH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Canvas3D=e.Canvas3DContext=e.DefaultCanvas3DAttribs=e.DefaultCanvas3DParams=e.Canvas3DParams=e.CameraFogParams=void 0;const t=Rn(),r=ci(),n=Ge(),i=cs(),c=i2(),o=Rre(),s=Kn(),h=lQ(),f=Lt(),y=f2(),_=gt(),g=ta(),a=Ne(),d=Hi(),p=_oe(),u=XS(),m=p2(),v=h2(),b=Woe(),P=ase(),C=rt(),l=Ct(),S=YS(),T=KQ(),A=Lw(),x=sse(),M=cse(),D=et(),V=KS(),R=er(),E=vr(),I=dse(),B=g2(),w=Ew(),O=YQ(),F=fse(),L=mse(),U=Lf(),q=XQ(),N=Df();e.CameraFogParams={intensity:a.ParamDefinition.Numeric(15,{min:1,max:100,step:1})},e.Canvas3DParams={camera:a.ParamDefinition.Group({mode:a.ParamDefinition.Select("perspective",a.ParamDefinition.arrayToOptions(["perspective","orthographic"]),{label:"Camera"}),helper:a.ParamDefinition.Group(S.CameraHelperParams,{isFlat:!0}),stereo:a.ParamDefinition.MappedStatic("off",{on:a.ParamDefinition.Group(A.StereoCameraParams),off:a.ParamDefinition.Group({})},{cycle:!0,hideIf:W=>W?.mode!=="perspective"}),fov:a.ParamDefinition.Numeric(45,{min:10,max:130,step:1},{label:"Field of View"}),manualReset:a.ParamDefinition.Boolean(!1,{isHidden:!0})},{pivot:"mode"}),cameraFog:a.ParamDefinition.MappedStatic("on",{on:a.ParamDefinition.Group(e.CameraFogParams),off:a.ParamDefinition.Group({})},{cycle:!0,description:"Show fog in the distance"}),cameraClipping:a.ParamDefinition.Group({radius:a.ParamDefinition.Numeric(100,{min:0,max:99,step:1},{label:"Clipping",description:"How much of the scene to show."}),far:a.ParamDefinition.Boolean(!0,{description:"Hide scene in the distance"}),minNear:a.ParamDefinition.Numeric(1,{min:.1,max:100,step:.1},{description:"Minimal allowed distance of near clipping plane from the camera. Note, may cause performance issues rendering impostors when set too small and cause issues with outline rendering when too close to 0."})},{pivot:"radius"}),viewport:a.ParamDefinition.MappedStatic("canvas",{canvas:a.ParamDefinition.Group({}),"static-frame":a.ParamDefinition.Group({x:a.ParamDefinition.Numeric(0),y:a.ParamDefinition.Numeric(0),width:a.ParamDefinition.Numeric(128),height:a.ParamDefinition.Numeric(128)}),"relative-frame":a.ParamDefinition.Group({x:a.ParamDefinition.Numeric(.33,{min:0,max:1,step:.01}),y:a.ParamDefinition.Numeric(.33,{min:0,max:1,step:.01}),width:a.ParamDefinition.Numeric(.5,{min:.01,max:1,step:.01}),height:a.ParamDefinition.Numeric(.5,{min:.01,max:1,step:.01})})}),cameraResetDurationMs:a.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"The time it takes to reset the camera."}),sceneRadiusFactor:a.ParamDefinition.Numeric(1,{min:1,max:10,step:.1}),transparentBackground:a.ParamDefinition.Boolean(!1),checkeredTransparentBackground:a.ParamDefinition.Boolean(!1),dpoitIterations:a.ParamDefinition.Numeric(2,{min:1,max:10,step:1}),pickPadding:a.ParamDefinition.Numeric(3,{min:0,max:10,step:1},{description:"Extra pixels to around target to check in case target is empty."}),userInteractionReleaseMs:a.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"The time before the user is not considered interacting anymore."}),multiSample:a.ParamDefinition.Group(m.MultiSampleParams),postprocessing:a.ParamDefinition.Group(u.PostprocessingParams),marking:a.ParamDefinition.Group(V.MarkingParams),illumination:a.ParamDefinition.Group(B.IlluminationParams),hiZ:a.ParamDefinition.Group(I.HiZParams),renderer:a.ParamDefinition.Group(c.RendererParams),trackball:a.ParamDefinition.Group(o.TrackballControlsParams),interaction:a.ParamDefinition.Group(p.Canvas3dInteractionHelperParams),handle:a.ParamDefinition.Group(T.HandleHelperParams),pointer:a.ParamDefinition.Group(O.PointerHelperParams),xr:a.ParamDefinition.Group(F.XRManagerParams,{label:"XR"})},e.DefaultCanvas3DParams=a.ParamDefinition.getDefaultValues(e.Canvas3DParams),e.DefaultCanvas3DAttribs={trackball:o.DefaultTrackballControlsAttribs,xr:F.DefaultXRManagerAttribs};var k;(function(W){W.DefaultAttribs={powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,antialias:!0,preserveDrawingBuffer:!0,preferWebGl1:!1,handleResize:()=>{}},W.Params={resolutionMode:a.ParamDefinition.Select("auto",a.ParamDefinition.arrayToOptions(["auto","scaled","native"])),pixelScale:a.ParamDefinition.Numeric(1,{min:.1,max:2,step:.05}
7083),pickScale:a.ParamDefinition.Numeric(.25,{min:.1,max:1,step:.05}),transparency:a.ParamDefinition.Select("wboit",[["blended","Blended"],["wboit","Weighted, Blended"],["dpoit","Depth Peeling"]])},W.DefaultProps=a.ParamDefinition.getDefaultValues(W.Params);function X(Y,K,Q={},J={}){const ae={...W.DefaultAttribs,...Q},te={...W.DefaultProps,...J},{powerPreference:ne,failIfMajorPerformanceCaveat:$,antialias:ie,preserveDrawingBuffer:Z,preferWebGl1:re}=ae,oe=(0,h.getGLContext)(Y,{powerPreference:ne,failIfMajorPerformanceCaveat:$,antialias:ie,preserveDrawingBuffer:Z,alpha:!0,depth:!0,premultipliedAlpha:!0,preferWebGl1:re});if(oe===null)throw new Error("Could not create a WebGL rendering context");const ce=()=>{const se=te.pixelScale/(typeof window<"u"&&window?.devicePixelRatio||1);return te.resolutionMode==="auto"?(0,w.isMobileBrowser)()?se:te.pixelScale:te.resolutionMode==="native"?te.pixelScale:se},ue=()=>{const se=ce();de.setPixelScale(se),ge.setPixelScale(se)},{pickScale:pe,transparency:he}=te,fe=ce(),de=i.InputObserver.fromElement(Y,{pixelScale:fe,preventGestures:!0}),ge=(0,h.createContext)(oe,{pixelScale:fe}),Ce=new M.Passes(ge,K,{pickScale:pe,transparency:he});if(l.isDebugMode){const se=oe.getExtension("WEBGL_lose_context");se&&Y.addEventListener("mousedown",ye=>{ge.isContextLost||!ye.shiftKey||!ye.ctrlKey||!ye.altKey||(l.isDebugMode&&console.log("lose context"),se.loseContext(),setTimeout(()=>{ge.isContextLost&&(l.isDebugMode&&console.log("restore context"),se.restoreContext())},1e3))},!1)}const ve=new t.Subject,le=se=>{ge.setContextLost(),se.preventDefault(),l.isDebugMode&&console.log("context lost"),ve.next((0,r.now)())},me=()=>{ge.isContextLost&&(ge.handleContextRestored(()=>{Ce.draw.reset(),Ce.pick.reset(),Ce.illumination.reset()}),l.isDebugMode&&console.log("context restored"))};Y.addEventListener("webglcontextlost",le,!1),Y.addEventListener("webglcontextrestored",me,!1);const ee=new t.BehaviorSubject(void 0);return{canvas:Y,webgl:ge,input:de,passes:Ce,attribs:ae,get props(){return{...te}},contextLost:ve,contextRestored:ge.contextRestored,assetManager:K,changed:ee,get pixelScale(){return ce()},syncPixelScale:ue,setProps:se=>{if(!se)return;let ye=!1,Se=!1;se.resolutionMode!==void 0&&se.resolutionMode!==te.resolutionMode&&(te.resolutionMode=se.resolutionMode,Se=!0),se.pixelScale!==void 0&&se.pixelScale!==te.pixelScale&&(te.pixelScale=se.pixelScale,Se=!0),Se&&(ue(),ae.handleResize(),ye=!0),se.pickScale!==void 0&&se.pickScale!==te.pickScale&&(te.pickScale=se.pickScale,Ce.setPickScale(se.pickScale),ye=!0),se.transparency!==void 0&&se.transparency!==te.transparency&&(te.transparency=se.transparency,Ce.setTransparency(se.transparency),ye=!0),ye&&ee.next(void 0)},dispose:se=>{de.dispose(),Y.removeEventListener("webglcontextlost",le,!1),Y.removeEventListener("webglcontextrestored",me,!1),ge.destroy(se),ve.complete(),ee.complete()}}}W.fromCanvas=X})(k||(e.Canvas3DContext=k={}));const j=typeof window<"u"?window.requestAnimationFrame:W=>setImmediate(()=>W(Date.now())),H=typeof window<"u"?window.cancelAnimationFrame:W=>clearImmediate(W);function G(W,X){X.transparentBackground&&X.checkeredTransparentBackground?Object.assign(W.style,{"background-image":"linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey), linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey)","background-size":"60px 60px","background-position":"0 0, 30px 30px"}):Object.assign(W.style,{"background-image":"","background-size":"","background-position":""})}var z;(function(W){function X(Y,K={},Q={}){var J,ae;const{webgl:te,input:ne,passes:$,assetManager:ie,canvas:Z,contextLost:re}=Y,oe={...(0,E.deepClone)(e.DefaultCanvas3DParams),...(0,E.deepClone)(K)},ce={...(0,E.deepClone)(e.DefaultCanvas3DAttribs),...(0,E.deepClone)(Q)},ue=new Map,pe=new Map,he=new t.BehaviorSubject(0),fe=new t.Subject;let de=(0,r.now)();const ge=new t.BehaviorSubject(0),Ce=new t.BehaviorSubject(0),ve=new t.BehaviorSubject(0),{contextRestored:le}=te;let me=0,ee=0,se=128,ye=128,Se=!1,Ae=0;G(Z,oe),pc();const _e=y.Scene.create(te,$.draw.transparency,{dColorMarker:oe.renderer.colorMarker,dLightCount:(J=oe.renderer.light)===null||J===void 0?void 0:J.length});function be(){return _e.boundingSphere.radius*oe.sceneRadiusFactor}const xe=new g.Camera({position:n.Vec3.create(0,0,100),mode:oe.camera.mode,fog:oe.cameraFog.name==="on"?oe.cameraFog.params.intensity:0,clipFar:oe.cameraClipping.far,minNear:oe.cameraClipping.minNear,fov:(0,R.degToRad)(oe.camera.fov)},{x:me,y:ee,width:se,height:ye}),we=new A.StereoCamera(xe,oe.camera.stereo.params),Be=o.TrackballControls.create(ne,xe,_e,oe.trackball,ce.trackball),Me=new x.Helper(te,_e,oe),Re=new I.HiZPass(te,$.draw,Z,oe.hiZ),Te=c.Renderer.create(te,oe.renderer);Te.setOcclusionTest(Re.isOccluded);const Ve=new q.ShaderManager(te,_e);Ve.updateRequired(oe);const qe={pickPadding:oe.pickPadding,maxAsyncReadLag:v.DefaultPickOptions.maxAsyncReadLag},ke=new b.PickHelper(te,Te,_e,Me,$.pick,{x:me,y:ee,width:se,height:ye},qe),ze=new L.RayHelper(te,Te,_e,Me,qe),We=new p.Canvas3dInteractionHelper(Ln,ti,ht,ne,xe,Be,oe.interaction),Je=new m.MultiSampleHelper($.multiSample);$.draw.postprocessing.background.update(xe,oe.postprocessing.background,Xe=>{Xe&&Ze()});let De=!1;const Oe={durationMs:void 0,snapshot:void 0,keyframes:void 0,easing:void 0};let Fe=!1;function Le(){return{transparency:Y.props.transparency,transparentBackgroun
7083d:oe.transparentBackground,hiZ:Re.props.enabled,postprocessing:oe.postprocessing.enabled,axes:(0,E.deepClone)(Me.camera.props.axes)}}const He=Le();function Pe(){Object.assign(He,Le())}function Ie(){oe.postprocessing.enabled=He.postprocessing,oe.transparentBackground=He.transparentBackground,Y.setProps({transparency:He.transparency}),Re.setProps({enabled:He.hiZ}),Me.camera.setProps({axes:He.axes})}function Ee(){var Xe;oe.postprocessing.enabled=!Ue.props.disablePostprocessing,Y.setProps({transparency:"blended"}),Re.setProps({enabled:!1}),Me.camera.setProps({axes:{name:"off",params:{}}}),((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend"&&(oe.transparentBackground=Ye)}const Ue=new F.XRManager(te,ne,_e,xe,we,Me.pointer,We,oe.xr,ce.xr),$e={request:async()=>{try{await Ue.request()}catch(Xe){console.error(Xe),$e.requestFailed.next(Xe)}},end:()=>Ue.end(),isSupported:new t.BehaviorSubject(!1),isPresenting:new t.BehaviorSubject(!1),requestFailed:new t.Subject};let Ye=!1;const Qe=[Ue.isSupported.subscribe(Xe=>$e.isSupported.next(Xe)),Ue.togglePassthrough.subscribe(()=>{var Xe;((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend"&&(Ye=!oe.transparentBackground)}),Ue.sessionChanged.subscribe(()=>{var Xe;Fe=!0,Ue.session?(Pe(),Ye=((Xe=Ue.session)===null||Xe===void 0?void 0:Xe.environmentBlendMode)==="alpha-blend",Ee()):Ie(),Pn(),$e.isPresenting.next(!!Ue.session)})];let it=!0;function ht(Xe){let st=_.EmptyLoci,Dt=f.Representation.Empty;if(Xe){const Mt=Me.camera.getLoci(Xe);if(Mt!==_.EmptyLoci)return{loci:Mt,repr:Dt};st=Me.handle.getLoci(Xe),ue.forEach((Nt,Hr)=>{const ln=Hr.getLoci(Xe);(0,_.isEmptyLoci)(ln)||((0,_.isEmptyLoci)(st)||console.warn("found another loci, this should not happen"),st=ln,Dt=Hr)})}return{loci:st,repr:Dt}}let mt=[];function St(Xe,st){mt.push([Xe,st])}function Bt(){let Xe=!1;for(const[st,Dt]of mt)Xe=Ot(st,Dt)||Xe;return mt=[],Xe&&(_e.update(void 0,!0),Me.handle.scene.update(void 0,!0),Me.camera.scene.update(void 0,!0),Ve.updateRequired(oe),Ve.finalizeRequired(!0),fe.next()),Xe}function Ot(Xe,st){const{repr:Dt,loci:Mt}=Xe;let Nt=!1;return Dt?Nt=Dt.mark(Mt,st)||Nt:ue.forEach((Hr,ln)=>{Nt=ln.mark(Mt,st)||Nt}),Nt=Me.handle.mark(Mt,st)||Nt,Nt=Me.camera.mark(Mt,st)||Nt,Nt}function br(Xe,st){if(te.isContextLost||te.xr.session&&!st)return!1;let Dt=!1;Fe&&(fi(!1),Fe=!1,Dt=!0);const Mt=te.getDrawingBufferSize();if(me>Mt.width||me+se<0||ee>Mt.height||ee+ye<0)return!1;st&&(Ee(),oe.transparentBackground=Ye);const Nt=Bt()&&(Te.props.colorMarker||oe.marking.enabled);let Hr=!1;Be.update(Ae);const ln=xe.update(),Nr=Ue.update(st);if(!Nr&&st)return!1;const ao=Te.props.enableAnimation&&_e.hasAnimation,ct=Xe||ln||Dt||Se||Nr||ao;if(Se=!1,$.illumination.supported&&oe.illumination.enabled&&!st){if((ct||Nt)&&(Te.setOcclusionTest(null),$.illumination.restart()),$.illumination.shouldRender(oe.illumination)&&(!fc&&_e.count>0||$.illumination.iteration===0||oe.userInteractionReleaseMs===0)){l.isTimingMode&&te.timer.mark("Canvas3D.render",{captureStats:!0});const Tn={renderer:Te,camera:xe,scene:_e,helper:Me};$.illumination.render(Tn,oe,!0),l.isTimingMode&&te.timer.markEnd("Canvas3D.render"),ke.dirty=ke.dirty||ct,Hr=!0}}else{const Tn=Je.update(Nt||ct,oe.multiSample)&&!st;if(ct||Tn||Nt){Te.setOcclusionTest(Re.isOccluded);let zl=xe;(oe.camera.stereo.name==="on"||Nr)&&(Nr||we.update(),zl=we),l.isTimingMode&&te.timer.mark("Canvas3D.render",{captureStats:!0});const ni={renderer:Te,camera:zl,scene:_e,helper:Me};if(m.MultiSamplePass.isEnabled(oe.multiSample)&&!st){const T2=oe.multiSample.reduceFlicker&&!ln&&Nt&&!Be.isAnimating;Je.render(ni,oe,!0,T2)}else $.draw.render(ni,oe,!0);Re.render(xe),l.isTimingMode&&te.timer.markEnd("Canvas3D.render"),ke.dirty=ke.dirty||ct,Hr=!0}}return Hr}let Ir=!1,Cn=!1,Fn=!1;function ei(Xe){if(!(Cn||Fn)){if(!Ve.finalizeRequired(Xe?.isSynchronous)){Se=!0;return}br(!!Xe?.force,Xe?.xrFrame)&&it&&ge.next((0,r.now)()-de)}}function Ze(){Se=!0}let ot=0;function pt(Xe,st){Fn||te.xr.session&&!st?.xrFrame||(Ae=Xe,Te.setTime((Ae-de)/1e3),je(st?.isSynchronous),st?.updateControls&&Be.update(Ae),xe.transition.tick(Ae),Re.tick(),!st?.manualDraw&&(ei({isSynchronous:st?.isSynchronous,xrFrame:st?.xrFrame}),!xe.transition.inTransition&&!te.isContextLost&&We.tick(Ae)))}let xt;function pr(Xe){return xt=Xe,te.xr.session?te.xr.session.requestAnimationFrame(Xe):j(Xe)}function Rr(Xe){xt=void 0,te.xr.session?te.xr.session.cancelAnimationFrame(Xe):H(Xe)}function Qt(Xe,st){pt((0,r.now)(),{xrFrame:st}),ot=pr(Qt)}function tr(Xe){de=Xe,Be.start(Xe)}function Fr(){Cn=!1,Be.start((0,r.now)()),ot===0&&Qt()}function un(Xe=!1){Cn=Xe,ot!==0&&(Rr(ot),ot=0)}function Pn(){Cn=!1,xt&&pr(xt)}
7083function Ln(Xe){if(!te.isContextLost){if(Ve.finalize(["pick"],!0),"origin"in Xe)return ze.identify(Xe,xe);{const st=oe.camera.stereo.name==="on"?we:xe;return ke.identify(Xe[0],Xe[1],st)}}}function ti(Xe){if(!te.isContextLost){if(Ve.finalize(["pick"],!0),"origin"in Xe)return ze.asyncIdentify(Xe,xe);{const st=oe.camera.stereo.name==="on"?we:xe;return ke.asyncIdentify(Xe[0],Xe[1],st)}}}function je(Xe=!1){const st=ar(Xe);Ve.updateRequired(oe),st&&(tt(),Ir&&(Me.debug.isEnabled&&Me.debug.update(),ei({force:!0}),Ir=!1),Ce.next((0,r.now)()))}function tt(){if(!De)return;$e.isPresenting.value||Ue.resetScale();const Xe=_e.boundingSphereVisible,{center:st,radius:Dt}=Xe,Mt=Be.props.autoAdjustMinMaxDistance;if(Mt.name==="on"){const Nt=Mt.params.minDistanceFactor*Dt+Mt.params.minDistancePadding,Hr=Math.max(Mt.params.maxDistanceFactor*Dt,Mt.params.maxDistanceMin);Be.setProps({minDistance:Nt,maxDistance:Hr})}if(Dt>0){const Nt=Oe.durationMs===void 0?oe.cameraResetDurationMs:Oe.durationMs,Hr=xe.getFocus(st,Dt),ln=typeof Oe.snapshot=="function"?Oe.snapshot(_e,xe):Oe.snapshot,Nr=ln?{...Hr,...ln}:Hr;xe.setState({...Nr,radiusMax:be()},Nt,{keyframes:Oe.keyframes,easing:Oe.easing})}Oe.durationMs=void 0,Oe.snapshot=void 0,Oe.keyframes=void 0,Oe.easing=void 0,De=!1}const ut=(0,C.Sphere3D)(),Pt=(0,C.Sphere3D)();function Wt(){if(xe.state.radiusMax===0)return!0;if(xe.transition.inTransition||Oe.snapshot)return!1;let Xe=!0,st=!0;C.Sphere3D.set(Pt,xe.state.target,xe.state.radius);for(const Dt of _e.renderables){if(!Dt.state.visible)continue;const Mt=Dt.values.boundingSphere.ref.value;if(!Mt.radius)continue;st=!1;const Nt=n.Vec3.distance(Pt.center,Mt.center);if((Nt>Pt.radius||Nt>Mt.radius||Mt.radius>xe.state.radiusMax)&&!C.Sphere3D.includes(ut,Mt))return!0;C.Sphere3D.overlaps(Pt,Mt)&&(Xe=!1)}return Xe||!st&&Pt.radius<=.1}const kt=250;function ar(Xe){return _e.needsCommit?(C.Sphere3D.copy(ut,_e.boundingSphereVisible),Re.clear(),_e.commit(Xe?void 0:kt)?(ve.next(0),Me.debug.isEnabled&&Me.debug.update(),!oe.camera.manualReset&&(he.value===0||Wt())&&(De=!0),ut.radius===0&&(Oe.durationMs=0),oe.camera.manualReset||xe.setState({radiusMax:be()},0),he.next(ue.size),l.isDebugMode&&Qr(),!0):(ve.next(_e.commitQueueSize),!1)):!0}function Qr(){const Xe=_e.renderables.map(Nr=>({drawCount:Nr.values.drawCount.ref.value,instanceCount:Nr.values.instanceCount.ref.value,materialId:Nr.materialId,renderItemId:Nr.id,geometryType:Nr.values.dGeometryType.ref.value,"byteCount [MiB]":(0,N.toFixed)(Nr.getByteCount()/1024/1024,3)}));console.groupCollapsed(`${Xe.length} RenderItems`),Xe.length<=64?console.table(Xe):console.log(Xe),console.log(JSON.stringify(te.stats,void 0,4));const{texture:st,cubeTexture:Dt,attribute:Mt,elements:Nt,pixelPack:Hr,renderbuffer:ln}=te.resources.getByteCounts();console.log(JSON.stringify({texture:`${(st/1024/1024).toFixed(3)} MiB`,cubeTexture:`${(Dt/1024/1024).toFixed(3)} MiB`,attribute:`${(Mt/1024/1024).toFixed(3)} MiB`,elements:`${(Nt/1024/1024).toFixed(3)} MiB`,pixelPack:`${(Hr/1024/1024).toFixed(3)} MiB`,renderbuffer:`${(ln/1024/1024).toFixed(3)} MiB`},void 0,4)),console.log(JSON.stringify({renderables:`${(_e.renderables.reduce((Nr,ao)=>Nr+ao.getByteCount(),0)/1024/1024).toFixed(3)} MiB`,passes:{draw:`${($.draw.getByteCount()/1024/1024).toFixed(3)} MiB`,illumination:`${($.illumination.getByteCount()/1024/1024).toFixed(3)} MiB`,pick:`${($.pick.getByteCount()/1024/1024).toFixed(3)} MiB`,hiZ:`${(Re.getByteCount()/1024/1024).toFixed(3)} MiB`}},void 0,4)),l.isTimingMode&&console.log(JSON.stringify(te.timer.formatedStats(),void 0,4)),console.groupEnd()}function Lr(Xe){Bi(Xe);const st=ue.get(Xe),Dt=new Set;Xe.renderObjects.forEach(Mt=>Dt.add(Mt)),st?d.SetUtils.areEqual(Dt,st)||(Dt.forEach(Mt=>{st.has(Mt)||_e.add(Mt)}),st.forEach(Mt=>{Dt.has(Mt)||_e.remove(Mt)})):Xe.renderObjects.forEach(Mt=>_e.add(Mt)),ue.set(Xe,Dt),_e.update(Xe.renderObjects,!1),Ir=!0,l.isDebugMode&&Qr()}function Ei(Xe){Ri(Xe);const st=ue.get(Xe);st&&(st.forEach(Dt=>_e.remove(Dt)),ue.delete(Xe),Ir=!0,l.isDebugMode&&Qr())}function Bi(Xe){pe.has(Xe)||pe.set(Xe,Xe.updated.subscribe(st=>{Xe.state.syncManually||Lr(Xe)}))}function Ri(Xe){const st=pe.get(Xe);st&&(st.unsubscribe(),pe.delete(Xe))}
7083function ys(){const Xe=_e.boundingSphere.radius>0?100-Math.round(xe.transition.target.radius/be()*100):0;return{camera:{mode:xe.state.mode,helper:{...Me.camera.props},stereo:{...oe.camera.stereo},fov:Math.round((0,R.radToDeg)(xe.state.fov)),manualReset:!!oe.camera.manualReset},cameraFog:xe.state.fog>0?{name:"on",params:{intensity:xe.state.fog}}:{name:"off",params:{}},cameraClipping:{far:xe.state.clipFar,radius:Xe,minNear:xe.state.minNear},cameraResetDurationMs:oe.cameraResetDurationMs,sceneRadiusFactor:oe.sceneRadiusFactor,transparentBackground:oe.transparentBackground,checkeredTransparentBackground:oe.checkeredTransparentBackground,dpoitIterations:oe.dpoitIterations,pickPadding:oe.pickPadding,userInteractionReleaseMs:oe.userInteractionReleaseMs,viewport:oe.viewport,postprocessing:{...oe.postprocessing},marking:{...oe.marking},multiSample:{...oe.multiSample},illumination:{...oe.illumination},hiZ:{...Re.props},renderer:{...Te.props},trackball:{...Be.props},interaction:{...We.props},handle:{...Me.handle.props},pointer:{...Me.pointer.props},xr:{...Ue.props}}}const zr=re?.subscribe(()=>{Fn=!0,ke.dirty=!0}),Zr=le.subscribe(()=>{ke.reset(),ze.reset(),Re.reset(),_e.forEach(Xe=>{var st;!((st=Xe.values.meta)===null||st===void 0)&&st.ref.value.reset&&(Xe.values.meta.ref.value.reset(),Xe.update())}),Fn=!1,ei({force:!0}),ei({force:!0})}),ri=new t.BehaviorSubject(0);function fi(Xe=!0){$.updateSize(),pc(),iC(),Xe&&Ze(),ri.next(+new Date)}(0,l.addConsoleStatsProvider)(Qr);const xr=(ae=Y.changed)===null||ae===void 0?void 0:ae.subscribe(()=>{_e.setTransparency($.draw.transparency),Ze()});let hn=!1,fc=!1;const mc=[ne.drag.subscribe(()=>{hn=!0}),ne.interactionEnd.subscribe(()=>{hn=!1}),(0,t.merge)(ne.drag,ne.pinch,ne.wheel,ne.interactionEnd).subscribe(()=>{fe.next()}),fe.subscribe(()=>{fc=!0}),fe.pipe((0,t.debounceTime)(oe.userInteractionReleaseMs)).subscribe(()=>{fc=hn,!hn&&$.illumination.supported&&oe.illumination.enabled&&Ze()})];if(l.isDebugMode&&Z){let Xe;const st=Dt=>{const Mt=Dt&&_.Loci.getBoundingSphere(_.Loci.normalize(Dt,"residue"));Re.debugOcclusion(Mt)};ne.click.subscribe(Dt=>{if(!Dt.modifiers.control||Dt.button!==2)return;const Mt=Ln(n.Vec2.create(Dt.x,Dt.y));if(!Mt){Xe=void 0,st(Xe);return}Xe=ht(Mt.id).loci,st(Xe)}),ge.subscribe(()=>{setTimeout(()=>{st(Xe)},100)})}return{webgl:te,add:Lr,remove:Ei,commit:je,update:(Xe,st)=>{if(Xe){if(!ue.has(Xe))return;_e.update(Xe.renderObjects,!!st)}else _e.update(void 0,!!st);Ir=!0},clear:()=>{pe.forEach(Xe=>Xe.unsubscribe()),pe.clear(),ue.clear(),_e.clear(),Me.debug.clear(),Ze(),he.next(ue.size)},syncVisibility:()=>{xe.state.radiusMax===0&&(De=!0,Oe.durationMs=0),_e.syncVisibility()&&Me.debug.isEnabled&&Me.debug.update(),Ze()},requestDraw:Ze,tick:pt,animate:Fr,resetTime:tr,pause:un,resume:Pn,requestAnimationFrame:pr,cancelAnimationFrame:Rr,identify:Ln,asyncIdentify:ti,mark:St,getLoci:ht,handleResize:fi,requestResize:()=>{Fe=!0},requestCameraReset:Xe=>{Object.assign(Oe,Xe),De=!0},camera:xe,boundingSphere:_e.boundingSphere,boundingSphereVisible:_e.boundingSphereVisible,get notifyDidDraw(){return it},set notifyDidDraw(Xe){it=Xe},didDraw:ge,commited:Ce,commitQueueSize:ve,reprCount:he,resized:ri,setProps:(Xe,st=!1)=>{var Dt,Mt,Nt,Hr,ln,Nr,ao;const ct=typeof Xe=="function"?(0,U.produce)(ys(),Xe):Xe;ct.sceneRadiusFactor!==void 0&&(oe.sceneRadiusFactor=ct.sceneRadiusFactor,xe.setState({radiusMax:be()},0));const Tn=Object.create(null);ct.camera&&ct.camera.mode!==void 0&&ct.camera.mode!==xe.state.mode&&(Tn.mode=ct.camera.mode);const zl=Math.round((0,R.radToDeg)(xe.state.fov));if(ct.camera&&ct.camera.fov!==void 0&&ct.camera.fov!==zl&&(Tn.fov=(0,R.degToRad)(ct.camera.fov)),ct.cameraFog!==void 0&&ct.cameraFog.params){const ni=ct.cameraFog.name==="on"?ct.cameraFog.params.intensity:0;ni!==xe.state.fog&&(Tn.fog=ni)}if(ct.cameraClipping!==void 0&&(ct.cameraClipping.far!==void 0&&ct.cameraClipping.far!==xe.state.clipFar&&(Tn.clipFar=ct.cameraClipping.far),ct.cameraClipping.minNear!==void 0&&ct.cameraClipping.minNear!==xe.state.minNear&&(Tn.minNear=ct.cameraClipping.minNear),ct.cameraClipping.radius!==void 0)){const ni=be()/100*(100-ct.cameraClipping.radius);ni>0&&ni!==Tn.radius&&(Tn.radius=Math.max(ni,.01))}Object.keys(Tn).length>0&&xe.setState(Tn),!((Dt=ct.camera)===null||Dt===void 0)&&Dt.helper&&Me.camera.setProps(ct.camera.helper),((Mt=ct.camera)===null||Mt===void 0?void 0:Mt.manualReset)!==void 0&&(oe.camera.manualReset=ct.camera.manualReset),((Nt=ct.camera)===null||Nt===void 0?void 0:Nt.stereo)!==void 0&&(Object.assign(oe.camera.stereo,ct.camera.stereo),we.setProps(oe.camera.stereo.params)),ct.cameraResetDurationMs!==void 0&&(oe.cameraResetDurationMs=ct.cameraResetDurationMs),ct.transparentBackgroun
7083d!==void 0&&(oe.transparentBackground=ct.transparentBackground),ct.checkeredTransparentBackground!==void 0&&(oe.checkeredTransparentBackground=ct.checkeredTransparentBackground),ct.dpoitIterations!==void 0&&(oe.dpoitIterations=ct.dpoitIterations),ct.pickPadding!==void 0&&(oe.pickPadding=ct.pickPadding,ke.setPickPadding(oe.pickPadding)),ct.userInteractionReleaseMs!==void 0&&(oe.userInteractionReleaseMs=ct.userInteractionReleaseMs),ct.viewport!==void 0&&(oe.viewport===ct.viewport||oe.viewport.name===ct.viewport.name&&(0,D.shallowEqual)(oe.viewport.params,ct.viewport.params)||(oe.viewport=ct.viewport,pc(),iC())),!((Hr=ct.postprocessing)===null||Hr===void 0)&&Hr.background&&(Object.assign(oe.postprocessing.background,ct.postprocessing.background),$.draw.postprocessing.background.update(xe,oe.postprocessing.background,ni=>{ni&&!st&&Ze()})),ct.postprocessing&&Object.assign(oe.postprocessing,ct.postprocessing),ct.marking&&Object.assign(oe.marking,ct.marking),ct.illumination&&Object.assign(oe.illumination,ct.illumination),ct.multiSample&&Object.assign(oe.multiSample,ct.multiSample),ct.hiZ&&Re.setProps(ct.hiZ),ct.renderer&&(_e.setGlobals({dColorMarker:(ln=ct.renderer.colorMarker)!==null&&ln!==void 0?ln:Te.props.colorMarker,dLightCount:(ao=(Nr=ct.renderer.light)===null||Nr===void 0?void 0:Nr.length)!==null&&ao!==void 0?ao:Te.props.light.length}),Te.setProps(ct.renderer)),ct.trackball&&Be.setProps(ct.trackball),ct.interaction&&We.setProps(ct.interaction),ct.handle&&Me.handle.setProps(ct.handle),ct.pointer&&Me.pointer.setProps(ct.pointer),ct.xr&&Ue.setProps(ct.xr),Tn.mode==="orthographic"&&(oe.camera.stereo.name="off"),("transparentBackground"in ct||"checkeredTransparentBackground"in ct||ct.renderer&&"backgroundColor"in ct.renderer)&&G(Z,oe),Ve.updateRequired(oe),st||Ze()},setAttribs:Xe=>{Xe.trackball&&Be.setAttribs(Xe.trackball),Xe.xr&&Ue.setAttribs(Xe.xr)},getImagePass:(Xe={})=>new P.ImagePass(te,ie,Te,_e,xe,Me,Xe),getRenderObjects(){const Xe=[];return _e.forEach((st,Dt)=>Xe.push(Dt)),Xe},get props(){return ys()},get attribs(){return{trackball:Be.attribs,xr:Ue.attribs}},get input(){return ne},get stats(){return Te.stats},get interaction(){return We.events},debugRegistry:Me.debug,xr:$e,dispose:()=>{zr?.unsubscribe(),Zr.unsubscribe(),xr?.unsubscribe();for(const Xe of Qe)Xe.unsubscribe();Qe.length=0;for(const Xe of mc)Xe.unsubscribe();mc.length=0,H(ot),xt=void 0,mt=[],_e.clear(),Me.debug.clear(),Be.dispose(),Te.dispose(),We.dispose(),Re.dispose(),ke.dispose(),ze.dispose(),Ue.dispose(),he.complete(),fe.complete(),ge.complete(),ri.complete(),Ce.complete(),ve.complete(),$e.isPresenting.complete(),$e.isSupported.complete(),$e.requestFailed.complete(),(0,l.removeConsoleStatsProvider)(Qr)}};function pc(){const Xe=me,st=ee,Dt=se,Mt=ye,Nt=te.getDrawingBufferSize();oe.viewport.name==="canvas"?(me=0,ee=0,se=Nt.width,ye=Nt.height):oe.viewport.name==="static-frame"?(me=oe.viewport.params.x*te.pixelRatio,ye=oe.viewport.params.height*te.pixelRatio,ee=Nt.height-ye-oe.viewport.params.y*te.pixelRatio,se=oe.viewport.params.width*te.pixelRatio):oe.viewport.name==="relative-frame"&&(me=Math.round(oe.viewport.params.x*Nt.width),ye=Math.round(oe.viewport.params.height*Nt.height),ee=Math.round(Nt.height-ye-oe.viewport.params.y*Nt.height),se=Math.round(oe.viewport.params.width*Nt.width)),(Xe!==me||st!==ee||Dt!==se||Mt!==ye)&&(Se=!0)}function iC(){ke.setViewport(me,ee,se,ye),Te.setViewport(me,ee,se,ye),s.Viewport.set(xe.viewport,me,ee,se,ye),s.Viewport.set(Be.viewport,me,ee,se,ye),Re.setViewport(me,ee,se,ye)}}W.create=X})(z||(e.Canvas3D=z={}))})(jx)),jx}var Ku={},nH;function Vi(){if(nH)return Ku;nH=1,Object.defineProperty(Ku,"__esModule",{value:!0}),Ku.StatefulPluginComponent=Ku.PluginComponent=void 0;const e=vr(),t=Nl(),r=Vt();class n{constructor(){this.subs=void 0}subscribe(o,s){if(!o)return{unsubscribe:()=>{}};typeof this.subs>"u"&&(this.subs=[]);let h=o.subscribe(s);return this.subs.push(h),{unsubscribe:()=>{h&&this.subs&&(0,r.arraySetRemove)(this.subs,h)&&(h.unsubscribe(),h=void 0)}}}get ev(){return this._ev||(this._ev=t.RxEventHelper.create())}dispose(){if(this._ev&&this._ev.dispose(),this.subs){for(const o of this.subs)o.unsubscribe();this.subs=void 0}}}Ku.PluginComponent=n;class i extends n{updateState(...o){const s=this.state,h=(0,e.shallowMergeArray)(s,o);return h!==s?(this._state=h,!0):!1}get state(){return this._state}constructor(o){super(),this._state=o}}return Ku.StatefulPluginComponent=i,Ku}var VA={},_b={},iH;function di(){if(iH)return _b;
7083iH=1,Object.defineProperty(_b,"__esModule",{value:!0}),_b.PluginBehavior=void 0;const e=jt(),t=Et(),r=nt(),n=Ne(),i=et();var c;return(function(o){class s extends e.PluginStateObject.Create({name:"Root",typeClass:"Root"}){}o.Root=s;class h extends e.PluginStateObject.Create({name:"Category",typeClass:"Object"}){}o.Category=h;class f extends e.PluginStateObject.CreateBehavior({name:"Behavior"}){}o.Behavior=f,o.Categories={common:"Common",representation:"Representation",interaction:"Interaction","custom-props":"Custom Properties",misc:"Miscellaneous"},o.CreateCategory=e.PluginStateTransform.BuiltIn({name:"create-behavior-category",display:{name:"Behavior Category"},from:s,to:h,params:{label:n.ParamDefinition.Text("",{isHidden:!0})}})({apply({params:u}){return new h({},{label:u.label})}});const y=new Map;function _(u){return y.get(u.id)}o.getCategoryId=_;function g(u){const m=e.PluginStateTransform.CreateBuiltIn({name:u.name,display:u.display,from:[s],to:[f],params:u.params,apply({params:v},b){const P=u.label?u.label(v):{label:u.display.name,description:u.display.description};return new f(new u.ctor(b,v),P)},update({b:v,newParams:b}){return r.Task.create("Update Behavior",async()=>v.data.update&&await v.data.update(b)?t.StateTransformer.UpdateResult.Updated:t.StateTransformer.UpdateResult.Unchanged)},canAutoUpdate:u.canAutoUpdate});return y.set(m.id,u.category),m}o.create=g;function a(u,m){return class{register(){this.sub=u.subscribe(this.ctx,v=>m(v,this.ctx))}dispose(){this.sub&&this.sub.unsubscribe(),this.sub=void 0}constructor(v){this.ctx=v,this.sub=void 0}}}o.simpleCommandHandler=a;class d{subscribeCommand(m,v){this.subs.push(m.subscribe(this.ctx,v))}subscribeObservable(m,v){this.subs.push(m.subscribe(v))}track(m){this.subs.push(m)}dispose(){for(const m of this.subs)m.unsubscribe();this.subs=[]}update(m){return(0,i.shallowEqualObjects)(m,this.params)?!1:(this.params=m,!0)}constructor(m,v){this.ctx=m,this.params=v,this.subs=[]}}o.Handler=d;class p{subscribeCommand(m,v){this.subs.push(m.subscribe(this.plugin,v))}subscribeObservable(m,v){const b=m.subscribe(v);return this.subs.push(b),{unsubscribe:()=>{const P=this.subs.indexOf(b);P>=0&&(this.subs.splice(P,1),b.unsubscribe())}}}dispose(){for(const m of this.subs)m.unsubscribe();this.subs=[]}constructor(m,v){this.plugin=m,this.params=v,this.subs=[]}}o.WithSubscribers=p})(c||(_b.PluginBehavior=c={})),_b}var Yu={},aH;function pse(){if(aH)return Yu;aH=1,Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.registerDefault=t,Yu.SyncRepresentationToCanvas=r,Yu.SyncStructureRepresentation3DState=n,Yu.UpdateRepresentationVisibility=i;const e=jt();function t(o){r(o),n(o),i(o)}function r(o){const s=o.state.data.events;s.object.created.subscribe(h=>{var f;e.PluginStateObject.isRepresentation3D(h.obj)&&(c(h.state.cells.get(h.ref),h.obj.data.repr),h.obj.data.repr.setState({syncManually:!0}),(f=o.canvas3d)===null||f===void 0||f.add(h.obj.data.repr))}),s.object.updated.subscribe(h=>{var f,y;h.oldObj&&e.PluginStateObject.isRepresentation3D(h.oldObj)&&((f=o.canvas3d)===null||f===void 0||f.remove(h.oldObj.data.repr),h.oldObj.data.repr.destroy()),e.PluginStateObject.isRepresentation3D(h.obj)&&(c(h.state.cells.get(h.ref),h.obj.data.repr),h.action==="recreate"&&h.obj.data.repr.setState({syncManually:!0}),(y=o.canvas3d)===null||y===void 0||y.add(h.obj.data.repr))}),s.object.removed.subscribe(h=>{var f;e.PluginStateObject.isRepresentation3D(h.obj)&&((f=o.canvas3d)===null||f===void 0||f.remove(h.obj.data.repr),h.obj.data.repr.destroy())})}function n(o){const s=o.state.data.events;s.object.created.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.state),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)}),s.object.updated.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.state),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)}),s.object.removed.subscribe(h=>{var f;if(!e.PluginStateObject.Molecule.Structure.Representation3DState.is(h.obj))return;const y=h.obj.data;y.repr.setState(y.initialState),(f=o.canvas3d)===null||f===void 0||f.update(y.repr)})}function i(o){o.state.data.events.cell.stateUpdated.subscribe(s=>{var h;const f=s.state.cells.get(s.ref);e.PluginStateObject.isRepresentation3D(f.obj)&&c(f,f.obj.data.repr)&&((h=o.canvas3d)===null||h===void 0||h.syncVisibility())})}function c(o,s){return s.state.visible===!!o.state.isHidden?(s.setState({visible:!o.state.isHidden}),!0):!1}return Yu}var Ea={},Sb={},Qd={},oH;
7083function ZQ(){if(oH)return Qd;oH=1,Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.PluginCommandManager=void 0,Qd.PluginCommand=t;const e=et();function t(){const n=((i,c)=>i.commands.dispatch(n,c||{}));return n.subscribe=(i,c)=>i.commands.subscribe(n,c),n.id=e.UUID.create22(),n}class r{constructor(){this.subs=new Map,this.disposing=!1}subscribe(i,c){let o=this.subs.get(i.id);return o||(o=[],this.subs.set(i.id,o)),o.push(c),{unsubscribe:()=>{const s=this.subs.get(i.id);if(!s)return;const h=s.indexOf(c);if(!(h<0)){for(let f=h+1;f<s.length;f++)s[f-1]=s[f];s.pop()}}}}dispatch(i,c){return new Promise((o,s)=>{if(this.disposing){s("disposed");return}if(!this.subs.get(i.id)){o();return}this.resolve({cmd:i,params:c,resolve:o,reject:s})})}dispose(){this.subs.clear()}async resolve(i){const c=this.subs.get(i.cmd.id);if(!c){i.resolve();return}try{for(const o of c)await o(i.params);i.resolve()}catch(o){i.reject(o)}}}return Qd.PluginCommandManager=r,Qd}var sH;function Sn(){if(sH)return Sb;sH=1,Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.PluginCommands=void 0;const e=ZQ();return Sb.PluginCommands={State:{SetCurrentObject:(0,e.PluginCommand)(),ApplyAction:(0,e.PluginCommand)(),Update:(0,e.PluginCommand)(),RemoveObject:(0,e.PluginCommand)(),ToggleExpanded:(0,e.PluginCommand)(),ToggleVisibility:(0,e.PluginCommand)(),Snapshots:{Add:(0,e.PluginCommand)(),Replace:(0,e.PluginCommand)(),Move:(0,e.PluginCommand)(),Remove:(0,e.PluginCommand)(),Apply:(0,e.PluginCommand)(),Clear:(0,e.PluginCommand)(),Upload:(0,e.PluginCommand)(),Fetch:(0,e.PluginCommand)(),DownloadToFile:(0,e.PluginCommand)(),OpenFile:(0,e.PluginCommand)(),OpenUrl:(0,e.PluginCommand)()}},Interactivity:{Object:{Highlight:(0,e.PluginCommand)()},Structure:{Highlight:(0,e.PluginCommand)(),Select:(0,e.PluginCommand)()},ClearHighlights:(0,e.PluginCommand)()},Layout:{Update:(0,e.PluginCommand)()},Toast:{Show:(0,e.PluginCommand)(),Hide:(0,e.PluginCommand)()},Camera:{Reset:(0,e.PluginCommand)(),SetSnapshot:(0,e.PluginCommand)(),Focus:(0,e.PluginCommand)(),FocusObject:(0,e.PluginCommand)(),OrientAxes:(0,e.PluginCommand)(),ResetAxes:(0,e.PluginCommand)()},Canvas3D:{SetSettings:(0,e.PluginCommand)(),ResetSettings:(0,e.PluginCommand)()}},Sb}var cH;function hse(){if(cH)return Ea;cH=1,Object.defineProperty(Ea,"__esModule",{value:!0}),Ea.registerDefault=t,Ea.Reset=r,Ea.SetSnapshot=n,Ea.Focus=i,Ea.FocusObject=c,Ea.OrientAxes=o,Ea.ResetAxes=s;const e=Sn();function t(h){r(h),i(h),c(h),n(h),o(h),s(h)}function r(h){e.PluginCommands.Camera.Reset.subscribe(h,f=>{h.managers.camera.reset(f?.snapshot,f?.durationMs)})}function n(h){e.PluginCommands.Camera.SetSnapshot.subscribe(h,({snapshot:f,durationMs:y})=>{h.managers.camera.setSnapshot(f,y)})}function i(h){e.PluginCommands.Camera.Focus.subscribe(h,({center:f,radius:y,durationMs:_})=>{h.managers.camera.focusSphere({center:f,radius:y},{durationMs:_}),h.events.canvas3d.settingsUpdated.next(void 0)})}function c(h){e.PluginCommands.Camera.FocusObject.subscribe(h,async f=>{h.managers.camera.focusObject(f)})}function o(h){e.PluginCommands.Camera.OrientAxes.subscribe(h,({structures:f,durationMs:y})=>{h.managers.camera.orientAxes(f,y)})}function s(h){e.PluginCommands.Camera.ResetAxes.subscribe(h,({durationMs:f})=>{h.managers.camera.resetAxes(f)})}return Ea}var Cb={},uH;function gse(){if(uH)return Cb;uH=1,Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.registerDefault=r,Cb.Canvas3DSetSettings=n;const e=Sn(),t=y2();function r(i){n(i)}function n(i){e.PluginCommands.Canvas3D.ResetSettings.subscribe(i,()=>{var c;(c=i.canvas3d)===null||c===void 0||c.setProps(t.DefaultCanvas3DParams),i.events.canvas3d.settingsUpdated.next(void 0)}),e.PluginCommands.Canvas3D.SetSettings.subscribe(i,c=>{var o;i.canvas3d&&((o=i.canvas3d)===null||o===void 0||o.setProps(c.settings),i.events.canvas3d.settingsUpdated.next(void 0))})}return Cb}var EA={},lH;function yse(){return lH||(lH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FocusLoci=e.DefaultFocusLociBindings=e.DefaultLociLabelProvider=e.SelectLoci=e.DefaultSelectLociBindings=e.HighlightLoci=void 0;const t=cn(),r=jt(),n=_a(),i=di(),c=VQ(),o=Et(),s=cs(),h=IS(),f=Ne(),y=gt(),_=Ke(),g=Vt(),a=s.ButtonsType,d=s.ModifiersKeys,p=h.Binding.Trigger,u={hoverHighlightOnly:(0,h.Binding)([p(a.Flag.None)],"Highlight","Hover element using ${triggers}"),hoverHighlightOnlyExtend:(0,h.Binding)([p(a.Flag.None,d.create({shift:!0}))],"Extend highlight","From selected to hovered element along polymer using ${triggers}")},m={bindings:f.ParamDefinition.Value(u,{isHidden:!0}),ignore:f.ParamDefinition.Value([],{isHidden:!0}),preferAtoms:f.ParamDefinition.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:f.ParamDefinition.Boolean(!0)};e.HighlightLoci=i.PluginBehavior.create({name:"representation-highlight-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{constructor(){super(...arguments),this.lociMarkProvider=(P,C)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark(P,C)}}getLoci(P){return this.params.preferAtoms&&_.Bond.isLoci(P)&&P.bonds.length===2?_.Bond.toFirstStructureElementLoci(P):P}
7083register(){this.subscribeObservable(this.ctx.behaviors.interaction.hover,({current:P,buttons:C,modifiers:l})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;const S=this.getLoci(P.loci);if(this.params.ignore.includes(S.kind)){this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:P.repr,loci:y.EmptyLoci});return}let T=!1;h.Binding.match(this.params.bindings.hoverHighlightOnly,C,l)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnly({loci:S}),T=!0),h.Binding.match(this.params.bindings.hoverHighlightOnlyExtend,C,l)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnlyExtend({loci:S}),T=!0),T||this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:P.repr,loci:y.EmptyLoci})}),this.ctx.managers.interactivity.lociHighlights.addProvider(this.lociMarkProvider)}unregister(){this.ctx.managers.interactivity.lociHighlights.removeProvider(this.lociMarkProvider)}},params:()=>m,display:{name:"Highlight Loci on Canvas"}}),e.DefaultSelectLociBindings={clickSelect:h.Binding.Empty,clickSelectOnly:h.Binding.Empty,clickToggle:(0,h.Binding)([p(a.Flag.Primary,d.create())],"Toggle selection","Click on element using ${triggers}"),clickToggleExtend:(0,h.Binding)([p(a.Flag.Primary,d.create({shift:!0}))],"Toggle extended selection","Click on element using ${triggers} to extend selection along polymer"),clickDeselect:h.Binding.Empty,clickDeselectAllOnEmpty:(0,h.Binding)([p(a.Flag.Primary,d.create())],"Deselect all","Click on nothing using ${triggers}")};const v={bindings:f.ParamDefinition.Value(e.DefaultSelectLociBindings,{isHidden:!0}),ignore:f.ParamDefinition.Value([],{isHidden:!0}),preferAtoms:f.ParamDefinition.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:f.ParamDefinition.Boolean(!0)};e.SelectLoci=i.PluginBehavior.create({name:"representation-select-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{getLoci(P){return this.params.preferAtoms&&_.Bond.isLoci(P)&&P.bonds.length===2?_.Bond.toFirstStructureElementLoci(P):P}applySelectMark(P,C){const l=this.ctx.state.data.cells.get(P);if(l&&r.PluginStateObject.isRepresentation3D(l.obj)){this.spine.current=l;const S=this.spine.getRootOfType(r.PluginStateObject.Molecule.Structure);if(S){C&&this.lociMarkProvider({loci:_.Structure.Loci(S.data)},t.MarkerAction.Deselect);const T=this.ctx.managers.structure.selection.getLoci(S.data);this.lociMarkProvider({loci:T},t.MarkerAction.Select)}}}register(){const P=S=>y.Loci.isEmpty(S),C=S=>!y.Loci.isEmpty(S),l=[["clickSelect",S=>this.ctx.managers.interactivity.lociSelects.select(S),C],["clickToggle",S=>this.ctx.managers.interactivity.lociSelects.toggle(S),C],["clickToggleExtend",S=>this.ctx.managers.interactivity.lociSelects.toggleExtend(S),C],["clickSelectOnly",S=>this.ctx.managers.interactivity.lociSelects.selectOnly(S),C],["clickDeselect",S=>this.ctx.managers.interactivity.lociSelects.deselect(S),C],["clickDeselectAllOnEmpty",()=>this.ctx.managers.interactivity.lociSelects.deselectAll(),P]];l.sort((S,T)=>{const A=this.params.bindings[S[0]],x=this.params.bindings[T[0]],M=A.triggers.length===0?0:(0,g.arrayMax)(A.triggers.map(V=>d.size(V.modifiers)));return(x.triggers.length===0?0:(0,g.arrayMax)(x.triggers.map(V=>d.size(V.modifiers))))-M}),this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:S,button:T,modifiers:A})=>{if(!this.ctx.canvas3d||this.ctx.isBusy||!this.ctx.selectionMode)return;const x=this.getLoci(S.loci);if(!this.params.ignore.includes(x.kind)){for(const[M,D,V]of l)if(h.Binding.match(this.params.bindings[M],T,A)&&(!V||V(x))){D({repr:S.repr,loci:x});break}}}),this.ctx.managers.interactivity.lociSelects.addProvider(this.lociMarkProvider),this.subscribeObservable(this.ctx.state.events.object.created,({ref:S})=>this.applySelectMark(S)),this.subscribeObservable(this.ctx.state.events.object.updated,({ref:S,obj:T,oldObj:A,oldData:x,action:M})=>{const D=this.ctx.state.data.cells.get(S);if(D&&r.PluginStateObject.Molecule.Structure.is(D.obj)){const V=T.data,R=M==="recreate"?A?.data:M==="in-place"?x:void 0;if(R&&_.Structure.areEquivalent(V,R)&&_.Structure.areHierarchiesEqual(V,R))return;const E=this.ctx.state.data.select(o.StateSelection.children(S).ofType(r.PluginStateObject.Molecule.Structure.Representation3D));for(const I of E)this.applySelectMark(I.transform.ref,!0)}})}unregister(){this.ctx.managers.interactivity.lociSelects.removeProvider(this.lociMarkProvider)}constructor(P,C){super(P,C),this.lociMarkProvider=(l,S)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark({loci:l.loci},S)},this.spine=new c.StateTreeSpine.Impl(P.state.data.cells)}},params:()=>v,display:{name:"Select Loci on Canvas"}}),e.DefaultLociLabelProvider=i.PluginBehavior.create({name:"default-loci-label-provider",category:"interaction",ctor:class{register(){this.ctx.managers.lociLabels.addProvider(this.f)}unregister(){this.ctx.managers.lociLabels.removeProvider(this.f)}constructor(P){this.ctx=P,this.f={label:C=>{const l=[];
7083if(_.StructureElement.Loci.is(C)){const S=new Set;for(const{unit:T}of C.elements){const A=_.StructureElement.Location.create(C.structure,T,T.elements[0]),x=_.StructureProperties.entity.pdbx_description(A).join(", ");S.add(x)}S.size===1&&S.forEach(T=>l.push(T))}return l.push((0,n.lociLabel)(C)),l.filter(S=>!!S).join("</br>")},group:C=>C.toString().replace(/Model [0-9]+/g,"Models"),priority:100}}},display:{name:"Provide Default Loci Label"}}),e.DefaultFocusLociBindings={clickFocus:(0,h.Binding)([p(a.Flag.Primary,d.create()),p(a.Flag.Trigger)],"Representation Focus","Click element using ${triggers}"),clickFocusAdd:(0,h.Binding)([p(a.Flag.Primary,d.create({control:!0})),p(a.Flag.Primary,d.create({meta:!0}))],"Representation Focus Add","Click element using ${triggers}"),clickFocusExtend:(0,h.Binding)([p(a.Flag.Primary,d.create({shift:!0}))],"Representation Focus Extend","Click on element using ${triggers}"),clickFocusSelectMode:(0,h.Binding)([],"Representation Focus (Selection Mode)","Click element using ${triggers}"),clickFocusAddSelectMode:(0,h.Binding)([],"Representation Focus Add (Selection Mode)","Click element using ${triggers}"),clickFocusExtendSelectMode:(0,h.Binding)([],"Representation Focus Extend (Selection Mode)","Click on element using ${triggers}")};const b={bindings:f.ParamDefinition.Value(e.DefaultFocusLociBindings,{isHidden:!0})};e.FocusLoci=i.PluginBehavior.create({name:"representation-focus-loci",category:"interaction",ctor:class extends i.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:P,button:C,modifiers:l})=>{var S,T,A,x,M,D,V;const{clickFocus:R,clickFocusAdd:E,clickFocusExtend:I,clickFocusSelectMode:B,clickFocusAddSelectMode:w,clickFocusExtendSelectMode:O}=this.params.bindings,F=this.ctx.selectionMode?B:R,L=h.Binding.match(F,C,l),U=this.ctx.selectionMode?w:E,q=h.Binding.match(U,C,l),N=this.ctx.selectionMode?O:I,k=h.Binding.match(N,C,l);if(!L&&!q&&!k)return;const j=(x=(A=(T=(S=P.repr)===null||S===void 0?void 0:S.props)===null||T===void 0?void 0:T.snapshotKey)===null||A===void 0?void 0:A.trim())!==null&&x!==void 0?x:"";if(!this.ctx.selectionMode&&L&&j){this.ctx.managers.snapshot.applyKey(j);return}const H=(D=(M=P.repr)===null||M===void 0?void 0:M.props)===null||D===void 0?void 0:D.markdownCommands;if(!this.ctx.selectionMode&&L&&typeof H=="object"&&Object.keys(H).length>0){this.ctx.managers.markdownExtensions.tryExecute("click",H);return}const{granularity:G}=this.ctx.managers.interactivity.props;if(G!=="residue"&&G!=="element")return;const z=y.Loci.normalize(P.loci,"residue"),W=this.ctx.managers.structure.focus.current;if(W&&y.Loci.areEqual(W.loci,z))this.ctx.managers.structure.focus.clear();else if(L)this.ctx.managers.structure.focus.setFromLoci(z);else{k?this.ctx.managers.structure.focus.extendFromLoci(z):this.ctx.managers.structure.focus.toggleFromLoci(z);const X=(V=this.ctx.managers.structure.focus.current)===null||V===void 0?void 0:V.loci;X&&this.ctx.managers.camera.focusLoci(X)}})}},params:()=>b,display:{name:"Representation Focus Loci on Canvas"}})})(EA)),EA}var BA={},dH;function vse(){return dH||(dH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CameraControls=e.CameraAxisHelper=e.FocusLoci=e.NoPrimaryFocusLociBindings=e.DefaultFocusLociBindings=e.DefaultClickResetCameraOnEmptySelectMode=e.DefaultClickResetCameraOnEmpty=void 0;const t=gt(),r=Ne(),n=di(),i=cs(),c=IS(),o=Sn(),s=YS(),h=Ge(),f=i.ButtonsType,y=i.ModifiersKeys,_=c.Binding.Trigger,g=c.Binding.TriggerKey;e.DefaultClickResetCameraOnEmpty=(0,c.Binding)([_(f.Flag.Primary,y.create()),_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Reset camera focus","Click on nothing using ${triggers}"),e.DefaultClickResetCameraOnEmptySelectMode=(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Reset camera focus (Selection Mode)","Click on nothing using ${triggers}"),e.DefaultFocusLociBindings={clickCenterFocus:(0,c.Binding)([_(f.Flag.Primary,y.create()),_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Camera center and focus (Selection Mode)","Click element using ${triggers}"),clickResetCameraOnEmpty:e.DefaultClickResetCameraOnEmpty,clickResetCameraOnEmptySelectMode:e.DefaultClickResetCameraOnEmptySelectMode},e.NoPrimaryFocusLociBindings={clickCenterFocus:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0})),_(f.Flag.Trigger)],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:(0,c.Binding)([_(f.Flag.Secondary,y.create()),_(f.Flag.Primary,y.create({control:!0}))],"Camera center and focus (Selection Mode)","Click element using ${triggers}"),clickResetCameraOnEmpty:e.DefaultClickResetCameraOnEmpty,clickResetCameraOnEmptySelectMode:e.DefaultClickResetCameraOnEmptySelectMode};const a={minRadius:r.ParamDefinition.Numeric(8,{min:1,max:50,step:1}),extraRadius:r.ParamDefinition.Numeric(4,{min:1,max:50,step:1},{description:"Value added to the bounding-sphere radius of the Loci"}),durationMs:r.ParamDefinition.Numeric(250,{min:0,max:1e3,step:1},{description:"Camera transition duration"}),bindings:r.ParamDefinition.Value(e.DefaultFocusLociBindings,{isHidden:!0})};e.FocusLoci=n.PluginBehavior.create({name:"camera-focus-loci",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){this.subscribeOb
7083servable(this.ctx.behaviors.interaction.click,({current:u,button:m,modifiers:v})=>{var b,P,C,l,S,T,A,x;if(!this.ctx.canvas3d)return;const M=this.ctx.selectionMode?this.params.bindings.clickCenterFocusSelectMode:this.params.bindings.clickCenterFocus,D=this.ctx.selectionMode?(b=this.params.bindings.clickResetCameraOnEmptySelectMode)!==null&&b!==void 0?b:e.DefaultClickResetCameraOnEmptySelectMode:(P=this.params.bindings.clickResetCameraOnEmpty)!==null&&P!==void 0?P:e.DefaultClickResetCameraOnEmpty;if(t.Loci.isEmpty(u.loci)&&c.Binding.match(D,m,v)){o.PluginCommands.Camera.Reset(this.ctx,{});return}const V=(T=(S=(l=(C=u.repr)===null||C===void 0?void 0:C.props)===null||l===void 0?void 0:l.snapshotKey)===null||S===void 0?void 0:S.trim())!==null&&T!==void 0?T:"",R=(x=(A=u.repr)===null||A===void 0?void 0:A.props)===null||x===void 0?void 0:x.markdownCommands;if(!(V||typeof R=="object"&&Object.keys(R).length>0)&&c.Binding.match(M,m,v)){const E=t.Loci.normalize(u.loci,this.ctx.managers.interactivity.props.granularity);this.ctx.managers.camera.focusLoci(E,this.params)}})}},params:()=>a,display:{name:"Camera Focus Loci on Canvas"}}),e.CameraAxisHelper=n.PluginBehavior.create({name:"camera-axis-helper",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){let u=s.CameraHelperAxis.None,m=0;this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:v})=>{if(!this.ctx.canvas3d||!(0,s.isCameraAxesLoci)(v.loci))return;const b=v.loci.elements[0].groupId;if(b===s.CameraHelperAxis.None){u=s.CameraHelperAxis.None,m=0;return}const{camera:P}=this.ctx.canvas3d;let C,l;if(b>=s.CameraHelperAxis.X&&b<=s.CameraHelperAxis.Z){u=s.CameraHelperAxis.None,m=0;const S=h.Vec3.sub((0,h.Vec3)(),P.target,P.position),T=h.Vec3.cross((0,h.Vec3)(),S,P.up);l=(0,h.Vec3)(),l[b-1]=1,C=h.Vec3.cross((0,h.Vec3)(),l,T),h.Vec3.magnitude(C)===0&&(C=S)}else u===b?m=(m+1)%2:(u=b,m=0),b===s.CameraHelperAxis.XY?(l=m?h.Vec3.unitX:h.Vec3.unitY,C=h.Vec3.negUnitZ):b===s.CameraHelperAxis.XZ?(l=m?h.Vec3.unitX:h.Vec3.unitZ,C=h.Vec3.negUnitY):(l=m?h.Vec3.unitY:h.Vec3.unitZ,C=h.Vec3.negUnitX);this.ctx.canvas3d.requestCameraReset({snapshot:(S,T)=>T.getInvariantFocus(S.boundingSphereVisible.center,S.boundingSphereVisible.radius,l,C)})})}},params:()=>({}),display:{name:"Camera Axis Helper"}});const d={keySpinAnimation:(0,c.Binding)([g("I")],"Spin Animation","Press ${triggers}"),keyRockAnimation:(0,c.Binding)([g("O")],"Rock Animation","Press ${triggers}"),keyToggleFlyMode:(0,c.Binding)([g("Space",y.create({shift:!0}))],"Toggle Fly Mode","Press ${triggers}"),keyResetView:(0,c.Binding)([g("T")],"Reset View","Press ${triggers}"),keyGlobalIllumination:(0,c.Binding)([g("G")],"Global Illumination","Press ${triggers}")},p={bindings:r.ParamDefinition.Value(d,{isHidden:!0})};e.CameraControls=n.PluginBehavior.create({name:"camera-controls",category:"interaction",ctor:class extends n.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.key,({code:u,key:m,modifiers:v})=>{var b;if(!this.ctx.canvas3d)return;const P={...d,...this.params.bindings},C=this.ctx.canvas3d.props.trackball,l=this.ctx.canvas3d.props.illumination;if(c.Binding.matchKey(P.keySpinAnimation,u,v,m)){const S=C.animate.name!=="spin"?"spin":"off";S==="off"?o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{}}}}}):o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{speed:.1,axis:h.Vec3.create(0,-1,0)}}}}})}if(c.Binding.matchKey(P.keyRockAnimation,u,v,m)){const S=C.animate.name!=="rock"?"rock":"off";S==="off"?o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{}}}}}):o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,animate:{name:S,params:{speed:.3,angle:10,axis:h.Vec3.create(0,-1,0)}}}}})}if(c.Binding.matchKey(P.keyToggleFlyMode,u,v,m)){const S=!C.flyMode;o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{trackball:{...C,flyMode:S}}}),!((b=this.ctx.canvas3dContext)===null||b===void 0)&&b.canvas&&(this.ctx.canvas3dContext.canvas.style.cursor=S?"crosshair":"unset")}c.Binding.matchKey(P.keyResetView,u,v,m)&&o.PluginCommands.Camera.Reset(this.ctx,{}),c.Binding.matchKey(P.keyGlobalIllumination,u,v,m)&&o.PluginCommands.Canvas3D.SetSettings(this.ctx,{settings:{illumination:{...l,enabled:!l.enabled}}})})}},params:()=>p,display:{name:"Camera Controls on Canvas"}})})(BA)),BA}var Pb={},fH;function bse(){if(fH)return Pb;
7083fH=1,Object.defineProperty(Pb,"__esModule",{value:!0}),Pb.SnapshotControls=void 0;const e=Ne(),t=di(),r=IS(),i=cs().ModifiersKeys,c=r.Binding.TriggerKey,o={next:(0,r.Binding)([c("ArrowRight",i.create({control:!0})),c("GamepadY")]),previous:(0,r.Binding)([c("ArrowLeft",i.create({control:!0})),c("GamepadX")]),first:(0,r.Binding)([c("ArrowUp",i.create({control:!0}))]),last:(0,r.Binding)([c("ArrowDown",i.create({control:!0}))])},s={bindings:e.ParamDefinition.Value(o,{isHidden:!0})};return Pb.SnapshotControls=t.PluginBehavior.create({name:"snapshot-controls",category:"interaction",ctor:class extends t.PluginBehavior.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.keyReleased,({code:h,modifiers:f,key:y})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;const _=this.params.bindings,{snapshot:g}=this.ctx.managers;if(r.Binding.matchKey(_.next,h,f,y)&&g.applyNext(1),r.Binding.matchKey(_.previous,h,f,y)&&g.applyNext(-1),r.Binding.matchKey(_.first,h,f,y)){const a=g.state.entries.get(0),d=g.setCurrent(a.snapshot.id);if(d)return this.ctx.state.setSnapshot(d)}if(r.Binding.matchKey(_.last,h,f,y)){const a=g.state.entries.get(g.state.entries.size-1),d=g.setCurrent(a.snapshot.id);if(d)return this.ctx.state.setSnapshot(d)}})}},params:()=>s,display:{name:"Snapshot Controls"}}),Pb}var RA={},Tb={},mH;function _se(){if(mH)return Tb;mH=1,Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.StructureInfo=void 0;const e=di(),t=Ke(),r=jt(),n=Et();return Tb.StructureInfo=e.PluginBehavior.create({name:"structure-info-prop",category:"custom-props",display:{name:"Structure Info"},ctor:class extends e.PluginBehavior.Handler{get maxModelIndex(){var i,c;let o=-1;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const h of s){const f=((i=h.obj)===null||i===void 0?void 0:i.data)&&t.Model.Index.get((c=h.obj)===null||c===void 0?void 0:c.data).value;f!==void 0&&f>o&&(o=f)}return o}get maxStructureIndex(){var i,c;let o=-1;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Structure));for(const h of s){const f=((i=h.obj)===null||i===void 0?void 0:i.data)&&t.Structure.Index.get((c=h.obj)===null||c===void 0?void 0:c.data).value;f!==void 0&&f>o&&(o=f)}return o}get asymIdOffset(){var i;let c=0,o=0;const s=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const h of s){const f=(i=h.obj)===null||i===void 0?void 0:i.data;if(f){const y=t.Model.AsymIdCount.get(f),_=t.Model.AsymIdOffset.get(f).value;y!==void 0&&_!==void 0&&(c=Math.max(c,_.auth+y.auth),o=Math.max(o,_.label+y.label))}}return{auth:c,label:o}}setModelMaxIndex(){var i;const c=this.maxModelIndex,o=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Model));for(const s of o){const h=(i=s.obj)===null||i===void 0?void 0:i.data;h&&t.Model.MaxIndex.get(h).value!==c&&t.Model.MaxIndex.set(h,{value:c},c)}}setStructureMaxIndex(){var i;const c=this.maxModelIndex,o=this.ctx.state.data.select(n.StateSelection.Generators.rootsOfType(r.PluginStateObject.Molecule.Structure));for(const s of o){const h=(i=s.obj)===null||i===void 0?void 0:i.data;h&&t.Structure.MaxIndex.get(h).value!==c&&t.Structure.MaxIndex.set(h,{value:c},c)}}handleModel(i,c){if(t.Model.Index.get(i).value===void 0){const o=c&&t.Model.Index.get(c).value,s=o??this.maxModelIndex+1;t.Model.Index.set(i,{value:s},s)}if(t.Model.AsymIdOffset.get(i).value===void 0){const o=c&&t.Model.AsymIdOffset.get(c).value,s=o??{...this.asymIdOffset};t.Model.AsymIdOffset.set(i,{value:s},s)}}handleStructure(i,c){if(i.parent!==void 0||t.Structure.Index.get(i).value!==void 0)return;const o=c&&t.Structure.Index.get(c).value,s=o??this.maxStructureIndex+1;t.Structure.Index.set(i,{value:s},s)}handle(i,c,o){r.PluginStateObject.Molecule.Structure.is(c)?!this.ctx.state.data.tree.transforms.get(i).transformer.definition.isDecorator&&c.data.parent===void 0&&this.handleStructure(c.data,o?.data):r.PluginStateObject.Molecule.Model.is(c)&&(this.ctx.state.data.tree.transforms.get(i).transformer.definition.isDecorator||this.handleModel(c.data,o?.data))}register(){this.ctx.customModelProperties.register(t.Model.AsymIdOffset,!0),this.ctx.customModelProperties.register(t.Model.Index,!0),this.ctx.customModelProperties.register(t.Model.MaxIndex,!0),this.ctx.customStructureProperties.register(t.Structure.Index,!0),this.ctx.customStructureProperties.register(t.Structure.MaxIndex,!0),this.subscribeOb
7083servable(this.ctx.state.data.events.object.created,i=>{this.handle(i.ref,i.obj),this.setModelMaxIndex(),this.setStructureMaxIndex()}),this.subscribeObservable(this.ctx.state.data.events.object.updated,i=>{this.handle(i.ref,i.obj,i.oldObj)})}unregister(){this.ctx.customModelProperties.unregister(t.Model.AsymIdOffset.descriptor.name),this.ctx.customModelProperties.unregister(t.Model.Index.descriptor.name),this.ctx.customModelProperties.unregister(t.Model.MaxIndex.descriptor.name),this.ctx.customStructureProperties.unregister(t.Structure.Index.descriptor.name),this.ctx.customStructureProperties.unregister(t.Structure.MaxIndex.descriptor.name)}}}),Tb}var xb={},OA={},kA={},zP={},Ko={},pH;function Nw(){return pH||(pH=1,Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.DefaultMaxAsa=Ko.MaxAsa=Ko.VdWLookup=void 0,Ko.VdWLookup=[-1,1.76,1.87,1.65,1.5,1.4,1.85,1.8,1.6,1.4],Ko.MaxAsa={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165},Ko.DefaultMaxAsa=121),Ko}var hH;function Sse(){if(hH)return zP;hH=1,Object.defineProperty(zP,"__esModule",{value:!0}),zP.assignRadiusForHeavyAtoms=o;const e=Nw(),t=AT(),r=dt(),n=ma(),i=jr(),c=Sl();function o(y){const{key:_}=i.StructureProperties.residue,{type_symbol:g,label_atom_id:a,label_comp_id:d}=i.StructureProperties.atom,{structure:p,atomRadiusType:u,serialResidueIndex:m}=y,v=i.StructureElement.Location.create(p);let b=0,P=0,C=-1;v.structure=p;for(let l=0,S=0,T=p.units.length;l<T;++l){const A=p.units[l],{elements:x}=A;v.unit=A,b=-1;for(let M=0,D=x.length;M<D;++M){const V=x[M],R=S+M;v.element=V,P=_(v),b!==P&&++C,b=P;const E=a(v),I=(0,c.getElementMoleculeType)(A,V);if(I===r.MoleculeType.Water||!y.nonPolymer&&!(0,r.isPolymer)(I)){u[R]=0,m[R]=-1;continue}const B=g(v),w=(0,t.getElementIdx)(B);if((0,t.isHydrogen)(w)){u[R]=0,m[R]=C;continue}const O=d(v);if(y.traceOnly&&(E!=="CA"&&E!=="BB"||!e.MaxAsa[O])){u[R]=0,m[R]=C;continue}(0,r.isNucleic)(I)?u[R]=h(E,B):I===r.MoleculeType.Protein?u[R]=s(E,B,O):u[R]=f(B),m[R]=C}S+=x.length}}function s(y,_,g){switch(_){case"O":return 5;case"S":return 6;case"N":return y==="NZ"?4:3;case"C":switch(y){case"C":case"CE1":case"CE2":case"CE3":case"CH2":case"CZ":case"CZ2":case"CZ3":return 1;case"CA":case"CB":case"CE":case"CG1":case"CG2":return 2;default:switch(g){case"PHE":case"TRP":case"TYR":case"HIS":case"ASP":case"ASN":return 1;case"PRO":case"LYS":case"ARG":case"MET":case"ILE":case"LEU":return 2;case"GLU":case"GLN":return y==="CD"?1:2}}}return f(_)}function h(y,_,g){switch(_){case"C":return 7;case"N":return 8;case"P":return 9;case"O":return 5}return f(_)}function f(y){const _=(0,n.VdwRadius)(y);let g=e.VdWLookup.indexOf(_);return g===-1&&(g=e.VdWLookup.length,e.VdWLookup[g]=_),g}return zP}var HP={},gH;function Cse(){if(gH)return HP;gH=1,Object.defineProperty(HP,"__esModule",{value:!0}),HP.computeArea=r;const e=Nw(),t=5e3;async function r(i,c){const{atomRadiusType:o}=c;for(let s=0;s<o.length;s+=t)i.shouldUpdate&&await i.update({message:"Computing per residue surface accessibility...",current:s,max:o.length}),n(c,s,Math.min(s+t,o.length))}function n(i,c,o){const{structure:s,atomRadiusType:h,serialResidueIndex:f,area:y,spherePoints:_,scalingConstant:g,maxLookupRadius:a,probeSize:d}=i,{lookup3d:p,serialMapping:u,unitIndexMap:m,units:v}=s,{cumulativeUnitElementCount:b,elementIndices:P,unitIndices:C}=u;for(let l=c;l<o;++l){const S=e.VdWLookup[h[l]];if(S===e.VdWLookup[0])continue;const T=v[C[l]],A=P[l],x=T.conformation.x(A),M=T.conformation.y(A),D=T.conformation.z(A),{count:V,units:R,indices:E,squaredDistances:I}=p.find(x,M,D,a),B=d+S,w=d+B,O=[];for(let L=0;L<V;++L){const U=R[L],q=b[m.get(U.id)]+E[L],N=P[q],k=e.VdWLookup[h[q]];if(T===U&&A===N||k===e.VdWLookup[0])continue;const j=d+k;if(I[L]<(w+k)*(w+k)){const H=P[q];O[O.length]=[I[L],(I[L]+B*B-j*j)/(2*B),U.conformation.x(H)-x,U.conformation.y(H)-M,U.conformation.z(H)-D]}}O.sort((L,U)=>L[0]-U[0]);let F=0;e:for(let L=0;L<_.length;++L){const[U,q,N]=_[L];for(let k=0;k<O.length;++k){const[,j,H,G,z]=O[k];if(U*H+q*G+N*z>j)continue e}++F}y[f[l]]+=g*F*B*B}}return HP}var yH;function JQ(){return yH||(yH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.AccessibleSurfaceArea=e.ShrakeRupleyComputationParams=void 0;const t=nt(),r=Ne(),n=Ge(),i=Ke(),c=Sse(),o=Nw(),s=Cse(),h=at();e.ShrakeRupleyComputationParams={numberOfSpherePoints:r.ParamDefinition.Numeric(92,{min:12,max:360,step:1},{description:"Number of sphere points to sample per atom: 92 (original paper), 960 (BioJava), 3000 (EPPIC) - see Shrake A, Rupley JA: Environment and exposure to solvent of protein atoms. Lysozyme and insulin. J Mol Biol 1973."}),probeSize:r.ParamDefinition.Numeric(1.4,{min:.1,max:4,step:.01},{description:"Corresponds to the size of a water molecule: 1.4 (original paper), 1.5 (occassionally used)"}),nonPolymer:r.ParamDefinition.Boolean(!1,{description:"Include non-polymer atoms as occluders."}),traceOnly:r.ParamDefinition.Boolean(!1,{description:"Compute only using alpha-carbons, if true increase probeSize accordingly (e.g., 4 A). Considers only canonical amino acids."})};var f;(function(y){function _(P,C={}){const l={...r.ParamDefinition.getDefaultValues(e.ShrakeRupleyComputationParams),...C};return t.Task.create("Compute Accessible Surface Area",async S=>await g(S,P,l))}y.compute=_;async function g(P,C,l){const S=a(C,l);(0,c.assignRadiusForHeavyAtoms)(S),await(0,s.computeArea)(P,S);const{area:T,serialResidueIndex:A}=S;return{area:T,serialResidueIndex:A}}function a(P,C){const{elementCount:l,atomicResidueCount:S}=P,{probeSize:T,nonPolymer:A,traceOnly:x,numberOfSpherePoints:M}=C;return{structure:P,probeSize:T,nonPolymer:A,traceOnly:x,spherePoints:d(M),scalingConstant:4*Math.PI/M,maxLookupRadius:2*C.probeSize+2*o.VdWLookup[2],atomRadiusType:new Int8Array(l),serialResidueIndex:new Int32Array(l),area:new Float32Array(S)}}function d(P){const C=[],l=Math.PI*(3-Math.sqrt(5)),S=2/P;for(let T=0;T<P;++T){const A=T*S-1+S/2,x=Math.sqrt(1-A*A),M=T*l;C[C.length]=n.Vec3.create(Math.cos(M)*x,A,Math.sin(M)*x)}return C}let p;(function(P){P[P.NA=0]="NA",P[P.Buried=1]="Buried",P[P.Accessible=2]="Accessible"})(p=y.Flags||(y.Flags={})),y.Flag={NA:p.NA,Buried:p.Buried,Accessible:p.Accessible};function u(P,C){const l=o.MaxAsa[P]||o.DefaultMaxAsa;return C/l}y.normalize=u;function m(P,C){const{area:l,serialResidueIndex:S}=C,T=S[h.SortedArray.indexOf(h.SortedArray.ofSortedArray(P.structure.root.serialMapping.elementIndices),P.element)];return T===-1?-1:l[T]}y.getValue=m;function v(P,C){const l=m(P,C);return l===-1?-1:u(i.StructureProperties.atom.label_comp_id(P),l)}y.getNormalizedValue=v;function b(P,C){const l=v(P,C);return l===-1?p.NA:l<.16?p.Buried:p.Accessible}y.getFlag=b})(f||(e.AccessibleSurfaceArea=f={}))})(kA)),kA}var vH;function eZ(){return vH||(vH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AccessibleSurfaceAreaProvider=e.AccessibleSurfaceAreaSymbols=e.AccessibleSurfaceAreaParams=void 0;const t=Ne(),r=JQ(),n=Ke(),i=wf(),c=LS(),o=Mf(),s=tS(),h=Pr();e.AccessibleSurfaceAreaParams={...r.ShrakeRupleyComputationParams},e.AccessibleSurfaceAreaSymbols={isBuried:c.QuerySymbolRuntime.Dynamic((0,o.CustomPropSymbol)("computed","accessible-surface-area.is-buried",s.Type.Bool),f=>{if(!n.Unit.isAtomic(f.element.unit))return!1;const y=e.AccessibleSurfaceAreaProvider.get(f.element.structure).value;return y?r.AccessibleSurfaceArea.getFlag(f.element,y)===r.AccessibleSurfaceArea.Flags.Buried:!1}),isAccessible:c.QuerySymbolRuntime.Dynamic((0,o.CustomPropSymbol)("computed","accessible-surface-area.is-accessible",s.Type.Bool),f=>{if(!n.Unit.isAtomic(f.element.unit))return!1;const y=e.AccessibleSurfaceAreaProvider.get(f.element.structure).value;return y?r.AccessibleSurfaceArea.getFlag(f.element,y)===r.AccessibleSurfaceArea.Flags.Accessible:!1})},e.AccessibleSurfaceAreaProvider=i.CustomStructureProperty.createProvider({label:"Accessible Surface Area",descriptor:(0,h.CustomPropertyDescriptor)({name:"molstar_accessible_surface_area",symbols:e.AccessibleSurfaceAreaSymbols}),type:"root",defaultParams:e.AccessibleSurfaceAreaParams,getParams:f=>e.AccessibleSurfaceAreaParams,isApplicable:f=>!0,obtain:async(f,y,_)=>{const g={...t.ParamDefinition.getDefaultValues(e.AccessibleSurfaceAreaParams),..._};return{value:await r.AccessibleSurfaceArea.compute(y,g).runInContext(f.runtime)}}})})(OA)),OA}var FA={},bH;function Pse(){return bH||(bH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.AccessibleSurfaceAreaColorThemeProvider=e.AccessibleSurfaceAreaColorThemeParams=void 0,e.getAccessibleSurfaceAreaColorThemeParams=y,e.AccessibleSurfaceAreaColorTheme=_;const t=Ne(),r=vt(),n=Ke(),i=eZ(),c=JQ(),o=_t(),s=Ut(),h=(0,r.Color)(16448250),f="Assigns a color based on the relative accessible surface area of a residue.";e.AccessibleSurfaceAreaColorThemeParams={list:t.ParamDefinition.ColorList("yellow-green-blue",{presetKind:"scale"})};function y(g){return e.AccessibleSurfaceAreaColorThemeParams}function _(g,a){let d;const p=r.ColorScale.create({listOrName:a.list.colors,minLabel:"buried",maxLabel:"exposed",domain:[0,1]}),u=g.structure&&i.AccessibleSurfaceAreaProvider.get(g.structure),m=u?(0,o.hash2)(u.id,u.version):-1;if(u?.value&&g.structure){const v=n.StructureElement.Location.create(g.structure),b=u.value,P=C=>{const l=c.AccessibleSurfaceArea.getNormalizedValue(C,b);return l===-1?h:p.color(l)};d=C=>n.StructureElement.Location.is(C)&&n.Unit.isAtomic(C.unit)?P(C):n.Bond.isLocation(C)?(v.unit=C.aUnit,v.element=C.aUnit.elements[C.aIndex],P(v)):h}else d=()=>h;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,contextHash:m,description:f,legend:p?p.legend:void 0}}e.AccessibleSurfaceAreaColorThemeProvider={name:"accessible-surface-area",label:"Accessible Surface Area",category:s.ColorThemeCategory.Residue,factory:_,getParams:y,defaultValues:t.ParamDefinition.getDefaultValues(e.AccessibleSurfaceAreaColorThemeParams),isApplicable:g=>!!g.structure,ensureCustomProperties:{attach:(g,a)=>a.structure?i.AccessibleSurfaceAreaProvider.attach(g,a.structure,void 0,!0):Promise.resolve(),detach:g=>g.structure&&i.AccessibleSurfaceAreaProvider.ref(g.structure,!1)}}})(FA)),FA}var _H;function Tse(){if(_H)return xb;_H=1,Object.defineProperty(xb,"__esModule",{value:!0}),xb.AccessibleSurfaceArea=void 0;const e=di(),t=Ne(),r=eZ(),n=Pse(),i=at(),c=Vt(),o=LS(),s=jl(),h=dr();xb.AccessibleSurfaceArea=e.PluginBehavior.create({name:"computed-accessible-surface-area-prop",category:"custom-props",display:{name:"Accessible Surface Area"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.AccessibleSurfaceAreaProvider,this.labelProvider={label:g=>{if(this.params.showTooltip)return f(g)}}}update(g){const a=this.params.autoAttach!==g.autoAttach||this.params.showTooltip!==g.showTooltip;return this.params.autoAttach=g.autoAttach,this.params.showTooltip=g.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),a}register(){o.DefaultQueryRuntimeTable.addCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(n.AccessibleSurfaceAreaColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.query.structure.registry.add(y),this.ctx.query.structure.registry.add(_)}unregister(){o.DefaultQueryRuntimeTable.removeCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(n.AccessibleSurfaceAreaColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.query.structure.registry.remove(y),this.ctx.query.structure.registry.remove(_)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})});function f(g){if(g.kind==="element-loci"){if(g.elements.length===0)return;const a=r.AccessibleSurfaceAreaProvider.get(g.structure).value;if(!a||g.structure.customPropertyDescriptors.hasReference(r.AccessibleSurfaceAreaProvider.descriptor))return;const{getSerialIndex:d}=g.structure.root.serialMapping,{area:p,serialResidueIndex:u}=a,m=new Set;let v=0;for(const{indices:P,unit:C}of g.elements){const{elements:l}=C;i.OrderedSet.forEach(P,S=>{const T=u[d(C,l[S])];T!==-1&&!m.has(T)&&(v+=p[T],m.add(T))})}return m.size===0?void 0:`Accessible Surface Area ${`<small>(${m.size} ${m.size>1?"Residues sum":"Residue"})</small>`}: ${v.toFixed(2)} â«<sup>2</sup>`}else if(g.kind==="structure-loci"){const a=r.AccessibleSurfaceAreaProvider.get(g.structure).value;return!a||g.structure.customPropertyDescriptors.hasReference(r.AccessibleSurfaceAreaProvider.descriptor)?void 0:`Accessible Surface Area <small>(Whole Structure)</small>: ${(0,c.arraySum)(a.area).toFixed(2)} â«<sup>2</sup>`}}const y=(0,s.StructureSelectionQuery)("Buried Protein Residues",h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.modifier.wholeResidues([h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.generator.atomGroups({"chain-test":h.MolScriptBuilder.core.rel.eq([h.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":r.AccessibleSurfaceAreaSymbols.isBuried.symbol()})])])]),{description:"Select buried protein residues.",category:s.StructureSelectionCategory.Residue,ensureCustomProperties:(g,a)=>r.AccessibleSurfaceAreaProvider.attach(g,a)}),_=(0,s.StructureSelectionQuery)("Accessible Protein Residues",h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.modifier.wholeResidues([h.MolScriptBuilder.struct.modifier.union([h.MolScriptBuilder.struct.generator.atomGroups({"chain-test":h.MolScriptBuilder.core.rel.eq([h.MolScriptBuilder.ammp("objectPrimitive"),"atomistic"]),"residue-test":r.AccessibleSurfaceAreaSymbols.isAccessible.symbol()})])])]),{description:"Select accessible protein residues.",category:s.StructureSelectionCategory.Residue,ensureCustomProperties:(g,a)=>r.AccessibleSurfaceAreaProvider.attach(g,a)});return xb}var Ab={},LA={},NA={},Qu={},qA={},UA={},ji={},en={},SH;function ra(){if(SH)return en;SH=1,Object.defineProperty(en,"__esModule",{value:!0}),en.typeSymbol=r,en.formalCharge=n,en.atomId=i,en.altLoc=c,en.compId=o,en.interBondCount=s,en.intraBondCount=h,en.bondCount=f,en.bondToElementCount=y,en.intraConnectedTo=_,en.interConnectedTo=g,en.connectedTo=a,en.eachInterBondedAtom=d,en.eachIntraBondedAtom=p,en.eachBondedAtom=u,en.eachResidueAtom=m;const e=dt(),t=at();function r(v,b){return v.model.atomicHierarchy.atoms.type_symbol.value(v.elements[b])}function n(v,b){return v.model.atomicHierarchy.atoms.pdbx_formal_charge.value(v.elements[b])}function i(v,b){return v.model.atomicHierarchy.atoms.label_atom_id.value(v.elements[b])}function c(v,b){return v.model.atomicHierarchy.atoms.label_alt_id.value(v.elements[b])}function o(v,b){return v.model.atomicHierarchy.atoms.label_comp_id.value(v.elements[b])}function s(v,b,P){let C=0;const l=v.interUnitBonds.getEdgeIndices(P,b.id);for(let S=0,T=l.length;S<T;++S){const A=v.interUnitBonds.edges[l[S]];e.BondType.isCovalent(A.props.flag)&&(C+=1)}return C}function h(v,b){let P=0;const{offset:C,edgeProps:{flags:l}}=v.bonds;for(let S=C[b],T=C[b+1];S<T;++S)e.BondType.isCovalent(l[S])&&(P+=1);return P}function f(v,b,P){return s(v,b,P)+h(b,P)}function y(v,b,P,C){let l=0;return u(v,b,P,(S,T)=>{r(S,T)===C&&(l+=1)}),l}function _(v,b,P){const{offset:C,b:l,edgeProps:{flags:S}}=v.bonds;e.BondType.is;for(let T=C[b],A=C[b+1];T<A;++T)if(l[T]===P&&e.BondType.isCovalent(S[T]))return!0;return!1}function g(v,b,P,C,l){const S=v.interUnitBonds.getEdge(P,b.id,l,C.id);return S&&e.BondType.isCovalent(S.props.flag)}function a(v,b,P,C,l){return b===C?_(b,P,l):g(v,b,P,C,l)}function d(v,b,P,C){const l=v.interUnitBonds.getEdgeIndices(P,b.id);for(let S=0,T=l.length;S<T;++S){const A=v.interUnitBonds.edges[l[S]],x=v.unitMap.get(A.unitB);e.BondType.isCovalent(A.props.flag)&&C(x,A.indexB)}}function p(v,b,P){const{offset:C,b:l,edgeProps:{flags:S}}=v.bonds;for(let T=C[b],A=C[b+1];T<A;++T)e.BondType.isCovalent(S[T])&&P(v,l[T])}function u(v,b,P,C){d(v,b,P,C),p(b,P,C)}function m(v,b,P){const{offsets:C}=v.model.atomicHierarchy.residueAtomSegments,l=v.getResidueIndex(b);for(let S=C[l],T=C[l+1];S<T;++S){const A=t.SortedArray.indexOf(v.elements,S);A!==-1&&P(A)}}return en}var CH;
7083function v2(){if(CH)return ji;CH=1,Object.defineProperty(ji,"__esModule",{value:!0}),ji.AtomGeometryAngles=ji.AtomGeometry=void 0,ji.geometryLabel=c,ji.assignGeometry=o,ji.calcAngles=g,ji.calcPlaneAngle=a,ji.closestHydrogenIndex=d;const e=er(),t=Ge(),r=ra(),n=Xi();var i;(function(p){p[p.Spherical=0]="Spherical",p[p.Terminal=1]="Terminal",p[p.Linear=2]="Linear",p[p.Trigonal=3]="Trigonal",p[p.Tetrahedral=4]="Tetrahedral",p[p.TrigonalBiPyramidal=5]="TrigonalBiPyramidal",p[p.Octahedral=6]="Octahedral",p[p.SquarePlanar=7]="SquarePlanar",p[p.Unknown=8]="Unknown"})(i||(ji.AtomGeometry=i={}));function c(p){switch(p){case i.Spherical:return"Spherical";case i.Terminal:return"Terminal";case i.Linear:return"Linear";case i.Trigonal:return"Trigonal";case i.Tetrahedral:return"Tetrahedral";case i.TrigonalBiPyramidal:return"Trigonal Bi-Pyramidal";case i.Octahedral:return"Octahedral";case i.SquarePlanar:return"Square Planar";case i.Unknown:return"Unknown"}}function o(p){switch(p){case 0:return i.Spherical;case 1:return i.Terminal;case 2:return i.Linear;case 3:return i.Trigonal;case 4:return i.Tetrahedral;default:return i.Unknown}}ji.AtomGeometryAngles=new Map([[i.Linear,(0,e.degToRad)(180)],[i.Trigonal,(0,e.degToRad)(120)],[i.Tetrahedral,(0,e.degToRad)(109.4721)],[i.Octahedral,(0,e.degToRad)(90)]]);const s=(0,t.Vec3)(),h=(0,t.Vec3)(),f=(0,t.Vec3)(),y=(0,t.Vec3)(),_=(0,t.Vec3)();function g(p,u,m,v,b,P=!0){const C=[],l=[];return u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f),(0,r.eachBondedAtom)(p,u,m,(S,T)=>{(0,r.typeSymbol)(S,T)!==n.Elements.H?(S.conformation.position(S.elements[T],_),t.Vec3.sub(h,_,f),C.push(t.Vec3.angle(s,h))):P||(S.conformation.position(S.elements[T],_),t.Vec3.sub(h,_,f),l.push(t.Vec3.angle(s,h)))}),[C,l]}function a(p,u,m,v,b){u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f);const P=[(0,t.Vec3)(),(0,t.Vec3)()];let C=0,l,S;if((0,r.eachBondedAtom)(p,u,m,(T,A)=>{C>1||(0,r.typeSymbol)(T,A)!==n.Elements.H&&(l=T,S=A,T.conformation.position(T.elements[A],_),t.Vec3.sub(P[C++],_,f))}),C===1&&l&&S&&(0,r.eachBondedAtom)(p,l,S,(T,A)=>{C>1||T===u&&A===m||(0,r.typeSymbol)(T,A)!==n.Elements.H&&(T.conformation.position(T.elements[A],_),t.Vec3.sub(P[C++],_,f))}),C===2)return t.Vec3.cross(h,P[0],P[1]),Math.abs(Math.PI/2-t.Vec3.angle(h,s))}function d(p,u,m,v,b){let P=m;u.conformation.position(u.elements[m],f),v.conformation.position(v.elements[b],y),t.Vec3.sub(s,y,f);let C=t.Vec3.squaredDistance(f,y);return(0,r.eachBondedAtom)(p,u,m,(l,S)=>{if((0,r.typeSymbol)(l,S)===n.Elements.H){l.conformation.position(l.elements[S],_);const T=t.Vec3.squaredDistance(_,y);T<C&&(C=T,P=S)}}),P}return ji}var PH;function xse(){return PH||(PH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValenceModelParams=void 0,e.explicitValence=g,e.calculateHydrogensCharge=p,e.calcValenceModel=m;const t=Ke(),r=Xi(),n=v2(),i=ra(),c=Ne(),o=Ct(),s=at(),h=dt(),f=new t.Bond.ElementBondIterator,y=new t.Bond.ElementBondIterator;function _(v,b,P){const C=(0,i.typeSymbol)(b,P),l=C===r.Elements.O||C===r.Elements.N;if(l&&(0,i.bondCount)(v,b,P)===4)return!1;for(f.setElement(v,b,P);f.hasNext;){const S=f.move();if(S.order>1)return!0;if(l){const T=(0,i.typeSymbol)(S.otherUnit,S.otherIndex);for(y.setElement(v,S.otherUnit,S.otherIndex);y.hasNext;){const A=y.move();if(A.order>1){if((T===r.Elements.P||T===r.Elements.S)&&(0,i.typeSymbol)(A.otherUnit,A.otherIndex)===r.Elements.O)continue;return!0}}}}return!1}function g(v,b,P){let C=0;const{offset:l,edgeProps:{flags:S,order:T}}=b.bonds;for(let A=l[P],x=l[P+1];A<x;++A)h.BondType.isCovalent(S[A])&&(C+=T[A]);return v.interUnitBonds.getEdgeIndices(P,b.id).forEach(A=>{const x=v.interUnitBonds.edges[A];h.BondType.isCovalent(x.props.flag)&&(C+=x.props.order)}),C}const a=new t.Bond.ElementBondIterator,d=new t.Bond.ElementBondIterator;function p(v,b,P,C,l){const S=(0,i.bondToElementCount)(v,b,P,r.Elements.H),T=(0,i.typeSymbol)(b,P);let A=(0,i.formalCharge)(b,P);const x=C.assignCharge==="always"||C.assignCharge==="auto"&&A===0,M=C.assignH==="always"||
7083C.assignH==="auto"&&!l&&S===0,D=(0,i.bondCount)(v,b,P),V=g(v,b,P),R=_(v,b,P),E=V-D>0;let I=0,B=n.AtomGeometry.Unknown;switch(T){case r.Elements.H:x&&(D===0?(A=1,B=n.AtomGeometry.Spherical):D===1&&(A=0,B=n.AtomGeometry.Terminal));break;case r.Elements.C:x&&(A=0),M&&(I=Math.max(0,4-V-Math.abs(A))),B=(0,n.assignGeometry)(D+I+Math.max(0,-A));break;case r.Elements.N:if(x)if(!M)A=V-3;else if(R&&V<4)D-S===1&&V-S===2?A=1:A=0;else for(a.setElement(v,b,P);a.hasNext;){const w=a.move(),O=(0,i.typeSymbol)(w.otherUnit,w.otherIndex);if(O===r.Elements.S||(0,r.isMetal)(O)){A=0;break}else A=1}M&&(I=Math.max(0,3-V+A)),R&&!E?B=(0,n.assignGeometry)(D+I-A):B=(0,n.assignGeometry)(D+I+1-A);break;case r.Elements.O:if(x&&(M||(A=V-2),V===1)){a.setElement(v,b,P);e:for(;a.hasNext;){const w=a.move();for(d.setElement(v,w.otherUnit,w.otherIndex);d.hasNext;){const O=d.move();if(!(O.otherUnit===b&&O.otherIndex===P)&&(0,i.typeSymbol)(O.otherUnit,O.otherIndex)===r.Elements.O&&O.order===2){A=-1;break e}}}}M&&(I=Math.max(0,2-V+A)),R&&!E?B=(0,n.assignGeometry)(D+I-A+1):B=(0,n.assignGeometry)(D+I-A+2);break;case r.Elements.S:x&&(M||(V<=3&&(0,i.bondToElementCount)(v,b,P,r.Elements.O)===0?A=V-2:A=0)),M&&V<2&&(I=Math.max(0,2-V+A)),V<=3&&(B=(0,n.assignGeometry)(D+I-A+2));break;case r.Elements.F:case r.Elements.CL:case r.Elements.BR:case r.Elements.I:case r.Elements.AT:x&&(A=V-1);break;case r.Elements.LI:case r.Elements.NA:case r.Elements.K:case r.Elements.RB:case r.Elements.CS:case r.Elements.FR:x&&(A=1-V);break;case r.Elements.BE:case r.Elements.MG:case r.Elements.CA:case r.Elements.SR:case r.Elements.BA:case r.Elements.RA:x&&(A=2-V);break;default:o.isDebugMode&&console.warn("Requested charge, protonation for an unhandled element",T)}return[A,I,I+S,B]}function u(v,b,P){const C=b.elements.length,l=new Int8Array(C),S=new Int8Array(C),T=new Int8Array(C),A=new Int8Array(C),x=!!v.parent;let M;if(x){const V=v.root.unitMap.get(b.id);if(M=s.SortedArray.indicesOf(V.elements,b.elements),M.length!==b.elements.length)throw new Error("expected to find an index for every element");b=V,v=v.root}let D=!1;for(let V=0;V<C;++V){const R=x?M[V]:V;if((0,i.typeSymbol)(b,R)===r.Elements.H){D=!0;break}}for(let V=0;V<C;++V){const R=x?M[V]:V,[E,I,B,w]=p(v,b,R,P,D);l[V]=E,S[V]=I,T[V]=B,A[V]=w}return{charge:l,implicitH:S,totalH:T,idealGeometry:A}}e.ValenceModelParams={assignCharge:c.ParamDefinition.Select("auto",[["always","always"],["auto","auto"],["never","never"]]),assignH:c.ParamDefinition.Select("auto",[["always","always"],["auto","auto"],["never","never"]])};async function m(v,b,P){const C={...c.ParamDefinition.getDefaultValues(e.ValenceModelParams),...P},l=new Map,S=`valence-model-${JSON.stringify(C)}`;for(let T=0,A=b.units.length;T<A;++T){const x=b.units[T];if(t.Unit.isAtomic(x)){let M;x.transientCache.has(S)?M=x.transientCache.get(S):(M=u(b,x,C),x.transientCache.set(S,M)),l.set(x.id,M)}}return l}})(UA)),UA}var TH;function QS(){return TH||(TH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValenceModelProvider=e.ValenceModelParams=void 0;const t=Ne(),r=xse(),n=wf(),i=Pr();e.ValenceModelParams={...r.ValenceModelParams},e.ValenceModelProvider=n.CustomStructureProperty.createProvider({label:"Valence Model",descriptor:(0,i.CustomPropertyDescriptor)({name:"molstar_computed_valence_model"}),type:"local",defaultParams:e.ValenceModelParams,getParams:c=>e.ValenceModelParams,isApplicable:c=>!0,obtain:async(c,o,s)=>{const h={...t.ParamDefinition.getDefaultValues(e.ValenceModelParams),...s};return{value:await(0,r.calcValenceModel)(c.runtime,o,h)}}})})(qA)),qA}var xH;function hs(){if(xH)return Qu;xH=1,Object.defineProperty(Qu,"__esModule",{value:!0}),Qu.FeaturesBuilder=Qu.Features=void 0;const e=_t(),t=rt(),r=at(),n=QS(),i=Ge(),c=wT();var o;(function(h){function f(b,P,C,l){return i.Vec3.set(b,l.x[C],l.y[C],l.z[C]),i.Vec3.transformMat4(b,b,P.conformation.operator.matrix),b}h.setPosition=f;function y(b,P){const C=new Int32Array(P+1),l=new Int32Array(P),S=new Int32Array(P),{members:T,count:A,offsets:x}=b;for(let V=0,R=x[A];V<R;++V)++S[T[V]];let M=0;for(let V=0;V<P;V++)C[V]=M,M+=S[V];C[P]=M;const D=new Int32Array(M);for(let V=0;V<A;++V)for(let R=x[V],E=x[V+1];R<E;++R){const I=T[R],B=C[I]+l[I];D[B]=V,++l[I]}return{indices:D,offsets:C}}h.createElementsIndex=y;function _(b,P){let C,l;return{...P,get lookup3d(){if(!C){const S={x:P.x,y:P.y,z:P.z,indices:r.OrderedSet.ofBounds(0,P.count)};C=(0,t.GridLookup3D)(S,(0,c.getBoundary)(S))}return C},get elementsIndex(){return l||(l=y(P,b))},subset:S=>g(P,S)}}h.create=_;function g(b,P){let C;const{count:l,types:S}=b,T=[];for(let x=0;x<l;++x)P.has(S[x])&&T.push(x);const A=r.SortedArray.ofSortedArray(T);return{indices:A,get lookup3d(){if(!C){const x={x:b.x,y:b.y,z:b.z,indices:A};C=(0,t.GridLookup3D)(x,(0,c.getBoundary)(x))}return C}}}h.createSubset=g;function a(b,P,C){const l=n.ValenceModelProvider.get(b).value;if(!l||!l.has(P.id))throw new Error("valence model required");return{unit:P,types:C.types,feature:-1,x:C.x,y:C.y,z:C.z,members:C.members,offsets:C.offsets,idealGeometry:l.get(P.i
7083d).idealGeometry}}h.Info=a;function d(b,P){return i.Vec3.set(b,P.x[P.feature],P.y[P.feature],P.z[P.feature]),i.Vec3.transformMat4(b,b,P.unit.conformation.operator.matrix),b}h.position=d;const p=(0,i.Vec3)(),u=(0,i.Vec3)();function m(b,P){const C=b.members[b.offsets[b.feature]],l=P.members[P.offsets[P.feature]];return b.unit.conformation.position(b.unit.elements[C],p),P.unit.conformation.position(P.unit.elements[l],u),i.Vec3.distance(p,u)}h.distance=m;function v(b,P){return{types:new Set(b),add:P}}h.Provider=v})(o||(Qu.Features=o={}));var s;return(function(h){function f(y=2048,_=1024,g){const a=e.ChunkedArray.create(Float32Array,1,_,g?g.x:y),d=e.ChunkedArray.create(Float32Array,1,_,g?g.y:y),p=e.ChunkedArray.create(Float32Array,1,_,g?g.z:y),u=e.ChunkedArray.create(Uint8Array,1,_,g?g.types:y),m=e.ChunkedArray.create(Uint8Array,1,_,g?g.groups:y),v=e.ChunkedArray.create(Uint32Array,1,_,g?g.offsets:y),b=e.ChunkedArray.create(Uint32Array,1,_,g?g.members:y),P={x:0,y:0,z:0,offset:0,count:0};return{startState:()=>{P.x=0,P.y=0,P.z=0,P.offset=b.elementCount,P.count=0},pushMember:(C,l,S,T)=>{e.ChunkedArray.add(b,T),P.x+=C,P.y+=l,P.z+=S,P.count+=1},markMember:C=>{e.ChunkedArray.add(b,C)},finishState:(C,l)=>{const{count:S}=P;S!==0&&(e.ChunkedArray.add(u,C),e.ChunkedArray.add(m,l),e.ChunkedArray.add(a,P.x/S),e.ChunkedArray.add(d,P.y/S),e.ChunkedArray.add(p,P.z/S),e.ChunkedArray.add(v,P.offset))},add:(C,l,S,T,A,x)=>{e.ChunkedArray.add(u,C),e.ChunkedArray.add(m,l),e.ChunkedArray.add(a,S),e.ChunkedArray.add(d,T),e.ChunkedArray.add(p,A),e.ChunkedArray.add(v,b.elementCount),e.ChunkedArray.add(b,x)},getFeatures:C=>{e.ChunkedArray.add(v,b.elementCount);const l=e.ChunkedArray.compact(a,!0),S=e.ChunkedArray.compact(d,!0),T=e.ChunkedArray.compact(p,!0),A=a.elementCount;return o.create(C,{x:l,y:S,z:T,count:A,types:e.ChunkedArray.compact(u,!0),groups:e.ChunkedArray.compact(m,!0),offsets:e.ChunkedArray.compact(v,!0),members:e.ChunkedArray.compact(b,!0)})}}}h.create=f})(s||(Qu.FeaturesBuilder=s={})),Qu}var Wr={},AH;function si(){if(AH)return Wr;AH=1,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.FeatureGroup=Wr.FeatureTypes=Wr.FeatureType=Wr.InteractionType=Wr.InteractionFlag=Wr.InteractionsInterContacts=Wr.InteractionsIntraContacts=void 0,Wr.interactionTypeLabel=c,Wr.featureTypeLabel=h,Wr.featureGroupLabel=y;const e=xT();var t;(function(_){function g(a,d,p){const u=new Int32Array(p+1),m=new Int32Array(p),v=new Int32Array(p),{members:b,offsets:P}=d;for(let S=0,T=a.edgeCount*2;S<T;++S){const A=a.a[S],x=a.b[S];if(!(A>x)){for(let M=P[A],D=P[A+1];M<D;++M)++v[b[M]];for(let M=P[x],D=P[x+1];M<D;++M)++v[b[M]]}}let C=0;for(let S=0;S<p;S++)u[S]=C,C+=v[S];u[p]=C;const l=new Int32Array(C);for(let S=0,T=a.edgeCount*2;S<T;++S){const A=a.a[S],x=a.b[S];if(!(A>x)){for(let M=P[A],D=P[A+1];M<D;++M){const V=b[M],R=u[V]+m[V];l[R]=S,++m[V]}for(let M=P[x],D=P[x+1];M<D;++M){const V=b[M],R=u[V]+m[V];l[R]=S,++m[V]}}}return{indices:l,offsets:u}}_.createElementsIndex=g})(t||(Wr.InteractionsIntraContacts=t={}));class r extends e.InterUnitGraph{getContactIndicesForElement(g,a){return this.elementKeyIndex.get(this.getElementKey(g,a.id))||[]}getElementKey(g,a){return`${g}|${a}`}constructor(g,a){super(g),this.elementKeyIndex=new Map;for(let d=0,p=this.edges.length;d<p;++d){const{unitA:u,indexA:m}=this.edges[d],{offsets:v,members:b}=a.get(u);for(let P=v[m],C=v[m+1];P<C;++P){const l=this.getElementKey(b[P],u),S=this.elementKeyIndex.get(l);S===void 0?this.elementKeyIndex.set(l,[d]):S.push(d)}}}}Wr.InteractionsInterContacts=r;var n;(function(_){_[_.None=0]="None",_[_.Filtered=1]="Filtered"})(n||(Wr.InteractionFlag=n={}));var i;(function(_){_[_.Unknown=0]="Unknown",_[_.Ionic=1]="Ionic",_[_.CationPi=2]="CationPi",_[_.PiStacking=3]="PiStacking",_[_.HydrogenBond=4]="HydrogenBond",_[_.HalogenBond=5]="HalogenBond",_[_.Hydrophobic=6]="Hydrophobic",_[_.MetalCoordination=7]="MetalCoordination",_[_.WeakHydrogenBond=8]="WeakHydrogenBond",_[_.WaterBridge=9]="WaterBridge"})(i||(Wr.InteractionType=i={}));function c(_){switch(_){case i.HydrogenBond:return"Hydrogen Bond";case i.Hydrophobic:return"Hydrophobic Contact";case i.HalogenBond:return"Halogen Bond";case i.Ionic:return"Ionic Interaction";case i.MetalCoordination:return"Metal Coordination";case i.CationPi:return"Cation-Pi Interaction";case i.PiStacking:return"Pi Stacking";case i.WeakHydrogenBond:return"Weak Hydrogen Bond";case i.WaterBridge:return"Water Bridge";case i.Unknown:return"Unknown Interaction"}}var o;(function(_){_[_.None=0]="None",_[_.PositiveCharge=1]="PositiveCharge",_[_.NegativeCharge=2]="NegativeCharge",_[_.AromaticRing=3]="AromaticRing",_[_.HydrogenDonor=4]="HydrogenDonor",_[_.HydrogenAcceptor=5]="HydrogenAcceptor",_[_.HalogenDonor=6]="HalogenDonor",_[_.HalogenAcceptor=7]="HalogenAcceptor",_[_.HydrophobicAtom=8]="HydrophobicAtom",_[_.WeakHydrogenDonor=9]="WeakHydrogenDonor",_[_.IonicTypePartner=10]="IonicTypePartner",_[_.DativeBondPartner=11]="DativeBondPartner",_[_.TransitionMetal=12]="TransitionMetal",_[_.IonicTypeMetal=13]="IonicTypeMetal"}
7083)(o||(Wr.FeatureType=o={}));var s;(function(_){_[_.None=0]="None",_[_.PositiveCharge=1]="PositiveCharge",_[_.NegativeCharge=2]="NegativeCharge",_[_.AromaticRing=3]="AromaticRing",_[_.HydrogenDonor=4]="HydrogenDonor",_[_.HydrogenAcceptor=5]="HydrogenAcceptor",_[_.HalogenDonor=6]="HalogenDonor",_[_.HalogenAcceptor=7]="HalogenAcceptor",_[_.HydrophobicAtom=8]="HydrophobicAtom",_[_.WeakHydrogenDonor=9]="WeakHydrogenDonor",_[_.IonicTypePartner=10]="IonicTypePartner",_[_.DativeBondPartner=11]="DativeBondPartner",_[_.TransitionMetal=12]="TransitionMetal",_[_.IonicTypeMetal=13]="IonicTypeMetal"})(s||(Wr.FeatureTypes=s={}));function h(_){switch(_){case o.None:return"None";case o.PositiveCharge:return"Positive Charge";case o.NegativeCharge:return"Negative Charge";case o.AromaticRing:return"Aromatic Ring";case o.HydrogenDonor:return"Hydrogen Donor";case o.HydrogenAcceptor:return"Hydrogen Acceptor";case o.HalogenDonor:return"Halogen Donor";case o.HalogenAcceptor:return"Halogen Acceptor";case o.HydrophobicAtom:return"HydrophobicAtom";case o.WeakHydrogenDonor:return"Weak Hydrogen Donor";case o.IonicTypePartner:return"Ionic Type Partner";case o.DativeBondPartner:return"Dative Bond Partner";case o.TransitionMetal:return"Transition Metal";case o.IonicTypeMetal:return"Ionic Type Metal"}}var f;(function(_){_[_.None=0]="None",_[_.QuaternaryAmine=1]="QuaternaryAmine",_[_.TertiaryAmine=2]="TertiaryAmine",_[_.Sulfonium=3]="Sulfonium",_[_.SulfonicAcid=4]="SulfonicAcid",_[_.Sulfate=5]="Sulfate",_[_.Phosphate=6]="Phosphate",_[_.Halocarbon=7]="Halocarbon",_[_.Guanidine=8]="Guanidine",_[_.Acetamidine=9]="Acetamidine",_[_.Carboxylate=10]="Carboxylate"})(f||(Wr.FeatureGroup=f={}));function y(_){switch(_){case f.None:return"None";case f.QuaternaryAmine:return"Quaternary Amine";case f.TertiaryAmine:return"Tertiary Amine";case f.Sulfonium:return"Sulfonium";case f.SulfonicAcid:return"Sulfonic Acid";case f.Sulfate:return"Sulfate";case f.Phosphate:return"Phosphate";case f.Halocarbon:return"Halocarbon";case f.Guanidine:return"Guanidine";case f.Acetamidine:return"Acetamidine";case f.Carboxylate:return"Carboxylate"}}return Wr}var Zu={},MH;function Ase(){if(MH)return Zu;MH=1,Object.defineProperty(Zu,"__esModule",{value:!0}),Zu.InterContactsBuilder=Zu.IntraContactsBuilder=void 0;const e=is(),t=si(),r=xT();var n;(function(c){function o(s,h){const f=[],y=[],_=[];return{add(g,a,d){f[f.length]=g,y[y.length]=a,_[_.length]=d},getContacts(){const g=new e.IntAdjacencyGraph.EdgeBuilder(s.count,f,y),a=new Int8Array(g.slotCount),d=new Int8Array(g.slotCount);for(let v=0,b=g.edgeCount;v<b;v++)g.addNextEdge(),g.assignProperty(a,_[v]);const p=g.createGraph({type:a,flag:d});let u;return Object.defineProperty(p,"elementsIndex",{get:()=>u||(u=t.InteractionsIntraContacts.createElementsIndex(p,s,h))})}}}c.create=o})(n||(Zu.IntraContactsBuilder=n={}));var i;return(function(c){function o(){const s=new r.InterUnitGraph.Builder;return{startUnitPair(h,f){s.startUnitPair(h.id,f.id)},finishUnitPair(){s.finishUnitPair()},add(h,f,y){s.add(h,f,{type:y,flag:t.InteractionFlag.None})},getContacts(h){return new t.InteractionsInterContacts(s.getMap(),h)}}}c.create=o})(i||(Zu.InterContactsBuilder=i={})),Zu}var Ju={},DH;function Mse(){if(DH)return Ju;DH=1,Object.defineProperty(Ju,"__esModule",{value:!0}),Ju.ContactsParams=void 0,Ju.addUnitContacts=v,Ju.addStructureContacts=C;const e=at(),t=Ge(),r=Ke(),n=ma(),i=Xi(),c=VT(),o=Ne(),s=ra(),h=hs();Ju.ContactsParams={lineOfSightDistFactor:o.ParamDefinition.Numeric(1,{min:0,max:3,step:.1})};const f=3;function y(l,S,T){const A=S.members[S.offsets[S.feature]],x=T.members[T.offsets[T.feature]];if(A===x&&S.unit===T.unit)return!1;const M=(0,s.altLoc)(S.unit,A),D=(0,s.altLoc)(T.unit,x);return!(M&&D&&M!==D||S.unit===T.unit&&S.unit.model.atomicHierarchy.residueAtomSegments.count>1&&S.unit.residueIndex[S.unit.elements[A]]===T.unit.residueIndex[T.unit.elements[x]]||(0,s.connectedTo)(l,S.unit,A,T.unit,x))}function _(l,S,T,A){const x=(0,s.altLoc)(l,S),M=(0,s.altLoc)(T,A);return x&&M&&x!==M}function g(l,S){const{feature:T,offsets:A,members:x}=S;for(let M=A[T],D=A[T+1];M<D;++M)if(x[M]===l)return!0;return!1}const a=(0,t.Vec3)(),d=(0,t.Vec3)(),p=(0,t.Vec3)(),u=(0,c.StructureLookup3DResultContext)();function m(l,S,T,A){const x=S.feature,M=T.feature,D=S.members[S.offsets[x]],V=T.members[T.offsets[M]];h.Features.position(d,S),h.Features.position(p,T),t.Vec3.scale(a,t.Vec3.add(a,d,p),.5);const R=A*f,{count:E,indices:I,units:B,squaredDistances:w}=l.lookup3d.find(a[0],a[1],a[2],R,u);if(E===0)return!0;for(let O=0;O<E;++O){const F=I[O],L=B[O];if(!r.Unit.isAtomic(L))continue;const U=(0,s.typeSymbol)(L,F);if(U===i.Elements.H)continue;const q=(0,n.VdwRadius)(U);if(!(q*q*A*A<=w[O])&&!(_(L,F,S.unit,D)||_(L,F,T.unit,V))&&!(S.unit===L&&g(F,S)||T.unit===L&&g(F,T))&&(L.conformation.position(L.elements[F],a),!(t.Vec3.squaredDistance(a,d)<1||t.Vec3.squaredDistance(a,p)<1)))return!1}return!0}function v(l,S,T,A,x,M){for(const D of x)b(l,S,T,A,D,M)}function b(l,S,T,A,x,M){const{x:D,y:V,z:R}=T,{lookup3d:E,indices:I}=T.subset(x.requiredFeatures),B=h.Features.Info(l,S,T),w={...B},O=M.lineOfSightDistFactor;for(let F=0,L=e.OrderedSet.size(I);F<L;++F){const U=e.OrderedSet.getAt(I,F),{count:q,indices:N,squaredDistances:k}=E.find(D[U],V[U],R[U],x.maxDistance);if(q!==0){B.feature=U;for(let j=0;j<q;++j){const H=e.OrderedSet.getAt(I,N[j]);if(H<=U||(w.feature=H,!y(l,B,w)))continue;const G=x.getType(l,B,w,k[j]);G&&m(l,B,w,O)&&A.add(U,H,G)}}}}const P=(0,t.Mat4)();function C(l,S,T,A,x,M,D,V){const{count:R,x:E,y:I,z:B}=T,{lookup3d:w}=x,O=t.Mat4.mul(P,A.conformation.operator.inverse,S.conformation.operator.matrix),F=!t.Mat4.isIdentity(O),L=(0,t.Vec3)(),U=Math.max(...D.map(z=>
7083z.maxDistance)),{center:q,radius:N}=w.boundary.sphere,k=(N+U)*(N+U),j=V.lineOfSightDistFactor,H=h.Features.Info(l,S,T),G=h.Features.Info(l,A,x);M.startUnitPair(S,A);for(let z=0;z<R;++z){if(t.Vec3.set(L,E[z],I[z],B[z]),F&&t.Vec3.transformMat4(L,L,O),t.Vec3.squaredDistance(L,q)>k)continue;const{indices:W,count:X,squaredDistances:Y}=w.find(L[0],L[1],L[2],U);if(X!==0){H.feature=z;for(let K=0;K<X;++K){const Q=W[K];if(G.feature=Q,!y(l,H,G))continue;const J=Y[K];for(const ae of D)if(J<ae.maxDistance*ae.maxDistance){const te=ae.getType(l,H,G,J);if(te&&m(l,H,G,j)){M.add(z,Q,te);break}}}}}M.finishUnitPair()}return Ju}var Yo={},IH;function Dse(){if(IH)return Yo;IH=1,Object.defineProperty(Yo,"__esModule",{value:!0}),Yo.HalogenBondsProvider=Yo.HalogenAcceptorProvider=Yo.HalogenDonorProvider=void 0;const e=Ne(),t=v2(),r=hs(),n=ra(),i=Xi(),c=er(),o=si(),s={distanceMax:e.ParamDefinition.Numeric(4,{min:1,max:5,step:.1}),angleMax:e.ParamDefinition.Numeric(30,{min:0,max:60,step:1})},h=[i.Elements.CL,i.Elements.BR,i.Elements.I,i.Elements.AT];function f(v,b,P){const{elements:C}=b,{x:l,y:S,z:T}=b.model.atomicConformation;for(let A=0,x=C.length;A<x;++A){const M=(0,n.typeSymbol)(b,A);h.includes(M)&&P.add(o.FeatureType.HalogenDonor,o.FeatureGroup.None,l[C[A]],S[C[A]],T[C[A]],A)}}const y=[i.Elements.N,i.Elements.O,i.Elements.S],_=[i.Elements.C,i.Elements.N,i.Elements.P,i.Elements.S];function g(v,b,P){const{elements:C}=b,{x:l,y:S,z:T}=b.model.atomicConformation;for(let A=0,x=C.length;A<x;++A){const M=(0,n.typeSymbol)(b,A);if(y.includes(M)){let D=!1;(0,n.eachBondedAtom)(v,b,A,(V,R)=>{_.includes((0,n.typeSymbol)(V,R))&&(D=!0)}),D&&P.add(o.FeatureType.HalogenAcceptor,o.FeatureGroup.None,l[C[A]],S[C[A]],T[C[A]],A)}}}function a(v,b){return v===o.FeatureType.HalogenAcceptor&&b===o.FeatureType.HalogenDonor||v===o.FeatureType.HalogenDonor&&b===o.FeatureType.HalogenAcceptor}const d=(0,c.degToRad)(180),p=(0,c.degToRad)(120);function u(v){return{angleMax:(0,c.degToRad)(v.angleMax)}}function m(v,b,P,C){const l=b.types[b.feature],S=P.types[P.feature];if(!a(l,S))return;const[T,A]=l===o.FeatureType.HalogenDonor?[b,P]:[P,b],x=T.members[T.offsets[T.feature]],M=A.members[A.offsets[A.feature]],[D]=(0,t.calcAngles)(v,T.unit,x,A.unit,M);if(D.length!==1||d-D[0]>C.angleMax)return;const[V]=(0,t.calcAngles)(v,A.unit,M,T.unit,x);if(V.length!==0&&!V.some(R=>p-R>C.angleMax))return o.InteractionType.HalogenBond}return Yo.HalogenDonorProvider=r.Features.Provider([o.FeatureType.HalogenDonor],f),Yo.HalogenAcceptorProvider=r.Features.Provider([o.FeatureType.HalogenAcceptor],g),Yo.HalogenBondsProvider={name:"halogen-bonds",params:s,createTester:v=>{const b=u(v);return{maxDistance:v.distanceMax,requiredFeatures:new Set([o.FeatureType.HalogenDonor,o.FeatureType.HalogenAcceptor]),getType:(P,C,l)=>m(P,C,l,b)}}},Yo}var jA={},wH;function tZ(){return wH||(wH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WeakHydrogenBondsProvider=e.HydrogenBondsProvider=e.HydrogenAcceptorProvider=e.WeakHydrogenDonorProvider=e.HydrogenDonorProvider=e.GeometryParams=void 0,e.getGeometryOptions=A,e.checkGeometry=D;const t=Ne(),r=v2(),n=hs(),i=ra(),c=Xi(),o=QS(),s=er(),h=si(),f=dt();e.GeometryParams={distanceMax:t.ParamDefinition.Numeric(3.5,{min:1,max:5,step:.1}),backbone:t.ParamDefinition.Boolean(!0,{description:"Include backbone-to-backbone hydrogen bonds"}),accAngleDevMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),ignoreHydrogens:t.ParamDefinition.Boolean(!1,{description:"Ignore explicit hydrogens in geometric constraints"}),donAngleDevMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accOutOfPlaneAngleMax:t.ParamDefinition.Numeric(90,{min:0,max:180,step:1}),donOutOfPlaneAngleMax:t.ParamDefinition.Numeric(45,{min:0,max:180,step:1})};const y={...e.GeometryParams,water:t.ParamDefinition.Boolean(!1,{description:"Include water-to-water hydrogen bonds"}),sulfurDistanceMax:t.ParamDefinition.Numeric(4.1,{min:1,max:5,step:.1})},_={...e.GeometryParams};function g(E,I){const B=o.ValenceModelProvider.get(E).value;if(!B)throw Error("expected valence model to be available");const w=B.get(I.id);if(!w)throw Error("expected valence model for unit to be available");return w}function a(E,I,B){const{totalH:w}=g(E,I),{elements:O}=I,{x:F,y:L,z:U}=I.model.atomicConformation;for(let q=0,N=O.length;q<N;++q){const k=(0,i.typeSymbol)(I,q);(P(I,q)||w[q]>0&&(k===c.Elements.N||k===c.Elements.O||k===c.Elements.S))&&B.add(h.FeatureType.HydrogenDonor,h.FeatureGroup.None,F[O[q]],L[O[q]],U[O[q]],q)}}function d(E,I,B){const{totalH:w}=g(E,I),{elements:O}=I,{x:F,y:L,z:U}=I.model.atomicConformation;for(let q=0,N=O.length;q<N;++q)(0,i.typeSymbol)(I,q)===c.Elements.C&&w[q]>0&&((0,i.bondToElementCount)(E,I,q,c.Elements.N)>0||(0,i.bondToElementCount)(E,I,q,c.Elements.O)>0||p(I,q))&&B.add(h.FeatureType.WeakHydrogenDonor,h.FeatureGroup.None,F[O[q]],L[O[q]],U[O[q]],q)}function p(E,I){const{elementAromaticRingIndices:B,all:w}=E.rings,O=B.get(I);if(O===void 0)return!1;for(let F=0,L=O.length;F<L;++F){const U=w[O[F]];for(let q=0,N=U.length;q<N;++q){const k=(0,i.typeSymbol)(E,U[q]);if(k===c.Elements.N||k===c.Elements.O)return!0}}return!1}function u(E,I,B){const{charge:w,implicitH:O,idealGeometry:F}=g(E,I),{elements:L}=I,{x:U,y:q,z:N}=I.model.atomicConformation,k=j=>{B.add(h.FeatureType.HydrogenAcceptor,h.FeatureGroup.None,U[L[j]],q[L[j]],N[L[j]],j)};for(let j=0,H=L.length;j<H;++j){const G=(0,i.typeSymbol)(I,j);if(G===c.Elements.O)k(j);else if(G===c.Elements.N){if(P(I,j))k(j);else if(w[j]<1){const z=(0,i.bondCount)(E,I,j)+O[j],W=F[j];(W===r.AtomGeometry.Tetrahedral&&z<4||W===r.AtomGeometry.Trigonal&&z<3||W===r.AtomGeometry.Linear&&z<2)&&k(j)}}else if(G===c.Elements.S){const z=(0,i.compId)(I,j);(z==="CYS"||z==="MET"||(0,i.formalCharge)(I,j)===-1)&&k(j)}}}function m(E,I){return E.model.atomicHierarchy.derived.residue.moleculeType[E.residueIndex[E.elements[I]]]===f.MoleculeType.Water}function v(E,I){return f.ProteinBackboneAtoms.has((0,i.atomId)(E,I))}function b(E,I){return E.rings.elementRingIndices.has(I)}function P(E,I){return(0,i.compId)(E,I)==="HIS"&&(0,i.typeSymbol)(E,I)===c.Elements.N&&b(E,I)}function C(E,I,B,w){return v(E,I)&&v(B,w)}function l(E,I,B,w){return m(E,I)&&m(B,w)}function S(E,I){return E===h.FeatureType.HydrogenAcceptor&&I===h.FeatureType.HydrogenDonor||E===h.FeatureType.HydrogenDonor&&I===h.FeatureType.HydrogenAcceptor}function T(E,I){return E===h.FeatureType.WeakHydrogenDonor&&I===h.FeatureType.HydrogenAcceptor||E===h.FeatureType.HydrogenAcceptor&&I===h.FeatureType.WeakHydrogenDonor}function A(E){return{ignoreHydrogens:E.ignoreHydrogens,includeBackbone:E.backbone,maxAccAngleDev:(0,s.degToRad)(E.accAngleDevMax),maxDonAngleDev:(0,s.degToRad)(E.donAngleDevMax),maxAccOutOfPlaneAngle:(0,s.degToRad)(E.accOutOfPlaneAngleMax),maxDonOutOfPlaneAngle:(0,s.degToRad)(E.donOutOfPlaneAngleMax)}}function x(E){return{...A(E),includeWater:E.water,maxSulfurDistSq:E.sulfurDistanceMax*E.sulfurDistanceMax,maxDistSq:E.distanceMax*E.distanceMax}}const M=(0,s.degToRad)(120);function D(E,I,B,w){const O=I.members[I.offsets[I.feature]],F=B.members[B.offsets[B.feature]];if(!w.includeBackbone&&C(I.unit,O,B.unit,F))return;const[L,U]=(0,r.calcAngles)(E,I.unit,O,B.unit,F,w.ignoreHydrogens),q=r.AtomGeometryAngles.get(I.idealGeometry[O])||M;
7083if(L.some(G=>Math.abs(q-G)>w.maxDonAngleDev)||U.length&&!U.some(G=>G<w.maxDonAngleDev))return;if(I.idealGeometry[O]===r.AtomGeometry.Trigonal){const G=(0,r.calcPlaneAngle)(E,I.unit,O,B.unit,F);if(G!==void 0&&G>w.maxDonOutOfPlaneAngle)return}let N=O;!w.ignoreHydrogens&&U.length>0&&(N=(0,r.closestHydrogenIndex)(E,I.unit,O,B.unit,F));const[k,j]=(0,r.calcAngles)(E,B.unit,F,I.unit,N,w.ignoreHydrogens),H=r.AtomGeometryAngles.get(B.idealGeometry[F])||M;if(!k.some(G=>H-G>w.maxAccAngleDev)&&!j.some(G=>H-G>w.maxAccAngleDev)){if(B.idealGeometry[F]===r.AtomGeometry.Trigonal){const G=(0,r.calcPlaneAngle)(E,B.unit,F,I.unit,O);if(G!==void 0&&G>w.maxAccOutOfPlaneAngle)return}return!0}}function V(E,I,B,w,O){const F=I.types[I.feature],L=B.types[B.feature];if(!S(F,L))return;const[U,q]=L===h.FeatureType.HydrogenAcceptor?[I,B]:[B,I],N=U.members[U.offsets[U.feature]],k=q.members[q.offsets[q.feature]],j=(0,i.typeSymbol)(U.unit,N)===c.Elements.S||(0,i.typeSymbol)(q.unit,k)===c.Elements.S?O.maxSulfurDistSq:O.maxDistSq;if(!(w>j)&&!(!O.includeWater&&l(U.unit,N,q.unit,k))&&D(E,U,q,O))return h.InteractionType.HydrogenBond}function R(E,I,B,w,O){const F=I.types[I.feature],L=B.types[B.feature];if(!T(F,L))return;const[U,q]=L===h.FeatureType.HydrogenAcceptor?[I,B]:[B,I];if(D(E,U,q,O))return h.InteractionType.WeakHydrogenBond}e.HydrogenDonorProvider=n.Features.Provider([h.FeatureType.HydrogenDonor],a),e.WeakHydrogenDonorProvider=n.Features.Provider([h.FeatureType.WeakHydrogenDonor],d),e.HydrogenAcceptorProvider=n.Features.Provider([h.FeatureType.HydrogenAcceptor],u),e.HydrogenBondsProvider={name:"hydrogen-bonds",params:y,createTester:E=>{const I=Math.max(E.distanceMax,E.sulfurDistanceMax),B=x(E);return{maxDistance:I,requiredFeatures:new Set([h.FeatureType.HydrogenDonor,h.FeatureType.HydrogenAcceptor]),getType:(w,O,F,L)=>V(w,O,F,L,B)}}},e.WeakHydrogenBondsProvider={name:"weak-hydrogen-bonds",params:_,createTester:E=>{const I=A(E);return{maxDistance:E.distanceMax,requiredFeatures:new Set([h.FeatureType.WeakHydrogenDonor,h.FeatureType.HydrogenAcceptor]),getType:(B,w,O,F)=>R(B,w,O,F,I)}}}})(jA)),jA}var GA={},VH;function Ise(){return VH||(VH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WaterBridgesProvider=e.WaterBridgesParams=void 0,e.findWaterBridgeContacts=b;const t=Ke(),r=Ge(),n=Ne(),i=dt(),c=VT(),o=hs(),s=si(),h=tZ(),f=er(),y=Dn();e.WaterBridgesParams={backbone:n.ParamDefinition.Boolean(!0,{description:"Include backbone hydrogen bonds"}),ignoreHydrogens:n.ParamDefinition.Boolean(!0,{description:"Ignore explicit hydrogens in geometric constraints"}),legDistMin:n.ParamDefinition.Numeric(2.5,{min:1,max:4,step:.1},{description:"Minimum leg distance (Ã
)"}),legDistMax:n.ParamDefinition.Numeric(4.1,{min:1,max:6,step:.1},{description:"Maximum leg distance (Ã
)"}),donAngleDevMax:n.ParamDefinition.Numeric(80,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accAngleDevMax:n.ParamDefinition.Numeric(50,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),donOutOfPlaneAngleMax:n.ParamDefinition.Numeric(45,{min:0,max:180,step:1}),accOutOfPlaneAngleMax:n.ParamDefinition.Numeric(90,{min:0,max:180,step:1}),omegaMin:n.ParamDefinition.Numeric(71,{min:0,max:180,step:1},{description:"Minimum AâWâB angle (°)"}),omegaMax:n.ParamDefinition.Numeric(140,{min:0,max:180,step:1},{description:"Maximum AâWâB angle (°)"})},e.WaterBridgesProvider={requiredFeatures:new Set([s.FeatureType.HydrogenDonor,s.FeatureType.HydrogenAcceptor]),params:e.WaterBridgesParams,find:b};function _(P,C){return P.model.atomicHierarchy.derived.residue.moleculeType[P.residueIndex[P.elements[C]]]===i.MoleculeType.Water}function g(P,C){const l=P.elements[C],S=P.model.atomicHierarchy.derived.residue.moleculeType[P.residueIndex[l]];if(S!==i.MoleculeType.Protein&&S!==i.MoleculeType.RNA&&S!==i.MoleculeType.DNA)return!1;const T=P.model.atomicHierarchy.atoms.label_atom_id.value(l);return S===i.MoleculeType.Protein?i.ProteinBackboneAtoms.has(T):i.NucleicBackboneAtoms.has(T)}const a=(0,c.StructureLookup3DResultContext)();function d(P,C){return(0,y.cantorPairing)(P,C)}function p(P,C,l){var S;return(S=P.get(C))===null||S===void 0?void 0:S.get(l)}function u(P,C,l,S){let T=P.get(C);T===void 0&&(T=new Map,P.set(C,T)),T.set(l,S)}function m(P){const C=[];for(const l of P.values())for(const S of l.values())C.push(S);return C}function v(P,C,l,S,T){const A=P.x-C[0],x=P.y-C[1],M=P.z-C[2],D=l.x-C[0],V=l.y-C[1],R=l.z-C[2],E=A*A+x*x+M*M,I=D*D+V*V+R*R;if(E===0||I===0)return!1;const B=(A*D+x*V+M*R)/Math.sqrt(E*I);return B<=S&&B>=T}function b(P,C,l){const S={ignoreHydrogens:l.ignoreHydrogens,includeBackbone:l.backbone,maxAccAngleDev:(0,f.degToRad)(l.accAngleDevMax),maxDonAngleDev:(0,f.degToRad)(l.donAngleDevMax),maxAccOutOfPlaneAngle:(0,f.degToRad)(l.accOutOfPlaneAngleMax),maxDonOutOfPlaneAngle:(0,f.degToRad)(l.donOutOfPlaneAngleMax)},T=l.legDistMin*l.legDistMin,A=l.legDistMax*l.legDistMax,x=(0,f.degToRad)(l.omegaMin),M=(0,f.degToRad)(l.omegaMax);if(x>M)return[];const D=Math.cos(x),V=Math.cos(M),R=new Map,E=(0,r.Vec3)(),I=(0,r.Vec3)();
7083for(const B of P.units){if(!t.Unit.isAtomic(B))continue;const w=C.get(B.id);if(!w||w.count===0)continue;const O=new Map;for(let U=0;U<w.count;U++){const q=w.members[w.offsets[U]];if(!_(B,q))continue;const N=w.types[U];if(N!==s.FeatureType.HydrogenAcceptor&&N!==s.FeatureType.HydrogenDonor)continue;let k=O.get(q);k||O.set(q,k={acc:void 0,don:void 0}),N===s.FeatureType.HydrogenAcceptor?k.acc=U:k.don=U}if(O.size===0)continue;const F=o.Features.Info(P,B,w),L=o.Features.Info(P,B,w);for(const[U,{acc:q,don:N}]of O){if(q===void 0||N===void 0)continue;B.conformation.position(B.elements[U],E),F.feature=q,L.feature=N;const{count:k,indices:j,units:H}=P.lookup3d.find(E[0],E[1],E[2],l.legDistMax,a),G=[],z=[],W=new Set,X=new Set;for(let Y=0;Y<k;Y++){const K=H[Y];if(!t.Unit.isAtomic(K))continue;const Q=K,J=j[Y];if(Q===B&&J===U||_(Q,J))continue;const ae=C.get(Q.id);if(!ae||ae.count===0)continue;const te=o.Features.Info(P,Q,ae),{indices:ne,offsets:$}=ae.elementsIndex;for(let ie=$[J],Z=$[J+1];ie<Z;ie++){const re=ne[ie],oe=ae.types[re];if(oe!==s.FeatureType.HydrogenDonor&&oe!==s.FeatureType.HydrogenAcceptor)continue;const ce=ae.members[ae.offsets[re]];if(!l.backbone&&g(Q,ce))continue;Q.conformation.position(Q.elements[ce],I);const ue=r.Vec3.squaredDistance(I,E);if(!(ue<T||ue>A))if(te.feature=re,oe===s.FeatureType.HydrogenDonor){const pe=d(Q.id,re);if(W.has(pe))continue;(0,h.checkGeometry)(P,te,F,S)&&(W.add(pe),G.push({unit:Q,featureIdx:re,memberIdx:ce,x:I[0],y:I[1],z:I[2],distSq:ue}))}else{const pe=d(Q.id,re);if(X.has(pe))continue;(0,h.checkGeometry)(P,L,te,S)&&(X.add(pe),z.push({unit:Q,featureIdx:re,memberIdx:ce,x:I[0],y:I[1],z:I[2],distSq:ue}))}}}for(const Y of G)for(const K of z){if(Y.unit===K.unit&&Y.memberIdx===K.memberIdx||!v(Y,E,K,D,V))continue;const Q=Y.distSq+K.distSq,J=d(Y.unit.id,Y.featureIdx),ae=d(K.unit.id,K.featureIdx),te=p(R,J,ae);(!te||Q<te.combinedDistSq)&&u(R,J,ae,{contact:{unitA:Y.unit.id,indexA:Y.featureIdx,unitB:K.unit.id,indexB:K.featureIdx,unitM:B.id,indexMA:q,indexMB:N,props:{type:s.InteractionType.WaterBridge,flag:s.InteractionFlag.None}},combinedDistSq:Q})}}}return m(R).map(B=>B.contact)}})(GA)),GA}var zn={},tn={},EH;function rZ(){if(EH)return tn;EH=1,Object.defineProperty(tn,"__esModule",{value:!0}),tn.isQuaternaryAmine=c,tn.isTertiaryAmine=o,tn.isImide=s,tn.isAmide=h,tn.isSulfonium=f,tn.isSulfonicAcid=y,tn.isSulfate=_,tn.isPhosphate=g,tn.isHalocarbon=a,tn.isCarbonyl=d,tn.isCarboxylate=p,tn.isGuanidine=u,tn.isAcetamidine=m,tn.isPolar=b,tn.hasPolarNeighbour=P,tn.hasAromaticNeighbour=C;const e=Xi(),t=dt(),r=ra();function n(l,S){const{offset:T,edgeProps:A}=l.bonds;for(let x=T[S],M=T[S+1];x<M;++x)if(t.BondType.is(t.BondType.Flag.Aromatic,A.flags[x]))return!0;return!1}function i(l,S,T){let A=0;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{d(l,x,M)&&(A+=1)}),A}function c(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)===4&&(0,r.bondToElementCount)(l,S,T,e.Elements.H)===0}function o(l,S,T,A){return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)===4&&A===3}function s(l,S,T){let A=!1;return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)-(0,r.bondToElementCount)(l,S,T,e.Elements.H)===2&&(A=i(l,S,T)===2),A}function h(l,S,T){let A=!1;return(0,r.typeSymbol)(S,T)===e.Elements.N&&(0,r.bondCount)(l,S,T)-(0,r.bondToElementCount)(l,S,T,e.Elements.H)===2&&(A=i(l,S,T)===1),A}function f(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.H)===0}function y(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===3}function _(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.S&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===4}function g(l,S,T){return(0,r.typeSymbol)(S,T)===e.Elements.P&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===(0,r.bondCount)(l,S,T)}function a(l,S,T){return(0,e.isHalogen)((0,r.typeSymbol)(S,T))&&(0,r.bondCount)(l,S,T)===1&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1}function d(l,S,T){let A=!1;if((0,r.typeSymbol)(S,T)===e.Elements.C){const{offset:x,edgeProps:M,b:D}=S.bonds;for(let V=x[T],R=x[T+1];V<R;++V)if(M.order[V]===2&&(0,r.typeSymbol)(S,D[V])===e.Elements.O){A=!0;break}}return A}function p(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondToElementCount)(l,S,T,e.Elements.O)===2&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.typeSymbol)(x,M)===e.Elements.O&&(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}function u(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.N)===3&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}function m(l,S,T){let A=0;return(0,r.typeSymbol)(S,T)===e.Elements.C&&(0,r.bondCount)(l,S,T)===3&&(0,r.bondToElementCount)(l,S,T,e.Elements.N)===2&&(0,r.bondToElementCount)(l,S,T,e.Elements.C)===1&&(0,r.eachBondedAtom)(l,S,T,(x,M)=>{(0,r.bondCount)(l,x,M)-(0,r.bondToElementCount)(l,x,M,e.Elements.H)===1&&(A+=1)}),A===2}const v=new Set(["N","O","S","F","CL","BR","I"]);function b(l){return v.has(l)}function P(l,S,T){let A=!1;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{b((0,r.typeSymbol)(x,M))&&(A=!0)}),A}function C(l,S,T){let A=!1;return(0,r.eachBondedAtom)(l,S,T,(x,M)=>{n(x,M)&&(A=!0)}),A}return tn}var BH;function wse(){if(BH)return zn;BH=1,Object.defineProperty(zn,"__esModule",{value:!0}
7083),zn.CationPiProvider=zn.PiStackingProvider=zn.IonicProvider=zn.AromaticRingProvider=zn.PositiveChargeProvider=zn.NegativChargeProvider=void 0;const e=Ne(),t=hs(),r=dt(),n=ra(),i=Xi(),c=QS(),o=er(),s=si(),h=at(),f=rZ(),y=Ge(),_={distanceMax:e.ParamDefinition.Numeric(5,{min:0,max:8,step:.1})},g={distanceMax:e.ParamDefinition.Numeric(5.5,{min:1,max:8,step:.1}),offsetMax:e.ParamDefinition.Numeric(2,{min:0,max:4,step:.1}),angleDevMax:e.ParamDefinition.Numeric(30,{min:0,max:180,step:1})},a={distanceMax:e.ParamDefinition.Numeric(6,{min:1,max:8,step:.1}),offsetMax:e.ParamDefinition.Numeric(2,{min:0,max:4,step:.1})},d=["ARG","HIS","LYS"],p=["GLU","ASP"];function u(j,H){const G=c.ValenceModelProvider.get(j).value;if(!G)throw Error("expected valence model to be available");const z=G.get(H.id);if(!z)throw Error("expected valence model for unit to be available");return z}function m(j,H,G){const{charge:z}=u(j,H),{elements:W}=H,{x:X,y:Y,z:K}=H.model.atomicConformation,Q=new Set,{label_comp_id:J}=H.model.atomicHierarchy.atoms,ae=h.Segmentation.transientSegments(H.model.atomicHierarchy.residueAtomSegments,W);for(;ae.hasNext;){const{index:te,start:ne,end:$}=ae.move(),ie=J.value(H.model.atomicHierarchy.residueAtomSegments.offsets[te]);if(d.includes(ie)){G.startState();for(let Z=ne;Z<$;++Z)(0,n.typeSymbol)(H,Z)===i.Elements.N&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z);G.finishState(s.FeatureType.PositiveCharge,s.FeatureGroup.None)}else if(!r.PolymerNames.has(ie)){Q.clear();for(let Z=ne;Z<$;++Z){let re=s.FeatureGroup.None;if((0,f.isGuanidine)(j,H,Z))re=s.FeatureGroup.Guanidine;else if((0,f.isAcetamidine)(j,H,Z))re=s.FeatureGroup.Acetamidine;else if((0,f.isQuaternaryAmine)(j,H,Z)){re=s.FeatureGroup.QuaternaryAmine,G.startState(),Q.add(Z),G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z),(0,n.eachIntraBondedAtom)(H,Z,(oe,ce)=>{Q.add(ce),G.markMember(ce)}),G.finishState(s.FeatureType.PositiveCharge,re);continue}re&&(G.startState(),(0,n.eachIntraBondedAtom)(H,Z,(oe,ce)=>{(0,n.typeSymbol)(H,ce)===i.Elements.N&&(Q.add(ce),G.pushMember(X[W[ce]],Y[W[ce]],K[W[ce]],ce))}),G.finishState(s.FeatureType.PositiveCharge,re))}for(let Z=ne;Z<$;++Z)z[Z]>0&&!Q.has(Z)&&G.add(s.FeatureType.PositiveCharge,s.FeatureGroup.None,X[W[Z]],Y[W[Z]],K[W[Z]],Z)}}}function v(j,H,G){const{charge:z}=u(j,H),{elements:W}=H,{x:X,y:Y,z:K}=H.model.atomicConformation,Q=new Set,{label_comp_id:J}=H.model.atomicHierarchy.atoms,ae=h.Segmentation.transientSegments(H.model.atomicHierarchy.residueAtomSegments,W);for(;ae.hasNext;){const{index:te,start:ne,end:$}=ae.move(),ie=J.value(H.model.atomicHierarchy.residueAtomSegments.offsets[te]);if(p.includes(ie)){G.startState();for(let Z=ne;Z<$;++Z)(0,n.typeSymbol)(H,Z)===i.Elements.O&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z);G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.None)}else if(r.BaseNames.has(ie))for(let Z=ne;Z<$;++Z)(0,f.isPhosphate)(j,H,Z)&&(G.startState(),(0,n.eachBondedAtom)(j,H,Z,(re,oe)=>{(0,n.typeSymbol)(H,oe)===i.Elements.O&&G.pushMember(X[W[oe]],Y[W[oe]],K[W[oe]],oe)}),G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.Phosphate));else if(!r.PolymerNames.has(ie)){for(let Z=ne;Z<$;++Z){G.startState(),(0,n.typeSymbol)(H,Z)===i.Elements.N&&!r.ProteinBackboneAtoms.has((0,n.atomId)(H,Z))&&G.pushMember(X[W[Z]],Y[W[Z]],K[W[Z]],Z),G.finishState(s.FeatureType.NegativeCharge,s.FeatureGroup.None);let re=s.FeatureGroup.None;(0,f.isSulfonicAcid)(j,H,Z)?re=s.FeatureGroup.SulfonicAcid:(0,f.isPhosphate)(j,H,Z)?re=s.FeatureGroup.Phosphate:(0,f.isSulfate)(j,H,Z)?re=s.FeatureGroup.Sulfate:(0,f.isCarboxylate)(j,H,Z)&&(re=s.FeatureGroup.Carboxylate),re&&(G.startState(),(0,n.eachBondedAtom)(j,H,Z,(oe,ce)=>{(0,n.typeSymbol)(H,ce)===i.Elements.O&&(Q.add(ce),G.pushMember(X[W[ce]],Y[W[ce]],K[W[ce]],ce))}),G.finishState(s.FeatureType.NegativeCharge,re))}for(let Z=ne;Z<$;++Z)z[Z]<0&&!Q.has(Z)&&G.add(s.FeatureType.NegativeCharge,s.FeatureGroup.None,X[W[Z]],Y[W[Z]],K[W[Z]],Z)}}}function b(j,H,G){const{elements:z}=H,{x:W,y:X,z:Y}=H.model.atomicConformation;for(const K of H.rings.aromaticRings){const Q=H.rings.all[K];G.startState();for(let J=0,ae=Q.length;J<ae;++J){const te=Q[J];
7083G.pushMember(W[z[te]],X[z[te]],Y[z[te]],te)}G.finishState(s.FeatureType.AromaticRing,s.FeatureGroup.None)}}function P(j,H){return j===s.FeatureType.NegativeCharge&&H===s.FeatureType.PositiveCharge||j===s.FeatureType.PositiveCharge&&H===s.FeatureType.NegativeCharge}function C(j,H){return j===s.FeatureType.AromaticRing&&H===s.FeatureType.AromaticRing}function l(j,H){return j===s.FeatureType.AromaticRing&&H===s.FeatureType.PositiveCharge||j===s.FeatureType.PositiveCharge&&H===s.FeatureType.AromaticRing}const S=(0,y.Vec3)(),T=(0,y.Vec3)();function A(j,H,G){const{feature:z,offsets:W,members:X}=j,{feature:Y,offsets:K,members:Q}=H;for(let J=W[z],ae=W[z+1];J<ae;++J){const te=X[J];j.unit.conformation.position(j.unit.elements[te],S);for(let ne=K[Y],$=K[Y+1];ne<$;++ne){const ie=Q[ne];if(H.unit.conformation.position(H.unit.elements[ie],T),y.Vec3.squaredDistance(S,T)<G)return!0}}return!1}const x=(0,y.Vec3)(),M=(0,y.Vec3)(),D=(0,y.Vec3)(),V=(0,y.Vec3)();function R(j,H){const{unit:G,feature:z,offsets:W,members:X}=H,{elements:Y}=G,K=W[z];return H.unit.conformation.position(Y[X[K]],x),H.unit.conformation.position(Y[X[K+1]],M),H.unit.conformation.position(Y[X[K+2]],D),y.Vec3.triangleNormal(j,x,M,D)}const E=function(j,H,G){return t.Features.position(x,j),t.Features.position(M,H),y.Vec3.sub(D,x,M),y.Vec3.projectOnPlane(V,D,G),y.Vec3.add(V,V,M),y.Vec3.distance(V,M)};function I(j){return{distanceMaxSq:j.distanceMax*j.distanceMax}}function B(j){return{offsetMax:j.offsetMax,angleDevMax:(0,o.degToRad)(j.angleDevMax)}}function w(j){return{offsetMax:j.offsetMax}}const O=(0,o.degToRad)(180),F=(0,o.degToRad)(90),L=(0,y.Vec3)(),U=(0,y.Vec3)();function q(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(P(X,Y)&&A(H,G,W.distanceMaxSq))return s.InteractionType.Ionic}function N(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(C(X,Y)){R(L,H),R(U,G);const K=y.Vec3.angle(L,U);if(Math.min(E(H,G,U),E(G,H,L))<=W.offsetMax){if(K<=W.angleDevMax||K>=O-W.angleDevMax)return s.InteractionType.PiStacking;if(K<=W.angleDevMax+F&&K>=F-W.angleDevMax)return s.InteractionType.PiStacking}}}function k(j,H,G,z,W){const X=H.types[H.feature],Y=G.types[G.feature];if(l(X,Y)){const[K,Q]=X===s.FeatureType.AromaticRing?[H,G]:[G,H];if(R(L,K),E(Q,K,L)<=W.offsetMax)return s.InteractionType.CationPi}}return zn.NegativChargeProvider=t.Features.Provider([s.FeatureType.NegativeCharge],v),zn.PositiveChargeProvider=t.Features.Provider([s.FeatureType.PositiveCharge],m),zn.AromaticRingProvider=t.Features.Provider([s.FeatureType.AromaticRing],b),zn.IonicProvider={name:"ionic",params:_,createTester:j=>{const H=I(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.NegativeCharge,s.FeatureType.PositiveCharge]),getType:(G,z,W,X)=>q(G,z,W,X,H)}}},zn.PiStackingProvider={name:"pi-stacking",params:g,createTester:j=>{const H=B(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.AromaticRing]),getType:(G,z,W,X)=>N(G,z,W,X,H)}}},zn.CationPiProvider={name:"cation-pi",params:a,createTester:j=>{const H=w(j);return{maxDistance:j.distanceMax,requiredFeatures:new Set([s.FeatureType.AromaticRing,s.FeatureType.PositiveCharge]),getType:(G,z,W,X)=>k(G,z,W,X,H)}}},zn}var el={},RH;function Vse(){if(RH)return el;
7083RH=1,Object.defineProperty(el,"__esModule",{value:!0}),el.HydrophobicProvider=el.HydrophobicAtomProvider=void 0;const e=Ne(),t=hs(),r=ra(),n=Xi(),i=si(),c={distanceMax:e.ParamDefinition.Numeric(4,{min:1,max:5,step:.1})};function o(f,y,_){const{elements:g}=y,{x:a,y:d,z:p}=y.model.atomicConformation;for(let u=0,m=g.length;u<m;++u){const v=(0,r.typeSymbol)(y,u);let b=!1;v===n.Elements.C?(b=!0,(0,r.eachBondedAtom)(f,y,u,(P,C)=>{const l=(0,r.typeSymbol)(P,C);l!==n.Elements.C&&l!==n.Elements.H&&(b=!1)})):v===n.Elements.F&&(b=!0),b&&_.add(i.FeatureType.HydrophobicAtom,i.FeatureGroup.None,a[g[u]],d[g[u]],p[g[u]],u)}}function s(f,y){return f===i.FeatureType.HydrophobicAtom&&y===i.FeatureType.HydrophobicAtom}function h(f,y,_,g){const a=y.types[y.feature],d=_.types[_.feature];if(!s(a,d))return;const p=y.members[y.offsets[y.feature]],u=_.members[_.offsets[_.feature]];if(!((0,r.typeSymbol)(y.unit,p)===n.Elements.F&&(0,r.typeSymbol)(_.unit,u)===n.Elements.F))return i.InteractionType.Hydrophobic}return el.HydrophobicAtomProvider=t.Features.Provider([i.FeatureType.HydrophobicAtom],o),el.HydrophobicProvider={name:"hydrophobic",params:c,createTester:f=>({maxDistance:f.distanceMax,requiredFeatures:new Set([i.FeatureType.HydrophobicAtom]),getType:(y,_,g,a)=>h(y,_,g)})},el}var zA={},OH;function Ese(){return OH||(OH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MetalCoordinationProvider=e.MetalBindingProvider=e.MetalProvider=e.MetalCoordinationParams=void 0;const t=Ne(),r=hs(),n=ra(),i=Xi(),c=si(),o=dt();e.MetalCoordinationParams={distanceMax:t.ParamDefinition.Numeric(3,{min:1,max:5,step:.1})};const s=[i.Elements.LI,i.Elements.NA,i.Elements.K,i.Elements.RB,i.Elements.CS,i.Elements.MG,i.Elements.CA,i.Elements.SR,i.Elements.BA,i.Elements.AL,i.Elements.GA,i.Elements.IN,i.Elements.TL,i.Elements.SC,i.Elements.SN,i.Elements.PB,i.Elements.BI,i.Elements.SB,i.Elements.HG];function h(p,u,m){const{elements:v}=u,{x:b,y:P,z:C}=u.model.atomicConformation;for(let l=0,S=v.length;l<S;++l){const T=(0,n.typeSymbol)(u,l);let A=c.FeatureType.None;s.includes(T)?A=c.FeatureType.IonicTypeMetal:((0,i.isTransitionMetal)(T)||T===i.Elements.ZN||T===i.Elements.CD)&&(A=c.FeatureType.TransitionMetal),A&&m.add(A,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l)}}function f(p){return!o.ProteinBackboneAtoms.has(p)}function y(p){return o.ProteinBackboneAtoms.has(p)}function _(p){return o.NucleicBackboneAtoms.has(p)}function g(p,u,m){const{elements:v}=u,{x:b,y:P,z:C}=u.model.atomicConformation;for(let l=0,S=v.length;l<S;++l){const T=(0,n.typeSymbol)(u,l),A=(0,n.compId)(u,l),x=(0,n.atomId)(u,l);let M=!1,D=!1;const V=o.AminoAcidNames.has(A),R=o.BaseNames.has(A);!V&&!R?(0,i.isHalogen)(T)||T===i.Elements.O||T===i.Elements.S?(M=!0,D=!0):T===i.Elements.N&&(M=!0):V?T===i.Elements.O?(["ASP","GLU","SER","THR","TYR","ASN","GLN"].includes(A)&&f(x)||y(x))&&(M=!0,D=!0):T===i.Elements.S&&(A==="CYS"||A==="MET")?(M=!0,D=!0):T===i.Elements.N&&A==="HIS"&&f(x)&&(M=!0):R&&(T===i.Elements.O&&_(x)?(M=!0,D=!0):["N3","N4","N7"].includes(x)?M=!0:["O2","O4","O6"].includes(x)&&(M=!0,D=!0)),M&&m.add(c.FeatureType.DativeBondPartner,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l),D&&m.add(c.FeatureType.IonicTypePartner,c.FeatureGroup.None,b[v[l]],P[v[l]],C[v[l]],l)}}function a(p,u){if(p===c.FeatureType.TransitionMetal)return u===c.FeatureType.DativeBondPartner||u===c.FeatureType.TransitionMetal;if(p===c.FeatureType.IonicTypeMetal)return u===c.FeatureType.IonicTypePartner}function d(p,u,m,v){const b=u.types[u.feature],P=m.types[m.feature];if(!(!a(b,P)&&!a(P,b)))return c.InteractionType.MetalCoordination}e.MetalProvider=r.Features.Provider([c.FeatureType.IonicTypeMetal,c.FeatureType.TransitionMetal],h),e.MetalBindingProvider=r.Features.Provider([c.FeatureType.IonicTypePartner,c.FeatureType.DativeBondPartner],g),e.MetalCoordinationProvider={name:"metal-coordination",params:e.MetalCoordinationParams,createTester:p=>({maxDistance:p.distanceMax,requiredFeatures:new Set([c.FeatureType.IonicTypeMetal,c.FeatureType.TransitionMetal,c.FeatureType.IonicTypePartner,c.FeatureType.DativeBondPartner]),getType:(u,m,v,b)=>d(u,m,v)})}})(zA)),zA}var WP={},kH;function Bse(){if(kH)return WP;
7083kH=1,Object.defineProperty(WP,"__esModule",{value:!0}),WP.refineInteractions=i;const e=si(),t=Ke(),r=hs(),n=Dn();function i(a,d){const{contacts:p,unitsContacts:u,unitsFeatures:m}=d,v=[c(a,d),o(a,d),f(a,d),y(a,d),_(a,d),g(a,d)];for(let P=0,C=p.edgeCount;P<C;++P){const l=p.edges[P],S=a.unitMap.get(l.unitA),T=a.unitMap.get(l.unitB),A=r.Features.Info(a,S,m.get(l.unitA));A.feature=l.indexA;const x=r.Features.Info(a,T,m.get(l.unitB));x.feature=l.indexB;for(const M of v)M.isApplicable(l.props.type)&&M.handleInterContact(P,A,x)}const b=u.keys();for(;;){const{done:P,value:C}=b.next();if(P)break;const l=u.get(C),S=m.get(C),T=a.unitMap.get(C);if(!t.Unit.isAtomic(T))continue;const A=r.Features.Info(a,T,S),x=r.Features.Info(a,T,S);for(const M of v)M.startUnit(T,l,S);for(let M=0,D=l.edgeCount*2;M<D;++M){A.feature=l.a[M],x.feature=l.b[M];for(const V of v)V.isApplicable(l.edgeProps.type[M])&&V.handleIntraContact(M,A,x)}}}function c(a,d){const{contacts:p}=d,u=function(l,S,T,A,x){const[M,D]=A.get(T)||[1/0,-1];l<M?(D!==-1&&x(D),A.set(T,[l,S])):x(S)};function m(l,S,T,A,x){const M=S.members[S.offsets[S.feature]],D=T.members[T.offsets[T.feature]],V=S.unit.getResidueIndex(M),R=T.unit.getResidueIndex(D),E=`${M}|${S.unit.id}|${R}|${T.unit.id}|A`,I=`${D}|${T.unit.id}|${V}|${S.unit.id}|B`,B=r.Features.distance(S,T);u(B,l,E,A,x),u(B,l,I,A,x)}const v=new Map,b=l=>p.edges[l].props.flag=e.InteractionFlag.Filtered;let P,C;return{isApplicable:l=>l===e.InteractionType.Hydrophobic,handleInterContact:(l,S,T)=>{m(l,S,T,v,b)},startUnit:(l,S,T)=>{P=new Map,C=A=>S.edgeProps.flag[A]=e.InteractionFlag.Filtered},handleIntraContact:(l,S,T)=>{m(l,S,T,P,C)}}}function o(a,d){const{contacts:p}=d,u=(m,v)=>{const b=m.types[m.feature]===e.FeatureType.WeakHydrogenDonor?v:m,P=b.members[b.offsets[b.feature]],{edgeProps:{type:C},elementsIndex:{offsets:l,indices:S}}=d.unitsContacts.get(b.unit.id);for(let A=l[P],x=l[P+1];A<x;++A)if(C[S[A]]===e.InteractionType.HydrogenBond)return!0;const T=p.getEdgeIndices(b.feature,b.unit.id);for(let A=0,x=T.length;A<x;++A)if(p.edges[T[A]].props.type===e.InteractionType.HydrogenBond)return!0;return!1};return{isApplicable:m=>m===e.InteractionType.WeakHydrogenBond,handleInterContact:(m,v,b)=>{u(v,b)&&(p.edges[m].props.flag=e.InteractionFlag.Filtered)},startUnit:()=>{},handleIntraContact:(m,v,b)=>{if(u(v,b)){const{flag:P}=d.unitsContacts.get(v.unit.id).edgeProps;P[m]=e.InteractionFlag.Filtered}}}}function s(a,d,p,u,m){const{offsets:v,feature:b}=p,{offsets:P,feature:C}=u;for(let l=v[b],S=v[b+1];l<S;++l){const T=p.members[l],A=m.getContactIndicesForElement(T,p.unit);for(let x=0,M=A.length;x<M;++x){const D=A[x];if(a.includes(m.edges[D].props.type))for(let V=P[C],R=P[C+1];V<R;++V){const E=u.members[V];if(m.getContactIndicesForElement(E,u.unit).includes(D)){m.edges[d].props.flag=e.InteractionFlag.Filtered;return}}}}}function h(a,d,p,u,m){const{edgeProps:{type:v,flag:b},elementsIndex:{offsets:P,indices:C}}=m,{offsets:l,feature:S}=p,{offsets:T,feature:A}=u;for(let x=l[S],M=l[S+1];x<M;++x){const D=p.members[x];for(let V=P[D],R=P[D+1];V<R;++V){const E=C[V];if(a.includes(v[E]))for(let I=T[A],B=T[A+1];I<B;++I){const w=u.members[I];for(let O=P[w],F=P[w+1];O<F;++O)if(E===C[O]){b[d]=e.InteractionFlag.Filtered;return}}}}}function f(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Ionic,handleInterContact:(u,m,v)=>{s([e.InteractionType.HydrogenBond,e.InteractionType.WeakHydrogenBond],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.HydrogenBond,e.InteractionType.WeakHydrogenBond],u,m,v,d.unitsContacts.get(m.unit.id))}}}function y(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Hydrophobic||u===e.InteractionType.CationPi,handleInterContact:(u,m,v)=>{s([e.InteractionType.PiStacking],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.PiStacking],u,m,v,d.unitsContacts.get(m.unit.id))}}}function _(a,d){const{contacts:p}=d;return{isApplicable:u=>u===e.InteractionType.Ionic,handleInterContact:(u,m,v)=>{s([e.InteractionType.MetalCoordination],u,m,v,p)},startUnit:()=>{},handleIntraContact:(u,m,v)=>{h([e.InteractionType.MetalCoordination],u,m,v,d.unitsContacts.get(m.unit.id))}}}function g(a,d){const{contacts:p,bridges:u,unitsFeatures:m}=d;function v(A,x){return(0,n.cantorPairing)(A,x)}function b(A,x){return A.members[A.offsets[x]]}function P(A,x,M,D,V){const R=v(x,M),E=v(D,V);let I=A.get(R);I===void 0&&(I=new Set,A.set(R,I)),I.add(E);let B=A.get(E);B===void 0&&(B=new Set,A.set(E,B)),B.add(R)}function C(A,x,M,D,V){var R;return((R=A.get(v(x,M)))===null||R===void 0?void 0:R.has(v(D,V)))===!0}function l(A,x,M){const{offsets:D,members:V,feature:R}=x,{offsets:E,members:I,feature:B}=M;for(let w=D[R],O=D[R+1];w<O;++w){const F=V[w];for(let L=E[B],U=E[B+1];L<U;++L){const q=I[L];if(C(A,x.unit.id,F,M.unit.id,q))return!0}}return!1}const S=new Map;for(const A of u){if(A.props.type!==e.InteractionType.WaterBridge)continue;const x=m.get(A.unitA),M=m.get(A.unitM),D=m.get(A.unitB);if(!x||!M||!D)continue;const V=b(x,A.indexA),R=b(M,A.indexMA),E=b(M,A.indexMB),I=b(D,A.indexB);P(S,A.unitA,V,A.unitM,R),P(S,A.unitM,E,A.unitB,I)}let T;return{isApplicable:A=>S.size>0&&A===e.InteractionType.HydrogenBond,handleInterContact:(A,x,M)=>{l(S,x,M)&&(p.edges[A].props.flag=e.InteractionFlag.Filtered)},startUnit:(A,x)=>{T=x},handleIntraContact:(A,x,M)=>{T&&l(S,x,M)&&(T.edgeProps.flag[A]=e.InteractionFlag.Filtered)}}}return WP}var FH;function ZS(){return FH||(FH=1,(function(e){Object.defineProperty(e,"__esMo
7083dule",{value:!0}),e.InteractionsParams=e.BridgeProviderParams=e.ContactProviderParams=e.Bridges=e.Interactions=void 0,e.computeInteractions=V;const t=Ne(),r=Ke(),n=hs(),i=QS(),c=si(),o=Ase(),s=at(),h=Mse(),f=Dse(),y=tZ(),_=Ise(),g=wse(),a=Vse(),d=Hi(),p=Ese(),u=Bse(),m=Xa(),v=rS(),b=gt(),P=_a(),C=Gt();var l;(function(w){function O(G,z,W,X,Y,K){return(0,m.DataLocation)("interactions",{structure:z,interactions:G},{unitA:W,indexA:X,unitB:Y,indexB:K})}w.Location=O;function F(G){return!!G&&G.kind==="data-location"&&G.tag==="interactions"}w.isLocation=F;function L(G,z){return G.data.structure===z.data.structure&&G.data.interactions===z.data.interactions&&G.element.indexA===z.element.indexA&&G.element.indexB===z.element.indexB&&G.element.unitA===z.element.unitA&&G.element.unitB===z.element.unitB}w.areLocationsEqual=L;function U(G,z){const{unitA:W,indexA:X,unitB:Y,indexB:K}=z,{contacts:Q,unitsContacts:J}=G;if(W===Y){const ae=J.get(W.id),te=ae.getDirectedEdgeIndex(X,K);return(0,c.interactionTypeLabel)(ae.edgeProps.type[te])}else{const ae=Q.getEdgeIndex(X,W.id,K,Y.id);return(0,c.interactionTypeLabel)(Q.edges[ae].props.type)}}function q(G){return U(G.data.interactions,G.element)}w.locationLabel=q;function N(G,z,W){return(0,b.DataLoci)("interactions",{structure:G,interactions:z},W,X=>j(z,W,X),()=>H(G,z,W))}w.Loci=N;function k(G){return!!G&&G.kind==="data-loci"&&G.tag==="interactions"}w.isLoci=k;function j(G,z,W){const{unitsFeatures:X}=G;return v.CentroidHelper.fromPairProvider(z.length,(Y,K,Q)=>{const J=z[Y];n.Features.setPosition(K,J.unitA,J.indexA,X.get(J.unitA.id)),n.Features.setPosition(Q,J.unitB,J.indexB,X.get(J.unitB.id))},W)}w.getBoundingSphere=j;function H(G,z,W){const X=W[0];if(X===void 0)return"";const{unitA:Y,indexA:K,unitB:Q,indexB:J}=X,{unitsFeatures:ae}=z,{members:te,offsets:ne}=ae.get(Y.id),{members:$,offsets:ie}=ae.get(Q.id),Z={granularity:"element"};return(ne[K+1]-ne[K]>1||ie[J+1]-ie[J]>1)&&(Z.granularity="residue"),[U(z,X),(0,P.bondLabel)(r.Bond.Location(G,Y,te[ne[K]],G,Q,$[ie[J]]),Z)].join("</br>")}w.getLabel=H})(l||(e.Interactions=l={}));var S;(function(w){function O(k,j=0){return(0,m.DataLocation)("bridges",k,{bridgeIndex:j})}w.Location=O;function F(k){return!!k&&k.kind==="data-location"&&k.tag==="bridges"}w.isLocation=F;function L(k,j){return(0,b.DataLoci)("bridges",k,j,H=>N(k,j,H),()=>q(k,j))}w.Loci=L;function U(k){return!!k&&k.kind==="data-loci"&&k.tag==="bridges"}w.isLoci=U;function q(k,j){const H=j[0];if(H===void 0)return"";const{structure:G,bridges:z,unitsFeatures:W}=k,X=z[H.bridgeIndex],Y=G.unitMap.get(X.unitA),K=W.get(X.unitA),Q=G.unitMap.get(X.unitM),J=W.get(X.unitM),ae=G.unitMap.get(X.unitB),te=W.get(X.unitB),ne={granularity:"element"};return(K.offsets[X.indexA+1]-K.offsets[X.indexA]>1||te.offsets[X.indexB+1]-te.offsets[X.indexB]>1)&&(ne.granularity="residue"),[(0,c.interactionTypeLabel)(X.props.type),(0,P.bundleLabel)({loci:[r.StructureElement.Loci(G,[{unit:Y,indices:s.OrderedSet.ofSingleton(K.members[K.offsets[X.indexA]])}]),r.StructureElement.Loci(G,[{unit:Q,indices:s.OrderedSet.ofSingleton(J.members[J.offsets[X.indexMA]])}]),r.StructureElement.Loci(G,[{unit:ae,indices:s.OrderedSet.ofSingleton(te.members[te.offsets[X.indexB]])}])]},ne)].join("</br>")}function N(k,j,H){return v.CentroidHelper.fromPairProvider(j.length*2,(G,z,W)=>{const X=k.bridges[j[G>>1].bridgeIndex],Y=k.structure.unitMap.get(X.unitA),K=k.unitsFeatures.get(X.unitA),Q=k.structure.unitMap.get(X.unitM),J=k.unitsFeatures.get(X.unitM),ae=k.structure.unitMap.get(X.unitB),te=k.unitsFeatures.get(X.unitB),ne=K.members[K.offsets[X.indexA]],$=J.members[J.offsets[X.indexMA]],ie=te.members[te.offsets[X.indexB]];(G&1)===0?(Y.conformation.position(Y.elements[ne],z),Q.conformation.position(Q.elements[$],W)):(Q.conformation.position(Q.elements[$],z),ae.conformation.position(ae.elements[ie],W))},H)}})(S||(e.Bridges=S={}));const T=[y.HydrogenDonorProvider,y.WeakHydrogenDonorProvider,y.HydrogenAcceptorProvider,g.NegativChargeProvider,g.PositiveChargeProvider,g.AromaticRingProvider,f.HalogenDonorProvider,f.HalogenAcceptorProvider,a.HydrophobicAtomProvider,p.MetalProvider,p.MetalBindingProvider],A={ionic:g.IonicProvider,"pi-stacking":g.PiStackingProvider,"cation-
7083pi":g.CationPiProvider,"halogen-bonds":f.HalogenBondsProvider,"hydrogen-bonds":y.HydrogenBondsProvider,"weak-hydrogen-bonds":y.WeakHydrogenBondsProvider,hydrophobic:a.HydrophobicProvider,"metal-coordination":p.MetalCoordinationProvider};function x(w=[]){const O=Object.create(null);return Object.keys(A).forEach(F=>{O[F]=t.ParamDefinition.MappedStatic(w.includes(F)?"on":"off",{on:t.ParamDefinition.Group(A[F].params),off:t.ParamDefinition.Group({})},{cycle:!0})}),O}e.ContactProviderParams=x(["cation-pi","pi-stacking","hydrogen-bonds","halogen-bonds","metal-coordination"]);const M={"water-bridges":_.WaterBridgesProvider};function D(w=[]){const O=Object.create(null);return Object.keys(M).forEach(F=>{O[F]=t.ParamDefinition.MappedStatic(w.includes(F)?"on":"off",{on:t.ParamDefinition.Group(M[F].params),off:t.ParamDefinition.Group({})},{cycle:!0})}),O}e.BridgeProviderParams=D([]),e.InteractionsParams={providers:t.ParamDefinition.Group(e.ContactProviderParams,{isFlat:!0}),bridges:t.ParamDefinition.Group(e.BridgeProviderParams,{isFlat:!0}),contacts:t.ParamDefinition.Group(h.ContactsParams,{label:"Advanced Options"})};async function V(w,O,F,L){const U={...t.ParamDefinition.getDefaultValues(e.InteractionsParams),...F},q=JSON.stringify(U);await i.ValenceModelProvider.attach(w,O);const N=[];(0,C.ObjectKeys)(A).forEach(Y=>{const{name:K,params:Q}=U.providers[Y];K==="on"&&N.push(A[Y].createTester(Q))});const k=new Set;
7083N.forEach(Y=>d.SetUtils.add(k,Y.requiredFeatures)),(0,C.ObjectKeys)(M).forEach(Y=>{U.bridges[Y].name==="on"&&d.SetUtils.add(k,M[Y].requiredFeatures)});const j=T.filter(Y=>d.SetUtils.areIntersecting(k,Y.types)),H=s.IntMap.Mutable(),G=s.IntMap.Mutable();for(let Y=0,K=O.unitSymmetryGroups.length;Y<K;++Y){const Q=O.unitSymmetryGroups[Y];w.runtime.shouldUpdate&&await w.runtime.update({message:"computing interactions",current:Y,max:K});const J=R(O,Q.units[0],j,q);for(let te=0,ne=Q.units.length;te<ne;++te){const $=Q.units[te];H.set($.id,J)}if(L?.skipIntraContacts)continue;const ae=E(O,Q.units[0],J,N,U.contacts);for(let te=0,ne=Q.units.length;te<ne;++te){const $=Q.units[te];G.set($.id,ae)}}const z=B(O,H,N,U.contacts,L),W=I(O,H,U.bridges),X={unitsFeatures:H,unitsContacts:G,contacts:z,bridges:W};return(0,u.refineInteractions)(O,X),X}function R(w,O,F,L){const U=`features-${L}`;if(O.transientCache.has(U))return O.transientCache.get(U);const q=O.elements.length,N=n.FeaturesBuilder.create(q,q/2);if(r.Unit.isAtomic(O))for(const j of F)j.add(w,O,N);const k=N.getFeatures(q);return O.transientCache.set(U,k),k}function E(w,O,F,L,U){const q=o.IntraContactsBuilder.create(F,O.elements.length);return r.Unit.isAtomic(O)&&(0,h.addUnitContacts)(w,O,F,q,L,U),q.getContacts()}function I(w,O,F){const L=[];return(0,C.ObjectKeys)(M).forEach(U=>{const{name:q,params:N}=F[U];if(q==="on")for(const k of M[U].find(w,O,N))L.push(k)}),L}function B(w,O,F,L,U){const q=o.InterContactsBuilder.create();return r.Structure.eachUnitPair(w,(N,k)=>{const j=O.get(N.id),H=O.get(k.id);(0,h.addStructureContacts)(w,N,j,k,H,q,F,L)},{maxRadius:Math.max(...F.map(N=>N.maxDistance)),validUnit:N=>r.Unit.isAtomic(N),validUnitPair:(N,k)=>U?.unitPairTest?U.unitPairTest(N,k):r.Structure.validUnitPair(w,N,k)}),q.getContacts(O)}})(NA)),NA}var LH;function Gl(){return LH||(LH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsProvider=e.InteractionsParams=void 0;const t=Ne(),r=ZS(),n=wf(),i=Pr();e.InteractionsParams={...r.InteractionsParams},e.InteractionsProvider=n.CustomStructureProperty.createProvider({label:"Interactions",descriptor:(0,i.CustomPropertyDescriptor)({name:"molstar_computed_interactions"}),type:"local",defaultParams:e.InteractionsParams,getParams:c=>e.InteractionsParams,isApplicable:c=>!c.isCoarseGrained,obtain:async(c,o,s)=>{const h={...t.ParamDefinition.getDefaultValues(e.InteractionsParams),...s};return{value:await(0,r.computeInteractions)(c,o,h)}}})})(LA)),LA}var HA={},NH;function nZ(){return NH||(NH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionTypeColorThemeProvider=e.InteractionTypeColorThemeParams=void 0,e.getInteractionTypeColorThemeParams=d,e.InteractionTypeColorTheme=p;const t=vt(),r=Ne(),n=Gl(),i=si(),c=qa(),o=ZS(),s=_t(),h=Ut(),f=(0,t.Color)(13421772),y="Assigns colors according the interaction type of a link.",_=(0,t.ColorMap)({HydrogenBond:2851770,Hydrophobic:8421504,HalogenBond:4259775,Ionic:15779860,MetalCoordination:9191577,CationPi:16744448,PiStacking:9220966,WeakHydrogenBond:12967404,WaterBridge:52462}),g=[["Hydrogen Bond",_.HydrogenBond],["Hydrophobic",_.Hydrophobic],["Halogen Bond",_.HalogenBond],["Ionic",_.Ionic],["Metal Coordination",_.MetalCoordination],["Cation Pi",_.CationPi],["Pi Stacking",_.PiStacking],["Weak HydrogenBond",_.WeakHydrogenBond],["Water Bridge",_.WaterBridge]];function a(u){switch(u){case i.InteractionType.HydrogenBond:return _.HydrogenBond;case i.InteractionType.Hydrophobic:return _.Hydrophobic;case i.InteractionType.HalogenBond:return _.HalogenBond;case i.InteractionType.Ionic:return _.Ionic;case i.InteractionType.MetalCoordination:return _.MetalCoordination;case i.InteractionType.CationPi:return _.CationPi;case i.InteractionType.PiStacking:return _.PiStacking;case i.InteractionType.WeakHydrogenBond:return _.WeakHydrogenBond;case i.InteractionType.WaterBridge:return _.WaterBridge;case i.InteractionType.Unknown:return f}}e.InteractionTypeColorThemeParams={};function d(u){return e.InteractionTypeColorThemeParams}function p(u,m){let v;const b=u.structure?n.InteractionsProvider.get(u.structure):void 0,P=b?(0,s.hash2)(b.id,b.version):-1;return b&&b.value?v=C=>{if(o.Interactions.isLocation(C)){const{unitsContacts:l,contacts:S}=C.data.interactions,{unitA:T,unitB:A,indexA:x,indexB:M}=C.element;if(T===A){const D=l.get(T.id),V=D.getDirectedEdgeIndex(x,M);return a(D.edgeProps.type[V])}else{const D=S.getEdgeIndex(x,T.id,M,A.id);return a(S.edges[D].props.type)}}return o.Bridges.isLocation(C)?a(C.data.bridges[C.element.bridgeIndex].props.type):f}:v=()=>f,{factory:p,granularity:"group",color:v,props:m,contextHash:P,description:y,legend:(0,c.TableLegend)(g)}}e.InteractionTypeColorThemeProvider={name:"interaction-type",label:"Interaction Type",category:h.ColorThemeCategory.Misc,factory:p,getParams:d,defaultValues:r.ParamDefinition.getDefaultValues(e.InteractionTypeColorThemeParams),isApplicable:u=>!!u.structure,ensureCustomProperties:{attach:(u,m)=>m.structure?n.InteractionsProvider.attach(u,m.structure,void 0,!0):Promise.resolve(),detach:u=>u.structure&&n.InteractionsProvider.ref(u.structure,!1)}}})(HA)),HA}var WA={},$A={},$P={},qH;function JS(){if(qH)return $P;
7083qH=1,Object.defineProperty($P,"__esModule",{value:!0}),$P.ComplexRepresentation=u;const e=Ne(),t=Yr(),r=Lt(),n=Ke(),i=Rn(),c=ds(),o=ea(),s=nt(),h=gt(),f=cn(),y=US(),_=Yf(),g=jS(),a=zS(),d=HS(),p=WS();function u(m,v,b,P){let C=0;const{webgl:l}=v,S=new i.Subject,T=new r.Representation.GeometryState,A=(0,c.getNextMaterialId)(),x=[],M=t.StructureRepresentationStateBuilder.create();let D,V,R,E,I=o.Theme.createEmpty();function B(k={},j){return j&&j!==V&&(R=b(v,j),V=j,E||(E=e.ParamDefinition.getDefaultValues(R))),E=Object.assign({},E,k),s.Task.create("Creating or updating ComplexRepresentation",async H=>{var G;let z=!1;D?!((G=D.mustRecreate)===null||G===void 0)&&G.call(D,V,E,l)&&(D.destroy(),D=P(A,V,E,l),z=!0):(D=P(A,V,E,l),z=!0);const W=D.createOrUpdate({webgl:l,runtime:H},I,E,j);W&&await W,z&&U(M),x.length=0,D&&D.renderObject&&(x.push(D.renderObject),T.add(D.renderObject.id,D.geometryVersion)),T.snapshot(),C+=1,S.next(C)})}function w(k){return D?D.getLoci(k):h.EmptyLoci}function O(){var k;return[n.Structure.Loci((k=V.child)!==null&&k!==void 0?k:V)]}function F(k){D?.eachLocation(k)}function L(k,j){if(!V||!f.MarkerActions.is(M.markerActions,j))return!1;if(n.Structure.isLoci(k)||n.StructureElement.Loci.is(k)||n.Bond.isLoci(k)){if(!n.Structure.areRootsEquivalent(k.structure,V))return!1;k=h.Loci.remap(k,V),(n.Structure.isLoci(k)||n.StructureElement.Loci.is(k)&&n.StructureElement.Loci.isWholeStructure(k))&&(k=h.EveryLoci)}else if(!(0,h.isEveryLoci)(k)&&!(0,h.isDataLoci)(k))return!1;return h.Loci.isEmpty(k)?!1:D?D.mark(k,j):!1}function U(k){if(t.StructureRepresentationStateBuilder.update(M,k),k.visible!==void 0&&D&&D.setVisibility(k.visible&&(M.unitTransforms===null||M.unitTransforms.isIdentity)),k.alphaFactor!==void 0&&D&&D.setAlphaFactor(k.alphaFactor),k.pickable!==void 0&&D&&D.setPickable(k.pickable),k.overpaint!==void 0&&D){const j=y.Overpaint.remap(k.overpaint,V);D.setOverpaint(j,l)}if(k.transparency!==void 0&&D){const j=g.Transparency.remap(k.transparency,V);D.setTransparency(j,l)}if(k.emissive!==void 0&&D){const j=d.Emissive.remap(k.emissive,V);D.setEmissive(j,l)}if(k.substance!==void 0&&D){const j=a.Substance.remap(k.substance,V);D.setSubstance(j,l)}if(k.clipping!==void 0&&D){const j=_.Clipping.remap(k.clipping,V);D.setClipping(j)}if(k.wiggle!==void 0&&D){const j=p.Wiggle.remap(k.wiggle,V);D.setWiggle(j,l)}k.themeStrength!==void 0&&D&&D.setThemeStrength(k.themeStrength),k.transform!==void 0&&D&&D.setTransform(k.transform),k.unitTransforms!==void 0&&D&&D.setVisibility(M.visible&&(k.unitTransforms===null||k.unitTransforms.isIdentity))}function q(k){I=k}function N(){D&&D.destroy()}return{label:m,get groupCount(){return D?D.groupCount:0},get props(){return E},get params(){return R},get state(){return M},get theme(){return I},get geometryVersion(){return T.version},renderObjects:x,updated:S,createOrUpdate:B,setState:U,setTheme:q,getLoci:w,getAllLoci:O,eachLocation:F,mark:L,destroy:N}}return $P}var rr={},Ar={},XA={},UH;function Er(){return UH||(UH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultCommonSurfaceProps=e.CommonSurfaceParams=e.UnitKindOptions=e.UnitKindInfo=void 0,e.checkSphereImpostorSupport=p,e.checkCylinderImpostorSupport=m,e.getResidueLoci=v,e.getAltResidueLoci=b,e.getAltResidueLociFromId=P,e.createUnitsTransform=C,e.includesUnitKind=l,e.getVolumeSliceInfo=T,e.ensureReasonableResolution=A,e.getConformation=x,e.getUnitConformationAndRadius=R,e.getStructureConformationAndRadius=E,e.isHydrogen=B,e.isH=w,e.isTrace=O;const t=Ke(),r=Ge(),n=kl(),i=at(),c=gt(),o=ma(),s=Vt(),h=Ne(),f=wT(),y=rt(),_=rZ(),g=Ct(),a=r.Mat4.toArray;let d=!1;function p(F){if(!F)g.isDebugMode&&!d&&(console.warn('WebGL required for "sphere impostors". Falling back to "sphere mesh".'),d=!0);else if(!F.extensions.fragDepth||!F.extensions.textureFloat){if(g.isDebugMode&&!d){const L=[];F.extensions.fragDepth||L.push("fragDepth"),F.extensions.textureFloat||L.push("textureFloat"),console.warn(`Missing "${L.join('", "')}" extensions required for "sphere impostors". Falling back to "sphere mesh".`),d=!0}}else return!0;return!1}let u=!1;function m(F){if(!F)g.isDebugMode&&!u&&(console.warn('WebGL required for "cylinder impostors". Falling back to "cylinder mesh".'),u=!0);else{if(F.extensions.fragDepth)return!0;
7083if(g.isDebugMode&&!u){const L=[];F.extensions.fragDepth||L.push("fragDepth"),console.warn(`Missing "${L.join('", "')}" extensions required for "cylinder impostors". Falling back to "cylinder mesh".`),u=!0}}return!1}function v(F,L,U){const{elements:q,model:N}=L;if(i.OrderedSet.indexOf(q,U)!==-1){const{index:k,offsets:j}=N.atomicHierarchy.residueAtomSegments,H=k[U],G=[];for(let W=j[H],X=j[H+1];W<X;++W){const Y=i.OrderedSet.indexOf(q,W);Y!==-1&&G.push(Y)}const z=i.OrderedSet.ofSortedArray(i.SortedArray.ofSortedArray(G));return t.StructureElement.Loci(F,[{unit:L,indices:z}])}return c.EmptyLoci}function b(F,L,U){const{elements:q,model:N}=L,{label_alt_id:k}=N.atomicHierarchy.atoms,j=k.value(U);if(i.OrderedSet.indexOf(q,U)!==-1){const{index:H}=N.atomicHierarchy.residueAtomSegments,G=H[U];return P(F,L,G,j)}return t.StructureElement.Loci(F,[])}function P(F,L,U,q){const{elements:N,model:k}=L,{label_alt_id:j}=k.atomicHierarchy.atoms,{offsets:H}=k.atomicHierarchy.residueAtomSegments,G=[];for(let W=H[U],X=H[U+1];W<X;++W){const Y=i.OrderedSet.indexOf(N,W);if(Y!==-1){const K=j.value(W);(q===K||K==="")&&G.push(Y)}}const z=i.OrderedSet.ofSortedArray(i.SortedArray.ofSortedArray(G));return t.StructureElement.Loci(F,[{unit:L,indices:z}])}function C(F,L,U,q,N,k){const{child:j}=F.structure,H=L&&j?F.group.units.filter(X=>j.unitMap.has(X.id)):F.group.units,G=H.length,z=G*16,W=k&&k.aTransform.ref.value.length>=z?k.aTransform.ref.value:new Float32Array(z);for(let X=0;X<G;X++)a(H[X].conformation.operator.matrix,W,X*16);return(0,n.createTransform)(W,G,U,q,N,k)}e.UnitKindInfo={atomic:{},spheres:{},gaussians:{}},e.UnitKindOptions=h.ParamDefinition.objectToOptions(e.UnitKindInfo);function l(F,L){for(let U=0,q=F.length;U<q;++U)if(t.Unit.isAtomic(L)&&F[U]==="atomic"||t.Unit.isSpheres(L)&&F[U]==="spheres"||t.Unit.isGaussians(L)&&F[U]==="gaussians")return!0;return!1}const S=5e8;function T(F,L,U=S){const q=y.Box3D.size((0,r.Vec3)(),F);r.Vec3.ceil(q,q),q.sort((H,G)=>G-H);const N=Math.floor(Math.cbrt(U)*Math.cbrt(U)),k=q[0]*q[1],j=Math.ceil(k/(L*L));return{area:k,areaCells:j,maxAreaCells:N}}function A(F,L,U=S){const{area:q,areaCells:N,maxAreaCells:k}=T(F,L.resolution,U),j=N>k?Math.sqrt(q/k):L.resolution;return{...L,resolution:j}}function x(F){switch(F.kind){case t.Unit.Kind.Atomic:return F.model.atomicConformation;case t.Unit.Kind.Spheres:return F.model.coarseConformation.spheres;case t.Unit.Kind.Gaussians:return F.model.coarseConformation.gaussians}}e.CommonSurfaceParams={ignoreHydrogens:h.ParamDefinition.Boolean(!1,{description:"Whether or not to include hydrogen atoms in the surface calculation."}),ignoreHydrogensVariant:h.ParamDefinition.Select("all",h.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:h.ParamDefinition.Boolean(!1,{description:"Whether or not to only use trace atoms in the surface calculation."}),includeParent:h.ParamDefinition.Boolean(!1,{description:"Include elements of the parent structure in surface calculation to get a surface patch of the current structure. Note that this disables GPU support."})},e.DefaultCommonSurfaceProps=h.ParamDefinition.getDefaultValues(e.CommonSurfaceParams);const M=(0,r.Vec3)();function D(F,L,U,q){return r.Vec3.squaredDistance(r.Vec3.set(M,F,L,U),q)}function V(F,L,U){let q=0;const N=L.length;for(let k=0,j=U.length;k<j;++k){const H=i.SortedArray.indexOfInRange(L,U[k],q,N);H===-1?F[k]=-2:(F[k]=H,q=H)}}function R(F,L,U,q){const{ignoreHydrogens:N,ignoreHydrogensVariant:k,traceOnly:j,includeParent:H}=q,G=H?F.root.unitMap.get(L.id):L,z=H&&G!==L,{x:W,y:X,z:Y}=x(G),{elements:K}=G,{center:Q,radius:J}=L.boundary.sphere,ae=(4+1.5)*2,te=(J+ae)*(J+ae);let ne,$;if(N||j||z){const ce=[],ue=[];for(let pe=0,he=K.length;pe<he;++pe){const fe=K[pe];N&&B(F,G,fe,k)||j&&!O(G,fe)||z&&D(W[fe],X[fe],Y[fe],Q)>te||(ce.push(fe),ue.push(pe))}ne=i.SortedArray.ofSortedArray(ce),$=ue}else ne=K,$=(0,s.fillSerial)(new Int32Array(ne.length));H&&G!==L&&V($,L.elements,ne);const ie={indices:ne,x:W,y:X,z:Y,id:$},Z=z?(0,f.getBoundary)(ie):L.boundary,re=t.StructureElement.Location.create(F,G);return{position:ie,boundary:Z,radius:ce=>(re.element=ce,U.size(re))}}function E(F,L,U){const{ignoreHydrogens:q,ignoreHydrogensVariant:N,traceOnly:k,includeParent:j}=U,H=j&&!!F.parent,G=t.StructureElement.Location.create(F.root),{center:z,radius:W}=F.boundary.sphere,X=(4+1.5)*2,Y=(W+X)*(W+X);let K,Q,J,ae,te,ne;if(q||k||H){const{getSerialIndex:re}=F.serialMapping,oe=H?F.root.units:F.units,ce=[],ue=[],pe=[],he=[],fe=[];for(let de=0,ge=oe.length;de<ge;++de){const Ce=oe[de],{elements:ve,conformation:le}=Ce,me=F.unitMap.get(Ce.id);G.unit=Ce;for(let ee=0,se=ve.length;ee<se;++ee){const ye=ve[ee];if(q&&B(F,Ce,ye,N)||k&&!O(Ce,ye))continue;const Se=le.x(ye),Ae=le.y(ye),_e=le.z(ye);H&&D(Se,Ae,_e,z)>Y||(ce.push(Se),ue.push(Ae),pe.push(_e),G.element=ye,he.push(L.size(G)),H?(me?i.SortedArray.indexOf(me.elements,ye):-1)===-1?fe.push(-2):fe.push(re(me,ye)):fe.push(re(Ce,ye)))}}K=ce,Q=ue,J=pe,ae=he,te=fe,ne=i.OrderedSet.ofRange(0,te.length)}else{const{elementCount:re}=F,oe=new Float32Array(re),ce=new Float32Array(re),ue=new Float32Array(re),pe=new Float32Array(re);for(let he=0,fe=0,de=F.units.length;he<de;++he){const ge=F.units[he],{elements:Ce,conformation:ve}=ge;G.unit=ge;for(let le=0,me=Ce.length;le<me;++le){const ee=Ce[le],se=fe+le;oe[se]=ve.x(ee),ce[se]=ve.y(ee),ue[se]=ve.z(ee),G.element=ee,pe[se]=L.size(G)}
7083fe+=Ce.length}K=oe,Q=ce,J=ue,ae=pe,te=(0,s.fillSerial)(new Uint32Array(re)),ne=i.OrderedSet.ofRange(0,te.length)}const $={indices:ne,x:K,y:Q,z:J,id:te},ie=H?(0,f.getBoundary)($):F.boundary;return{position:$,boundary:ie,radius:re=>ae[re]}}const I=o.AtomicNumbers.H;function B(F,L,U,q){if(t.Unit.isCoarse(L)||L.model.atomicHierarchy.derived.atom.atomicNumber[U]!==I)return!1;if(q==="all")return!0;const N=(0,_.hasPolarNeighbour)(F,L,i.SortedArray.indexOf(L.elements,U));return!!(N&&q==="polar"||!N&&q==="non-polar")}function w(F,L){return F[L]===I}function O(F,L){if(t.Unit.isCoarse(F))return!0;const U=F.model.atomicHierarchy.atoms.label_atom_id.value(L);return U==="CA"||U==="BB"||U==="P"}})(XA)),XA}var jH;function Qf(){if(jH)return Ar;jH=1,Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.StructureImageParams=Ar.StructureTextureMeshParams=Ar.StructureDirectVolumeParams=Ar.StructureTextParams=Ar.StructureLinesParams=Ar.StructurePointsParams=Ar.StructureCylindersParams=Ar.StructureSpheresParams=Ar.StructureMeshParams=Ar.StructureParams=void 0,Ar.getUnitKindsParam=_;
7083const e=Hf(),t=kn(),r=Rt(),n=ic(),i=ro(),c=no(),o=ya(),s=Fl(),h=Wf(),f=Ne(),y=Er();function _(g){return f.ParamDefinition.MultiSelect(g,y.UnitKindOptions,{description:"For which kinds of units/chains to show the representation visuals."})}return Ar.StructureParams={unitKinds:_(["atomic","spheres"]),includeParent:f.ParamDefinition.Boolean(!1,{isHidden:!0})},Ar.StructureMeshParams={...r.Mesh.Params},Ar.StructureSpheresParams={...i.Spheres.Params},Ar.StructureCylindersParams={...c.Cylinders.Params},Ar.StructurePointsParams={...n.Points.Params},Ar.StructureLinesParams={...t.Lines.Params},Ar.StructureTextParams={...o.Text.Params},Ar.StructureDirectVolumeParams={...e.DirectVolume.Params},Ar.StructureTextureMeshParams={...s.TextureMesh.Params},Ar.StructureImageParams={...h.Image.Params},Ar}var GH;function Br(){if(GH)return rr;GH=1,Object.defineProperty(rr,"__esModule",{value:!0}),rr.ComplexImageParams=rr.ComplexTextureMeshParams=rr.ComplexDirectVolumeParams=rr.ComplexTextParams=rr.ComplexLinesParams=rr.ComplexPointsParams=rr.ComplexCylindersParams=rr.ComplexSpheresParams=rr.ComplexMeshParams=void 0,rr.ComplexVisual=R,rr.ComplexMeshVisual=E,rr.ComplexSpheresVisual=I,rr.ComplexCylindersVisual=B,rr.ComplexPointsVisual=w,rr.ComplexLinesVisual=O,rr.ComplexTextVisual=F,rr.ComplexDirectVolumeVisual=L,rr.ComplexTextureMeshVisual=U,rr.ComplexImageVisual=q;const e=Ul(),t=Ke(),r=Ll(),n=ea(),i=kl(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=et(),g=ls(),a=wi(),d=cn(),p=Rt(),u=no(),m=kn(),v=ya(),b=ps(),P=Hf(),C=li(),l=Tt(),S=Qf(),T=Fl(),A=Gt(),x=ro(),M=ic(),D=Wf();function V(N,k,j,H,G,z){const{createValues:W,createRenderableState:X}=r.Geometry.getUtils(k),Y=(0,i.createIdentityTransform)(),K=W(k,Y,j,H,G),Q=X(G);return(0,c.createRenderObject)(k.kind,K,Q,z)}function R(N,k){const{defaultProps:j,createGeometry:H,createLocationIterator:G,getLoci:z,eachLocation:W,setUpdateState:X,mustRecreate:Y,processValues:K,dispose:Q}=N,{updateValues:J,updateBoundingSphere:ae,updateRenderableState:te,createPositionIterator:ne}=N.geometryUtils,$=f.VisualUpdateState.create(),ie={loci:s.EmptyLoci,action:d.MarkerAction.None,status:-1};let Z,re,oe,ce,ue=Object.assign({},j),pe=n.Theme.createEmpty(),he,fe,de=-1,ge,Ce;function ve(Se,Ae,_e){if(!_e&&!he)throw new Error("missing structure");if(re=Object.assign({},ue,Ae),oe=Se,ce=_e,f.VisualUpdateState.reset($),!Z||!he){$.createNew=!0,$.createGeometry=!0;return}X($,re,ue,oe,pe,ce,he),t.Structure.areEquivalent(ce,he)||($.createGeometry=!0),t.Structure.areHierarchiesEqual(ce,he)||($.updateTransform=!0,$.createGeometry=!0),y.ColorTheme.areEqual(Se.color,pe.color)||($.updateColor=!0),b.SizeTheme.areEqual(Se.size,pe.size)||($.updateSize=!0),(0,_.deepEqual)(re.unitKinds,ue.unitKinds)||($.createGeometry=!0),he.child!==ce.child&&($.createGeometry=!0,$.updateTransform=!0),re.instanceGranularity!==ue.instanceGranularity&&($.updateTransform=!0),$.updateSize&&!("uSize"in Z.values)&&($.createGeometry=!0),$.createGeometry&&($.updateColor=!0,$.updateSize=!0)}function le(Se){if($.createNew)if(ge=G(ce,re),Se)Z=V(ce,Se,ge,oe,re,k),Ce=ne(Se,Z.values);else throw new Error("expected geometry to be given");else{if(!Z)throw new Error("expected renderObject to be available");if(($.updateColor||$.updateSize||$.updateTransform)&&(ge=G(ce,re)),$.updateTransform){const{instanceCount:Ae,groupCount:_e}=ge;(0,l.resolveInstanceGranularity)(re.instanceGranularity,_e,Ae)?(0,C.createMarkers)(Ae,"instance",Z.values):(0,C.createMarkers)(Ae*_e,"groupInstance",Z.values)}if($.createGeometry)if(Se)_.ValueCell.updateIfChanged(Z.values.drawCount,r.Geometry.getDrawCount(Se)),_.ValueCell.updateIfChanged(Z.values.uVertexCount,r.Geometry.getVertexCount(Se)),_.ValueCell.updateIfChanged(Z.values.uGroupCount,ge.groupCount);else throw new Error("expected geometry to be given");($.updateTransform||$.createGeometry)&&(ae(Z.values,Se||fe),Ce=ne(fe,Z.values)),$.updateSize&&"uSize"in Z.values&&(0,g.createSizes)(ge,Ce,oe.size,Z.values),$.updateColor&&(0,a.createColors)(ge,Ce,oe.color,Z.values),J(Z.values,re),te(Z.state,re)}ue=re,pe=oe,he=ce,Se&&(fe=Se,de+=1)}function me(Se){return!!((0,s.isEveryLoci)(Se)||t.Structure.isLoci(Se)&&t.Structure.areRootsEquivalent(Se.structure,he)||t.StructureElement.Loci.is(Se)&&t.Structure.areRootsEquivalent(Se.structure,he)&&t.StructureElement.Loci.isWholeStructure(Se))}function ee(Se,Ae,_e){let be=!1;return!t.StructureElement.Loci.is(Se)&&!t.Bond.isLoci(Se)||!t.Structure.areEquivalent(Se.structure,Ae)?!1:(_e(h.Interval.ofSingleton(0))&&(be=!0),be)}
7083function se(Se,Ae,_e){const be=(0,l.resolveInstanceGranularity)(ue.instanceGranularity,ge.groupCount,ge.instanceCount);return me(Se)?Ae(be?h.Interval.ofBounds(0,ge.instanceCount):h.Interval.ofBounds(0,ge.groupCount*ge.instanceCount)):be?ee(Se,he,Ae):W(Se,he,Ae,_e)}function ye(Se){Z&&K?.(Z.values,fe,ue,pe,Se.webgl)}return{get groupCount(){return ge?ge.count:0},get renderObject(){return ge&&ge.count?Z:void 0},get geometryVersion(){return de},createOrUpdate(Se,Ae,_e={},be){if(ve(Ae,_e,be||he),$.createGeometry){const xe=H(Se,ce,oe,re,fe);if((0,A.isPromiseLike)(xe))return xe.then(we=>{le(we),ye(Se)});le(xe)}else le();ye(Se)},getLoci(Se){return Z?((0,l.resolveInstanceGranularity)(ue.instanceGranularity,ge.groupCount,ge.instanceCount)&&(Se={...Se,groupId:o.PickingId.Null}),z(Se,he,Z.id)):s.EmptyLoci},eachLocation(Se){for(ge.reset();ge.hasNext;){const{location:Ae,isSecondary:_e}=ge.move();Se(Ae,_e)}},mark(Se,Ae){return e.Visual.mark(Z,Se,Ae,se,ie)},setVisibility(Se){e.Visual.setVisibility(Z,Se)},setAlphaFactor(Se){e.Visual.setAlphaFactor(Z,Se)},setPickable(Se){e.Visual.setPickable(Z,Se)},setColorOnly(Se){e.Visual.setColorOnly(Z,Se)},setTransform(Se,Ae){e.Visual.setTransform(Z,Se,Ae)},setOverpaint(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setOverpaint(Z,Se,se,!0,_e)},setTransparency(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setTransparency(Z,Se,se,!0,_e)},setEmissive(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setEmissive(Z,Se,se,!0,_e)},setSubstance(Se,Ae){const _e={geometry:fe,props:ue,webgl:Ae};e.Visual.setSubstance(Z,Se,se,!0,_e)},setClipping(Se){e.Visual.setClipping(Z,Se,se,!0)},setWiggle(Se,Ae){e.Visual.setWiggle(Z,Se,se,!0)},setThemeStrength(Se){e.Visual.setThemeStrength(Z,Se)},destroy(){Q?.(fe),Z&&(Z.state.disposed=!0,Z=void 0)},mustRecreate:Y}}rr.ComplexMeshParams={...S.StructureMeshParams,...S.StructureParams};function E(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:p.Mesh.Utils},k)}rr.ComplexSpheresParams={...S.StructureSpheresParams,...S.StructureParams};function I(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:x.Spheres.Utils},k)}rr.ComplexCylindersParams={...S.StructureCylindersParams,...S.StructureParams};function B(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:u.Cylinders.Utils},k)}rr.ComplexPointsParams={...S.StructurePointsParams,...S.StructureParams};function w(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:M.Points.Utils},k)}rr.ComplexLinesParams={...S.StructureLinesParams,...S.StructureParams};function O(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:m.Lines.Utils},k)}rr.ComplexTextParams={...S.StructureTextParams,...S.StructureParams};function F(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0),H.background!==G.background&&(j.createGeometry=!0),H.backgroundMargin!==G.backgroundMargin&&(j.createGeometry=!0),H.tether!==G.tether&&(j.createGeometry=!0),H.tetherLength!==G.tetherLength&&(j.createGeometry=!0),H.tetherBaseWidth!==G.tetherBaseWidth&&(j.createGeometry=!0),H.attachment!==G.attachment&&(j.createGeometry=!0),H.fontFamily!==G.fontFamily&&(j.createGeometry=!0),H.fontQuality!==G.fontQuality&&(j.createGeometry=!0),H.fontStyle!==G.fontStyle&&(j.createGeometry=!0),H.fontVariant!==G.fontVariant&&(j.createGeometry=!0),H.fontWeight!==G.fontWeight&&(j.createGeometry=!0)},geometryUtils:v.Text.Utils},k)}rr.ComplexDirectVolumeParams={...S.StructureDirectVolumeParams,...S.StructureParams};function L(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:P.DirectVolume.Utils},k)}rr.ComplexTextureMeshParams={...S.StructureTextureMeshParams,...S.StructureParam
7083s};function U(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:T.TextureMesh.Utils},k)}rr.ComplexImageParams={...S.StructureImageParams,...S.StructureParams};function q(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),b.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:D.Image.Utils},k)}return rr}var XP={},tl={},zH;function Rse(){if(zH)return tl;zH=1,Object.defineProperty(tl,"__esModule",{value:!0}),tl.HashMap=void 0,tl.DefaultMap=e,tl.arrayMapAdd=t;function e(n){const i=new Map;return i.getDefault=c=>{if(i.has(c))return i.get(c);const o=n();return i.set(c,o),o},i}function t(n,i,c){const o=n.get(i);o?o.push(c):n.set(i,[c])}class r{set(i,c){const o=this.hashCode(i);let s=this.buckets.get(o);s||(s=[],this.buckets.set(o,s));for(let h=0;h<s.length;h++)if(this.areEqual(s[h].key,i)){s[h].value=c;return}s.push({key:i,value:c})}get(i){const c=this.hashCode(i),o=this.buckets.get(c);if(o){for(const s of o)if(this.areEqual(s.key,i))return s.value}}delete(i){const c=this.hashCode(i),o=this.buckets.get(c);if(!o)return!1;for(let s=0;s<o.length;s++)if(this.areEqual(o[s].key,i))return o.splice(s,1),o.length===0&&this.buckets.delete(c),!0;return!1}forEach(i){for(const c of this.buckets.values())for(const o of c)i(o.value,o.key)}clear(){this.buckets.clear()}constructor(i,c){this.hashCode=i,this.areEqual=c,this.buckets=new Map}}return tl.HashMap=r,tl}var HH;function Sa(){if(HH)return XP;HH=1,Object.defineProperty(XP,"__esModule",{value:!0}),XP.UnitsRepresentation=C;const e=Ne(),t=Yr(),r=Lt(),n=Ke(),i=Rn(),c=ds(),o=ea(),s=nt(),h=gt(),f=cn(),y=US(),_=jS(),g=Ge(),a=at(),d=Yf(),p=zS(),u=HS(),m=WS(),v=Rse(),b=_t();function P(){return new v.HashMap(l=>(0,b.hash2)(l.hashCode,l.transformHash),n.Unit.SymmetryGroup.areInvariantElementsEqual)}function C(l,S,T,A){let x=0;const{webgl:M}=S,D=new i.Subject,V=(0,c.getNextMaterialId)(),R=[],E=new r.Representation.GeometryState,I=t.StructureRepresentationStateBuilder.create();let B=P(),w,O,F,L,U=o.Theme.createEmpty();function q(Y={},K){return K&&K!==w&&(F=T(S,K),L||(L=e.ParamDefinition.getDefaultValues(F))),L=Object.assign({},L,Y),s.Task.create("Creating or updating UnitsRepresentation",async Q=>{var J,ae,te;if(!w&&!K)throw new Error("missing structure");if(K&&!w){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);for(let ne=0;ne<O.length;ne++){const $=O[ne],ie=A(V,K,L,M),Z=ie.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K});Z&&await Z,G(ie,$,I),B.set($,{visual:ie,group:$}),Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:ne,max:O.length})}}else if(K&&(!n.Structure.areUnitIdsAndIndicesEqual(K,w)||K.child!==w.child)){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);const ne=B;B=P();for(let $=0;$<O.length;$++){const ie=O[$],Z=ne.get(ie);if(Z){let{visual:re}=Z;if(!((J=re.mustRecreate)===null||J===void 0)&&J.call(re,{group:ie,structure:K},L,M)){re.destroy(),re=A(V,K,L,M);const oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe,G(re,ie,I)}else{const oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe}if(B.set(ie,{visual:re,group:ie}),ne.delete(ie),re.renderObject){const oe=re.renderObject.values.tMarker.ref.value.array;(0,f.applyMarkerAction)(oe,a.Interval.ofBounds(0,oe.length),f.MarkerAction.RemoveHighlight)}}else{const re=A(V,K,L,M),oe=re.createOrUpdate({webgl:M,runtime:Q},U,L,{group:ie,structure:K});oe&&await oe,G(re,ie,I),B.set(ie,{visual:re,group:ie})}Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:$,max:O.length})}ne.forEach(({visual:$})=>{$.destroy()})}else if(K&&K!==w&&n.Structure.areUnitIdsAndIndicesEqual(K,w)){O=n.StructureSymmetry.computeChildAwareTransformGroups(K);for(let ne=0;ne<O.length;ne++){const $=O[ne],ie=B.get($);if(ie){let{visual:Z}=ie;if(!((ae=Z.mustRecreate)===null||ae===void 0)&&ae.call(Z,{group:$,structure:K},L,S.webgl)){Z.destroy(),Z=A(V,K,L,S.webgl),ie.visual=Z;const re=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K}
7083);re&&await re,G(Z,$,I)}else{const re=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:$,structure:K});re&&await re}ie.group=$}else throw new Error(`expected to find visual for hashCode ${$.hashCode}`);Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:ne,max:O.length})}}else{const ne=[];B.forEach($=>ne.push($));for(let $=0,ie=ne.length;$<ie;++$){let{visual:Z,group:re}=ne[$];if(!((te=Z.mustRecreate)===null||te===void 0)&&te.call(Z,{group:re,structure:w},L,S.webgl)){Z.destroy(),Z=A(V,w,L,M),ne[$].visual=Z;const oe=Z.createOrUpdate({webgl:M,runtime:Q},U,L,{group:re,structure:w});oe&&await oe,G(Z,re,I)}else{const oe=Z.createOrUpdate({webgl:M,runtime:Q},U,L);oe&&await oe}Q.shouldUpdate&&await Q.update({message:"Creating or updating UnitsVisual",current:$,max:ie})}}R.length=0,B.forEach(({visual:ne})=>{ne.renderObject&&(R.push(ne.renderObject),E.add(ne.renderObject.id,ne.geometryVersion))}),E.snapshot(),K&&(w=K),D.next(x++)})}function N(Y){let K=h.EmptyLoci;return B.forEach(({visual:Q})=>{const J=Q.getLoci(Y);(0,h.isEmptyLoci)(J)||(K=J)}),K}function k(Y){B.forEach(({visual:K})=>{K.eachLocation(Y)})}function j(){var Y;return[n.Structure.Loci((Y=w.child)!==null&&Y!==void 0?Y:w)]}function H(Y,K){if(!w||!f.MarkerActions.is(I.markerActions,K))return!1;if(n.Structure.isLoci(Y)||n.StructureElement.Loci.is(Y)||n.Bond.isLoci(Y)){if(!n.Structure.areRootsEquivalent(Y.structure,w))return!1;Y=h.Loci.remap(Y,w),(n.Structure.isLoci(Y)||n.StructureElement.Loci.is(Y)&&n.StructureElement.Loci.isWholeStructure(Y))&&(Y=h.EveryLoci)}else if(!(0,h.isEveryLoci)(Y)&&!(0,h.isDataLoci)(Y))return!1;if(h.Loci.isEmpty(Y))return!1;let Q=!1;return B.forEach(({visual:J})=>{Q=J.mark(Y,K)||Q}),Q}function G(Y,K,Q){const{visible:J,alphaFactor:ae,pickable:te,overpaint:ne,transparency:$,emissive:ie,substance:Z,clipping:re,wiggle:oe,themeStrength:ce,transform:ue,unitTransforms:pe}=Q;J!==void 0&&Y.setVisibility(J),ae!==void 0&&Y.setAlphaFactor(ae),te!==void 0&&Y.setPickable(te),ne!==void 0&&Y.setOverpaint(ne,M),$!==void 0&&Y.setTransparency($,M),ie!==void 0&&Y.setEmissive(ie,M),Z!==void 0&&Y.setSubstance(Z,M),re!==void 0&&Y.setClipping(re),oe!==void 0&&Y.setWiggle(oe,M),ce!==void 0&&Y.setThemeStrength(ce),ue!==void 0&&(ue!==I.transform||!g.Mat4.areEqual(ue,I.transform,g.EPSILON))&&Y.setTransform(ue),pe!==void 0&&(pe?Y.setTransform(void 0,pe.getSymmetryGroupTransforms(K)):pe!==I.unitTransforms&&Y.setTransform(void 0,null))}function z(Y){const{visible:K,alphaFactor:Q,pickable:J,overpaint:ae,transparency:te,emissive:ne,substance:$,clipping:ie,wiggle:Z,themeStrength:re,transform:oe,unitTransforms:ce,syncManually:ue,markerActions:pe}=Y,he={};K!==void 0&&(he.visible=K),Q!==void 0&&(he.alphaFactor=Q),J!==void 0&&(he.pickable=J),ae!==void 0&&w&&(he.overpaint=y.Overpaint.remap(ae,w)),te!==void 0&&w&&(he.transparency=_.Transparency.remap(te,w)),ne!==void 0&&w&&(he.emissive=u.Emissive.remap(ne,w)),$!==void 0&&w&&(he.substance=p.Substance.remap($,w)),ie!==void 0&&w&&(he.clipping=d.Clipping.remap(ie,w)),Z!==void 0&&w&&(he.wiggle=m.Wiggle.remap(Z,w)),re!==void 0&&(he.themeStrength=re),oe!==void 0&&!g.Mat4.areEqual(oe,I.transform,g.EPSILON)&&(he.transform=oe),(ce!==I.unitTransforms||ce?.version!==I.unitTransformsVersion)&&(he.unitTransforms=ce,I.unitTransformsVersion=ce?ce?.version:-1),ue!==void 0&&(he.syncManually=ue),pe!==void 0&&(he.markerActions=pe),B.forEach(({visual:fe,group:de})=>G(fe,de,he)),t.StructureRepresentationStateBuilder.update(I,he)}function W(Y){U=Y}function X(){B.forEach(({visual:Y})=>Y.destroy()),B.clear()}return{label:l,get groupCount(){let Y=0;return B.forEach(({visual:K})=>{K.renderObject&&(Y+=K.groupCount)}),Y},get geometryVersion(){return E.version},get props(){return L},get params(){return F},get state(){return I},get theme(){return U},renderObjects:R,updated:D,createOrUpdate:q,setState:z,setTheme:W,getLoci:N,getAllLoci:j,eachLocation:k,mark:H,destroy:X}}return XP}var nr={},WH;function mr(){if(WH)return nr;WH=1,Object.defineProperty(nr,"__esModule",{value:!0}),nr.UnitsImageParams=nr.UnitsTextureMeshParams=nr.UnitsDirectVolumeParams=nr.UnitsTextParams=nr.UnitsLinesParams=nr.UnitsPointsParams=nr.UnitsCylindersParams=nr.UnitsSpheresParams=nr.UnitsMeshParams=void 0,nr.UnitsVisual=R,nr.UnitsMeshVisual=E,nr.UnitsSpheresVisual=I,nr.UnitsCylindersVisual=B,nr.UnitsPointsVisual=w,nr.UnitsLinesVisual=O,nr.UnitsTextVisual=F,nr.UnitsDirectVolumeVisual=L,nr.UnitsTextureMeshVisual=U,nr.Units
7083ImageVisual=q;const e=Ke(),t=Ul(),r=Ll(),n=ea(),i=Er(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=li(),g=Tt(),a=cn(),d=et(),p=ls(),u=wi(),m=Rt(),v=ps(),b=ro(),P=no(),C=ic(),l=kn(),S=ya(),T=Hf(),A=Fl(),x=Wf(),M=Qf(),D=Gt();function V(N,k,j,H,G,z){const{createValues:W,createRenderableState:X}=r.Geometry.getUtils(k),Y=(0,i.createUnitsTransform)(N,G.includeParent,k.boundingSphere,G.cellSize,G.batchSize),K=W(k,Y,j,H,G),Q=X(G);return(0,c.createRenderObject)(k.kind,K,Q,z)}function R(N,k){const{defaultProps:j,createGeometry:H,createLocationIterator:G,getLoci:z,eachLocation:W,setUpdateState:X,initUpdateState:Y,mustRecreate:K,processValues:Q,dispose:J}=N,{createEmpty:ae,updateValues:te,updateBoundingSphere:ne,updateRenderableState:$,createPositionIterator:ie}=N.geometryUtils,Z=f.VisualUpdateState.create(),re={loci:s.EmptyLoci,action:a.MarkerAction.None,status:-1};let oe,ce=Object.assign({},j),ue=n.Theme.createEmpty(),pe,he,fe,de,ge,Ce=-1,ve,le;function me(be,xe,we){if(!we&&!de)throw new Error("missing structureGroup");if(ce=xe,ue=be,pe=we,f.VisualUpdateState.reset(Z),!oe||!de){Y?.(Z,ce,ue,pe),Z.createNew=!0,Z.createGeometry=!0;return}X(Z,ce,he,ue,fe,pe,de),e.Structure.areHierarchiesEqual(de.structure,pe.structure)||(Z.updateTransform=!0,Z.updateColor=!0,Z.updateSize=!0),y.ColorTheme.areEqual(ue.color,fe.color)||(Z.updateColor=!0),v.SizeTheme.areEqual(ue.size,fe.size)||(Z.updateSize=!0),de.structure.child!==pe.structure.child&&(Z.createGeometry=!0,Z.updateTransform=!0),(ce.instanceGranularity!==he.instanceGranularity||ce.cellSize!==he.cellSize||ce.batchSize!==he.batchSize)&&(Z.updateTransform=!0),(0,d.deepEqual)(ce.unitKinds,he.unitKinds)||(Z.createGeometry=!0),pe.group.transformHash!==de.group.transformHash&&(pe.group.units.length!==de.group.units.length||Z.updateColor?Z.updateTransform=!0:Z.updateMatrix=!0);const Be=pe.group.units[0],Me=de.group.units[0];e.Unit.areOperatorsEqual(Be,Me)||(Z.updateTransform=!0),e.Unit.areConformationsEqual(Be,Me)||(Z.createGeometry=!0),Z.updateTransform&&(Z.updateMatrix=!0),Z.updateSize&&!("uSize"in oe.values)&&(Z.createGeometry=!0),(Z.createGeometry||Z.updateTransform)&&(de.structure.hashCode!==pe.structure.hashCode&&(Z.updateColor=!0,Z.updateSize=!0),(ue.color.granularity.startsWith("vertex")||oe.values.dColorType.ref.value.startsWith("vertex")||ue.color.granularity.startsWith("volume")||oe.values.dColorType.ref.value.startsWith("volume"))&&(Z.updateColor=!0))}function ee(be){if(Z.createNew)if(ve=G(pe,ce),be)oe=V(pe,be,ve,ue,ce,k),le=ie(be,oe.values);else throw new Error("expected geometry to be given");else{if(!oe)throw new Error("expected renderObject to be available");if((Z.updateColor||Z.updateSize||Z.updateTransform)&&(ve=G(pe,ce)),Z.updateTransform){const{instanceCount:xe,groupCount:we}=ve;(0,g.resolveInstanceGranularity)(ce.instanceGranularity,we,xe)?(0,_.createMarkers)(xe,"instance",oe.values):(0,_.createMarkers)(xe*we,"groupInstance",oe.values)}if(Z.updateMatrix&&((0,i.createUnitsTransform)(pe,ce.includeParent,be?.boundingSphere||oe.values.invariantBoundingSphere.ref.value,ce.cellSize,ce.batchSize,oe.values),"lodLevels"in oe.values&&d.ValueCell.update(oe.values.lodLevels,oe.values.lodLevels.ref.value)),Z.createGeometry)if(be)d.ValueCell.updateIfChanged(oe.values.drawCount,r.Geometry.getDrawCount(be)),d.ValueCell.updateIfChanged(oe.values.uVertexCount,r.Geometry.getVertexCount(be)),d.ValueCell.updateIfChanged(oe.values.uGroupCount,ve.groupCount);else throw new Error("expected geometry to be given");(Z.updateTransform||Z.createGeometry)&&(ne(oe.values,be||ge),le=ie(be||ge,oe.values)),Z.updateSize&&"uSize"in oe.values&&(0,p.createSizes)(ve,le,ue.size,oe.values),Z.updateColor&&(0,u.createColors)(ve,le,ue.color,oe.values),te(oe.values,ce),$(oe.state,ce)}he=ce,fe=ue,de=pe,be&&(ge=be,Ce+=1)}function se(be,xe,we,Be,Me,Re){return(0,i.includesUnitKind)(Me.unitKinds,xe)?H(be,xe,we,Be,Me,Re):ae(Re)}function ye(be){return!!((0,s.isEveryLoci)(be)||e.Structure.isLoci(be)&&e.Structure.areRootsEquivalent(be.structure,de.structure)||e.StructureElement.Loci.is(be)&&e.Structure.areRootsEquivalent(be.structure,de.structure)&&e.StructureElement.Loci.isWholeStructure(be))}function Se(be,xe,we){let Be=!1;if(e.Bond.isLoci(be)){const{structure:Me,group:Re}=xe;if(!e.Structure.areEquivalent(be.structure,Me))return!1;for(const Te of be.bonds){if(Te.aUnit!==Te.bUnit)continue;const Ve=Re.unitIndexMap.get(Te.aUnit.id);Ve!==void 0&&we(h.Interval.ofSingleton(Ve))&&(Be=!0)}}else if(e.StructureElement.Loci.is(be)){const{structure:Me,group:Re}=xe;if(!e.Structure.areEquivalent(be.structure,Me))return!1;for(const Te of be.elements){const Ve=Re.unitIndexMap.get(Te.unit.id);Ve!==void 0&&we(h.Interval.ofSingleton(Ve))&&(Be=!0)}}return Be}function Ae(be,xe,we){const Be=(0,g.resolveInstanceGranularity)(he.instanceGranularity,ve.groupCount,ve.instanceCount);return ye(be)?xe(Be?h.Interval.ofBounds(0,ve.instanceCount):h.Interval.ofBounds(0,ve.groupCount*ve.instanceCount)):Be?Se(be,de,xe):W(be,de,xe,we)}function _e(be){oe&&Q?.(oe.values,ge,he,fe,be.webgl)}return{get groupCount(){return ve?ve.count:0},get renderObject(){return ve&&ve.count?oe:void 0},get geometryVersion(){return Ce},createOrUpdate(be,xe,we,Be){if(me(xe,we,Be||de),Z.createGeometry){const Me=se(be,pe.group.units[0],pe.structure,ue,ce,ge);if((0,D.isPromiseLike)(Me))return Me.then(Re=>{ee(Re),_e(be)});ee(Me)}else ee();_e(be)},getLoci(be){return oe?((0,g.resolveInstanceGranularity)(he.instanceGranularity,ve.groupCount,ve.instanceCount)&&(be={...be,groupId:o.PickingId.Null}),z(be,de,oe.id)):s.EmptyLoci},eachLocation(be){for(ve.reset();ve.hasNext;){const{location:xe,isSecondary:we}=ve.move();be(xe,we)}},mark(be,xe){let we=!0;if(e.StructureElement.Loci.is(be)){we=!1;const{invariantId:Be}=de.group.units[0];for(const Me of be.elements)if(Me.unit.invariantId===Be){we=!0;break}}return we?t.Visual.mark(oe,be,xe,Ae,re):!1},setVisibility(be){t.Visual.setVisibility(oe,be)},setAlphaFactor(be){t.Visual.setAlphaFactor(oe,be)},setPickable(be){t.Visual.setPickable(oe,be)},setColorOnly(be){t.Visual.setColorOnly(oe,be)},setTransform(be,xe){t.Visual.setTransform(oe,be,xe)},setOverpaint(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setOverpaint(oe,be,Ae,!0,we)},setTransparency(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setTransparency(oe,be,Ae,!0,we)},setEmissive(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setEmissive(oe,be,Ae,!0,we)},setSubstance(be,xe){const we={geometry:ge,props:he,webgl:xe};t.Visual.setSubstance(oe,be,Ae,!0,we)},setClipping(be){t.Visual.setClipping(oe,be,Ae,!0)},setWiggle(be,xe){t.Visual.setWiggle(oe,be,Ae,!0)},setThemeStrength(be){t.Visual.setThemeStrength(oe,be)},destroy(){J?.(ge),oe&&(oe.state.disposed=!0,oe=void 0)},mustRecreate:K}}nr.UnitsMeshParams={...M.StructureMeshParams,...M.StructureParam
7083s};function E(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:m.Mesh.Utils},k)}nr.UnitsSpheresParams={...M.StructureSpheresParams,...M.StructureParams};function I(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:b.Spheres.Utils},k)}nr.UnitsCylindersParams={...M.StructureCylindersParams,...M.StructureParams};function B(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:P.Cylinders.Utils},k)}nr.UnitsPointsParams={...M.StructurePointsParams,...M.StructureParams};function w(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:C.Points.Utils},k)}nr.UnitsLinesParams={...M.StructureLinesParams,...M.StructureParams};function O(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0)},geometryUtils:l.Lines.Utils},k)}nr.UnitsTextParams={...M.StructureTextParams,...M.StructureParams};function F(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.updateSize=!0),H.background!==G.background&&(j.createGeometry=!0),H.backgroundMargin!==G.backgroundMargin&&(j.createGeometry=!0),H.tether!==G.tether&&(j.createGeometry=!0),H.tetherLength!==G.tetherLength&&(j.createGeometry=!0),H.tetherBaseWidth!==G.tetherBaseWidth&&(j.createGeometry=!0),H.attachment!==G.attachment&&(j.createGeometry=!0),H.fontFamily!==G.fontFamily&&(j.createGeometry=!0),H.fontQuality!==G.fontQuality&&(j.createGeometry=!0),H.fontStyle!==G.fontStyle&&(j.createGeometry=!0),H.fontVariant!==G.fontVariant&&(j.createGeometry=!0),H.fontWeight!==G.fontWeight&&(j.createGeometry=!0)},geometryUtils:S.Text.Utils},k)}nr.UnitsDirectVolumeParams={...M.StructureDirectVolumeParams,...M.StructureParams};function L(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:T.DirectVolume.Utils},k)}nr.UnitsTextureMeshParams={...M.StructureTextureMeshParams,...M.StructureParams};function U(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:A.TextureMesh.Utils},k)}nr.UnitsImageParams={...M.StructureImageParams,...M.StructureParams};function q(N,k){return R({...N,setUpdateState:(j,H,G,z,W,X,Y)=>{N.setUpdateState(j,H,G,z,W,X,Y),v.SizeTheme.areEqual(z.size,W.size)||(j.createGeometry=!0)},geometryUtils:x.Image.Utils},k)}return nr}var $H;function Yr(){return $H||($H=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitsVisual=e.UnitsRepresentation=e.ComplexVisual=e.ComplexRepresentation=e.StructureRepresentationStateBuilder=void 0,e.StructureRepresentationProvider=r;const t=Lt();e.StructureRepresentationStateBuilder={create:()=>({...t.Representation.createState(),unitTransforms:null,unitTransformsVersion:-1}),update:(s,h)=>{t.Representation.updateState(s,h),h.unitTransforms!==void 0&&(s.unitTransforms=h.unitTransforms)}};function r(s){return s}var n=JS();Object.defineProperty(e,"ComplexRepresentation",{enumerable:!0,get:function(){return n.ComplexRepresentation}});var i=Br();Object.defineProperty(e,"ComplexVisual",{enumerable:!0,get:function(){return i.ComplexVisual}});var c=Sa();Object.defineProperty(e,"UnitsRepresentation",{enumerable:!0,get:function(){return c.UnitsRepresentation}});var o=mr();Object.defineProperty(e,"UnitsVisual",{enumerable:!0,get:function(){return o.UnitsVisual}})})($A)),$A}var KA={},YA={},Mb={},XH;function qw(){if(XH)return Mb;XH=1,Object.defineProperty(Mb,"__esModule",{value:!0}),Mb.CylindersBuilder=void 0;const e=_t(),t=no(),r=Ge(),n=(0,r.Vec3)(),i=(0,r.Vec3)(),c=(0,r.Vec3)(),o=e.ChunkedArray.add,s=e.ChunkedArray.add3;var h;(function(y){function _(g=2048,a=1024,d){const p=e.ChunkedArray.create(Float32Array,1,a,d?d.groupBuffer.ref.value:g),u=e.ChunkedArray.create(Float32Array,3,a,d?d.startBuffer.ref.value:g),m=e.ChunkedArray.create(Float32Array,3,a,d?d.endBuffer.ref.value:g),v=e.ChunkedArray.create(Float32Array,1,a,d?d.scaleBuffer.ref.value:g),b=e.ChunkedArray.create(Float32Array,1,a,d?d.capBuffer.ref.value:g),P=e.ChunkedArray.create(Float32Array,1,a,d?d.colorModeBuffer.ref.value:g),C=(S,T,A,x,M,D,V,R,E,I,B)=>{for(let w=0;w<6;++w)s(u,S,T,A),s(m,x,M,D),o(p,B),o(v,V),o(b,(R?1:0)+(E?2:0)),o(P,I)},l=(S,T,A,x,M,D,V,R,E)=>{const I=r.Vec3.distance(S,T),B=A%2!==0,w=Math.floor((A+1)/2),O=I/(A+.5);let F=2;
7083r.Vec3.setMagnitude(c,r.Vec3.sub(c,T,S),O),r.Vec3.copy(n,S);for(let L=0;L<w;++L)r.Vec3.add(n,n,c),B&&L===w-1?(r.Vec3.copy(i,T),V||(D=!1)):r.Vec3.add(i,n,c),R&&(F=r.Vec3.distance(S,i)/(I*2)),C(n[0],n[1],n[2],i[0],i[1],i[2],x,M,D,F,E),r.Vec3.add(n,n,c)};return{add:C,addFixedCountDashes:l,addFixedLengthDashes:(S,T,A,x,M,D,V,R)=>{const E=r.Vec3.distance(S,T);l(S,T,E/A,x,M,D,!0,V,R)},getCylinders:()=>{const S=p.elementCount/6,T=e.ChunkedArray.compact(p,!0),A=e.ChunkedArray.compact(u,!0),x=e.ChunkedArray.compact(m,!0),M=e.ChunkedArray.compact(v,!0),D=e.ChunkedArray.compact(b,!0),V=e.ChunkedArray.compact(P,!0),R=d&&S<=d.cylinderCount?d.mappingBuffer.ref.value:new Float32Array(S*18),E=d&&S<=d.cylinderCount?d.indexBuffer.ref.value:new Uint32Array(S*12);return(!d||S>d.cylinderCount)&&f(S,R,E),t.Cylinders.create(R,E,T,A,x,M,D,V,S,d)}}}y.create=_})(h||(Mb.CylindersBuilder=h={}));function f(y,_,g){for(let a=0;a<y;++a){const d=a*18;_[d]=-1,_[d+1]=1,_[d+2]=-1,_[d+3]=-1,_[d+4]=-1,_[d+5]=-1,_[d+6]=1,_[d+7]=1,_[d+8]=-1,_[d+9]=1,_[d+10]=1,_[d+11]=1,_[d+12]=1,_[d+13]=-1,_[d+14]=-1,_[d+15]=1,_[d+16]=-1,_[d+17]=1}for(let a=0;a<y;++a){const d=a*6,p=a*12;g[p]=d,g[p+1]=d+1,g[p+2]=d+2,g[p+3]=d+1,g[p+4]=d+4,g[p+5]=d+2,g[p+6]=d+2,g[p+7]=d+4,g[p+8]=d+3,g[p+9]=d+4,g[p+10]=d+5,g[p+11]=d+3}}return Mb}var KH;function Ca(){return KH||(KH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LinkStyle=e.EmptyLinkBuilderProps=e.DefaultLinkLineProps=e.LinkLineParams=e.DefaultLinkCylinderProps=e.LinkCylinderParams=void 0,e.calculateShiftDir=u,e.createLinkCylinderMesh=S,e.addLinkCylinderMesh=A,e.createLinkCylinderImpostors=x,e.createLinkLines=M;
7083const t=Ge(),r=Ne(),n=Rt(),i=$t(),c=ba(),o=Tt(),s=kn(),h=ac(),f=no(),y=qw(),_=ja();e.LinkCylinderParams={linkScale:r.ParamDefinition.Numeric(.45,{min:0,max:1,step:.01}),linkSpacing:r.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),linkCap:r.ParamDefinition.Boolean(!1),aromaticScale:r.ParamDefinition.Numeric(.3,{min:0,max:1,step:.01}),aromaticSpacing:r.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.01}),aromaticDashCount:r.ParamDefinition.Numeric(2,{min:1,max:6,step:1}),dashCount:r.ParamDefinition.Numeric(4,{min:0,max:10,step:1}),dashScale:r.ParamDefinition.Numeric(.8,{min:0,max:2,step:.1}),dashCap:r.ParamDefinition.Boolean(!0),stubCap:r.ParamDefinition.Boolean(!0),radialSegments:r.ParamDefinition.Numeric(16,{min:2,max:56,step:2},o.BaseGeometry.CustomQualityParamInfo),colorMode:r.ParamDefinition.Select("default",r.ParamDefinition.arrayToOptions(["default","interpolate"]),o.BaseGeometry.ShadingCategory)},e.DefaultLinkCylinderProps=r.ParamDefinition.getDefaultValues(e.LinkCylinderParams),e.LinkLineParams={linkScale:r.ParamDefinition.Numeric(.5,{min:0,max:1,step:.1}),linkSpacing:r.ParamDefinition.Numeric(.1,{min:0,max:2,step:.01}),aromaticDashCount:r.ParamDefinition.Numeric(2,{min:1,max:6,step:1}),dashCount:r.ParamDefinition.Numeric(4,{min:0,max:10,step:1})},e.DefaultLinkLineProps=r.ParamDefinition.getDefaultValues(e.LinkLineParams);const g=(0,t.Vec3)(),a=(0,t.Vec3)(),d=(0,t.Vec3)(),p=t.Vec3.create(0,1,0);function u(D,V,R,E){t.Vec3.normalize(a,t.Vec3.sub(a,V,R)),E!==null?t.Vec3.sub(d,V,E):t.Vec3.copy(d,V),t.Vec3.normalize(d,d);let I=t.Vec3.dot(a,d);return 1-Math.abs(I)<1e-5&&(t.Vec3.set(d,1,0,0),I=t.Vec3.dot(a,d),1-Math.abs(I)<1e-5&&(t.Vec3.set(d,0,1,0),I=t.Vec3.dot(a,d))),t.Vec3.setMagnitude(a,a,I),t.Vec3.sub(d,d,a),t.Vec3.normalize(D,d)}e.EmptyLinkBuilderProps={linkCount:0,position:()=>{},radius:()=>0};var m;(function(D){D[D.Solid=0]="Solid",D[D.Dashed=1]="Dashed",D[D.Double=2]="Double",D[D.OffsetDouble=3]="OffsetDouble",D[D.Triple=4]="Triple",D[D.OffsetTriple=5]="OffsetTriple",D[D.Disk=6]="Disk",D[D.Aromatic=7]="Aromatic",D[D.MirroredAromatic=8]="MirroredAromatic"})(m||(e.LinkStyle=m={}));const v=t.Vec3.scale,b=t.Vec3.add,P=t.Vec3.sub,C=t.Vec3.setMagnitude,l=t.Vec3.dot;function S(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,radius:F,ignore:L,stub:U}=V;if(!I)return{mesh:n.Mesh.createEmpty(E)};const{radialSegments:q,stubCap:N}=R,k=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,j=q*2*I*2,H=i.MeshBuilder.createState(j,j/4,E),G=(0,t.Vec3)();let z=0,W=0;const X={builderState:H,props:R,assignNonAdjustedPosition:(Q,J)=>{w(Q,J,W,!1)},referencePosition:B?()=>B(W):void 0},Y={a:(0,t.Vec3)(),b:(0,t.Vec3)(),group:0,linkStub:!1,linkStyle:m.Solid,linkRadius:0};for(let Q=I;W<Q;++W)L&&L(W)||(w(Y.a,Y.b,W,!0),b(G,G,Y.a),b(G,G,Y.b),z+=2,Y.group=W,Y.linkStub=N&&(U?U(W):!1),Y.linkRadius=F(W),Y.linkStyle=O?O(W):m.Solid,A(X,Y));const K=i.MeshBuilder.getMesh(H);return z===0?{mesh:K}:(t.Vec3.scale(G,G,1/z),k&&t.Vec3.distance(G,k.center)/k.radius<.1?{mesh:K,boundingSphere:k}:{mesh:K})}const T={cylinderProps:{radiusTop:1,radiusBottom:1,radialSegments:8,topCap:!1,bottomCap:!1},vShift:(0,t.Vec3)(),va:(0,t.Vec3)(),vb:(0,t.Vec3)()};function A(D,V){const{builderState:R,props:E,assignNonAdjustedPosition:I,referencePosition:B}=D,{linkRadius:w,linkStub:O,linkStyle:F,a:L,b:U}=V,{linkScale:q,linkSpacing:N,radialSegments:k,linkCap:j,aromaticScale:H,aromaticSpacing:G,aromaticDashCount:z,dashCount:W,dashScale:X,dashCap:Y}=E,{cylinderProps:K,vShift:Q,va:J,vb:ae}=T;K.radialSegments=k,t.Vec3.copy(J,L),t.Vec3.copy(ae,U),P(g,ae,J);const te=l(g,p)>0,[ne,$]=te?[O,j]:[j,O];if(R.currentGroup=V.group,F===m.Solid)K.radiusTop=K.radiusBottom=w,K.topCap=ne,K.bottomCap=$,(0,c.addCylinder)(R,J,ae,.5,K);else if(F===m.Dashed)K.radiusTop=K.radiusBottom=w*X,K.topCap=K.bottomCap=Y,(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,W,O,K);else if(F===m.Double||F===m.OffsetDouble||F===m.Triple||F===m.OffsetTriple||F===m.Aromatic||F===m.MirroredAromatic){const ie=F===m.Double||F===m.OffsetDouble?2:F===m.Triple||F===m.OffsetTriple?3:1.5,Z=w*(q/(.5*ie)),re=(w-Z)*N;if(u(Q,J,ae,B?B():null),K.topCap=ne,K.bottomCap=$,F===m.Aromatic||F===m.MirroredAromatic){K.radiusTop=K.radiusBottom=w,(0,c.addCylinder)(R,J,ae,.5,K);const oe=w+H*w+H*w*G;I&&I(J,ae),C(g,P(g,ae,J),w*.5),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=w*H,K.topCap=K.bottomCap=Y,C(Q,Q,oe),P(J,J,Q),P(ae,ae,Q),(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,z,O,K),F===m.MirroredAromatic&&(C(Q,Q,oe*2),b(J,J,Q),b(ae,ae,Q),(0,c.addFixedCountDashedCylinder)(R,J,ae,.5,z,O,K))}else if(F===m.OffsetDouble||F===m.OffsetTriple){const oe=w+Z+q*w*N;C(Q,Q,oe),K.radiusTop=K.radiusBottom=w,(0,c.addCylinder)(R,J,ae,.5,K),v(g,g,N*q*.2),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=Z,K.topCap=te?O
7083:Y,K.bottomCap=te?Y:O,C(Q,Q,oe),P(J,J,Q),P(ae,ae,Q),(0,c.addCylinder)(R,J,ae,.5,K),ie===3&&(C(Q,Q,oe*2),b(J,J,Q),b(ae,ae,Q),(0,c.addCylinder)(R,J,ae,.5,K))}else C(Q,Q,re),K.radiusTop=K.radiusBottom=Z,ie===3&&(0,c.addCylinder)(R,J,ae,.5,K),(0,c.addDoubleCylinder)(R,J,ae,.5,Q,K)}else F===m.Disk&&(v(g,g,.475),b(J,J,g),P(ae,ae,g),K.radiusTop=K.radiusBottom=w,K.topCap=ne,K.bottomCap=$,(0,c.addCylinder)(R,J,ae,.5,K))}function x(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,radius:F,ignore:L,stub:U}=V;if(!I)return{cylinders:f.Cylinders.createEmpty(E)};const{linkScale:q,linkSpacing:N,linkCap:k,aromaticScale:j,aromaticSpacing:H,aromaticDashCount:G,dashCount:z,dashScale:W,dashCap:X,stubCap:Y,colorMode:K}=R,Q=K==="interpolate",J=Q===!0?3:2,ae=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,te=I*2,ne=y.CylindersBuilder.create(te,te/4,E),$=(0,t.Vec3)(),ie=(0,t.Vec3)(),Z=(0,t.Vec3)(),re=(0,t.Vec3)(),oe=(0,t.Vec3)();let ce=0;for(let pe=0,he=I;pe<he;++pe){if(L&&L(pe))continue;w($,ie,pe,!0),b(oe,oe,$),b(oe,oe,ie),ce+=2;const fe=F(pe),de=O?O(pe):m.Solid,ge=Y&&(U?U(pe):!1);if(de===m.Solid)v(Z,b(Z,$,ie),.5),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe);else if(de===m.Dashed)v(Z,b(Z,$,ie),.5),ne.addFixedCountDashes($,Z,z,W,X,X,ge,Q,pe);else if(de===m.Double||de===m.OffsetDouble||de===m.Triple||de===m.OffsetTriple||de===m.Aromatic||de===m.MirroredAromatic){const Ce=de===m.Double||de===m.OffsetDouble?2:de===m.Triple||de===m.OffsetTriple?3:1.5,ve=q/(.5*Ce),le=(fe-ve*fe)*N;if(v(Z,b(Z,$,ie),.5),u(re,$,ie,B?B(pe):null),de===m.Aromatic||de===m.MirroredAromatic){ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe);const me=fe+j*fe+j*fe*H;w($,ie,pe,!1),C(g,P(g,ie,$),fe*.5),b($,$,g),C(re,re,me),P($,$,re),P(Z,Z,re),ne.addFixedCountDashes($,Z,G,j,X,X,ge,Q,pe),de===m.MirroredAromatic&&(C(re,re,me*2),b($,$,re),b(Z,Z,re),ne.addFixedCountDashes($,Z,G,j,X,X,ge,Q,pe))}else if(de===m.OffsetDouble||de===m.OffsetTriple){const me=fe+ve*fe+q*fe*N;C(re,re,me),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe),C(g,P(g,$,Z),fe/1.5),P($,$,g),Ce===3&&ne.add($[0]+re[0],$[1]+re[1],$[2]+re[2],Z[0]+re[0],Z[1]+re[1],Z[2]+re[2],ve,k,ge,J,pe),ne.add($[0]-re[0],$[1]-re[1],$[2]-re[2],Z[0]-re[0],Z[1]-re[1],Z[2]-re[2],ve,X,ge,J,pe)}else C(re,re,le),Ce===3&&ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],ve,k,ge,J,pe),ne.add($[0]+re[0],$[1]+re[1],$[2]+re[2],Z[0]+re[0],Z[1]+re[1],Z[2]+re[2],ve,k,ge,J,pe),ne.add($[0]-re[0],$[1]-re[1],$[2]-re[2],Z[0]-re[0],Z[1]-re[1],Z[2]-re[2],ve,k,ge,J,pe)}else de===m.Disk&&(v(g,P(g,Z,$),.475),b($,$,g),P(Z,Z,g),ne.add($[0],$[1],$[2],Z[0],Z[1],Z[2],1,k,ge,J,pe))}const ue=ne.getCylinders();return ce===0?{cylinders:ue}:(t.Vec3.scale(oe,oe,1/ce),ae&&t.Vec3.distance(oe,ae.center)/ae.radius<.1?{cylinders:ue,boundingSphere:ae}:{cylinders:ue})}function M(D,V,R,E){const{linkCount:I,referencePosition:B,position:w,style:O,ignore:F}=V;if(!I)return{lines:s.Lines.createEmpty(E)};const{linkScale:L,linkSpacing:U,aromaticDashCount:q,dashCount:N}=R,k=E?.hasBoundingSphere()?_.Sphere3D.clone(E.boundingSphere):void 0,j=I*2,H=h.LinesBuilder.create(j,j/4,E),G=(0,t.Vec3)(),z=(0,t.Vec3)(),W=(0,t.Vec3)(),X=(0,t.Vec3)(),Y=(0,t.Vec3)();let K=0;const Q=4.5,J=3;for(let te=0,ne=I;te<ne;++te){if(F&&F(te))continue;w(G,z,te,!0),b(Y,Y,G),b(Y,Y,z),K+=2;const $=O?O(te):m.Solid;if($===m.Solid)v(W,b(W,G,z),.5),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te);else if($===m.Dashed)v(W,b(W,G,z),.5),H.addFixedCountDashes(G,W,N,te);else if($===m.Double||$===m.OffsetDouble||$===m.Triple||$===m.OffsetTriple||$===m.Aromatic||$===m.MirroredAromatic){const ie=$===m.Double||$===m.OffsetDouble?2:$===m.Triple||$===m.OffsetTriple?3:1.5,re=(1-1*(L/(.5*ie)))*U;if(v(W,b(W,G,z),.5),u(X,G,z,B?B(te):null),$===m.Aromatic||$===m.MirroredAromatic){H.add(G[0],G[1],G[2],W[0],W[1],W[2],te);const oe=re*Q;C(g,P(g,z,G),oe*.5),b(G,G,g),C(X,X,oe),P(G,G,X),P(W,W,X),H.addFixedCountDashes(G,W,q,te),$===m.MirroredAromatic&&(C(X,X,oe*2),b(G,G,X),b(W,W,X),H.addFixedCountDashes(G,W,q,te))}else $===m.OffsetDouble||$===m.OffsetTriple?(C(X,X,re*J),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te),v(g,P(g,G,W),U*L),P(G,G,g),ie===3&&H.add(G[0]+X[0],G[1]+X[1],G[2]+X[2],W[0]+X[0],W[1]+X[1],W[2]+X[2],te),H.add(G[0]-X[0],G[1]-X[1],G[2]-X[2],W[0]-X[0],W[1]-X[1],W[2]-X[2],te)):(C(X,X,re*1.5),ie===3&&H.add(G[0],G[1],G[2],W[0],W[1],W[2],te),H.add(G[0]+X[0],G[1]+X[1],G[2]+X[2],W[0]+X[0],W[1]+X[1],W[2]+X[2],te),H.add(G[0]-X[0],G[1]-X[1],G[2]-X[2],W[0]-X[0],W[1]-X[1],W[2]-X[2],te))}else $===m.Disk&&(v(g,P(g,W,G),.475),b(G,G,g),P(W,W,g),H.add(G[0],G[1],G[2],W[0],W[1],W[2],te))}const ae=H.getLines();return K===0?{lines:ae}:(t.Vec3.scale(Y,Y,1/K),k&&t.Vec3.distance(Y,k.center)/k.radius<.1?{lines:ae,boundingSphere:k}:{lines:ae})}})(YA)),YA}var Db={},YH;function Uw(){if(YH)return Db;
7083YH=1,Object.defineProperty(Db,"__esModule",{value:!0}),Db.InteractionsSharedParams=void 0;const e=Ne();return Db.InteractionsSharedParams={sizeFactor:e.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),dashCount:e.ParamDefinition.Numeric(6,{min:1,max:10,step:1}),dashScale:e.ParamDefinition.Numeric(.4,{min:0,max:2,step:.1}),ignoreHydrogens:e.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:e.ParamDefinition.Select("all",e.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:e.ParamDefinition.Boolean(!1),parentDisplay:e.ParamDefinition.Select("stub",e.ParamDefinition.arrayToOptions(["stub","full","between"]),{description:'Only has an effect when "includeParent" is enabled. "Stub" shows just the child side of interactions to the parent. "Full" shows both sides of interactions to the parent. "Between" shows only interactions to the parent.'})},Db}var QH;function Ose(){return QH||(QH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsIntraUnitParams=void 0,e.InteractionsIntraUnitVisual=P;const t=Ke(),r=Ge(),n=gt(),i=at(),c=Ne(),o=Rt(),s=Gl(),h=Ca(),f=mr(),y=zt(),_=ZS(),g=si(),a=rt(),d=Er(),p=Gt(),u=Uw(),m=si(),v=ra();async function b(A,x,M,D,V,R){if(!t.Unit.isAtomic(x))return o.Mesh.createEmpty(R);const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return o.Mesh.createEmpty(R);const B=t.StructureElement.Location.create(M,x),w=s.InteractionsProvider.get(M).value,O=w.unitsFeatures.get(x.id),F=w.unitsContacts.get(x.id),{x:L,y:U,z:q,members:N,offsets:k,types:j}=O,{edgeCount:H,a:G,b:z,edgeProps:{flag:W,type:X}}=F,{sizeFactor:Y,ignoreHydrogens:K,ignoreHydrogensVariant:Q,parentDisplay:J}=V;if(!H)return o.Mesh.createEmpty(R);const{elements:ae,conformation:te}=x,ne=(0,r.Vec3)(),$=(0,r.Vec3)(),ie=(0,r.Vec3)(),Z={linkCount:H*2,position:(ce,ue,pe)=>{const he=X[pe];if((!K||Q!=="all")&&(he===m.InteractionType.HydrogenBond||he===m.InteractionType.WeakHydrogenBond&&Q!=="non-polar")){const fe=N[k[G[pe]]],de=N[k[z[pe]]];te.invariantPosition(ae[fe],$),te.invariantPosition(ae[de],ie);let ge=r.Vec3.distance($,ie),Ce=ge;r.Vec3.copy(ce,$),r.Vec3.copy(ue,ie);const ve=he===m.InteractionType.HydrogenBond?g.FeatureType.HydrogenDonor:g.FeatureType.WeakHydrogenDonor;j[k[G[pe]]]===ve?(0,v.eachIntraBondedAtom)(x,fe,(me,ee)=>{if((0,d.isHydrogen)(M,x,ae[ee],"all")){te.invariantPosition(ae[ee],ne);const se=r.Vec3.distance(ne,ie);se<ge&&(ge=se,r.Vec3.copy(ce,ne))}}):(0,v.eachIntraBondedAtom)(x,de,(me,ee)=>{if((0,d.isHydrogen)(M,x,ae[ee],"all")){te.invariantPosition(ae[ee],ne);const se=r.Vec3.distance(ne,$);se<Ce&&(Ce=se,r.Vec3.copy(ue,ne))}})}else r.Vec3.set(ce,L[G[pe]],U[G[pe]],q[G[pe]]),r.Vec3.set(ue,L[z[pe]],U[z[pe]],q[z[pe]])},style:ce=>h.LinkStyle.Dashed,radius:ce=>{B.element=ae[N[k[G[ce]]]];const ue=D.size.size(B);B.element=ae[N[k[z[ce]]]];const pe=D.size.size(B);return Math.min(ue,pe)*Y},ignore:ce=>{if(W[ce]===g.InteractionFlag.Filtered)return!0;if(I)if(J==="stub"){const ue=G[ce];for(let pe=k[ue],he=k[ue+1];pe<he;++pe){const fe=ae[N[k[pe]]];if(!i.SortedArray.has(I.elements,fe))return!0}}else if(J==="full"||J==="between"){let ue=!1,pe=!1;const he=G[ce];for(let de=k[he],ge=k[he+1];de<ge;++de){const Ce=ae[N[k[de]]];i.SortedArray.has(I.elements,Ce)||(ue=!0)}const fe=z[ce];for(let de=k[fe],ge=k[fe+1];de<ge;++de){const Ce=ae[N[k[de]]];i.SortedArray.has(I.elements,Ce)||(pe=!0)}return J==="full"?ue&&pe:ue===pe}else(0,p.assertUnreachable)(J);return!1}},{mesh:re,boundingSphere:oe}=(0,h.createLinkCylinderMesh)(A,Z,V,R);if(oe)re.setBoundingSphere(oe);else if(re.triangleCount>0){const ce=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,1*Y);re.setBoundingSphere(ce)}return re}e.InteractionsIntraUnitParams={...f.UnitsMeshParams,...h.LinkCylinderParams,...u.InteractionsSharedParams};function P(A){return(0,f.UnitsMeshVisual)({defaultProps:c.ParamDefinition.getDefaultValues(e.InteractionsIntraUnitParams),createGeometry:b,createLocationIterator:T,getLoci:C,eachLocation:S,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.radialSegments!==D.radialSegments||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.parentDisplay!==D.parentDisplay;const B=s.InteractionsProvider.get(E.structure).version;x.info.interactionsHash!==B&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.info.interactionsHash=B)}},A)}function C(A,x,M){const{objectId:D,instanceId:V,groupId:R}=A;if(M===D){const{structure:E,group:I}=x,B=E.unitMap.get(I.units[V].id),w=s.InteractionsProvider.get(E).value,{a:O,b:F}=w.unitsContacts.get(B.id);return _.Interactions.Loci(E,w,[{unitA:B,indexA:O[R],unitB:B,indexB:F[R]},{unitA:B,indexA:F[R],unitB:B,indexB:O[R]}])}return n.EmptyLoci}const l=new Set;function S(A,x,M,D){let V=!1;if(_.Interactions.isLoci(A)){const{structure:R,group:E}=x;if(!t.Structure.areEquivalent(A.data.structure,R))return!1;const I=s.InteractionsProvider.get(R).value;if(A.data.interactions!==I)return!1;const B=E.units[0],w=I.unitsContacts.get(B.id),O=w.edgeCount*2;
7083for(const F of A.elements){if(F.unitA!==F.unitB)continue;const L=E.unitIndexMap.get(F.unitA.id);if(L!==void 0){const U=w.getDirectedEdgeIndex(F.indexA,F.indexB);U!==-1&&M(i.Interval.ofSingleton(L*O+U))&&(V=!0)}}}else if(t.StructureElement.Loci.is(A)){const{structure:R,group:E}=x;if(!t.Structure.areEquivalent(A.structure,R))return!1;const I=s.InteractionsProvider.get(R).value;if(!I)return!1;const B=E.units[0],w=I.unitsContacts.get(B.id),O=I.unitsFeatures.get(B.id),F=w.edgeCount*2,{offset:L}=w,{offsets:U,indices:q}=O.elementsIndex,{members:N,offsets:k}=O;for(const j of A.elements){const H=E.unitIndexMap.get(j.unit.id);H!==void 0&&(i.OrderedSet.forEach(j.indices,G=>{for(let z=U[G],W=U[G+1];z<W;++z){const X=q[z];for(let Y=L[X],K=L[X+1];Y<K;++Y)l.add(Y)}}),l.forEach(G=>{if(D){const z=w.a[G];for(let X=k[z],Y=k[z+1];X<Y;++X)if(!i.OrderedSet.has(j.indices,N[X]))return;const W=w.b[G];for(let X=k[W],Y=k[W+1];X<Y;++X)if(!i.OrderedSet.has(j.indices,N[X]))return}M(i.Interval.ofSingleton(H*F+G))&&(V=!0)}),l.clear())}}return V}function T(A){const{structure:x,group:M}=A,D=M.units[0],V=s.InteractionsProvider.get(x).value,R=V.unitsContacts.get(D.id),E=R.edgeCount*2,I=M.units.length,B=_.Interactions.Location(V,x),{element:w}=B,O=(F,L)=>{const U=M.units[L];return w.unitA=U,w.indexA=R.a[F],w.unitB=U,w.indexB=R.b[F],B};return(0,y.LocationIterator)(E,I,1,O)}})(KA)),KA}var QA={},ZH;function kse(){return ZH||(ZH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsInterUnitParams=void 0,e.InteractionsInterUnitVisual=P;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=Ca(),o=Br(),s=gt(),h=at(),f=ZS(),y=Gl(),_=zt(),g=si(),a=jr(),d=rt(),p=Gt(),u=Uw(),m=ra(),v=Er();function b(x,M,D,V,R){if(!M.hasAtomic)return n.Mesh.createEmpty(R);const E=r.StructureElement.Location.create(M),I=y.InteractionsProvider.get(M).value,{contacts:B,unitsFeatures:w}=I,{edgeCount:O,edges:F}=B,{sizeFactor:L,ignoreHydrogens:U,ignoreHydrogensVariant:q,parentDisplay:N}=V;if(!O)return n.Mesh.createEmpty(R);const{child:k}=M,j=(0,i.Vec3)(),H=(0,i.Vec3)(),G=(0,i.Vec3)(),z={linkCount:O,position:(Y,K,Q)=>{const{unitA:J,indexA:ae,unitB:te,indexB:ne,props:{type:$}}=F[Q],ie=w.get(J),Z=w.get(te),re=M.unitMap.get(J),oe=M.unitMap.get(te);if((!U||q!=="all")&&($===g.InteractionType.HydrogenBond||$===g.InteractionType.WeakHydrogenBond&&q!=="non-polar")){const ce=ie.members[ie.offsets[ae]],ue=Z.members[Z.offsets[ne]];re.conformation.position(re.elements[ce],H),oe.conformation.position(oe.elements[ue],G);let pe=i.Vec3.distance(H,G),he=pe;i.Vec3.copy(Y,H),i.Vec3.copy(K,G);const fe=$===g.InteractionType.HydrogenBond?g.FeatureType.HydrogenDonor:g.FeatureType.WeakHydrogenDonor;ie.types[ie.offsets[ae]]===fe?(0,m.eachBondedAtom)(M,re,ce,(ge,Ce)=>{const ve=ge.elements[Ce];if((0,v.isHydrogen)(M,ge,ve,"all")){ge.conformation.position(ve,j);const le=i.Vec3.distance(j,G);le<pe&&(pe=le,i.Vec3.copy(Y,j))}}):(0,m.eachBondedAtom)(M,oe,ue,(ge,Ce)=>{const ve=ge.elements[Ce];if((0,v.isHydrogen)(M,ge,ve,"all")){ge.conformation.position(ve,j);const le=i.Vec3.distance(j,H);le<he&&(he=le,i.Vec3.copy(K,j))}})}else i.Vec3.set(Y,ie.x[ae],ie.y[ae],ie.z[ae]),i.Vec3.transformMat4(Y,Y,re.conformation.operator.matrix),i.Vec3.set(K,Z.x[ne],Z.y[ne],Z.z[ne]),i.Vec3.transformMat4(K,K,oe.conformation.operator.matrix)},style:Y=>c.LinkStyle.Dashed,radius:Y=>{const K=F[Y],Q=w.get(K.unitA);E.unit=M.unitMap.get(K.unitA),E.element=E.unit.elements[Q.members[Q.offsets[K.indexA]]];const J=D.size.size(E),ae=w.get(K.unitB);E.unit=M.unitMap.get(K.unitB),E.element=E.unit.elements[ae.members[ae.offsets[K.indexB]]];const te=D.size.size(E);return Math.min(J,te)*L},ignore:Y=>{if(F[Y].props.flag===g.InteractionFlag.Filtered)return!0;if(k){const K=F[Y];if(N==="stub"){const Q=k.unitMap.get(K.unitA);if(!Q)return!0;const J=M.unitMap.get(K.unitA),{offsets:ae,members:te}=w.get(K.unitA);for(let ne=ae[K.indexA],$=ae[K.indexA+1];ne<$;++ne){const ie=J.elements[te[ne]];if(!h.SortedArray.has(Q.elements,ie))return!0}}else if(N==="full"||N==="between"){let Q=!1,J=!1;const ae=k.unitMap.get(K.unitA);if(!ae)Q=!0;else{const ne=M.unitMap.get(K.unitA),{offsets:$,members:ie}=w.get(K.unitA);for(let Z=$[K.indexA],re=$[K.indexA+1];Z<re;++Z){const oe=ne.elements[ie[Z]];h.SortedArray.has(ae.elements,oe)||(Q=!0)}}const te=k.unitMap.get(K.unitB);if(!te)J=!0;else{const ne=M.unitMap.get(K.unitB),{offsets:$,members:ie}=w.get(K.unitB);for(let Z=$[K.indexB],re=$[K.indexB+1];Z<re;++Z){const oe=ne.elements[ie[Z]];h.SortedArray.has(te.elements,oe)||(J=!0)}}return N==="full"?Q&&J:Q===J}else(0,p.assertUnreachable)(N)}return!1}},{mesh:W,boundingSphere:X}
7083=(0,c.createLinkCylinderMesh)(x,z,V,R);if(X)W.setBoundingSphere(X);else if(W.triangleCount>0){const{child:Y}=M,K=d.Sphere3D.expand((0,d.Sphere3D)(),(Y??M).boundary.sphere,1*L);W.setBoundingSphere(K)}return W}e.InteractionsInterUnitParams={...o.ComplexMeshParams,...c.LinkCylinderParams,...u.InteractionsSharedParams};function P(x){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InteractionsInterUnitParams),createGeometry:b,createLocationIterator:A,getLoci:C,eachLocation:T,setUpdateState:(M,D,V,R,E,I,B)=>{M.createGeometry=D.sizeFactor!==V.sizeFactor||D.dashCount!==V.dashCount||D.dashScale!==V.dashScale||D.dashCap!==V.dashCap||D.radialSegments!==V.radialSegments||D.ignoreHydrogens!==V.ignoreHydrogens||D.ignoreHydrogensVariant!==V.ignoreHydrogensVariant||D.parentDisplay!==V.parentDisplay;const w=y.InteractionsProvider.get(I).version;M.info.interactionsHash!==w&&(M.createGeometry=!0,M.updateTransform=!0,M.updateColor=!0,M.info.interactionsHash=w)}},x)}function C(x,M,D){const{objectId:V,groupId:R}=x;if(D===V){const E=y.InteractionsProvider.get(M).value,I=E.contacts.edges[R],B=M.unitMap.get(I.unitA),w=M.unitMap.get(I.unitB);return f.Interactions.Loci(M,E,[{unitA:B,indexA:I.indexA,unitB:w,indexB:I.indexB},{unitA:w,indexA:I.indexB,unitB:B,indexB:I.indexA}])}return s.EmptyLoci}const l=new Map,S=new Set;function T(x,M,D,V){let R=!1;if(f.Interactions.isLoci(x)){if(!r.Structure.areEquivalent(x.data.structure,M))return!1;const E=y.InteractionsProvider.get(M).value;if(x.data.interactions!==E)return!1;const{contacts:I}=E;for(const B of x.elements){const w=I.getEdgeIndex(B.indexA,B.unitA.id,B.indexB,B.unitB.id);w!==-1&&D(h.Interval.ofSingleton(w))&&(R=!0)}}else if(r.StructureElement.Loci.is(x)){if(!r.Structure.areEquivalent(x.structure,M)||V&&x.elements.length===1)return!1;const E=y.InteractionsProvider.get(M).value;if(!E)return!1;const{contacts:I,unitsFeatures:B}=E;for(const w of x.elements)l.set(w.unit.id,w.indices);for(const w of x.elements){const{unit:O}=w;a.Unit.isAtomic(O)&&h.OrderedSet.forEach(w.indices,F=>{for(const L of I.getContactIndicesForElement(F,O))S.add(L)})}S.forEach(w=>{if(V){const{indexA:O,unitA:F,indexB:L,unitB:U}=I.edges[w],q=l.get(F),N=l.get(U);if(!q||!N)return;const{offsets:k,members:j}=B.get(F);
7083for(let z=k[O],W=k[O+1];z<W;++z)if(!h.OrderedSet.has(q,j[z]))return;const{offsets:H,members:G}=B.get(U);for(let z=H[L],W=H[L+1];z<W;++z)if(!h.OrderedSet.has(N,G[z]))return}D(h.Interval.ofSingleton(w))&&(R=!0)}),l.clear(),S.clear()}return R}function A(x){const M=y.InteractionsProvider.get(x).value,{contacts:D}=M,V=D.edgeCount,R=1,E=f.Interactions.Location(M,x),{element:I}=E,B=w=>{const O=D.edges[w];return I.unitA=x.unitMap.get(O.unitA),I.indexA=O.indexA,I.unitB=x.unitMap.get(O.unitB),I.indexB=O.indexB,E};return(0,_.LocationIterator)(V,R,1,B,!0)}})(QA)),QA}var ZA={},JH;function Fse(){return JH||(JH=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BridgeParams=void 0,e.BridgeVisual=l;const t=Ne(),r=Ke(),n=Rt(),i=Ca(),c=Br(),o=gt(),s=Xa(),h=at(),f=Gl(),y=zt(),_=ZS(),g=rt(),a=Uw(),d=new WeakMap;function p(M){const D=d.get(M);if(D)return D;const V=M.length,R=new Int32Array(V),E=new Int32Array(V),I=new Map,B=new Map;for(let O=0;O<V;O++){const F=M[O],L=`${F.unitA}|${F.indexA}|${F.unitM}|${F.indexMA}`,U=`${F.unitM}|${F.indexMB}|${F.unitB}|${F.indexB}`;let q=I.get(L);q===void 0&&(q=O,I.set(L,O)),R[O]=q;let N=B.get(U);N===void 0&&(N=O,B.set(U,O)),E[O]=N}const w={endpointA:R,endpointB:E};return d.set(M,w),w}function u(M,D){return M.members[M.offsets[D]]}function m(M,D,V,R){const E=u(D,V);M.conformation.position(M.elements[E],R)}function v(M,D,V,R,E){const I=M.unitMap.get(V),B=u(R,E);D.unit=I,D.element=I.elements[B]}function b(M,D,V,R){let E=!1;const I=V.endpointA[M];return R(h.Interval.ofSingleton(I))&&(E=!0),R(h.Interval.ofSingleton(I+D))&&(E=!0),E}function P(M,D,V,R){let E=!1;const I=V.endpointB[M];return R(h.Interval.ofSingleton(I+2*D))&&(E=!0),R(h.Interval.ofSingleton(I+3*D))&&(E=!0),E}function C(M,D,V,R,E){if(!D.hasAtomic)return n.Mesh.createEmpty(E);const I=f.InteractionsProvider.get(D).value;if(!I)return n.Mesh.createEmpty(E);const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O)return n.Mesh.createEmpty(E);const F=r.StructureElement.Location.create(D),{sizeFactor:L}=R,U=p(B),q={linkCount:4*O,position:(j,H,G)=>{const z=B[G%O],W=D.unitMap.get(z.unitM),X=w.get(z.unitM),Y=Math.floor(G/O);if(Y===0){const K=D.unitMap.get(z.unitA),Q=w.get(z.unitA);m(K,Q,z.indexA,j),m(W,X,z.indexMA,H)}else if(Y===1){const K=D.unitMap.get(z.unitA),Q=w.get(z.unitA);m(W,X,z.indexMA,j),m(K,Q,z.indexA,H)}else if(Y===2){const K=D.unitMap.get(z.unitB),Q=w.get(z.unitB);m(W,X,z.indexMB,j),m(K,Q,z.indexB,H)}else{const K=D.unitMap.get(z.unitB),Q=w.get(z.unitB);m(K,Q,z.indexB,j),m(W,X,z.indexMB,H)}},ignore:j=>{const H=j%O;return Math.floor(j/O)<=1?U.endpointA[H]!==H:U.endpointB[H]!==H},style:j=>i.LinkStyle.Dashed,radius:j=>{const H=B[j%O];if(Math.floor(j/O)<=1){const W=w.get(H.unitA),X=w.get(H.unitM);v(D,F,H.unitA,W,H.indexA);const Y=V.size.size(F);v(D,F,H.unitM,X,H.indexMA);const K=V.size.size(F);return Math.min(Y,K)*L}else{const W=w.get(H.unitM),X=w.get(H.unitB);v(D,F,H.unitM,W,H.indexMB);const Y=V.size.size(F);v(D,F,H.unitB,X,H.indexB);const K=V.size.size(F);return Math.min(Y,K)*L}}},{mesh:N,boundingSphere:k}=(0,i.createLinkCylinderMesh)(M,q,R,E);if(k)N.setBoundingSphere(k);else if(N.triangleCount>0){const j=g.Sphere3D.expand((0,g.Sphere3D)(),D.boundary.sphere,L);N.setBoundingSphere(j)}return N}e.BridgeParams={...c.ComplexMeshParams,...i.LinkCylinderParams,...a.InteractionsSharedParams};function l(M){return(0,c.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.BridgeParams),createGeometry:C,createLocationIterator:x,getLoci:S,eachLocation:A,setUpdateState:(D,V,R,E,I,B,w)=>{D.createGeometry=V.sizeFactor!==R.sizeFactor||V.dashCount!==R.dashCount||V.dashScale!==R.dashScale||V.dashCap!==R.dashCap||V.radialSegments!==R.radialSegments||E.size!==I.size;const O=f.InteractionsProvider.get(B).version;D.info.interactionsHash!==O&&(D.createGeometry=!0,D.updateTransform=!0,D.updateColor=!0,D.info.interactionsHash=O)}},M)}function S(M,D,V){const{objectId:R,groupId:E}=M;if(V!==R)return o.EmptyLoci;const I=f.InteractionsProvider.get(D).value;if(!I)return o.EmptyLoci;const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O||E<0||E>=4*O)return o.EmptyLoci;const F=E%O;return _.Bridges.Loci({structure:D,bridges:B,unitsFeatures:w},[{bridgeIndex:F}])}const T=new Map;function A(M,D,V,R){let E=!1;
7083if(_.Bridges.isLoci(M)){if(!r.Structure.areEquivalent(M.data.structure,D))return!1;const I=f.InteractionsProvider.get(D).value;if(!I)return!1;const{bridges:B}=I,w=B.length;if(!w)return!1;const O=p(B);for(const F of M.elements)F.bridgeIndex<0||F.bridgeIndex>=w||(b(F.bridgeIndex,w,O,V)&&(E=!0),P(F.bridgeIndex,w,O,V)&&(E=!0))}else if(r.StructureElement.Loci.is(M)){if(!r.Structure.areEquivalent(M.structure,D))return!1;const I=f.InteractionsProvider.get(D).value;if(!I)return!1;const{bridges:B,unitsFeatures:w}=I,O=B.length;if(!O)return!1;const F=p(B);T.clear();for(const L of M.elements)T.set(L.unit.id,L.indices);for(let L=0;L<O;L++){const U=B[L],q=T.get(U.unitA),N=T.get(U.unitM),k=T.get(U.unitB);if(!q&&!N&&!k)continue;let j=!1;if(q){const z=w.get(U.unitA),W=u(z,U.indexA);j=h.OrderedSet.has(q,W)}let H=!1;if(N){const z=w.get(U.unitM),W=u(z,U.indexMA),X=u(z,U.indexMB);H=h.OrderedSet.has(N,W)||h.OrderedSet.has(N,X)}let G=!1;if(k){const z=w.get(U.unitB),W=u(z,U.indexB);G=h.OrderedSet.has(k,W)}(j||H)&&b(L,O,F,V)&&(E=!0),(G||H)&&P(L,O,F,V)&&(E=!0)}T.clear()}return E}function x(M){const D=f.InteractionsProvider.get(M).value;if(!D)return(0,y.LocationIterator)(0,1,1,()=>s.NullLocation,!0);const{bridges:V,unitsFeatures:R}=D,E=V.length,I=4*E,B=1,w={structure:M,bridges:V,unitsFeatures:R},O=_.Bridges.Location(w),{element:F}=O,L=U=>(F.bridgeIndex=E===0?0:U%E,O);return(0,y.LocationIterator)(I,B,1,L,!0)}})(ZA)),ZA}var e9;function iZ(){return e9||(e9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InteractionsRepresentationProvider=e.InteractionsParams=void 0,e.getInteractionParams=y,e.InteractionRepresentation=_;const t=Ne(),r=Lt(),n=Yr(),i=Ose(),c=Gl(),o=kse(),s=Fse(),h=Qf(),f={"intra-unit":(g,a)=>(0,n.UnitsRepresentation)("Intra-unit interactions cylinder",g,a,i.InteractionsIntraUnitVisual),"inter-unit":(g,a)=>(0,n.ComplexRepresentation)("Inter-unit interactions cylinder",g,a,o.InteractionsInterUnitVisual),bridge:(g,a)=>(0,n.ComplexRepresentation)("Bridge cylinder",g,a,s.BridgeVisual)};e.InteractionsParams={...i.InteractionsIntraUnitParams,...o.InteractionsInterUnitParams,...s.BridgeParams,unitKinds:(0,h.getUnitKindsParam)(["atomic"]),sizeFactor:t.ParamDefinition.Numeric(.2,{min:.01,max:1,step:.01}),visuals:t.ParamDefinition.MultiSelect(["intra-unit","inter-unit","bridge"],t.ParamDefinition.objectToOptions(f))};function y(g,a){return t.ParamDefinition.clone(e.InteractionsParams)}function _(g,a){return r.Representation.createMulti("Interactions",g,a,n.StructureRepresentationStateBuilder,f)}e.InteractionsRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"interactions",label:"Non-covalent Interactions",description:"Displays non-covalent interactions as dashed cylinders.",factory:_,getParams:y,defaultValues:t.ParamDefinition.getDefaultValues(e.InteractionsParams),defaultColorTheme:{name:"interaction-type"},defaultSizeTheme:{name:"uniform"},isApplicable:g=>g.elementCount>0&&c.InteractionsProvider.isApplicable(g),ensureCustomProperties:{attach:(g,a)=>c.InteractionsProvider.attach(g,a,void 0,!0),detach:g=>c.InteractionsProvider.ref(g,!1)},getData:(g,a)=>a.includeParent?g.asParent():g,mustRecreate:(g,a)=>g.includeParent!==a.includeParent})})(WA)),WA}var t9;function Lse(){if(t9)return Ab;t9=1,Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.Interactions=void 0;const e=di(),t=Ne(),r=Gl(),n=Et(),i=jt(),c=xl(),o=at(),s=si(),h=Vt(),f=nZ(),y=iZ();return Ab.Interactions=e.PluginBehavior.create({name:"computed-interactions-prop",category:"custom-props",display:{name:"Interactions"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.InteractionsProvider,this.labelProvider={label:_=>{if(this.params.showTooltip)switch(_.kind){case"element-loci":if(_.elements.length===0)return;const g=[],a=this.getStructures(_.structure);for(const d of a){const p=this.provider.get(d).value;if(!p)continue;const u=c.StructureElement.Loci.remap(_,d);if(u.elements.length!==1)continue;const m=u.elements[0];if(o.OrderedSet.size(m.indices)!==1)continue;const v=p.unitsFeatures.get(m.unit.id);if(!v)continue;const b=[],P=[],C=[],l=o.OrderedSet.start(m.indices),{types:S,groups:T,elementsIndex:{indices:A,offsets:x}}=v;for(let M=x[l],D=x[l+1];M<D;++M){const V=A[M],R=S[V],E=T[V];R&&b.push((0,s.featureTypeLabel)(R)),E&&P.push((0,s.featureGroupLabel)(E))}b.length&&C.push(`<small>Types</small> ${b.join(", ")}`),P.length&&C.push(`<small>Groups</small> ${P.join(", ")}`),C.length&&g.push(`Interaction Feature: ${C.join(" | ")}`)}return g.length?g.join("<br/>"):void 0;default:return}}}}getStructures(_){const g=[],a=this.ctx.helpers.substructureParent.get(_);if(a){const p=this.ctx.state.data.select(n.StateSelection.Generators.ofType(i.PluginStateObject.Molecule.Structure,a.transform.ref));for(const u of p)u.obj&&(0,h.arraySetAdd)(g,u.obj.data)}return g}update(_){const g=this.params.autoAttach!==_.autoAttach||this.params.showTooltip!==_.showTooltip;return this.params.autoAttach=_.autoAttach,this.params.showTooltip=_.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),g}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(f.InteractionTypeColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.representation.structure.registry.add(y.InteractionsRepresentationProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(f.InteractionTypeColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.representation.structure.registry.remove(y.InteractionsRepresentationProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})}),Ab}var Ib={},r9;function Nse(){if(r9)return Ib;
7083r9=1,Object.defineProperty(Ib,"__esModule",{value:!0}),Ib.SecondaryStructure=void 0;const e=di(),t=Ne(),r=Pl();return Ib.SecondaryStructure=e.PluginBehavior.create({name:"computed-secondary-structure-prop",category:"custom-props",display:{name:"Secondary Structure"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.SecondaryStructureProvider}update(n){const i=this.params.autoAttach!==n.autoAttach;return this.params.autoAttach=n.autoAttach,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),i}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1)})}),Ib}var wb={},n9;function qse(){if(n9)return wb;n9=1,Object.defineProperty(wb,"__esModule",{value:!0}),wb.ValenceModel=void 0;const e=di(),t=Ne(),r=QS(),n=jt(),i=Et(),c=Ke(),o=at(),s=v2(),h=Vt();return wb.ValenceModel=e.PluginBehavior.create({name:"computed-valence-model-prop",category:"custom-props",display:{name:"Valence Model"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.ValenceModelProvider,this.labelProvider={label:f=>{if(this.params.showTooltip)switch(f.kind){case"element-loci":if(f.elements.length===0)return;const y=[],_=this.getStructures(f.structure);for(const g of _){const a=this.provider.get(g).value;if(!a)continue;const d=c.StructureElement.Loci.remap(f,g);if(d.elements.length!==1)continue;const p=d.elements[0];if(o.OrderedSet.size(p.indices)!==1)continue;const u=a.get(p.unit.id);if(!u)continue;const m=o.OrderedSet.start(p.indices),v=u.charge[m],b=u.idealGeometry[m],P=u.implicitH[m],C=u.totalH[m];y.push(`Valence Model: <small>Charge</small> ${v} | <small>Ideal Geometry</small> ${(0,s.geometryLabel)(b)} | <small>Implicit H</small> ${P} | <small>Total H</small> ${C}`)}return y.length?y.join("<br/>"):void 0;default:return}}}}getStructures(f){const y=[],_=this.ctx.helpers.substructureParent.get(f);if(_){const a=this.ctx.state.data.select(i.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure,_.transform.ref));for(const d of a)d.obj&&(0,h.arraySetAdd)(y,d.obj.data)}return y}update(f){const y=this.params.autoAttach!==f.autoAttach||this.params.showTooltip!==f.showTooltip;return this.params.autoAttach=f.autoAttach,this.params.showTooltip=f.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),y}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1),showTooltip:t.ParamDefinition.Boolean(!0)})}),wb}var Vb={},JA={},i9;function Use(){return i9||(i9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SIFTSMappingColorThemeProvider=e.SIFTSMappingColorThemeParams=void 0,e.getSIFTSMappingColorThemeParams=y,e.SIFTSMappingColorTheme=_;const t=Ke(),r=Ut(),n=vt(),i=On(),c=Ne(),o=lI(),s=(0,n.Color)(16448250),h="Assigns a color based on SIFTS mapping.",f=new Map;
7083e.SIFTSMappingColorThemeParams={...(0,i.getPaletteParams)({type:"colors",colorList:"set-1"})};function y(g){return e.SIFTSMappingColorThemeParams}function _(g,a){let d;if(g.structure){for(const b of g.structure.models){const P=o.SIFTSMapping.Provider.get(b).value;if(P)for(const C of P.accession)!C||f.has(C)||f.set(C,f.size)}const p=t.StructureElement.Location.create(g.structure),u=(0,i.getPalette)(f.size+1,a,{valueLabel:b=>`${b}`}),m=new Map,v=b=>{const P=o.SIFTSMapping.getKey(b);if(!P)return s;if(m.has(P))return m.get(P);const C=u.color(f.get(P));return m.set(P,C),C};d=b=>t.StructureElement.Location.is(b)&&t.Unit.isAtomic(b.unit)?v(b):t.Bond.isLocation(b)?(p.unit=b.aUnit,p.element=b.aUnit.elements[b.aIndex],v(p)):s}else d=()=>s;return{factory:_,granularity:"group",preferSmoothing:!0,color:d,props:a,description:h}}e.SIFTSMappingColorThemeProvider={name:"sifts-mapping",label:"SIFTS Mapping",category:r.ColorThemeCategory.Residue,factory:_,getParams:y,defaultValues:c.ParamDefinition.getDefaultValues(e.SIFTSMappingColorThemeParams),isApplicable:g=>{var a;return!!(!((a=g.structure)===null||a===void 0)&&a.models.some(d=>o.SIFTSMapping.Provider.isApplicable(d)))},ensureCustomProperties:{attach:async(g,a)=>{if(a.structure)for(const d of a.structure.models)await o.SIFTSMapping.Provider.attach(g,d,void 0,!0)},detach:g=>{if(g.structure)for(const a of g.structure.models)o.SIFTSMapping.Provider.ref(a,!1)}}}})(JA)),JA}var a9;function jse(){if(a9)return Vb;a9=1,Object.defineProperty(Vb,"__esModule",{value:!0}),Vb.SIFTSMapping=void 0;const e=at(),t=lI(),r=Use(),n=Ke(),i=Ne(),c=di();Vb.SIFTSMapping=c.PluginBehavior.create({name:"sifts-mapping-prop",category:"custom-props",display:{name:"SIFTS Mapping"},ctor:class extends c.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=t.SIFTSMapping.Provider,this.labelProvider={label:s=>{if(this.params.showTooltip)return o(s)}}}update(s){const h=this.params.autoAttach!==s.autoAttach||this.params.showTooltip!==s.showTooltip;return this.params.autoAttach=s.autoAttach,this.params.showTooltip=s.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),h}register(){this.ctx.customModelProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(r.SIFTSMappingColorThemeProvider),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customModelProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(r.SIFTSMappingColorThemeProvider),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:i.ParamDefinition.Boolean(!0),showTooltip:i.ParamDefinition.Boolean(!0)})});function o(s){if(s.kind==="element-loci"){if(s.elements.length===0)return;const h=s.elements[0],f=h.unit,y=n.StructureElement.Location.create(s.structure,f,f.elements[e.OrderedSet.getAt(h.indices,0)]);return t.SIFTSMapping.getLabel(y)}}return Vb}var Eb={},Bb={},o9;function aZ(){if(o9)return Bb;o9=1,Object.defineProperty(Bb,"__esModule",{value:!0}),Bb.ModelCrossLinkRestraint=void 0;const e=Ke(),t=as();var r;return(function(n){n.Descriptor={name:"ihm_cross_link_restraint"},n.Provider=t.FormatPropertyProvider.create(n.Descriptor);function i(c,o){const s={entity_id:c.entity_id_1,asym_id:c.asym_id_1,seq_id:c.seq_id_1,atom_id:c.atom_id_1},h={entity_id:c.entity_id_2,asym_id:c.asym_id_2,seq_id:c.seq_id_2,atom_id:c.atom_id_2};function f(u,m,v){const b=u.get(m);b?b.push(v):u.set(m,[v])}function y(u,m){const v=m.entity_id.value(u),b=m.asym_id.value(u),P=m.seq_id.value(u);if(c.model_granularity.value(u)==="by-atom"){const C=o.atomicHierarchy.index.findAtom({auth_seq_id:P,label_asym_id:b,label_atom_id:m.atom_id.value(u),label_entity_id:v});C>=0&&f(g,C,u)}else if(o.coarseHierarchy.isDefined){const C=o.coarseHierarchy.spheres.findSequenceKey(v,b,P);if(C>=0)f(a,C,u);else{const l=o.coarseHierarchy.gaussians.findSequenceKey(v,b,P);l>=0&&f(d,l,u)}}}function _(u){switch(u){case e.Unit.Kind.Atomic:return g;case e.Unit.Kind.Spheres:return a;case e.Unit.Kind.Gaussians:return d}}const g=new Map,a=new Map,d=new Map,p=[];for(let u=0;u<c._rowCount;
7083++u)y(u,s),y(u,h);return{getIndicesByElement:(u,m)=>{const b=_(m).get(u);return b!==void 0?b:p},data:c}}n.fromTable=i})(r||(Bb.ModelCrossLinkRestraint=r={})),Bb}var eM={},rl={},Rb={},s9;function Gse(){if(s9)return Rb;s9=1,Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.PairRestraints=void 0;const e=[];function t(n,i,c,o){return`${n}|${i.id}|${c}|${o.id}`}class r{getPairIndices(i,c,o,s){const h=t(i,c,o,s);return this.pairKeyIndices.get(h)||e}getPairs(i,c,o,s){return this.getPairIndices(i,c,o,s).map(f=>this.pairs[f])}constructor(i){this.pairs=i;const c=new Map;this.pairs.forEach((o,s)=>{const h=t(o.indexA,o.unitA,o.indexB,o.unitB),f=c.get(h);f?f.push(s):c.set(h,[s])}),this.count=i.length,this.pairKeyIndices=c}}return Rb.PairRestraints=r,Rb}var c9;function oZ(){if(c9)return rl;c9=1,Object.defineProperty(rl,"__esModule",{value:!0}),rl.CrossLinkRestraint=rl.CrossLinkRestraintProvider=void 0;const e=aZ(),t=Ke(),r=Gse(),n=wf(),i=Xa(),c=gt(),o=rS(),s=_a(),h=Ge(),f=Pr();rl.CrossLinkRestraintProvider=n.CustomStructureProperty.createProvider({label:"Cross Link Restraint",descriptor:(0,f.CustomPropertyDescriptor)({name:"integrative-cross-link-restraint"}),type:"local",defaultParams:{},getParams:u=>({}),isApplicable:u=>u.models.some(m=>!!e.ModelCrossLinkRestraint.Provider.get(m)),obtain:async(u,m,v)=>({value:p(m)})});var y;(function(u){(function(R){R.CrossLinkRestraint="cross-link-restraint"})(u.Tag||(u.Tag={}));function m(R){return R.models.some(E=>!!e.ModelCrossLinkRestraint.Provider.get(E))}u.isApplicable=m;const v=(0,h.Vec3)(),b=(0,h.Vec3)();function P(R){return R.unitA.conformation.position(R.unitA.elements[R.indexA],v),R.unitB.conformation.position(R.unitB.elements[R.indexB],b),h.Vec3.distance(v,b)}u.distance=P;function C(R,E,I){return(0,i.DataLocation)("cross-link-restraints",{structure:E,crossLinkRestraints:R},I)}u.Location=C;function l(R){return!!R&&R.kind==="data-location"&&R.tag==="cross-link-restraints"}u.isLocation=l;function S(R,E){return R.data.structure===E.data.structure&&R.data.crossLinkRestraints===E.data.crossLinkRestraints&&R.element===E.element}u.areLocationsEqual=S;function T(R,E){const I=R.pairs[E];return`Cross Link Restraint | Type: ${I.restraintType} | Threshold: ${I.distanceThreshold} â« | Psi: ${I.psi} | Sigma 1: ${I.sigma1} | Sigma 2: ${I.sigma2} | Distance: ${P(I).toFixed(2)} â«`}function A(R){return T(R.data.crossLinkRestraints,R.element)}u.locationLabel=A;function x(R,E,I){return(0,c.DataLoci)("cross-link-restraints",{structure:R,crossLinkRestraints:E},I,B=>D(E,I,B),()=>V(R,E,I))}u.Loci=x;function M(R){return!!R&&R.kind==="data-loci"&&R.tag==="interactions"}u.isLoci=M;function D(R,E,I){return o.CentroidHelper.fromPairProvider(E.length,(B,w,O)=>{const F=R.pairs[E[B]];F.unitA.conformation.position(F.unitA.elements[F.indexA],w),F.unitB.conformation.position(F.unitB.elements[F.indexB],O)},I)}u.getBoundingSphere=D;function V(R,E,I){const B=I[0];if(B===void 0)return"";const w=E.pairs[B];return[T(E,B),(0,s.bondLabel)(t.Bond.Location(R,w.unitA,w.indexA,R,w.unitB,w.indexB))].join("</br>")}u.getLabel=V})(y||(rl.CrossLinkRestraint=y={}));function _(u,m,v){const{elements:b}=m,P=b.length,C=m.kind;for(let l=0;l<P;l++){const S=b[l];v.getIndicesByElement(S,C).forEach(T=>u.set(T,l))}}function g(u,m,v){if(m.model!==v.model||m.model.sourceData.kind!=="mmCIF")return;const b=e.ModelCrossLinkRestraint.Provider.get(m.model);if(!b)return;const P=new Map,C=new Map;_(P,m,b),_(C,v,b),P.forEach((l,S)=>{const T=C.get(S);T!==void 0&&u.push(d(m,l,v,T,b,S),d(v,T,m,l,b,S))})}function a(u,m){if(m.model.sourceData.kind!=="mmCIF")return;const v=e.ModelCrossLinkRestraint.Provider.get(m.model);if(!v)return;const{elements:b}=m,P=b.length,C=m.kind,l=new Map;for(let S=0;S<P;S++){const T=b[S];v.getIndicesByElement(T,C).forEach(A=>{const x=l.get(A);x?x.push(S):l.set(A,[S])})}l.forEach((S,T)=>{if(S.length<2)return;const[A,x]=S;u.push(d(m,A,m,x,v,T),d(m,x,m,A,v,T))})}function d(u,m,v,b,P,C){return{unitA:u,indexA:m,unitB:v,indexB:b,restraintType:P.data.restraint_type.value(C),distanceThreshold:P.data.distance_threshold.value(C),psi:P.data.psi.value(C),sigma1:P.data.sigma_1.value(C),sigma2:P.data.sigma_2.value(C)}}function p(u){const m=[];
7083if(!u.models.some(b=>e.ModelCrossLinkRestraint.Provider.get(b)))return new r.PairRestraints(m);const v=u.units.length;for(let b=0;b<v;++b){const P=u.units[b];a(m,P);for(let C=b+1;C<v;++C){const l=u.units[C];P.model===l.model&&g(m,P,l)}}return new r.PairRestraints(m)}return rl}var u9;function zse(){return u9||(u9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CrossLinkRestraintRepresentationProvider=e.CrossLinkRestraintParams=e.CrossLinkRestraintCylinderParams=void 0,e.CrossLinkRestraintVisual=d,e.getCrossLinkRestraintParams=b,e.CrossLinkRestraintRepresentation=P;const t=Lt(),r=Rt(),n=zt(),i=gt(),c=at(),o=Ne(),s=Ke(),h=Ca(),f=Br(),y=Yr(),_=oZ(),g=rt();function a(C,l,S,T,A){const x=_.CrossLinkRestraintProvider.get(l).value;if(!x.count)return r.Mesh.createEmpty(A);const{sizeFactor:M}=T,D=s.StructureElement.Location.create(l),V={linkCount:x.count,position:(I,B,w)=>{const O=x.pairs[w],F=O.unitA,L=O.unitB;F.conformation.position(F.elements[O.indexA],I),L.conformation.position(L.elements[O.indexB],B)},radius:I=>{const B=x.pairs[I];return D.unit=B.unitA,D.element=B.unitA.elements[B.indexA],S.size.size(D)*M}},{mesh:R,boundingSphere:E}=(0,h.createLinkCylinderMesh)(C,V,T,A);if(E)R.setBoundingSphere(E);else if(R.triangleCount>0){const I=g.Sphere3D.expand((0,g.Sphere3D)(),l.boundary.sphere,1*M);R.setBoundingSphere(I)}return R}e.CrossLinkRestraintCylinderParams={...f.ComplexMeshParams,...h.LinkCylinderParams,sizeFactor:o.ParamDefinition.Numeric(.5,{min:0,max:10,step:.1})};function d(C){return(0,f.ComplexMeshVisual)({defaultProps:o.ParamDefinition.getDefaultValues(e.CrossLinkRestraintCylinderParams),createGeometry:a,createLocationIterator:p,getLoci:u,eachLocation:m,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.radialSegments!==T.radialSegments||S.linkCap!==T.linkCap}},C)}function p(C){const l=_.CrossLinkRestraintProvider.get(C).value,{pairs:S}=l,T=S.length,A=1,x=_.CrossLinkRestraint.Location(l,C),M=D=>(x.element=D,x);return(0,n.LocationIterator)(T,A,1,M,!0)}function u(C,l,S){const{objectId:T,groupId:A}=C;if(S===T){const x=_.CrossLinkRestraintProvider.get(l).value;if(x.pairs[A])return _.CrossLinkRestraint.Loci(l,x,[A])}return i.EmptyLoci}function m(C,l,S){let T=!1;if(_.CrossLinkRestraint.isLoci(C)){if(!s.Structure.areEquivalent(C.data.structure,l))return!1;const A=_.CrossLinkRestraintProvider.get(l).value;if(C.data.crossLinkRestraints!==A)return!1;for(const x of C.elements)S(c.Interval.ofSingleton(x))&&(T=!0)}return T}const v={"cross-link-restraint":(C,l)=>(0,y.ComplexRepresentation)("Cross-link restraint",C,l,d)};e.CrossLinkRestraintParams={...e.CrossLinkRestraintCylinderParams};function b(C,l){return o.ParamDefinition.clone(e.CrossLinkRestraintParams)}function P(C,l){return t.Representation.createMulti("CrossLinkRestraint",C,l,y.StructureRepresentationStateBuilder,v)}e.CrossLinkRestraintRepresentationProvider=(0,y.StructureRepresentationProvider)({name:_.CrossLinkRestraint.Tag.CrossLinkRestraint,label:"Cross Link Restraint",description:"Displays cross-link restraints.",factory:P,getParams:b,defaultValues:o.ParamDefinition.getDefaultValues(e.CrossLinkRestraintParams),defaultColorTheme:{name:_.CrossLinkRestraint.Tag.CrossLinkRestraint},defaultSizeTheme:{name:"uniform"},isApplicable:C=>_.CrossLinkRestraint.isApplicable(C),ensureCustomProperties:{attach:(C,l)=>_.CrossLinkRestraintProvider.attach(C,l,void 0,!0),detach:C=>_.CrossLinkRestraintProvider.ref(C,!1)}})})(eM)),eM}var tM={},l9;function Hse(){return l9||(l9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CrossLinkColorThemeProvider=e.CrossLinkColorThemeParams=void 0,e.getCrossLinkColorThemeParams=s,e.CrossLinkColorTheme=h;const t=vt(),r=Ne(),n=oZ(),i=Ut(),c=(0,t.Color)(13421772),o="Colors cross-links by the deviation of the observed distance versus the modeled distance (e.g. modeled / `ihm_cross_link_restraint.distance_threshold`).";e.CrossLinkColorThemeParams={domain:r.ParamDefinition.Interval([.5,1.5],{step:.01}),list:r.ParamDefinition.ColorList("red-grey",{presetKind:"scale"})};function s(f){return e.CrossLinkColorThemeParams}function h(f,y){let _,g;const a=f.structure&&n.CrossLinkRestraintProvider.get(f.structure).value;if(a){g=t.ColorScale.create({domain:y.domain,listOrName:y.list.colors});const d=g.color;_=p=>{if(n.CrossLinkRestraint.isLocation(p)){const u=a.pairs[p.element];if(u)return d(n.CrossLinkRestraint.distance(u)/u.distanceThreshold)}return c}}else _=()=>c;return{factory:h,granularity:"group",color:_,props:y,description:o,legend:g?g.legend:void 0}}e.CrossLinkColorThemeProvider={name:"cross-link",label:"Cross Link",category:i.ColorThemeCategory.Misc,factory:h,getParams:s,defaultValues:r.ParamDefinition.getDefaultValues(e.CrossLinkColorThemeParams),isApplicable:f=>!!f.structure&&n.CrossLinkRestraint.isApplicable(f.structure),ensureCustomProperties:{attach:(f,y)=>y.structure?n.CrossLinkRestraintProvider.attach(f,y.structure,void 0,!0):Promise.resolve(),detach:f=>f.structure&&n.CrossLinkRestraintProvider.ref(f.structure,!1)}}})(tM)),tM}var d9;function Wse(){if(d9)return Eb;
7083d9=1,Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.CrossLinkRestraint=void 0;const e=di(),t=aZ(),r=Mi(),n=zse(),i=Hse();Eb.CrossLinkRestraint=e.PluginBehavior.create({name:"integrative-cross-link-restraint",category:"custom-props",display:{name:"Cross Link Restraint"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=t.ModelCrossLinkRestraint.Provider}register(){this.provider.formatRegistry.add("mmCIF",c),this.ctx.representation.structure.themes.colorThemeRegistry.add(i.CrossLinkColorThemeProvider),this.ctx.representation.structure.registry.add(n.CrossLinkRestraintRepresentationProvider)}unregister(){this.provider.formatRegistry.remove("mmCIF"),this.ctx.representation.structure.themes.colorThemeRegistry.remove(i.CrossLinkColorThemeProvider),this.ctx.representation.structure.registry.remove(n.CrossLinkRestraintRepresentationProvider)}}});function c(o){if(!r.MmcifFormat.is(o.sourceData))return;const{ihm_cross_link_restraint:s}=o.sourceData.data.db;if(s._rowCount!==0)return t.ModelCrossLinkRestraint.fromTable(s,o)}return Eb}var Ob={},rM={},kb={},f9;function $se(){if(f9)return kb;f9=1,Object.defineProperty(kb,"__esModule",{value:!0}),kb.CustomVolumeProperty=void 0;const e=Ne(),t=et(),r=Pr(),n=ui();var i;return(function(c){function o(h){const f=h.descriptor.name,y=g=>(f in g._propertyData||(g._propertyData[f]={props:{...e.ParamDefinition.getDefaultValues(h.getParams(g))},data:t.ValueBox.create(void 0)}),g._propertyData[f]),_=(g,a,d)=>{const p=y(g);g._propertyData[f]={props:a,data:t.ValueBox.withValue(p.data,d)}};return{label:h.label,descriptor:h.descriptor,isHidden:h.isHidden,getParams:g=>{const a=e.ParamDefinition.clone(h.getParams(g));return e.ParamDefinition.setDefaultValues(a,y(g).props),a},defaultParams:h.defaultParams,isApplicable:h.isApplicable,attach:async(g,a,d={},p)=>{p&&a.customProperties.reference(h.descriptor,!0);const u=y(a),m=e.ParamDefinition.merge(h.defaultParams,u.props,d);if(u.data.value&&e.ParamDefinition.areEqual(h.defaultParams,u.props,m))return;const{value:v,assets:b}=await h.obtain(g,a,m);a.customProperties.add(h.descriptor),a.customProperties.assets(h.descriptor,b),_(a,m,v)},ref:(g,a)=>g.customProperties.reference(h.descriptor,a),get:g=>{var a;return(a=y(g))===null||a===void 0?void 0:a.data},set:(g,a={},d)=>{const p=y(g),u=e.ParamDefinition.merge(h.defaultParams,p.props,a);e.ParamDefinition.areEqual(h.defaultParams,p.props,u)||(_(g,u,d),g.customProperties.assets(h.descriptor))},props:g=>y(g).props}}c.createProvider=o;function s(h,f){const y={value:e.ParamDefinition.Value(f,{isHidden:!0})};return o({label:(0,n.stringToWords)(h),descriptor:(0,r.CustomPropertyDescriptor)({name:h}),isHidden:!0,defaultParams:y,getParams:()=>({value:e.ParamDefinition.Value(f,{isHidden:!0})}),isApplicable:()=>!0,obtain:async(_,g,a)=>({...e.ParamDefinition.getDefaultValues(y),...a})})}c.createSimple=s})(i||(kb.CustomVolumeProperty=i={})),kb}var Zd={},m9;function Xse(){if(m9)return Zd;m9=1,Object.defineProperty(Zd,"__esModule",{value:!0}),Zd.BasicStreamlineCalculationParams=void 0,Zd.calculateBasicStreamlines=m;const e=Ne(),t=Dn(),r=Ge(),n=zf(),i=r.Vec3.fromArray,c=r.Vec3.distance,o=r.Vec3.setMagnitude,s=r.Vec3.create,h=r.Vec3.copy,f=r.Vec3.add;Zd.BasicStreamlineCalculationParams={seedDensity:e.ParamDefinition.Numeric(10,{min:1,max:30,step:1},{description:"Percentage of cells with seed."}),stepSize:e.ParamDefinition.Numeric(.35,{min:.01,max:1,step:.01},{description:"Step size in grid space."}),minSeparation:e.ParamDefinition.Numeric(0,{min:0,max:5,step:.5},{description:"Minimum separation between streamlines in grid space. 0 to disable."})};const y=(0,r.Vec3)(),_=(0,r.Vec3)(),g=(0,r.Vec3)(),a=(0,r.Vec3)();function d(v,b,P,C,l,S,T){const{space:A}=b.cells,[x,M,D]=A.dimensions,V=A.dataOffset,R=S*l,E=Math.max(x,M,D)*5/l,I=l/1.1,B=new Map,w=Math.ceil(2/l);h(_,C);let O=0;for(let F=0;F<E&&!(_[0]<1||_[0]>x-2||_[1]<1||_[1]>M-2||_[2]<1||_[2]>D-2||!P(_,g));++F){const L=V(Math.round(_[0]),Math.round(_[1]),Math.round(_[2]));if(T&&T[L])break;const U=(B.get(L)||0)+1;if(B.set(L,U),U>w)break;o(y,g,R);const q=_[0]+.5*y[0],N=_[1]+.5*y[1],k=_[2]+.5*y[2],j=s(q,N,k);c(a,j)>=I&&(v.push(j),h(a,j)),O++,f(_,_,y)}return O}function p(v,b,P,C,l){const S=[];return d(S,v,b,P,C,-1,l)>1&&S.reverse(),d(S,v,b,P,C,1,l),S}async function u(v,b,P){const{space:C}=b.cells,[l,S,T]=C.dimensions,A=C.dataOffset,{seedDensity:x,stepSize:M,minSeparation:D}=P,V=Math.max(1,Math.floor(Math.min(l,S,T)/x)),R=1,E=l-2-V,I=1,B=S-2-V,w=1,O=T-2-V,F=new t.PCG,L=[];for(let G=w;G<=O;G+=V)for(let z=I;z<=B;z+=V)for(let W=R;W<=E;W+=V)L.push(W+F.float()*V,z+F.float()*V,G+F.float()*V);for(let G=L.length/3-1;G>0;G--){const z=Math.floor(F.float()*(G+1)),W=G*3,X=z*3,Y=L[W],K=L[W+1],Q=L[W+2];L[W]=L[X],L[W+1]=L[X+1],L[W+2]=L[X+2],L[X]=Y,L[X+1]=K,L[X+2]=Q}await v.update({isIndeterminate:!1,current:0,max:L.length/3});const U=n.Grid.makeGetInterpolatedGradient(b),q=D>0,N=q?new Uint8Array(l*S*T):void 0,k=[];if(q){const G=Math.ceil(D),z=D*D;for(let W=-G;W<=G;++W)for(let X=-G;X<=G;++X)for(let Y=-G;Y<=G;++Y)Y*Y+X*X+W*W<=z&&k.push([Y,X,W])}const j=[],H=(0,r.Vec3)();for(let G=0;G<L.length;G+=3){v.shouldUpdate&&await v.update({current:G/3+1}
7083),i(H,L,G);const z=p(b,U,H,M,N);if(z.length*M>=3&&(j.push(z),N))for(let W=0,X=z.length;W<X;++W){const Y=z[W],K=Math.round(Y[0]),Q=Math.round(Y[1]),J=Math.round(Y[2]);for(let ae=0,te=k.length;ae<te;++ae){const ne=k[ae],$=K+ne[0],ie=Q+ne[1],Z=J+ne[2];$>=0&&$<l&&ie>=0&&ie<S&&Z>=0&&Z<T&&(N[A($,ie,Z)]=1)}}}return j}async function m(v,b,P){return u(v.runtime,b.grid,P)}return Zd}var p9;function jw(){return p9||(p9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StreamlinesProvider=e.StreamlinesParams=void 0;const t=Ne(),r=Pr(),n=$se(),i=oc(),c=Xse();e.StreamlinesParams={type:t.ParamDefinition.MappedStatic("basic",{basic:t.ParamDefinition.Group(c.BasicStreamlineCalculationParams,{isFlat:!0})})},e.StreamlinesProvider=n.CustomVolumeProperty.createProvider({label:"Streamlines",descriptor:(0,r.CustomPropertyDescriptor)({name:"molstar_streamlines"}),defaultParams:e.StreamlinesParams,getParams:o=>e.StreamlinesParams,isApplicable:o=>!i.Volume.Segmentation.get(o),obtain:async(o,s,h)=>{const f={...t.ParamDefinition.getDefaultValues(e.StreamlinesParams),...h};if(f.type.name==="basic")return{value:await(0,c.calculateBasicStreamlines)(o,s,f.type.params)}}})})(rM)),rM}var nM={},KP={},h9;function Gw(){if(h9)return KP;h9=1,Object.defineProperty(KP,"__esModule",{value:!0}),KP.addTube=P;const e=Ge(),t=_t(),r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)();function h(C,l,S,T,A){C[0]=l[0]*T+S[0]*A,C[1]=l[1]*T+S[1]*A,C[2]=l[2]*T+S[2]*A}function f(C,l,S,T,A,x){C[0]=l[0]*A+S[0]*x+T[0],C[1]=l[1]*A+S[1]*x+T[1],C[2]=l[2]*A+S[2]*x+T[2]}const y=e.Vec3.fromArray,_=e.Vec3.normalize,g=e.Vec3.scaleAndAdd,a=e.Vec3.cross,d=e.Vec3.slerp,p=e.Vec3.dot,u=e.Vec3.unitX,m=t.ChunkedArray.add3,v=new Map;function b(C,l){const S=l?1:0,T=(0,t.cantorPairing)(C,S);if(!v.has(T)){const A=[],x=[];for(let M=0;M<C;++M){const D=(M*2+S)/C*Math.PI;A[M]=Math.cos(D),x[M]=Math.sin(D)}v.set(T,{cos:A,sin:x})}return v.get(T)}function P(C,l,S,T,A,x,M,D,V,R,E,I=!1){const{currentGroup:B,vertices:w,normals:O,indices:F,groups:L}=C;let U=w.elementCount;const{cos:q,sin:N}=b(x,E==="rounded"),k=Math.round(x/4),j=k*3,H=I&&A&&(V||R);let G;const z=H&&V&&R;z&&(G=A/2);for(let Y=0;Y<=A;++Y){const K=Y*3;y(o,S,K),y(s,T,K),y(c,l,K);let Q=M[Y],J=D[Y],ae;if(H){const ne=z?Y<=G:V;z?ae=Math.max(Number.EPSILON,Math.sqrt(1-Math.pow((ne?G-Y:Y-G)/G,2))):ae=Math.max(Number.EPSILON,Math.sqrt(1-Math.pow((ne?A-Y:Y)/A,2))),Q*=ae,J*=ae,a(n,ne?s:o,ne?o:s),_(n,n)}const te=E==="rounded"&&J>Q;for(let ne=0;ne<x;++ne){if(te){f(i,o,s,c,Q*q[ne],Q*N[ne]);const $=p(s,u)<0?ne<k||ne>=j?J-Q:-J+Q:ne>=k&&ne<j?-J+Q:J-Q;g(i,i,o,$),ne===k||ne===k-1?h(r,o,s,0,1):ne===j||ne===j-1?h(r,o,s,0,-1):h(r,o,s,q[ne],N[ne])}else f(i,o,s,c,J*q[ne],Q*N[ne]),h(r,o,s,Q*q[ne],J*N[ne]);_(r,r),m(w,i[0],i[1],i[2]),H&&d(r,n,r,ae),m(O,r[0],r[1],r[2])}}const W=Math.round(x/2);for(let Y=0;Y<A;++Y){for(let K=0;K<W;++K)m(F,U+Y*x+(K+1)%x,U+(Y+1)*x+(K+1)%x,U+Y*x+K),m(F,U+(Y+1)*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+K);for(let K=W;K<x;++K)m(F,U+Y*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+K),m(F,U+(Y+1)*x+(K+1)%x,U+(Y+1)*x+K,U+Y*x+(K+1)%x)}if(V){const K=w.elementCount;y(o,S,0),y(s,T,0),y(c,l,0),a(r,s,o),m(w,c[0],c[1],c[2]),m(O,r[0],r[1],r[2]);const Q=H?0:M[0];let J=H?0:D[0];const ae=E==="rounded"&&J>Q;ae&&(J-=Q),U=w.elementCount;for(let te=0;te<x;++te)ae?(f(i,o,s,c,Q*q[te],Q*N[te]),g(i,i,o,te<k||te>=j?J:-J)):f(i,o,s,c,J*q[te],Q*N[te]),m(w,i[0],i[1],i[2]),m(O,r[0],r[1],r[2]),m(F,U+(te+1)%x,U+te,K)}if(R){const Y=A*3,K=w.elementCount;y(o,S,Y),y(s,T,Y),y(c,l,Y),a(r,o,s),m(w,c[0],c[1],c[2]),m(O,r[0],r[1],r[2]);const Q=H?0:M[A];let J=H?0:D[A];const ae=E==="rounded"&&J>Q;ae&&(J-=Q),U=w.elementCount;for(let te=0;te<x;++te)ae?(f(i,o,s,c,Q*q[te],Q*N[te]),g(i,i,o,te<k||te>=j?J:-J)):f(i,o,s,c,J*q[te],Q*N[te]),m(w,i[0],i[1],i[2]),m(O,r[0],r[1],r[2]),m(F,U+te,U+(te+1)%x,K)}const X=(A+1)*x+(V?x+1:0)+(R?x+1:0);t.ChunkedArray.addRepeat(L,X,B)}return KP}var nl={},g9;function Zf(){if(g9)return nl;g9=1,Object.defineProperty(nl,"__esModule",{value:!0}),nl.VolumeParams=void 0,nl.VolumeRepresentationProvider=y,nl.VolumeRepresentation=_;const e=Ne(),t=ea(),r=ds(),n=gt(),i=ql(),c=Ge(),o=Lt(),s=Tt(),h=Rn(),f=nt();function y(g){return g}nl.VolumeParams={...s.BaseGeometry.Params};function _(g,a,d,p,u,m=()=>[-1]){let v=0;const{webgl:b}=a,P=new h.Subject,C=new o.Representation.GeometryState,l=(0,r.getNextMaterialId)(),S=[],T=o.Representation.createState(),A=new Map;let x,M,D,V,R=t.Theme.createEmpty();async function E(U,q){var N;let k=A.get(q);return k?!((N=k.mustRecreate)===null||N===void 0)&&N.call(k,{volume:x,key:q},V,b)&&(k.destroy(),k=p(l,x,q,V,b),A.set(q,k)):(k=p(l,x,q,V,b),A.set(q,k)),k.createOrUpdate({webgl:b,runtime:U},R,V,{volume:x,key:q})}function I(U={},q){q&&q!==x&&(D=d(a,q),x=q,V||(V=e.ParamDefinition.getDefaultValues(D)));const N=(0,i.getQualityProps)(Object.assign({},V,U),x);return Object.assign(V,U,N),M=m(V,x),f.Task.create("Creating or updating VolumeRepresentation",async k=>{const j=new Set(A.keys());for(let H=0,G=M.length;H<G;++H){const z=M[H];j.delete(z);const W=E(k,z);W&&await W}j.forEach(H=>{var G;
7083(G=A.get(H))===null||G===void 0||G.destroy(),A.delete(H)}),S.length=0,A.forEach(H=>{H.renderObject&&(S.push(H.renderObject),C.add(H.renderObject.id,H.geometryVersion))}),C.snapshot(),P.next(v++)})}function B(U,q){let N=!1;return A.forEach(k=>{N=k.mark(U,q)||N}),N}function w(U,q){q.visible!==void 0&&U&&U.setVisibility(q.visible),q.alphaFactor!==void 0&&U&&U.setAlphaFactor(q.alphaFactor),q.pickable!==void 0&&U&&U.setPickable(q.pickable),q.overpaint!==void 0&&U&&U.setOverpaint(q.overpaint),q.transparency!==void 0&&U&&U.setTransparency(q.transparency),q.emissive!==void 0&&U&&U.setEmissive(q.emissive),q.substance!==void 0&&U&&U.setSubstance(q.substance),q.clipping!==void 0&&U&&U.setClipping(q.clipping),q.wiggle!==void 0&&U&&U.setWiggle(q.wiggle),q.transform!==void 0&&U&&U.setTransform(q.transform),q.themeStrength!==void 0&&U&&U.setThemeStrength(q.themeStrength)}function O(U){const{visible:q,alphaFactor:N,pickable:k,overpaint:j,transparency:H,emissive:G,substance:z,clipping:W,wiggle:X,transform:Y,themeStrength:K,syncManually:Q,markerActions:J}=U,ae={};q!==void 0&&(ae.visible=q),N!==void 0&&(ae.alphaFactor=N),k!==void 0&&(ae.pickable=k),j!==void 0&&(ae.overpaint=j),H!==void 0&&(ae.transparency=H),G!==void 0&&(ae.emissive=G),z!==void 0&&(ae.substance=z),W!==void 0&&(ae.clipping=W),X!==void 0&&(ae.wiggle=X),K!==void 0&&(ae.themeStrength=K),Y!==void 0&&!c.Mat4.areEqual(Y,T.transform,c.EPSILON)&&(ae.transform=Y),Q!==void 0&&(ae.syncManually=Q),J!==void 0&&(ae.markerActions=J),A.forEach(te=>w(te,ae)),o.Representation.updateState(T,U)}function F(U){R=U}function L(){A.forEach(U=>U.destroy()),A.clear()}return{label:g,get groupCount(){let U=0;return A.forEach(q=>{q.renderObject&&(U+=q.groupCount)}),U},get props(){return V},get params(){return D},get state(){return T},get theme(){return R},get geometryVersion(){return C.version},renderObjects:S,updated:P,createOrUpdate:I,setState:O,setTheme:F,getLoci:U=>{let q=n.EmptyLoci;for(const N of A.values()){const k=N.getLoci(U);if(!(0,n.isEmptyLoci)(k)){q=k;break}}return q},getAllLoci:()=>[u(x,V)],eachLocation:U=>{A.forEach(q=>{q.eachLocation(U)})},mark:B,destroy:L}}return nl}var Ur={},y9;function Kse(){if(y9)return Ur;
7083y9=1,Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.CommonStreamlinesParams=void 0,Ur.StreamlinesLocation=_,Ur.isStreamlinesLocation=g,Ur.areStreamlinesLocationsEqual=a,Ur.streamlinesLocationLabel=d,Ur.streamlinesLociLabel=p,Ur.StreamlinesLoci=u,Ur.isStreamlinesLoci=m,Ur.getStreamlinesLociSize=v,Ur.getStreamlinesLociBoundingSphere=l,Ur.areStreamlinesLociEqual=S,Ur.isStreamlinesLociEmpty=T,Ur.streamlinePassesFilter=x,Ur.getStreamlinesVisualLoci=M,Ur.getStreamlinesLoci=D,Ur.eachStreamlines=V,Ur.createStreamlinesLocationIterator=R;const e=In(),t=nn(),r=zt(),n=Xa(),i=gt(),c=zf(),o=oc(),s=jw(),h=Ne(),f=Ki(),y=wt();function _(E,I,B,w){return(0,n.DataLocation)("streamlines",{volume:I,streamlines:E},{index:B,instance:w})}function g(E){return!!E&&E.kind==="data-location"&&E.tag==="streamlines"}function a(E,I){return E.data.volume===I.data.volume&&E.data.streamlines===I.data.streamlines&&E.element.index===I.element.index&&E.element.instance===I.element.instance}function d(E,I,B,w){const O=[`${I.label||"Volume"}`,`Streamline #${B}`];return I.instances.length>1&&O.push(`Instance #${w}`),O.join(" | ")}function p(E,I,B){const w=v(B),O=[`${I.label||"Volume"}`];if(w===0)O.push("No Streamlines");else if(w===1){const F=t.OrderedSet.start(B[0].indices);if(O.push(`Streamline #${F}`),I.instances.length>1){const L=t.OrderedSet.start(B[0].instances);O.push(`Instance #${L}`)}}else O.push(`${w} Streamlines`);return O.join(" | ")}function u(E,I,B){return(0,i.DataLoci)("streamlines",{streamlines:E,volume:I},B,w=>l(E,I,B,w),()=>p(E,I,B))}function m(E){return!!E&&E.kind==="data-loci"&&E.tag==="streamlines"}function v(E){let I=0;for(const B of E)I+=t.OrderedSet.size(B.indices)*t.OrderedSet.size(B.instances);return I}const b=new f.BoundaryHelper("98"),P=(0,y.Vec3)(),C=(0,y.Vec3)();function l(E,I,B,w){b.reset();const O=c.Grid.getGridToCartesianTransform(I.grid);for(const{indices:F,instances:L}of B)for(let U=0,q=t.OrderedSet.size(F);U<q;U++){const N=t.OrderedSet.getAt(F,U);for(const k of E[N]){y.Vec3.transformMat4(P,k,O);for(let j=0,H=t.OrderedSet.size(L);j<H;j++){const G=I.instances[t.OrderedSet.getAt(L,j)];y.Vec3.transformMat4(C,P,G.transform),b.includePosition(C)}}}b.finishedIncludeStep();for(const{indices:F,instances:L}of B)for(let U=0,q=t.OrderedSet.size(F);U<q;U++){const N=t.OrderedSet.getAt(F,U);for(const k of E[N]){y.Vec3.transformMat4(P,k,O);for(let j=0,H=t.OrderedSet.size(L);j<H;j++){const G=I.instances[t.OrderedSet.getAt(L,j)];y.Vec3.transformMat4(C,P,G.transform),b.radiusPosition(C)}}}return b.getSphere(w)}function S(E,I){if(E.data.volume!==I.data.volume||E.elements.length!==I.elements.length)return!1;for(let B=0,w=E.elements.length;B<w;++B){const O=E.elements[B],F=I.elements[B];if(!t.OrderedSet.areEqual(O.instances,F.instances)||!t.OrderedSet.areEqual(O.indices,F.indices))return!1}return!0}function T(E){for(const{indices:I,instances:B}of E.elements)if(!t.OrderedSet.isEmpty(I)||!t.OrderedSet.isEmpty(B))return!1;return!0}Ur.CommonStreamlinesParams={anchorEnabled:h.ParamDefinition.Boolean(!1,{label:"Anchor"}),anchorCenter:h.ParamDefinition.Vec3((0,y.Vec3)(),void 0,{hideIf:E=>!E.anchorEnabled}),anchorRadius:h.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},{hideIf:E=>!E.anchorEnabled}),dashEnabled:h.ParamDefinition.Boolean(!1,{label:"Dash"}),dashPoints:h.ParamDefinition.Numeric(5,{min:1,max:25,step:1},{description:"Number of streamline points per dash/gap",hideIf:E=>!E.dashEnabled}),dashShift:h.ParamDefinition.Boolean(!1,{description:"Shift dashes so dashes become gaps and vice versa",hideIf:E=>!E.dashEnabled})};const A=(0,y.Vec3)();function x(E,I,B){if(E.length<2)return!1;if(!B.anchorEnabled)return!0;const w=E[0];if(y.Vec3.transformMat4(A,w,I),y.Vec3.distance(A,B.anchorCenter)<=B.anchorRadius)return!0;const O=E[E.length-1];return y.Vec3.transformMat4(A,O,I),y.Vec3.distance(A,B.anchorCenter)<=B.anchorRadius}function M(E,I){const B=s.StreamlinesProvider.get(E).value,w=e.Interval.ofLength(B.length),O=e.Interval.ofLength(E.instances.length);return u(B,E,[{indices:w,instances:O}])}function D(E,I,B,w,O){const{objectId:F,groupId:L,instanceId:U}=E;if(O===F){const q=o.Volume.PickingGranularity.get(I),N=t.OrderedSet.ofSingleton(U);if(q==="volume")return o.Volume.Loci(I,N);const k=s.StreamlinesProvider.get(I).value,j=t.OrderedSet.ofSingleton(L);return u(k,I,[{indices:j,instances:N}])}return i.EmptyLoci}function V(E,I,B,w,O){let F=!1;const U=s.StreamlinesProvider.get(I).value.length;if(o.Volume.isLoci(E)){if(!o.Volume.areEquivalent(E.volume,I))return!1;if(e.Interval.is(E.instances)){const q=e.Interval.start(E.instances)*U,N=e.Interval.end(E.instances)*U;O(e.Interval.ofBounds(q,N))&&(F=!0)}else for(let q=0,N=E.instances.length;q<N;++q){const k=E.instances[q]*U;O(e.Interval.ofBounds(k,k+U))&&(F=!0)}}else if(m(E)){if(!o.Volume.areEquivalent(E.data.volume,I))return!1;for(const{indices:q,instances:N}of E.elements)e.Interval.is(q)?t.OrderedSet.forEach(N,k=>{const j=k*U;
7083O(e.Interval.offset(q,j))&&(F=!0)}):t.OrderedSet.forEach(q,k=>{t.OrderedSet.forEach(N,j=>{const H=j*U;O(e.Interval.ofSingleton(H+k))&&(F=!0)})})}return F}function R(E){const I=s.StreamlinesProvider.get(E).value,B=I.length,w=E.instances.length,O=_(I,E),F=(L,U)=>(O.element.index=L,O.element.instance=U,O);return(0,r.LocationIterator)(B,w,1,F)}return Ur}var YP={},v9;function Yse(){if(v9)return YP;v9=1,Object.defineProperty(YP,"__esModule",{value:!0}),YP.computeFrenetFrames=g;const e=wt(),t=e.Vec3.fromArray,r=e.Vec3.sub,n=e.Vec3.normalize,i=e.Vec3.isZero,c=e.Vec3.set,o=e.Vec3.cross,s=e.Vec3.toArray,h=e.Vec3.copy,f=e.Vec3.magnitude,y=e.Vec3.rotateAroundAxis,_=e.Vec3.dot;function g(a,d,p,u){const m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)(),C=(0,e.Vec3)(),l=(0,e.Vec3)();t(C,a,0),t(l,a,3),r(m,l,C),n(m,m),i(m)&&c(m,1,0,0);const S=Math.abs(m[0]),T=Math.abs(m[1]),A=Math.abs(m[2]);S<=T&&S<=A?c(b,1,0,0):T<=A?c(b,0,1,0):c(b,0,0,1),o(P,m,b),n(P,P),o(b,P,m),n(b,b),s(b,d,0),s(P,p,0),h(v,m);for(let x=1;x<u;++x){x<u-1?(t(C,a,(x-1)*3),t(l,a,(x+1)*3),r(m,l,C)):(t(C,a,(x-1)*3),t(l,a,x*3),r(m,l,C)),n(m,m);const M=_(v,m);if(M<.9999){const D=(0,e.Vec3)();if(o(D,v,m),f(D)>1e-4){n(D,D);const V=Math.acos(Math.min(1,Math.max(-1,M)));y(b,b,D,V),y(P,P,D,V)}}o(P,m,b),n(P,P),o(b,P,m),n(b,b),s(b,d,x*3),s(P,p,x*3),h(v,m)}}return YP}var Jd={},b9;function Jf(){if(b9)return Jd;b9=1,Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.VolumeParams=void 0,Jd.VolumeVisual=C;const e=Ul(),t=sn(),r=Ll(),n=ea(),i=kl(),c=ds(),o=_n(),s=gt(),h=at(),f=ql(),y=ms(),_=et(),g=ls(),a=wi(),d=Ge(),p=Gt(),u=li(),m=ps(),v=Tt();Jd.VolumeParams={...v.BaseGeometry.Params};function b(l,S,T,A,x){const M=l.instances.length,D=new Float32Array(M*16);for(let V=0;V<M;++V)d.Mat4.toArray(l.instances[V].transform,D,V*16);return(0,i.createTransform)(D,M,S,T,A,x)}function P(l,S,T,A,x,M){const{createValues:D,createRenderableState:V}=r.Geometry.getUtils(S),R=T.nonInstanceable?(0,i.createIdentityTransform)():b(l,S.boundingSphere,x.cellSize,x.batchSize),E=D(S,R,T,A,x),I=V(x);return(0,c.createRenderObject)(S.kind,E,I,M)}function C(l,S){const{defaultProps:T,createGeometry:A,createLocationIterator:x,getLoci:M,eachLocation:D,setUpdateState:V,initUpdateState:R,mustRecreate:E,dispose:I}=l,{updateValues:B,updateBoundingSphere:w,updateRenderableState:O,createPositionIterator:F}=l.geometryUtils,L=f.VisualUpdateState.create();let U,q,N,k,j,H=Object.assign({},T),G=n.Theme.createEmpty(),z,W,X,Y=-1,K,Q;function J($,ie,Z,re){if(!Z&&!z)throw new Error("missing volume");if(q=Object.assign({},H,ie),N=$,k=Z,j=re,f.VisualUpdateState.reset(L),U?t.Grid.areEquivalent(k.grid,z.grid)&&!t.Volume.areInstanceTransformsEqual(k,z)?L.updateTransform=!0:(!t.Volume.areEquivalent(k,z)||j!==W)&&(L.createNew=!0):L.createNew=!0,L.createNew){R?.(L,k,q,N
7083),L.createGeometry=!0;return}V(L,k,z,q,H,N,G),y.ColorTheme.areEqual(N.color,G.color)||(L.updateColor=!0),m.SizeTheme.areEqual(N.size,G.size)||(L.updateSize=!0),K.nonInstanceable?q.instanceGranularity!==H.instanceGranularity&&(L.updateTransform=!0):((q.instanceGranularity!==H.instanceGranularity||q.cellSize!==H.cellSize||q.batchSize!==H.batchSize)&&(L.updateTransform=!0),L.updateTransform&&(L.updateMatrix=!0)),L.updateSize&&!("uSize"in U.values)&&(L.createGeometry=!0),L.createGeometry&&(L.updateColor=!0,L.updateSize=!0)}function ae($){if(L.createNew)if($)K=x(k,j,$),U=P(k,$,K,N,q,S),Q=F($,U.values);else throw new Error("expected geometry to be given");else{if(!U)throw new Error("expected renderObject to be available");if((L.updateColor||L.updateSize||L.updateTransform||L.updateLocation)&&(K=x(k,j,$||X)),L.updateTransform||L.updateLocation){const{instanceCount:ie,groupCount:Z}=K;(0,v.resolveInstanceGranularity)(q.instanceGranularity,Z,ie)?(0,u.createMarkers)(ie,"instance",U.values):(0,u.createMarkers)(ie*Z,"groupInstance",U.values)}if(L.updateMatrix&&b(k,X.boundingSphere,q.cellSize,q.batchSize,U.values),L.createGeometry)if($)_.ValueCell.updateIfChanged(U.values.drawCount,r.Geometry.getDrawCount($)),_.ValueCell.updateIfChanged(U.values.uVertexCount,r.Geometry.getVertexCount($)),_.ValueCell.updateIfChanged(U.values.uGroupCount,K.groupCount);else throw new Error("expected geometry to be given");(L.updateTransform||L.createGeometry)&&(w(U.values,$||X),Q=F($||X,U.values)),L.updateSize&&"uSize"in U.values&&(0,g.createSizes)(K,Q,N.size,U.values),L.updateColor&&(0,a.createColors)(K,Q,N.color,U.values),B(U.values,q),O(U.state,q)}H=q,G=N,z=k,W=j,$&&(X=$,Y+=1)}function te($,ie,Z,re){let oe=!1;if(t.Volume.Cell.isLoci($)){if(t.Volume.Cell.isLociEmpty($)||!t.Volume.areEquivalent($.volume,ie))return!1;for(const{instances:ce}of $.elements)h.OrderedSet.forEach(ce,ue=>{re(h.Interval.ofSingleton(ue))&&(oe=!0)})}else if(t.Volume.Segment.isLoci($)){if(t.Volume.Segment.isLociEmpty($)||!t.Volume.areEquivalent($.volume,ie))return!1;for(const{segments:ce,instances:ue}of $.elements)h.OrderedSet.has(ce,Z)&&h.OrderedSet.forEach(ue,pe=>{re(h.Interval.ofSingleton(pe))&&(oe=!0)})}else if(t.Volume.Isosurface.isLoci($)){if(t.Volume.Isosurface.isLociEmpty($))return!1;if(h.Interval.is($.instances))re($.instances)&&(oe=!0);else for(let ce=0,ue=$.instances.length;ce<ue;++ce)re(h.Interval.ofSingleton(ce))&&(oe=!0)}else if(t.Volume.isLoci($)){if(t.Volume.isLociEmpty($))return!1;if(h.Interval.is($.instances))re($.instances)&&(oe=!0);else for(let ce=0,ue=$.instances.length;ce<ue;++ce)re(h.Interval.ofSingleton(ce))&&(oe=!0)}return oe}function ne($,ie){const Z=(0,v.resolveInstanceGranularity)(H.instanceGranularity,K.groupCount,K.instanceCount);return(0,s.isEveryLoci)($)?ie(Z?h.Interval.ofBounds(0,K.instanceCount):h.Interval.ofBounds(0,K.groupCount*K.instanceCount)):Z?te($,z,W,ie):D($,z,W,H,ie,X)}return{get groupCount(){return K?K.count:0},get renderObject(){return U},get geometryVersion(){return Y},async createOrUpdate($,ie,Z={},re){if(J(ie,Z,re?.volume||z,re?.key||W),L.createGeometry){const oe=A($,k,j,N,q,X);return(0,p.isPromiseLike)(oe)?oe.then(ae):ae(oe)}else ae()},getLoci($){return U?((0,v.resolveInstanceGranularity)(H.instanceGranularity,K.groupCount,K.instanceCount)&&($={...$,groupId:o.PickingId.Null}),M($,z,W,H,U.id,X)):s.EmptyLoci},eachLocation($){for(K.reset();K.hasNext;){const{location:ie,isSecondary:Z}=K.move();$(ie,Z)}},mark($,ie){return e.Visual.mark(U,$,ie,ne)},setVisibility($){e.Visual.setVisibility(U,$)},setAlphaFactor($){e.Visual.setAlphaFactor(U,$)},setPickable($){e.Visual.setPickable(U,$)},setColorOnly($){e.Visual.setColorOnly(U,$)},setTransform($,ie){e.Visual.setTransform(U,$,ie)},setOverpaint($){return e.Visual.setOverpaint(U,$,ne,!0)},setTransparency($){return e.Visual.setTransparency(U,$,ne,!0)},setEmissive($){return e.Visual.setEmissive(U,$,ne,!0)},setSubstance($){return e.Visual.setSubstance(U,$,ne,!0)},setClipping($){return e.Visual.setClipping(U,$,ne,!0)},setWiggle($){return e.Visual.setWiggle(U,$,ne,!0)},setThemeStrength($){e.Visual.setThemeStrength(U,$)},destroy(){I?.(X),U&&(U.state.disposed=!0,U=void 0)},mustRecreate:E}}return Jd}
7083var _9;function Qse(){return _9||(_9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StreamlinesRepresentationProvider=e.StreamlinesParams=e.StreamlinesTubeMeshParams=e.StreamlinesLinesParams=void 0,e.VolumeStreamlinesLinesVisual=C,e.VolumeStreamlinesTubeMeshVisual=T,e.getStreamlinesParams=E,e.StreamlinesRepresentation=I;const t=Ne(),r=Ge(),n=kn(),i=ac(),c=Rt(),o=$t(),s=Gw(),h=sn(),f=Zf(),y=Lt(),_=Kse(),g=rt(),a=jw(),d=Tt(),p=Yse(),u=Jf(),m=zt(),v=r.Vec3.transformMat4,b=r.Vec3.transformMat4Offset,P=r.Vec3.toArray;e.StreamlinesLinesParams={..._.CommonStreamlinesParams,...n.Lines.Params,useLineStrips:t.ParamDefinition.Boolean(!0)};function C(B){return(0,u.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StreamlinesLinesParams),createGeometry:S,createLocationIterator:_.createStreamlinesLocationIterator,getLoci:_.getStreamlinesLoci,eachLocation:_.eachStreamlines,setUpdateState:(w,O,F,L,U)=>{const q=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash!==q&&(w.info.streamlinesHash!==void 0&&(w.createGeometry=!0,w.updateLocation=!0),w.info.streamlinesHash=q),(L.anchorEnabled!==U.anchorEnabled||!r.Vec3.equals(L.anchorCenter,U.anchorCenter)||L.anchorRadius!==U.anchorRadius)&&(w.createGeometry=!0),(L.dashEnabled!==U.dashEnabled||L.dashPoints!==U.dashPoints||L.dashShift!==U.dashShift)&&(w.createGeometry=!0),L.useLineStrips!==U.useLineStrips&&(w.createGeometry=!0)},initUpdateState:(w,O,F,L)=>{const U=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash=U},geometryUtils:n.Lines.Utils},B)}function l(B){let w=0;for(const O of B)w+=O.length;return w}function S(B,w,O,F,L,U){const{cells:{space:q}}=w.grid,N=q.dimensions,k=h.Grid.getGridToCartesianTransform(w.grid),j=a.StreamlinesProvider.get(w).value,H=l(j),{dashEnabled:G,dashPoints:z,dashShift:W}=L,X=z*2;let Y;
7083if(L.useLineStrips){const Q=i.StripLinesBuilder.create(H,Math.ceil(H/10),U);Y=Q;const J=(0,r.Vec3)();for(let ae=0,te=j.length;ae<te;++ae){const ne=j[ae];if((0,_.streamlinePassesFilter)(ne,k,L))if(G){let $=!1;for(let ie=0,Z=ne.length;ie<Z;++ie){const re=ie%X;(W?re>=z:re<z)?($||(Q.start(ae),$=!0),v(J,ne[ie],k),Q.addVec(J)):$&&(v(J,ne[ie],k),Q.addVec(J),Q.end(),$=!1)}$&&Q.end()}else{Q.start(ae);for(let $=0,ie=ne.length;$<ie;++$)v(J,ne[$],k),Q.addVec(J);Q.end()}}}else{const Q=i.LinesBuilder.create(H,Math.ceil(H/10),U);Y=Q;const J=(0,r.Vec3)(),ae=(0,r.Vec3)();for(let te=0,ne=j.length;te<ne;++te){const $=j[te];if((0,_.streamlinePassesFilter)($,k,L))if(G){r.Vec3.transformMat4(J,$[0],k);for(let ie=1,Z=$.length;ie<Z;++ie){r.Vec3.transformMat4(ae,$[ie],k);const re=(ie-1)%(z*2);(W?re>=z:re<z)&&Q.addVec(J,ae,te),r.Vec3.copy(J,ae)}}else{r.Vec3.transformMat4(J,$[0],k);for(let ie=1,Z=$.length;ie<Z;++ie)r.Vec3.transformMat4(ae,$[ie],k),Q.addVec(J,ae,te),r.Vec3.copy(J,ae)}}}const K=Y.getLines();return K.setBoundingSphere(g.Sphere3D.fromDimensionsAndTransform((0,g.Sphere3D)(),N,k)),K}e.StreamlinesTubeMeshParams={..._.CommonStreamlinesParams,...c.Mesh.Params,tubeSizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(8,{min:2,max:56,step:2},d.BaseGeometry.CustomQualityParamInfo)};function T(B){return(0,u.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StreamlinesTubeMeshParams),createGeometry:A,createLocationIterator:_.createStreamlinesLocationIterator,getLoci:_.getStreamlinesLoci,eachLocation:_.eachStreamlines,setUpdateState:(w,O,F,L,U)=>{const q=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash!==q&&(w.info.streamlinesHash!==void 0&&(w.createGeometry=!0,w.updateLocation=!0),w.info.streamlinesHash=q),(L.tubeSizeFactor!==U.tubeSizeFactor||L.radialSegments!==U.radialSegments)&&(w.createGeometry=!0),(L.anchorEnabled!==U.anchorEnabled||!r.Vec3.equals(L.anchorCenter,U.anchorCenter)||L.anchorRadius!==U.anchorRadius)&&(w.createGeometry=!0),(L.dashEnabled!==U.dashEnabled||L.dashPoints!==U.dashPoints||L.dashShift!==U.dashShift)&&(w.createGeometry=!0)},initUpdateState:(w,O,F,L)=>{const U=a.StreamlinesProvider.get(O).version;w.info.streamlinesHash=U},geometryUtils:c.Mesh.Utils},B)}function A(B,w,O,F,L,U){const{cells:{space:q}}=w.grid,N=q.dimensions,k=h.Grid.getGridToCartesianTransform(w.grid),j=a.StreamlinesProvider.get(w).value,{tubeSizeFactor:H,radialSegments:G,dashEnabled:z,dashPoints:W,dashShift:X}=L,K=l(j)*G*2,Q=o.MeshBuilder.createState(K,Math.ceil(K/10),U);for(let ae=0,te=j.length;ae<te;++ae){const ne=j[ae];(0,_.streamlinePassesFilter)(ne,k,L)&&(Q.currentGroup=ae,z?D(Q,ne,k,G,H,W,X,F):M(Q,ne,k,G,H,F))}const J=o.MeshBuilder.getMesh(Q);return J.setBoundingSphere(g.Sphere3D.fromDimensionsAndTransform((0,g.Sphere3D)(),N,k)),J}const x=(0,m.PositionLocation)();function M(B,w,O,F,L,U){const q=w.length;if(q<2)return;const N=q-1,k=new Float32Array(q*3),j=new Float32Array(q*3),H=new Float32Array(q*3),G=new Float32Array(q),z=new Float32Array(q);for(let W=0;W<q;++W){const X=w[W];b(k,X,O,W*3,0,0),r.Vec3.fromArray(x.position,k,W*3);const Y=U.size.size(x)*L;G[W]=Y,z[W]=Y}(0,p.computeFrenetFrames)(k,j,H,q),(0,s.addTube)(B,k,j,H,N,F,G,z,!0,!0,"elliptical")}function D(B,w,O,F,L,U,q,N){const k=w.length;if(k<2)return;const j=[],H=[];for(let W=0;W<k;++W){const X=v((0,r.Vec3)(),w[W],O);j.push(X),r.Vec3.copy(x.position,X),H.push(N.size.size(x)*L)}const G=U*2;let z=q?U:0;for(;z<k-1;){const W=z,X=Math.min(z+U,k-1);X>W&&V(B,j,H,W,X,F),z+=G}}function V(B,w,O,F,L,U){const q=L-F+1;if(q<2)return;const N=new Float32Array(q*3),k=new Float32Array(q*3),j=new Float32Array(q*3),H=new Float32Array(q),G=new Float32Array(q);for(let z=0;z<q;++z)P(w[F+z],N,z*3),H[z]=O[F+z],G[z]=O[F+z];(0,p.computeFrenetFrames)(N,k,j,q),(0,s.addTube)(B,N,k,j,q-1,U,H,G,!0,!0,"elliptical")}const R={lines:(B,w)=>(0,f.VolumeRepresentation)("Streamlines lines",B,w,C,_.getStreamlinesVisualLoci),"tube-mesh":(B,w)=>(0,f.VolumeRepresentation)("Streamlines tube-mesh",B,w,T,_.getStreamlinesVisualLoci)};e.StreamlinesParams={...e.StreamlinesLinesParams,...e.StreamlinesTubeMeshParams,visuals:t.ParamDefinition.MultiSelect(["lines"],t.ParamDefinition.objectToOptions(R)),density:t.ParamDefinition.Numeric(.1,{min:0,max:1,step:.
708301},d.BaseGeometry.ShadingCategory)};function E(B,w){return t.ParamDefinition.clone(e.StreamlinesParams)}function I(B,w){return y.Representation.createMulti("Streamlines",B,w,y.Representation.StateBuilder,R)}e.StreamlinesRepresentationProvider=(0,f.VolumeRepresentationProvider)({name:"streamlines",label:"Streamlines",description:"Displays streamlines.",factory:I,getParams:E,defaultValues:t.ParamDefinition.getDefaultValues(e.StreamlinesParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:B=>!h.Volume.isEmpty(B)&&!h.Volume.Segmentation.get(B),ensureCustomProperties:{attach:(B,w)=>a.StreamlinesProvider.attach(B,w,void 0,!0),detach:B=>a.StreamlinesProvider.ref(B,!1)}})})(nM)),nM}var S9;function Zse(){if(S9)return Ob;S9=1,Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.Streamlines=void 0;const e=di(),t=Ne(),r=jw(),n=Qse();return Ob.Streamlines=e.PluginBehavior.create({name:"streamlines-volume-prop",category:"custom-props",display:{name:"Streamlines"},ctor:class extends e.PluginBehavior.Handler{constructor(){super(...arguments),this.provider=r.StreamlinesProvider}update(i){const c=this.params.autoAttach!==i.autoAttach;return this.params.autoAttach=i.autoAttach,this.ctx.customVolumeProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),c}register(){this.ctx.customVolumeProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.volume.registry.add(n.StreamlinesRepresentationProvider)}unregister(){this.ctx.customVolumeProperties.unregister(this.provider.descriptor.name),this.ctx.representation.volume.registry.remove(n.StreamlinesRepresentationProvider)}},params:()=>({autoAttach:t.ParamDefinition.Boolean(!1)})}),Ob}var C9;function Jse(){return C9||(C9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Streamlines=e.CrossLinkRestraint=e.BestDatabaseSequenceMapping=e.ValenceModel=e.SecondaryStructure=e.Interactions=e.AccessibleSurfaceArea=e.StructureInfo=void 0;var t=_se();Object.defineProperty(e,"StructureInfo",{enumerable:!0,get:function(){return t.StructureInfo}});var r=Tse();Object.defineProperty(e,"AccessibleSurfaceArea",{enumerable:!0,get:function(){return r.AccessibleSurfaceArea}});var n=Lse();Object.defineProperty(e,"Interactions",{enumerable:!0,get:function(){return n.Interactions}});var i=Nse();Object.defineProperty(e,"SecondaryStructure",{enumerable:!0,get:function(){return i.SecondaryStructure}});var c=qse();Object.defineProperty(e,"ValenceModel",{enumerable:!0,get:function(){return c.ValenceModel}});var o=jse();Object.defineProperty(e,"BestDatabaseSequenceMapping",{enumerable:!0,get:function(){return o.SIFTSMapping}});var s=Wse();Object.defineProperty(e,"CrossLinkRestraint",{enumerable:!0,get:function(){return s.CrossLinkRestraint}});var h=Zse();Object.defineProperty(e,"Streamlines",{enumerable:!0,get:function(){return h.Streamlines}})})(RA)),RA}var P9;function b2(){return P9||(P9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PluginBehaviors=e.BuiltInPluginBehaviors=void 0;const t=At;t.__exportStar(di(),e);const r=t.__importStar(eC()),n=t.__importStar(pse()),i=t.__importStar(hse()),c=t.__importStar(gse()),o=t.__importStar(yse()),s=t.__importStar(vse()),h=t.__importStar(bse()),f=t.__importStar(Jse());e.BuiltInPluginBehaviors={State:r,Representation:n,Camera:i,Misc:c},e.PluginBehaviors={Representation:o,Camera:s,State:h,CustomProps:f}})(VA)),VA}var Qo={},Fb={},T9;function ece(){if(T9)return Fb;T9=1,Object.defineProperty(Fb,"__esModule",{value:!0}),Fb.PluginFeatureDetection=void 0;const e=Ew();return Fb.PluginFeatureDetection={get defaultTransparency(){return(0,e.is_iOS)()?"blended":"wboit"},get preferWebGl1(){return typeof navigator>"u"||typeof window>"u"?!1:["Version/15.1 Safari","Version/15.2 Safari","Version/15.3 Safari"].some(r=>navigator.userAgent.indexOf(r)>0)?!0:(0,e.is_iOS)()}},Fb}var x9;function gs(){if(x9)return Qo;x9=1,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.PluginConfigManager=Qo.PluginConfig=Qo.PluginConfigItem=void 0;const e=Ke(),t=ece();class r{toString(){return this.key}valueOf(){return this.key}constructor(o,s){this.key=o,this.defaultValue=s}}Qo.PluginConfigItem=r;function n(c,o){return new r(c,o)}Qo.PluginConfig={item:n,General:{IsBusyTimeoutMs:n("plugin-config.is-busy-timeout",750),DisableAntialiasing:n("plugin-config.disable-antialiasing",!1),DisablePreserveDrawingBuffer:n("plugin-config.disable-preserve-drawing-buffer",!1),PixelScale:n("plugin-config.pixel-scale",1),PickScale:n("plugin-config.pick-scale",.25),Transparency:n("plugin-config.transparency",t.PluginFeatureDetection.defaultTransparency),PreferWebGl1:n("plugin-config.prefer-webgl1",t.PluginFeatureDetection.preferWebGl1),AllowMajorPerformanceCaveat:n("plugin-config.allow-major-performance-caveat",!1),PowerPreference:n("plugin-config.power-preference","high-performance"),ResolutionMode:n("plugin-config.resolution-mode","auto")},State:{DefaultServer:n("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),CurrentServer:n("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),HistoryCapacity:n("history-capacity.server",5)}
7083,VolumeStreaming:{Enabled:n("volume-streaming.enabled",!0),DefaultServer:n("volume-streaming.server","https://ds.litemol.org"),CanStream:n("volume-streaming.can-stream",(c,o)=>c.models.length===1&&e.Model.probablyHasDensityMap(c.models[0])),EmdbHeaderServer:n("volume-streaming.emdb-header-server","https://files.wwpdb.org/pub/emdb/structures")},Viewport:{ShowReset:n("viewer.show-reset-button",!0),ShowExpand:n("viewer.show-expand-button",!0),ShowToggleFullscreen:n("viewer.show-toggle-fullscreen-button",!0),ShowControls:n("viewer.show-controls-button",!0),ShowSettings:n("viewer.show-settings-button",!0),ShowSelectionMode:n("viewer.show-selection-model-button",!0),ShowAnimation:n("viewer.show-animation-button",!0),ShowTrajectoryControls:n("viewer.show-trajectory-controls",!0),ShowScreenshotControls:n("viewer.show-screenshot-controls",!0),ShowIllumination:n("viewer.show-illumination-button",!0),ShowXR:n("viewer.show-xr","always")},Download:{DefaultPdbProvider:n("download.default-pdb-provider","pdbe"),DefaultEmdbProvider:n("download.default-emdb-provider","pdbe")},Structure:{SizeThresholds:n("structure.size-thresholds",e.Structure.DefaultSizeThresholds),DefaultRepresentationPreset:n("structure.default-representation-preset","preset-structure-representation-auto"),DefaultRepresentationPresetParams:n("structure.default-representation-preset-params",{}),SaccharideCompIdMapType:n("structure.saccharide-comp-id-map-type","default")}
7083,Background:{Styles:n("background.styles",[])}};class i{get(o){return this._config.has(o)?this._config.get(o):o.defaultValue}set(o,s){this._config.set(o,s)}delete(o){this._config.delete(o)}constructor(o){this._config=new Map,o&&o.forEach(([s,h])=>this._config.set(s,h))}}return Qo.PluginConfigManager=i,Qo}var il={},Lb={},A9;function dc(){if(A9)return Lb;A9=1,Object.defineProperty(Lb,"__esModule",{value:!0}),Lb.PluginStateAnimation=void 0;var e;return(function(t){function r(i){return i}t.create=r;function n(i,c){var o,s;if(c.customDurationMs)return c.customDurationMs;const h=(s=(o=c.definition).getDuration)===null||s===void 0?void 0:s.call(o,c.params,i);if(h?.kind==="fixed")return h.durationMs}t.getDuration=n})(e||(Lb.PluginStateAnimation=e={})),Lb}var M9;function _2(){if(M9)return il;M9=1,Object.defineProperty(il,"__esModule",{value:!0}),il.AnimateStateSnapshotTransition=il.AnimateStateSnapshots=void 0;const e=y2(),t=zw(),r=Ne(),n=dc();async function i(c,o,s=!1){var h,f,y,_,g,a,d;if(o.data&&await c.runTask(c.state.data.setSnapshot(o.data)),!((h=o.canvas3d)===null||h===void 0)&&h.props){const p=r.ParamDefinition.normalizeParams(e.Canvas3DParams,o.canvas3d.props,"children");(!((f=o.camera)===null||f===void 0)&&f.current||!((y=o.camera)===null||y===void 0)&&y.focus)&&
7083(p.camera=void 0,p.cameraClipping=void 0,p.cameraFog=void 0),(_=c.canvas3d)===null||_===void 0||_.setProps(p)}!((g=o.camera)===null||g===void 0)&&g.current?(a=c.canvas3d)===null||a===void 0||a.requestCameraReset({snapshot:o.camera.current,durationMs:s||o.camera.transitionStyle==="instant"?0:o.camera.transitionDurationInMs}):!((d=o.camera)===null||d===void 0)&&d.focus&&c.managers.camera.focusObject({...o.camera.focus,durationMs:s||o.camera.transitionStyle==="instant"?0:o.camera.transitionDurationInMs})}return il.AnimateStateSnapshots=n.PluginStateAnimation.create({name:"built-in.animate-state-snapshots",display:{name:"State Snapshots"},isExportable:!0,params:()=>({}),canApply(c){const o=c.managers.snapshot.state.entries;return o.size<1?{canApply:!1,reason:"At least 1 state required."}:o.some(s=>!!s?.snapshot.startAnimation)?{canApply:!1,reason:"Nested animations not supported."}:{canApply:c.managers.snapshot.state.entries.size>0}},setup(c,o,s){const h=s.managers.snapshot.state.entries.get(0);i(s,h.snapshot,!0)},getDuration:(c,o)=>({kind:"fixed",durationMs:o.managers.snapshot.state.entries.toArray().reduce((s,h)=>{var f;return s+((f=h.snapshot.durationInMs)!==null&&f!==void 0?f:0)},0)}),initialState:(c,o)=>{const s=o.managers.snapshot.state.entries.toArray();return{totalDuration:s.reduce((h,f)=>{var y;return h+((y=f.snapshot.durationInMs)!==null&&y!==void 0?y:0)},0),snapshots:s,currentIndex:0,currentTransitionFrame:0}},async apply(c,o,s){var h;if(o.current>=c.totalDuration)return{kind:"finished"};let f=0,y=0,_=0;for(const u of c.snapshots){if(_=o.current-f,f+=(h=u.snapshot.durationInMs)!==null&&h!==void 0?h:0,o.current<f)break;y++}if(y>=c.snapshots.length)return{kind:"finished"};const{transition:g,camera:a,canvas3d:d}=c.snapshots[y].snapshot,p=t.PluginState.getStateTransitionFrameIndex(c.snapshots[y].snapshot,_);return g&&p!==void 0?y===c.currentIndex&&p===c.currentTransitionFrame?{kind:"skip"}:(p===0||y!==c.currentIndex?await i(s.plugin,{...g.frames[p],camera:a,canvas3d:d}):await i(s.plugin,g.frames[p]),{kind:"next",state:{...c,currentIndex:y,currentAnimationFrame:p}}):y===c.currentIndex?{kind:"skip"}:(await i(s.plugin,c.snapshots[y].snapshot),{kind:"next",state:{...c,currentIndex:y,currentAnimationFrame:void 0}})}}),il.AnimateStateSnapshotTransition=n.PluginStateAnimation.create({name:"built-in.animate-state-snapshot-transition",display:{name:"State Snapshot Transition"},isExportable:!0,params:()=>({}),canApply(c){const{snapshot:o}=c.managers,{current:s}=o;return s?.snapshot.transition?{canApply:!0}:{canApply:!1,reason:"No transition found"}},setup(c,o,s){var h,f;const{current:y}=s.managers.snapshot;y&&i(s,(f=(h=y.snapshot.transition)===null||h===void 0?void 0:h.frames[0])!==null&&f!==void 0?f:y.snapshot,!0)},getDuration:(c,o)=>{var s,h;const{current:f}=o.managers.snapshot;return f?.snapshot.transition?!((s=f.snapshot.transition)===null||s===void 0)&&s.loop?{kind:"infinite"}:{kind:"fixed",durationMs:(h=t.PluginState.getStateTransitionDuration(f.snapshot))!==null&&h!==void 0?h:0}:{kind:"fixed",durationMs:0}},initialState:(c,o)=>{var s,h;const{current:f}=o.managers.snapshot;if(f)return{totalDuration:!((s=f.snapshot.transition)===null||s===void 0)&&s.loop?Number.MAX_VALUE:(h=t.PluginState.getStateTransitionDuration(f.snapshot))!==null&&h!==void 0?h:0,snapshots:[f],currentIndex:0,currentTransitionFrame:void 0,isInitial:!0}},async apply(c,o,s){var h;const f=(h=c.snapshots[0])===null||h===void 0?void 0:h.snapshot;if(o.current>=c.totalDuration){if(f?.transition&&c.isInitial){const d=f.transition.frames.length-1;s.plugin.managers.snapshot.setSnapshotAnimationFrame(c.totalDuration,!1),await i(s.plugin,f.transition.frames[d])}return{kind:"finished"}}if(!f)return{kind:"finished"};const{transition:y,camera:_,canvas3d:g}=f,a=t.PluginState.getStateTransitionFrameIndex(f,o.current);return!y||a===void 0?{kind:"finished"}:a===c.currentTransitionFrame?{kind:"skip"}:(s.plugin.managers.snapshot.setSnapshotAnimationFrame(o.current,!1),a===0?await i(s.plugin,{...y.frames[a],camera:_,canvas3d:g}):await i(s.plugin,y.frames[a]),{kind:"next",state:{...c,currentAnimationFrame:a,isInitial:!1}})}}),il}var D9;function zw(){if(D9)return dd;D9=1,Object.defineProperty(dd,"__esModule",{value:!0}),dd.PluginState=void 0;const e=Lf(),t=Rn(),r=y2(),n=Vi(),i=jt(),c=Et(),o=et(),s=Ne(),h=b2(),f=Sn(),y=gs(),_=_2(),g=nt(),a=Af();class d extends n.PluginComponent{get animation(){return this.plugin.managers.animation}getSnapshot(u){var m,v,b;const P={...this.snapshotParams.value,...u};return{id:o.UUID.create22(),data:P.data?this.data.getSnapshot():void 0,behaviour:P.behavior?this.behaviors.getSnapshot():void 0,animation:P.animation?this.animation.getSnapshot():void 0,startAnimation:P.startAnimation?!!P.startAnimation:void 0,camera:P.camera?{current:this.plugin.canvas3d.camera.getSnapshot(),transitionStyle:P.cameraTransition.name,transitionDurationInMs:((m=P?.cameraTransition)===null||m===void 0?void 0:m.name)==="animate"?P.cameraTransition.params.durationInMs:void 0}:void 0,canvas3dContext:P.canvas3dContext?{props:(v=this.plugin.canvas3dContext)===null||v===void 0?void 0:v.props}:void 0,canvas3d:P.canvas3d?{props:(b=this.plugin.canvas3d)===null||b===void 0?void 0:b.props}:void 0,interactivity:P.interactivity?{props:this.plugin.managers.interactivity.props}:void 0,structureFocus:this.plugin.managers.structure.focus.getSnapshot(),structureSelection:P.structureSelection?this.plugin.managers.structure.selection.getSnapshot():void 0,structureComponentManager:P.componentManager?{options:this.plugin.managers.structure.component.state.options}:void 0,durationInMs:P?.durationInMs}}async setSnapshot(u){var m,v,b,P,C,l,S,T,A,x;if(await this.animation.stop(),!((m=u.structureComponentManager)===null||m===void 0)&&m.options&&this.plugin.managers.structure.component._setSnapshotState((v=u.structureComponentManager)===null||v===void 0?void 0:v.options),u.behaviour&&await this.plugin.runTask(this.behaviors.setSnapshot(u.behaviour)),u.data&&await this.plugin.runTask(this.data.setSnapshot(u.data)),!((b=u.canvas3d)===null||b===void 0)&&b.props){const M=s.ParamDefinition.normalizeParams(r.Canvas3DParams,u.canvas3d.props,"children");(!((P=u.camera)===null||P===void 0)&&P.current||!((C=u.camera)===null||C===void 0)&&C.focus)&&
7083(M.camera=void 0,M.cameraClipping=void 0,M.cameraFog=void 0),await f.PluginCommands.Canvas3D.SetSettings(this.plugin,{settings:M})}if(!((l=u.canvas3dContext)===null||l===void 0)&&l.props){const M=s.ParamDefinition.normalizeParams(r.Canvas3DContext.Params,u.canvas3dContext.props,"children");(S=this.plugin.canvas3dContext)===null||S===void 0||S.setProps(M)}if(u.interactivity&&u.interactivity.props&&this.plugin.managers.interactivity.setProps(u.interactivity.props),u.structureFocus&&this.plugin.managers.structure.focus.setSnapshot(u.structureFocus),u.structureSelection&&this.plugin.managers.structure.selection.setSnapshot(u.structureSelection),u.animation&&this.animation.setSnapshot(u.animation),!((T=u.camera)===null||T===void 0)&&T.current?f.PluginCommands.Camera.Reset(this.plugin,{snapshot:u.camera.current,durationMs:u.camera.transitionStyle==="animate"?u.camera.transitionDurationInMs:void 0}):!((A=u.camera)===null||A===void 0)&&A.focus&&f.PluginCommands.Camera.FocusObject(this.plugin,{...u.camera.focus,durationMs:u.camera.transitionStyle==="animate"?u.camera.transitionDurationInMs:void 0}),typeof u?.onLoadMarkdownCommands=="object"&&Object.keys(u.onLoadMark
7083downCommands).length>0&&this.plugin.managers.markdownExtensions.tryExecute("click",u.onLoadMarkdownCommands),u.startAnimation){this.animation.start();return}!((x=u.transition)===null||x===void 0)&&x.autoplay&&(await g.Scheduler.immediatePromise(),this.animation.play(_.AnimateStateSnapshotTransition,{}))}async setAnimationSnapshot(u,m){var v,b,P,C;await this.animation.stopStateTransitionAnimation();const{transition:l}=u;if(!l)return;const S=Math.min(m,l.frames.length-1),T=(v=l.frames[S])!==null&&v!==void 0?v:u.data;if(T.data&&await this.plugin.runTask(this.data.setSnapshot(T.data)),!((b=T.canvas3d)===null||b===void 0)&&b.props){const A=s.ParamDefinition.normalizeParams(r.Canvas3DParams,T.canvas3d.props,"children");(P=this.plugin.canvas3d)===null||P===void 0||P.setProps(A)}!((C=T.camera)===null||C===void 0)&&C.current&&f.PluginCommands.Camera.Reset(this.plugin,{snapshot:T.camera.current,durationMs:T.camera.transitionStyle==="animate"?T.camera.transitionDurationInMs:void 0}),!m&&typeof u?.onLoadMarkdownCommands=="object"&&Object.keys(u.onLoadMark
7083downCommands).length>0&&this.plugin.managers.markdownExtensions.tryExecute("click",u.onLoadMarkdownCommands)}updateTransform(u,m,v,b){const P=u.build().to(m).update(v);return f.PluginCommands.State.Update(this.plugin,{state:u,tree:P,options:{canUndo:b}})}hasBehavior(u){return this.behaviors.tree.transforms.has(u.id)}updateBehavior(u,m){const v=this.behaviors.build();if(this.behaviors.tree.transforms.has(u.id))v.to(u.id).update(m);else{const b=u.createDefaultParams(void 0,this.plugin);v.to(h.PluginBehavior.getCategoryId(u)).apply(u,(0,e.produce)(b,m),{ref:u.id})}return this.plugin.runTask(this.behaviors.updateTree(v))}dispose(){this.behaviors.cells.forEach(u=>{var m,v,b,P;h.PluginBehavior.Behavior.is(u.obj)&&((v=(m=u.obj.data).unregister)===null||v===void 0||v.call(m),(P=(b=u.obj.data).dispose)===null||P===void 0||P.call(b))}),super.dispose(),this.data.dispose(),this.behaviors.dispose(),this.animation.dispose()}constructor(u){super(),this.plugin=u,this.data=c.State.create(new i.PluginStateObject.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,historyCapacity:this.plugin.config.get(y.PluginConfig.State.HistoryCapacity)}),this.behaviors=c.State.create(new h.PluginBehavior.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,rootState:{isLocked:!0}}),this.events={cell:{stateUpdated:(0,t.merge)(this.data.events.cell.stateUpdated,this.behaviors.events.cell.stateUpdated),created:(0,t.merge)(this.data.events.cell.created,this.behaviors.events.cell.created),removed:(0,t.merge)(this.data.events.cell.removed,this.behaviors.events.cell.removed)},object:{created:(0,t.merge)(this.data.events.object.created,this.behaviors.events.object.created),removed:(0,t.merge)(this.data.events.object.removed,this.behaviors.events.object.removed),updated:(0,t.merge)(this.data.events.object.updated,this.behaviors.events.object.updated)}},this.snapshotParams=this.ev.behavior(d.DefaultSnapshotParams),this.setSnapshotParams=m=>{this.snapshotParams.next({...d.DefaultSnapshotParams,...m})}}}return dd.PluginState=d,(function(p){p.SnapshotParams={durationInMs:s.ParamDefinition.Numeric(1500,{min:100,max:15e3,step:100},{label:"Duration in ms"}),data:s.ParamDefinition.Boolean(!0),behavior:s.ParamDefinition.Boolean(!1),structureSelection:s.ParamDefinition.Boolean(!1),componentManager:s.ParamDefinition.Boolean(!0),animation:s.ParamDefinition.Boolean(!0),startAnimation:s.ParamDefinition.Boolean(!1),canvas3d:s.ParamDefinition.Boolean(!0),canvas3dContext:s.ParamDefinition.Boolean(!0),interactivity:s.ParamDefinition.Boolean(!0),camera:s.ParamDefinition.Boolean(!0),cameraTransition:s.ParamDefinition.MappedStatic("animate",{animate:s.ParamDefinition.Group({durationInMs:s.ParamDefinition.Numeric(250,{min:100,max:5e3,step:500},{label:"Duration in ms"})}),instant:s.ParamDefinition.Group({})},{options:[["animate","Animate"],["instant","Instant"]]}),image:s.ParamDefinition.Boolean(!1)},p.DefaultSnapshotParams=s.ParamDefinition.getDefaultValues(p.SnapshotParams),p.getMinFrameDuration=(0,a.memoizeLatest)(m=>{if(!m)return 1e3/60;const{transition:v}=m;if(!v)return 1e3/60;let b=1/0;for(const P of v.frames)P.durationInMs>0&&P.durationInMs<b&&(b=P.durationInMs);return Number.isFinite(b)?b:1e3/60}),p.getStateTransitionDuration=(0,a.memoizeLatest)(m=>{if(!m)return;const{transition:v}=m;if(!v)return;let b=0;for(let P=0;P<v.frames.length;P++){const C=v.frames[P];b+=C.durationInMs}return b}),p.getStateTransitionFrameTime=(0,a.memoizeLatest)((m,v)=>{if(!m||v===void 0)return 0;const{transition:b}=m;if(!b)return 0;let P=0;for(let C=0;C<v&&!(b.frames.length<=C);C++){const l=b.frames[C];P+=l.durationInMs}return P});function u(m,v){var b;const{transition:P}=m;if(!P?.frames.length)return;let C=v;P.loop&&(C%=(b=p.getStateTransitionDuration(m))!==null&&b!==void 0?b:1);let l=0;if(C<=P.frames[0].durationInMs)return 0;for(let S=0;S<P.frames.length;S++){if(l>=C)return S;const T=P.frames[S];l+=T.durationInMs}return P.frames.length-1}p.getStateTransitionFrameIndex=u})(d||(dd.PluginState=d={})),dd}var tce="5.11.0",rce=new Date(1784437164616);const nce=Object.freeze(Object.defineProperty({__proto__:null,PLUGIN_VERSION:tce,PLUGIN_VERSION_DATE:rce},Symbol.toStringTag,{value:"Module"})),sZ=VD(nce);var ef={},I9;function Hw(){if(I9)return ef;
7083I9=1,Object.defineProperty(ef,"__esModule",{value:!0}),ef.setCanvasSize=e,ef.resizeCanvas=t,ef.canvasToBlob=n;function e(i,c,o,s=1){i.width=Math.round(window.devicePixelRatio*s*c),i.height=Math.round(window.devicePixelRatio*s*o),Object.assign(i.style,{width:`${c}px`,height:`${o}px`})}function t(i,c,o=1){let s=window.innerWidth,h=window.innerHeight;c!==document.body&&(s=c.offsetWidth,h=c.offsetHeight),e(i,s,h,o)}function r(i,c,o,s){const h=atob(i.toDataURL(o,s).split(",")[1]),f=h.length,y=f>>2,_=new Uint8Array(f),g=new Uint32Array(_.buffer,0,y);let a=0;for(let p=0;p<y;++p)g[p]=h.charCodeAt(a++)|h.charCodeAt(a++)<<8|h.charCodeAt(a++)<<16|h.charCodeAt(a++)<<24;let d=f&3;for(;d--;)_[a]=h.charCodeAt(a++);c(new Blob([_],{type:o||"image/png"}))}async function n(i,c,o){return new Promise((s,h)=>{const f=y=>{y?s(y):h("no blob returned")};HTMLCanvasElement.prototype.toBlob?i.toBlob(f,c,o):r(i,f,c,o)})}return ef}var Nb={},w9;function ice(){if(w9)return Nb;w9=1,Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.SingleTaskQueue=void 0;class e{constructor(){this.queue=[]}run(r){this.queue.length<2?this.queue.push(r):this.queue[this.queue.length-1]=r,this.queue.length===1&&this.next()}async next(){for(;this.queue.length>0;)try{const r=this.queue[0];await r()}catch(r){console.error("Error in SingleTaskQueue execution:",r)}finally{this.queue.shift()}}}return Nb.SingleTaskQueue=e,Nb}var V9;function cZ(){if(V9)return ld;V9=1,Object.defineProperty(ld,"__esModule",{value:!0}),ld.PluginStateSnapshotManager=void 0;const e=Ff,t=et(),r=zw(),n=Vi(),i=$s(),c=iS(),o=ET(),s=vr(),h=sZ,f=Hw(),y=nt(),_=nS(),g=ice();class a extends n.StatefulPluginComponent{updateState(p){return"current"in p&&!("currentAnimationTimeMs"in p)?super.updateState({...p,currentAnimationTimeMs:0}):super.updateState(p)}get current(){const p=this.state.current;return this.state.entries.find(u=>u.snapshot.id===p)}getIndex(p){return this.state.entries.indexOf(p)}getEntry(p){if(p)return this.entryMap.get(p)}remove(p){const u=this.entryMap.get(p);u&&(u?.image&&this.plugin.managers.asset.delete(u.image),this.entryMap.delete(p),this.updateState({current:this.state.current===p?void 0:this.state.current,entries:this.state.entries.delete(this.getIndex(u))}),this.events.changed.next(void 0))}add(p){this.entryMap.set(p.snapshot.id,p),this.updateState({current:p.snapshot.id,entries:this.state.entries.push(p)}),this.events.changed.next(void 0)}replace(p,u,m){var v,b,P,C;const l=this.getEntry(p);if(!l)return;this.defaultSnapshotId=void 0,l?.image&&this.plugin.managers.asset.delete(l.image);const S=this.getIndex(l),T=a.Entry(u,{key:(v=m?.key)!==null&&v!==void 0?v:l.key,name:(b=m?.name)!==null&&b!==void 0?b:l.name,description:(P=m?.description)!==null&&P!==void 0?P:l.description,descriptionFormat:(C=m?.descriptionFormat)!==null&&C!==void 0?C:l.descriptionFormat,image:m?.image});this.entryMap.set(u.id,T),this.updateState({current:T.snapshot.id,entries:this.state.entries.set(S,T)}),this.events.changed.next(void 0)}move(p,u){const m=this.state.entries.size;if(m<2)return;const v=this.getEntry(p);if(!v)return;const b=this.getIndex(v);let P=(b+u)%m;P<0&&(P+=m);const C=this.state.entries.get(P),l=this.state.entries.asMutable();l.set(P,v),l.set(b,C),this.updateState({current:v.snapshot.id,entries:l.asImmutable()}),this.events.changed.next(void 0)}update(p,u){var m,v,b;const P=this.getIndex(p);if(P<0)return;const C=this.state.entries.set(P,{...p,key:((m=u.key)===null||m===void 0?void 0:m.trim())||void 0,name:((v=u.name)===null||v===void 0?void 0:v.trim())||void 0,description:((b=u.description)===null||b===void 0?void 0:b.trim())||void 0,descriptionFormat:u.descriptionFormat});this.updateState({entries:C}),this.entryMap.set(p.snapshot.id,this.state.entries.get(P)),this.events.changed.next(void 0)}clear(){this.state.entries.size!==0&&(this.entryMap.forEach(p=>{p?.image&&this.plugin.managers.asset.delete(p.image)}),this.entryMap.clear(),this.updateState({current:void 0,entries:(0,e.List)()}),this.events.changed.next(void 0))}applyKey(p){const u=this.state.entries.find(m=>m.key===p);u&&(this.updateState({current:u.snapshot.id}),this.events.changed.next(void 0),this.plugin.state.setSnapshot(u.snapshot))}setCurrent(p){const u=this.getEntry(p);return u&&(this.updateState({current:p}),this.events.changed.next(void 0)),u&&u.snapshot}setSnapshotAnimationFrame(p,u=!1){var m;const v=this.getEntry(this.state.current);if(!v)return;const b=(m=r.PluginState.getStateTransitionFrameIndex(v.snapshot,p))!==null&&m!==void 0?m:0;return this.updateState({currentAnimationTimeMs:p})&&this.events.changed.next(void 0),u&&this.animationFrameQueue.run(()=>this.plugin.state.setAnimationSnapshot(v.snapshot,b??0)),b}getNextId(p,u){const m=this.state.entries.size;if(!p){if(m===0)return;const P=u===-1?m-1:0;return this.state.entries.get(P).snapshot.id}const v=this.getEntry(p);if(!v)return;let b=this.getIndex(v);if(!(b<0))return b=(b+u)%m,b<0&&(b+=m),this.state.entries.get(b).snapshot.id}applyNext(p){const u=this.getNextId(this.state.current,p);if(u){const m=this.setCurrent(u);if(m)return this.plugin.state.setSnapshot(m)}}async setStateSnapshot(p){var u;this.clear();const m=(0,e.List)().asMutable();for(const C of p.entries)this.entryMap.set(C.snapshot.id,C),m.push(C);const v=p.current?p.current:p.entries.length>0?p.entries[0].snapshot.id:void 0;if(this.updateState({current:v,entries:m.asImmutable(),isPlaying:!1,nextSnapshotDelayInMs:p.playback?p.playback.nextSnapshotDelayInMs:a.DefaultNextSnapshotDelayInMs}),this.events.changed.next(void 0),!v)return;const b=this.getEntry(v),P=b&&b.snapshot;if(P)return await this.plugin.state.setSnapshot(P),!((u=p.playback)===null||u===void 0)&&u.isPlaying&&this.play({delayFirst:!0}),P}async syncCurrent(p){var u,m;const v=this.state.entries.size===0,b=this.state.entries.size===1&&this.state.current&&(!this.defaultSnapshotId||this.state.current===this.defaultSnapshotId);if(!v&&!b)return;const P=this.plugin.state.getSnapshot(p?.params),C=((m=(u=p?.params)===null||u===void 0?void 0:u.image)!==null&&m!==void 0?m:this.plugin.state.snapshotParams.value.image)?await a.getCanvasImageAsset(this.plugin,`${P.id}-image.png`):void 0;if(v)this.add(a.Entry(P,{name:p?.name,description:p?.description,descriptionFormat:p?.descriptionFormat,image:C}));else if(b){const l=this.getEntry(this.state.current);l?.image&&this.plugin.managers.asset.delete(l.image),this.replace(this.state.current,P,{image:C})}this.defaultSnapshotId=P.id}async getStateSnapshot(p){await this.syncCurrent(p);const u=this.state.entries.valueSeq().toArray();for(let m=0;m<u.length;m++)u[m]._transientData&&(u[m]={...u[m]},delete u[m]._transientData);return{timestamp:+new Date,version:h.PLUGIN_VERSION,name:p&&p.name,description:p&&p.description,current:this.state.current,playback:{isPlaying:!!(p&&p.playOnLoad),nextSnapshotDelayInMs:this.state.nextSnapshotDelayInMs},entries:u}}
7083async serialize(p){const u=JSON.stringify(await this.getStateSnapshot({params:p?.params}),null,2);if(!p?.type||p.type==="json"||p.type==="molj")return new Blob([u],{type:"application/json;charset=utf-8"});{const m=new Uint8Array((0,i.utf8ByteCount)(u));(0,i.utf8Write)(m,0,u);const v={"state.json":m},b=[];for(const{asset:C,file:l}of this.plugin.managers.asset.assets)b.push([C.id,C]),v[`assets/${C.id}`]=new Uint8Array(await l.arrayBuffer());if(b.length>0){const C=JSON.stringify(b,null,2),l=new Uint8Array((0,i.utf8ByteCount)(C));(0,i.utf8Write)(l,0,C),v["assets.json"]=l}const P=await this.plugin.runTask((0,c.Zip)(v));return new Blob([P],{type:"application/zip"})}}async open(p){try{const u=p.name.toLowerCase();if(u.endsWith("json")||u.endsWith("molj")){const m=await this.plugin.runTask((0,o.readFromFile)(p,"string")),v=JSON.parse(_.StringLike.toString(m));a.isStateSnapshot(v)?await this.setStateSnapshot(v):a.isStateSnapshot(v.data)?await this.setStateSnapshot(v.data):await this.plugin.state.setSnapshot(v)}else{const m=await this.plugin.runTask((0,o.readFromFile)(p,"zip")),v=Object.create(null);(0,s.objectForEach)(m,(C,l)=>{if(l==="state.json"||l==="assets.json")return;const S=l.substring(l.indexOf("/")+1);v[S]=C});const b=new File([m["state.json"]],"state.json"),P=await this.plugin.runTask((0,o.readFromFile)(b,"json"));if(m["assets.json"]){const C=new File([m["assets.json"]],"assets.json"),l=await this.plugin.runTask((0,o.readFromFile)(C,"json"));for(const[S,T]of l)this.plugin.managers.asset.set(T,new File([v[S]],T.name))}await this.setStateSnapshot(P)}this.events.opened.next(void 0)}catch(u){console.error(u),this.plugin.log.error("Error reading state")}}async startPlayback(){const{current:p}=this;if(p)if(p.snapshot.transition){const u=this.setCurrent(this.state.current);await this.plugin.state.setSnapshot(u);const m=typeof u.durationInMs<"u"?u.durationInMs:this.state.nextSnapshotDelayInMs;this.state.isPlaying&&(this.timeoutHandle=setTimeout(this.next,m))}else return this.next()}async play(p){if(this.state.isPlaying&&!p?.delayFirst)if(p?.restart)await this.stop();else return;if(this.updateState({isPlaying:!0}),p?.delayFirst){const u=this.getEntry(this.state.current);if(!u){this.next();return}this.events.changed.next(void 0);const m=u.snapshot,v=typeof m.durationInMs<"u"?m.durationInMs:this.state.nextSnapshotDelayInMs;this.timeoutHandle=setTimeout(this.next,v)}else this.startPlayback()}async stop(){await this.plugin.managers.animation.stop(),this.updateState({isPlaying:!1}),typeof this.timeoutHandle<"u"&&clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0,this.events.changed.next(void 0)}async togglePlay(){this.state.isPlaying?(await this.stop(),this.plugin.managers.markdownExtensions.audio.pause()):await this.play()}dispose(){super.dispose(),this.entryMap.clear()}constructor(p){super({current:void 0,entries:(0,e.List)(),isPlaying:!1,nextSnapshotDelayInMs:a.DefaultNextSnapshotDelayInMs}),this.plugin=p,this.entryMap=new Map,this.defaultSnapshotId=void 0,this.events={changed:this.ev(),opened:this.ev()},this.animationFrameQueue=new g.SingleTaskQueue,this.timeoutHandle=void 0,this.next=async()=>{this.timeoutHandle=void 0;const u=this.getNextId(this.state.current,1);if(!u||u===this.state.current){this.stop();return}const m=this.setCurrent(u);await this.plugin.state.setSnapshot(m);const v=typeof m.durationInMs<"u"?m.durationInMs:this.state.nextSnapshotDelayInMs;this.state.isPlaying&&(this.timeoutHandle=setTimeout(this.next,v))}}}return ld.PluginStateSnapshotManager=a,a.DefaultNextSnapshotDelayInMs=1500,(function(d){function p(v,b){return{timestamp:+new Date,snapshot:v,...b}}d.Entry=p;function u(v){const b=v;return!!b&&!!b.timestamp&&!!b.entries}d.isStateSnapshot=u;async function m(v,b){const P=y.Task.create("Render Screenshot",async C=>{if(!v.helpers.viewportScreenshot)return;const l=await v.helpers.viewportScreenshot.getPreview(C,512);if(!l)return;const S=await(0,f.canvasToBlob)(l.canvas,"png"),T=new File([S],b),A={kind:"file",id:t.UUID.create22(),name:b};return v.managers.asset.set(A,T),A});return v.runTask(P)}d.getCanvasImageAsset=m})(a||(ld.PluginStateSnapshotManager=a={})),ld}var qb={},E9;function ace(){if(E9)return qb;
7083E9=1,Object.defineProperty(qb,"__esModule",{value:!0}),qb.dateToUtcString=e,qb.getFormattedTime=t;function e(r){return r.toISOString().replace(/T/," ").replace(/\..+/,"")}function t(){const r=new Date,n=r.getFullYear(),i=r.getMonth()+1,c=r.getDate(),o=r.getHours(),s=r.getMinutes(),h=r.getSeconds();return n+"-"+i+"-"+c+"-"+o+"-"+s+"-"+h}return qb}var QP={},B9;function uZ(){if(B9)return QP;B9=1,Object.defineProperty(QP,"__esModule",{value:!0}),QP.download=r;function e(n){window.open(n,"_blank")||(window.location.href=n)}function t(n){try{n.dispatchEvent(new MouseEvent("click"))}catch{const c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),n.dispatchEvent(c)}}function r(n,i="download"){if(n)if("download"in HTMLAnchorElement.prototype){const c=document.createElement("a");c.download=i,c.rel="noopener",typeof n=="string"?(c.href=n,t(c)):(c.href=URL.createObjectURL(n),setTimeout(()=>URL.revokeObjectURL(c.href),4e4),setTimeout(()=>t(c)))}else if(typeof navigator<"u"&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(n,i);else{const c=window.navigator.userAgent,o=/Safari/i.test(c),s=/CriOS\/[\d]+/.test(c),h=f=>{e(s?f:f.replace(/^data:[^;]*;/,"data:attachment/file;"))};if((o||s)&&FileReader)if(n instanceof Blob){const f=new FileReader;f.onloadend=()=>h(f.result),f.readAsDataURL(n)}else h(n);else{const f=URL.createObjectURL(typeof n=="string"?new Blob([n]):n);location.href=f,setTimeout(()=>URL.revokeObjectURL(f),4e4)}}}return QP}var Ub={},R9;function Ww(){if(R9)return Ub;R9=1,Object.defineProperty(Ub,"__esModule",{value:!0}),Ub.urlQueryParameter=e,Ub.urlCombine=t;function e(r){if(typeof window>"u")return;const i=new RegExp(`${r}=([^&#=]*)`).exec(window.location.search);return i?decodeURIComponent(i[1]):void 0}function t(r,n){return`${r}${r[r.length-1]==="/"||n[0]==="/"?"":"/"}${n}`}return Ub}var O9;function eC(){if(O9)return qn;O9=1,Object.defineProperty(qn,"__esModule",{value:!0}),qn.registerDefault=f,qn.SyncBehaviors=y,qn.SetCurrentObject=_,qn.Update=g,qn.ApplyAction=a,qn.RemoveObject=d,qn.ToggleExpanded=p,qn.ToggleVisibility=u,qn.setSubtreeVisibility=m,qn.Highlight=b,qn.ClearHighlights=P,qn.Snapshots=C;const e=Ke(),t=cZ(),r=jt(),n=Et(),i=ace(),c=uZ(),o=Ww(),s=Sn(),h=gs();function f(l){y(l),_(l),g(l),a(l),d(l),p(l),u(l),b(l),P(l),C(l)}function y(l){l.state.events.object.created.subscribe(S=>{r.PluginStateObject.isBehavior(S.obj)&&S.obj.data.register(S.ref)}),l.state.events.object.removed.subscribe(S=>{var T,A,x,M;r.PluginStateObject.isBehavior(S.obj)&&((A=(T=S.obj.data).unregister)===null||A===void 0||A.call(T),(M=(x=S.obj.data).dispose)===null||M===void 0||M.call(x))}),l.state.events.object.updated.subscribe(S=>{var T,A,x,M;S.action==="recreate"&&(S.oldObj&&r.PluginStateObject.isBehavior(S.oldObj)&&((A=(T=S.oldObj.data).unregister)===null||A===void 0||A.call(T),(M=(x=S.oldObj.data).dispose)===null||M===void 0||M.call(x)),S.obj&&r.PluginStateObject.isBehavior(S.obj)&&S.obj.data.register(S.ref))})}function _(l){s.PluginCommands.State.SetCurrentObject.subscribe(l,({state:S,ref:T})=>S.setCurrent(T))}function g(l){s.PluginCommands.State.Update.subscribe(l,({state:S,tree:T,options:A})=>l.runTask(S.updateTree(T,A)))}function a(l){s.PluginCommands.State.ApplyAction.subscribe(l,({state:S,action:T,ref:A})=>l.runTask(S.applyAction(T.action,T.params,A)))}function d(l){function S(T,A){const x=T.build().delete(A);return l.runTask(T.updateTree(x))}s.PluginCommands.State.RemoveObject.subscribe(l,({state:T,ref:A,removeParentGhosts:x})=>{if(x){const M=T.tree;let D=M.transforms.get(A);if(D.parent===A)return S(T,A);for(;;){const V=M.children.get(D.parent);if(D.parent===D.ref||V.size>1)return S(T,D.ref);const R=M.transforms.get(D.parent);if(!R.state.isGhost)return S(T,D.ref);D=R}}else return S(T,A)})}function p(l){s.PluginCommands.State.ToggleExpanded.subscribe(l,({state:S,ref:T})=>S.updateCellState(T,({isCollapsed:A})=>({isCollapsed:!A})))}function u(l){s.PluginCommands.State.ToggleVisibility.subscribe(l,({state:S,ref:T})=>m(S,T,!S.cells.get(T).state.isHidden))}function m(l,S,T){n.StateTree.doPreOrder(l.tree,l.transforms.get(S),{state:l,value:T},v)}function v(l,S,T){T.state.updateCellState(l.ref,{isHidden:T.value})}function b(l){s.PluginCommands.Interactivity.Object.Highlight.subscribe(l,({state:S,ref:T})=>
7083{if(!l.canvas3d||l.isBusy)return;l.managers.interactivity.lociHighlights.clearHighlights();const A=typeof T=="string"?[T]:T;for(const x of A){const M=S.cells.get(x);if(M){if(r.PluginStateObject.Molecule.Structure.is(M.obj))l.managers.interactivity.lociHighlights.highlight({loci:e.Structure.Loci(M.obj.data)},!1);else if(M&&r.PluginStateObject.isRepresentation3D(M.obj)){const{repr:D}=M.obj.data;for(const V of D.getAllLoci())l.managers.interactivity.lociHighlights.highlight({loci:V,repr:D},!1)}else if(r.PluginStateObject.Molecule.Structure.Selections.is(M.obj))for(const D of M.obj.data)l.managers.interactivity.lociHighlights.highlight({loci:D.loci},!1)}}})}function P(l){s.PluginCommands.Interactivity.ClearHighlights.subscribe(l,()=>{l.managers.interactivity.lociHighlights.clearHighlights()})}function C(l){l.config.set(h.PluginConfig.State.CurrentServer,l.config.get(h.PluginConfig.State.DefaultServer)),s.PluginCommands.State.Snapshots.Clear.subscribe(l,()=>{l.managers.snapshot.clear()}),s.PluginCommands.State.Snapshots.Remove.subscribe(l,({id:S})=>{l.managers.snapshot.remove(S)}),s.PluginCommands.State.Snapshots.Add.subscribe(l,async({key:S,name:T,description:A,descriptionFormat:x,params:M})=>{var D;const V=l.state.getSnapshot(M),R=((D=M?.image)!==null&&D!==void 0?D:l.state.snapshotParams.value.image)?await t.PluginStateSnapshotManager.getCanvasImageAsset(l,`${V.id}-image.png`):void 0,E=t.PluginStateSnapshotManager.Entry(V,{key:S,name:T,description:A,descriptionFormat:x,image:R});l.managers.snapshot.add(E)}),s.PluginCommands.State.Snapshots.Replace.subscribe(l,async({id:S,params:T})=>{var A;const x=l.state.getSnapshot(T),M=((A=T?.image)!==null&&A!==void 0?A:l.state.snapshotParams.value.image)?await t.PluginStateSnapshotManager.getCanvasImageAsset(l,`${x.id}-image.png`):void 0;l.managers.snapshot.replace(S,l.state.getSnapshot(T),{image:M})}),s.PluginCommands.State.Snapshots.Move.subscribe(l,({id:S,dir:T})=>{l.managers.snapshot.move(S,T)}),s.PluginCommands.State.Snapshots.Apply.subscribe(l,({id:S})=>{const T=l.managers.snapshot.setCurrent(S);if(T)return l.state.setSnapshot(T)}),s.PluginCommands.State.Snapshots.Upload.subscribe(l,async({name:S,description:T,playOnLoad:A,serverUrl:x,params:M})=>fetch((0,o.urlCombine)(x,`set?name=${encodeURIComponent(S||"")}&description=${encodeURIComponent(T||"")}`),{method:"POST",mode:"cors",referrer:"no-referrer",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(await l.managers.snapshot.getStateSnapshot({name:S,description:T,playOnLoad:A}))})),s.PluginCommands.State.Snapshots.Fetch.subscribe(l,async({url:S})=>
7083{const T=await l.runTask(l.fetch({url:S,type:"json"}));await l.managers.snapshot.setStateSnapshot(T.data)}),s.PluginCommands.State.Snapshots.DownloadToFile.subscribe(l,async({name:S,type:T,params:A})=>{const x=`mol-star_state_${S||(0,i.getFormattedTime)()}.${T==="json"?"molj":"molx"}`,M=await l.managers.snapshot.serialize({type:T,params:A});(0,c.download)(M,`${x}`)}),s.PluginCommands.State.Snapshots.OpenFile.subscribe(l,({file:S})=>l.managers.snapshot.open(S)),s.PluginCommands.State.Snapshots.OpenUrl.subscribe(l,async({url:S,type:T})=>{const A=await l.runTask(l.fetch({url:S,type:"binary"}));return l.managers.snapshot.open(new File([A],`state.${T}`))})}return qn}var k9=eC(),jb={},iM={},Gb={},F9;function oce(){if(F9)return Gb;F9=1,Object.defineProperty(Gb,"__esModule",{value:!0}),Gb.partition=void 0;var e=VK(),t=ec();function r(n,i){return function(c){return[t.filter(n,i)(c),t.filter(e.not(n,i))(c)]}}return Gb.partition=r,Gb}var Zo={},L9;function sce(){if(L9)return Zo;L9=1;var e=Zo&&Zo.__read||function(c,o){var s=typeof Symbol=="function"&&c[Symbol.iterator];if(!s)return c;var h=s.call(c),f,y=[],_;try{for(;(o===void 0||o-- >0)&&!(f=h.next()).done;)y.push(f.value)}catch(g){_={error:g}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(_)throw _.error}}return y},t=Zo&&Zo.__spreadArray||function(c,o){for(var s=0,h=o.length,f=c.length;s<h;s++,f++)c[f]=o[s];return c};Object.defineProperty(Zo,"__esModule",{value:!0}),Zo.race=void 0;var r=Nf(),n=gw();function i(){for(var c=[],o=0;o<arguments.length;o++)c[o]=arguments[o];return n.raceWith.apply(void 0,t([],e(r.argsOrArgArray(c))))}return Zo.race=i,Zo}var N9;function cce(){return N9||(N9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.mergeAll=e.merge=e.max=e.materialize=e.mapTo=e.map=e.last=e.isEmpty=e.ignoreElements=e.groupBy=e.first=e.findIndex=e.find=e.finalize=e.filter=e.expand=e.exhaustMap=e.exhaustAll=e.exhaust=e.every=e.endWith=e.elementAt=e.distinctUntilKeyChanged=e.distinctUntilChanged=e.distinct=e.dematerialize=e.delayWhen=e.delay=e.defaultIfEmpty=e.debounceTime=e.debounce=e.count=e.connect=e.concatWith=e.concatMapTo=e.concatMap=e.concatAll=e.concat=e.combineLatestWith=e.combineLatest=e.combineLatestAll=e.combineAll=e.catchError=e.bufferWhen=e.bufferToggle=e.bufferTime=e.bufferCount=e.buffer=e.auditTime=e.audit=void 0,e.timeInterval=e.throwIfEmpty=e.throttleTime=e.throttle=e.tap=e.takeWhile=e.takeUntil=e.takeLast=e.take=e.switchScan=e.switchMapTo=e.switchMap=e.switchAll=e.subscribeOn=e.startWith=e.skipWhile=e.skipUntil=e.skipLast=e.skip=e.single=e.shareReplay=e.share=e.sequenceEqual=e.scan=e.sampleTime=e.sample=e.refCount=e.retryWhen=e.retry=e.repeatWhen=e.repeat=e.reduce=e.raceWith=e.race=e.publishReplay=e.publishLast=e.publishBehavior=e.publish=e.pluck=e.partition=e.pairwise=e.onErrorResumeNext=e.observeOn=e.multicast=e.min=e.mergeWith=e.mergeScan=e.mergeMapTo=e.mergeMap=e.flatMap=void 0,e.zipWith=e.zipAll=e.zip=e.withLatestFrom=e.windowWhen=e.windowToggle=e.windowTime=e.windowCount=e.window=e.toArray=e.timestamp=e.timeoutWith=e.timeout=void 0;var t=iw();Object.defineProperty(e,"audit",{enumerable:!0,get:function(){return t.audit}});var r=BK();Object.defineProperty(e,"auditTime",{enumerable:!0,get:function(){return r.auditTime}});var n=RK();Object.defineProperty(e,"buffer",{enumerable:!0,get:function(){return n.buffer}});var i=OK();Object.defineProperty(e,"bufferCount",{enumerable:!0,get:function(){return i.bufferCount}});var c=kK();Object.defineProperty(e,"bufferTime",{enumerable:!0,get:function(){return c.bufferTime}});var o=FK();Object.defineProperty(e,"bufferToggle",{enumerable:!0,get:function(){return o.bufferToggle}});var s=LK();Object.defineProperty(e,"bufferWhen",{enumerable:!0,get:function(){return s.bufferWhen}});var h=NK();Object.defineProperty(e,"catchError",{enumerable:!0,get:function(){return h.catchError}});var f=jK();Object.defineProperty(e,"combineAll",{enumerable:!0,get:function(){return f.combineAll}});var y=ow();Object.defineProperty(e,"combineLatestAll",{enumerable:!0,get:function(){return y.combineLatestAll}});var _=GK();Object.defineProperty(e,"combineLatest",{enumerable:!0,get:function(){return _.combineLatest}});var g=zK();Object.defineProperty(e,"combineLatestWith",{enumerable:!0,get:function(){return g.comb
7083ineLatestWith}});var a=WK();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return a.concat}});var d=JT();Object.defineProperty(e,"concatAll",{enumerable:!0,get:function(){return d.concatAll}});var p=sw();Object.defineProperty(e,"concatMap",{enumerable:!0,get:function(){return p.concatMap}});var u=HK();Object.defineProperty(e,"concatMapTo",{enumerable:!0,get:function(){return u.concatMapTo}});var m=$K();Object.defineProperty(e,"concatWith",{enumerable:!0,get:function(){return m.concatWith}});var v=r2();Object.defineProperty(e,"connect",{enumerable:!0,get:function(){return v.connect}});var b=XK();Object.defineProperty(e,"count",{enumerable:!0,get:function(){return b.count}});var P=KK();Object.defineProperty(e,"debounce",{enumerable:!0,get:function(){return P.debounce}});var C=YK();Object.defineProperty(e,"debounceTime",{enumerable:!0,get:function(){return C.debounceTime}});var l=TS();Object.defineProperty(e,"defaultIfEmpty",{enumerable:!0,get:function(){return l.defaultIfEmpty}});var S=QK();Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return S.delay}});var T=lw();Object.defineProperty(e,"delayWhen",{enumerable:!0,get:function(){return T.delayWhen}});var A=ZK();Object.defineProperty(e,"dematerialize",{enumerable:!0,get:function(){return A.dematerialize}});var x=JK();Object.defineProperty(e,"distinct",{enumerable:!0,get:function(){return x.distinct}});var M=dw();Object.defineProperty(e,"distinctUntilChanged",{enumerable:!0,get:function(){return M.distinctUntilChanged}});var D=eY();Object.defineProperty(e,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return D.distinctUntilKeyChanged}});var V=tY();Object.defineProperty(e,"elementAt",{enumerable:!0,get:function(){return V.elementAt}});var R=rY();Object.defineProperty(e,"endWith",{enumerable:!0,get:function(){return R.endWith}});var E=nY();Object.defineProperty(e,"every",{enumerable:!0,get:function(){return E.every}});var I=iY();Object.defineProperty(e,"exhaust",{enumerable:!0,get:function(){return I.exhaust}});var B=mw();Object.defineProperty(e,"exhaustAll",{enumerable:!0,get:function(){return B.exhaustAll}});var w=fw();Object.defineProperty(e,"exhaustMap",{enumerable:!0,get:function(){return w.exhaustMap}});var O=aY();Object.defineProperty(e,"expand",{enumerable:!0,get:function(){return O.expand}});var F=ec();Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return F.filter}});var L=oY();Object.defineProperty(e,"finalize",{enumerable:!0,get:function(){return L.finalize}});var U=pw();Object.defineProperty(e,"find",{enumerable:!0,get:function(){return U.find}});var q=sY();Object.defineProperty(e,"findIndex",{enumerable:!0,get:function(){return q.findIndex}});var N=cY();Object.defineProperty(e,"first",{enumerable:!0,get:function(){return N.first}});var k=uY();Object.defineProperty(e,"groupBy",{enumerable:!0,get:function(){return k.groupBy}});var j=cw();Object.defineProperty(e,"ignoreElements",{enumerable:!0,get:function(){return j.ignoreElements}});var H=lY();Object.defineProperty(e,"isEmpty",{enumerable:!0,get:function(){return H.isEmpty}});var G=dY();Object.defineProperty(e,"last",{enumerable:!0,get:function(){return G.last}});var z=Js();Object.defineProperty(e,"map",{enumerable:!0,get:function(){return z.map}});var W=uw();Object.defineProperty(e,"mapTo",{enumerable:!0,get:function(){return W.mapTo}});var X=fY();Object.defineProperty(e,"materialize",{enumerable:!0,get:function(){return X.materialize}});var Y=mY();Object.defineProperty(e,"max",{enumerable:!0,get:function(){return Y.max}});var K=yY();Object.defineProperty(e,"merge",{enumerable:!0,get:function(){return K.merge}});var Q=PS();Object.defineProperty(e,"mergeAll",{enumerable:!0,get:function(){return Q.mergeAll}});var J=pY();Object.defineProperty(e,"flatMap",{enumerable:!0,get:function(){return J.flatMap}});var ae=ss();Object.defineProperty(e,"mergeMap",{enumerable:!0,get:function(){return ae.mergeMap}});var te=hY();Object.defineProperty(e,"mergeMapTo",{enumerable:!0,get:function(){return te.mergeMapTo}});var ne=gY();Object.defineProperty(e,"mergeScan",{enumerable:!0,get:function(){return ne.mergeScan}});var $=vY();Object.defineProperty(e,"mergeWith",{enumerable:!0,get:function(){return $.mergeWith}});var ie=bY();Object.defineProperty(e,"min",{enumerable:!0,get:function(){return ie.min}});var Z=n2();Object.defineProperty(e,"multicast",{enumerable:!0,get:function(){return Z.multicast}});var re=SS();Object.defineProperty(e,"observeOn",{enumerable:!0,get:function(){return re.observeOn}});var oe=_Y();Object.defineProperty(e,"onErrorResumeNext",{enumerable:!0,get:function(){return oe.onErrorResumeNext}});var ce=SY();Object.defineProperty(e,"pairwise",{enumerable:!0,get:function(){return ce.pairwise}});var ue=oce();Object.defineProperty(e,"partition",{enumerable:!0,get:function(){return ue.partition}});var pe=CY();Object.defineProperty(e,"pluck",{enumerable:!0,get:function(){return pe.pluck}});var he=PY();Object.defineProperty(e,"publish",{enumerable:!0,get:function(){return he.publish}});var fe=TY();Object.defineProperty(e,"publishBehavior",{enumerable:!0,get:function(){return fe.publishBehavior}});var de=xY();Object.defineProperty(e,"publishLast",{enumerable:!0,get:function(){return de.publishLast}});var ge=AY();Object.defineProperty(e,"publishReplay",{enumerable:!0,get:function(){return ge.publishReplay}});var Ce=sce();Object.defineProperty(e,"race",{enumerable:!0,get:function(){return Ce.race}});var ve=gw();Object.defineProperty(e,"raceWith",{enumerable:!0,get:function(){return ve.raceWith}});var le=qf();Object.defineProperty(e,"reduce",{enumerable:!0,get:function(){return le.reduce}});var me=MY();Object.defineProperty(e,"repeat",{enumerable:!0,get:function(){return me.repeat}});var ee=DY();Object.defineProperty(e,"repeatWhen",{enumerable:!0,get:function(){return ee.repeatWhen}});var se=IY();Object.defineProperty(e,"retry",{enumerable:!0,get:function(){return se.retry}});var ye=wY();Object.defineProperty(e,"retryWhen",{enumerable:!0,get:function(){return ye.retryWhen}});var Se=WI();Object.defineProperty(e,"refCount",{enumerable:!0,get:function(){return Se.refCount}});var Ae=yw();Object.defineProperty(e,"sample",{enumerable:!0,get:function(){return Ae.sample}});var _e=VY();Object.defineProperty(e,"sampleTime",{enumerable:!0,get:function(){return _e.sampleTime}});var be=EY();Object.defineProperty(e,"scan",{enumerable:!0,get:function(){return be.scan}});var xe=BY();Object.defineProperty(e,"sequenceEqual",{enumerable:!0,get:function(){return xe.sequenceEqual}});var we=vw();Object.defineProperty(e,"share",{enumerable:!0,get:function(){return we.share}});var Be=RY();Object.defineProperty(e,"shareReplay",{enumerable:!0,get:function(){return Be.shareReplay}});var Me=OY();Object.defineProperty(e,"single",{enumerable:!0,get:function(){return Me.single}});var Re=kY();Object.defineProperty(e,"skip",{enumerable:!0,get:function(){return Re.skip}});var Te=FY();Object.defineProperty(e,"skipLast",{enumerable:!0,get:function(){return Te.skipLast}});var Ve=LY();Object.defineProperty(e,"skipUntil",{enumerable:!0,get:function(){return Ve.skipUntil}});var qe=NY();Object.defineProperty(e,"skipWhile",{enumerable:!0,get:function(){return qe.skipWhile}});var ke=qY();Object.defineProperty(e,"startWith",{enumerable:!0,get:function(){return ke.startWith}});var ze=CS();Object.defineProperty(e,"subscribeOn",{enumerable:!0,get:function(){return ze.subscribeOn}});var We=UY();Object.defineProperty(e,"switchAll",{enumerable:!0,get:function(){return We.switchAll}});var Je=MS();Object.defineProperty(e,"switchMap",{enumerable:!0,get:function(){return Je.switchMap}});var De=jY();Object.defineProperty(e,"switchMapTo",{enumerable:!0,get:function(){return De.switchMapTo}});var Oe=GY();Object.defineProperty(e,"switchScan",{enumerable:!0,get:function(){return Oe.switchScan}});var Fe=xS();Object.defineProperty(e,"take",{enumerable:!0,get:function(){return Fe.take}});var Le=hw();Object.defineProperty(e,"takeLast",{enumerable:!0,get:function(){return Le.takeLast}});var He=zY();Object.defineProperty(e,"takeUntil",{enumerable:!0,get:function(){return He.takeUntil}});var Pe=HY();Object.defineProperty(e,"takeWhile",{enumerable:!0,get:function(){return Pe.takeWhile}});var Ie=WY();Object.defineProperty(e,"tap",{enumerable:!0,get:function(){return Ie.tap}});var Ee=bw();Object.defineProperty(e,"throttle",{enumerable:!0,get:function(){return Ee.throttle}});var Ue=$Y();Object.defineProperty(e,"throttleTime",{enumerable:!0,get:function(){return Ue.throttleTime}});var $e=AS();Object.defineProperty(e,"throwIfEmpty",{enumerable:!0,get:function(){return $e.throwIfEmpty}});var Ye=XY();Object.defineProperty(e,"timeInterval",{enumerable:!0,get:function(){return Ye.timeInterval}});var Qe=hT();Object.defineProperty(e,"timeout",{enumerable:!0,get:function(){return Qe.timeout}});var it=KY();Object.defineProperty(e,"timeoutWith",{enumerable:!0,get:function(){return it.timeoutWith}});var ht=YY();Object.defineProperty(e,"timestamp",{enumerable:!0,get:function(){return ht.t
7083imestamp}});var mt=aw();Object.defineProperty(e,"toArray",{enumerable:!0,get:function(){return mt.toArray}});var St=QY();Object.defineProperty(e,"window",{enumerable:!0,get:function(){return St.window}});var Bt=ZY();Object.defineProperty(e,"windowCount",{enumerable:!0,get:function(){return Bt.windowCount}});var Ot=JY();Object.defineProperty(e,"windowTime",{enumerable:!0,get:function(){return Ot.windowTime}});var br=eQ();Object.defineProperty(e,"windowToggle",{enumerable:!0,get:function(){return br.windowToggle}});var Ir=tQ();Object.defineProperty(e,"windowWhen",{enumerable:!0,get:function(){return Ir.windowWhen}});var Cn=rQ();Object.defineProperty(e,"withLatestFrom",{enumerable:!0,get:function(){return Cn.withLatestFrom}});var Fn=iQ();Object.defineProperty(e,"zip",{enumerable:!0,get:function(){return Fn.zip}});var ei=nQ();Object.defineProperty(e,"zipAll",{enumerable:!0,get:function(){return ei.zipAll}});var Ze=aQ();Object.defineProperty(e,"zipWith",{enumerable:!0,get:function(){return Ze.zipWith}})})(iM)),iM}var zb={},q9;function uce(){if(q9)return zb;q9=1,Object.defineProperty(zb,"__esModule",{value:!0}),zb.CustomProperty=void 0;const e=Ne(),t=Ff;var r;return(function(n){class i{constructor(){this.providers=(0,t.OrderedMap)().asMutable(),this.defaultAutoAttachValues=new Map}getParams(o){const s={},h=[],f=[];if(o){const y=this.providers.values();for(;;){const _=y.next();if(_.done)break;const g=_.value;g.isApplicable(o)&&(g.isHidden||(h.push([g.descriptor.name,g.label]),this.defaultAutoAttachValues.get(g.descriptor.name)&&f.push(g.descriptor.name)),s[g.descriptor.name]=e.ParamDefinition.Group({...g.getParams(o)},{label:g.label,isHidden:g.isHidden}))}}return{autoAttach:e.ParamDefinition.MultiSelect(f,h),properties:e.ParamDefinition.Group(s,{isFlat:!0})}}setDefaultAutoAttach(o,s){this.defaultAutoAttachValues.set(o,s)}get(o){if(!this.providers.get(o))throw new Error(`Custom property '${o}' is not registered.`);return this.providers.get(o)}register(o,s){this.providers.set(o.descriptor.name,o),this.defaultAutoAttachValues.set(o.descriptor.name,s)}unregister(o){this.providers.delete(o),this.defaultAutoAttachValues.delete(o)}}n.Registry=i})(r||(zb.CustomProperty=r={})),zb}var Hb={},ZP={},U9;function S2(){if(U9)return ZP;U9=1,Object.defineProperty(ZP,"__esModule",{value:!0}),ZP.getFileNameInfo=t;const e=["gz","zip"];function t(r){let n=r,i="";const c=n.lastIndexOf("?"),o=c!==-1?n.substring(c):"";n=n.substring(0,c===-1?n.length:c);const s=n.replace(/^.*[\\/]/,"");let h=s.substring(0,s.lastIndexOf("."));const f=s.split(".");let y=f.length>1?(f.pop()||"").toLowerCase():"";const _=n.match(/^(.+):\/\/(.+)$/);_&&(i=_[1].toLowerCase(),n=_[2]||"");const g=n.substring(0,n.lastIndexOf("/")+1);if(e.includes(y)){const a=n.length-y.length-1;y=(n.substring(0,a).split(".").pop()||"").toLowerCase();const d=h.length-y.length-1;h=h.substring(0,d)}return{path:n,name:s,ext:y,base:h,dir:g,protocol:i,query:o}}return ZP}var j9;function lce(){if(j9)return Hb;
7083j9=1,Object.defineProperty(Hb,"__esModule",{value:!0}),Hb.DataBuilder=void 0;const e=OQ(),t=S2();class r{get dataState(){return this.plugin.state.data}rawData(i,c){return this.dataState.build().toRoot().apply(e.RawData,i,c).commit({revertOnError:!0})}download(i,c){return this.dataState.build().toRoot().apply(e.Download,i,c).commit({revertOnError:!0})}downloadBlob(i,c){return this.dataState.build().toRoot().apply(e.DownloadBlob,i,c).commit({revertOnError:!0})}async readFile(i,c){var o,s,h;const f=await this.dataState.build().toRoot().apply(e.ReadFile,i,c).commit({revertOnError:!0}),y=(0,t.getFileNameInfo)((h=(s=(o=i.file)===null||o===void 0?void 0:o.file)===null||s===void 0?void 0:s.name)!==null&&h!==void 0?h:"");return{data:f,fileInfo:y}}constructor(i){this.plugin=i}}return Hb.DataBuilder=r,Hb}var Wb={},$b={},al={},G9;function C2(){if(G9)return al;G9=1,Object.defineProperty(al,"__esModule",{value:!0}),al.createStructureRepresentationParams=r,al.getStructureThemeTypes=n,al.createStructureColorThemeParams=i,al.createStructureSizeThemeParams=c;const e=Ke(),t=Ne();function r(h,f,y={}){const _=y;return typeof _.type=="string"||typeof _.color=="string"||typeof _.size=="string"?o(h,f||e.Structure.Empty,y):s(h,f||e.Structure.Empty,y)}function n(h,f){const{themes:y}=h.representation.structure;return f?y.colorThemeRegistry.getApplicableTypes({structure:f}):y.colorThemeRegistry.types}function i(h,f,y,_,g){const{registry:a,themes:d}=h.representation.structure,p=a.get(y||a.default.name),u=d.colorThemeRegistry.get(_||p.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({structure:f||e.Structure.Empty}));return u.name===p.defaultColorTheme.name&&Object.assign(m,p.defaultColorTheme.props),{name:u.name,params:Object.assign(m,g)}}function c(h,f,y,_,g){const{registry:a,themes:d}=h.representation.structure,p=a.get(y||a.default.name),u=d.sizeThemeRegistry.get(_||p.defaultSizeTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({structure:f||e.Structure.Empty}));return u.name===p.defaultSizeTheme.name&&Object.assign(m,p.defaultSizeTheme.props),{name:u.name,params:Object.assign(m,g)}}function o(h,f,y){const _=y.type&&h.representation.structure.registry.get(y.type)||h.representation.structure.registry.default.provider,g=y.color&&h.representation.structure.themes.colorThemeRegistry.get(y.color)||h.representation.structure.themes.colorThemeRegistry.get(_.defaultColorTheme.name),a=y.size&&h.representation.structure.themes.sizeThemeRegistry.get(y.size)||h.representation.structure.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);return s(h,f,{type:_,typeParams:y.typeParams,color:g,colorParams:y.colorParams,size:a,sizeParams:y.sizeParams})}function s(h,f,y={}){const{themes:_}=h.representation.structure,g={structure:f},a=y.type||h.representation.structure.registry.default.provider,d=t.ParamDefinition.getDefaultValues(a.getParams(_,f)),p=Object.assign(d,y.typeParams),u=y.color||_.colorThemeRegistry.get(a.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams(g));u.name===a.defaultColorTheme.name&&Object.assign(m,a.defaultColorTheme.props);const v=Object.assign(m,y.colorParams),b=y.size||_.sizeThemeRegistry.get(a.defaultSizeTheme.name),P=t.ParamDefinition.getDefaultValues(b.getParams(g));b.name===a.defaultSizeTheme.name&&Object.assign(P,a.defaultSizeTheme.props);const C=Object.assign(P,y.sizeParams);return{type:{name:a.name,params:p},colorTheme:{name:u.name,params:v},sizeTheme:{name:b.name,params:C}}}return al}var Jo={},ol={},z9;function $w(){if(z9)return ol;z9=1,Object.defineProperty(ol,"__esModule",{value:!0}),ol.StructureFocusRepresentation=ol.StructureFocusRepresentationTags=void 0;const e=iZ(),t=nZ(),r=Ke(),n=C2(),i=Dr(),c=b2(),o=dr(),s=Et(),h=ps(),f=Ne(),y=Sn(),_=tc(),g=Pw(),a=jf(),d=rc(),p=P=>{const C=i.StateTransforms.Representation.StructureRepresentation3D.definition.params(void 0,P);return{expandRadius:f.ParamDefinition.Numeric(5,{min:1,max:10,step:1}),targetParams:f.ParamDefinition.Group(C,{label:"Target",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.22,sizeAspectRatio:.73,adjustCylinderLength:!0,xrayShaded:!0,aromaticBonds:!1,multipleBonds:"off",excludeTypes:["hydrogen-bond","metal-coordination"]}})}),surroundingsParams:f.ParamDefinition.Group(C,{label:"Surroundings",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.16,excludeTypes:["hydrogen-bond","metal-coordination"]}})}),nciParams:f.ParamDefinition.Group(C,{label:"Non-covalent Int.",customDefault:(0,n.createStructureRepresentationParams)(P,void 0,{type:e.InteractionsRepresentationProvider,color:t.InteractionTypeColorThemeProvider,size:h.SizeTheme.BuiltIn.uniform})}),components:f.ParamDefinition.MultiSelect(u,f.ParamDefinition.arrayToOptions(u)),excludeTargetFromSurroundings:f.ParamDefinition.Boolean(!1,{label:"Exclude Target",description:'Exclude the focus "target" from the surroudings component.'}),ignoreHydrogens:f.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:f.ParamDefinition.Select("all",f.ParamDefinition.arrayToOptions(["all","non-polar"])),ignoreLight:f.ParamDefinition.Boolean(!1),material:_.Material.getParam(),clip:f.ParamDefinition.Group(g.Clip.Params),interior:(0,a.getInteriorParam)(),animation:(0,d.getAnimationParam)()}},u=["target","surroundings","interactions"];var m;(function(P){P.TargetSel="structure-focus-target-sel",P.TargetRepr="structure-focus-target-repr",P.SurrSel="structure-focus-surr-sel",P.SurrRepr="structure-focus-surr-repr",P.SurrNciRepr="structure-focus-surr-nci-repr"})(m||(ol.StructureFocusRepresentationTags=m={}));
7083const v=new Set([m.TargetSel,m.TargetRepr,m.SurrSel,m.SurrRepr,m.SurrNciRepr]);class b extends c.PluginBehavior.WithSubscribers{constructor(){super(...arguments),this.currentSource=void 0}get surrLabel(){return`[Focus] Surroundings (${this.params.expandRadius} Ã
)`}getReprParams(C){return{...C,type:{name:C.type.name,params:{...C.type.params,ignoreHydrogens:this.params.ignoreHydrogens,ignoreHydrogensVariant:this.params.ignoreHydrogensVariant,ignoreLight:this.params.ignoreLight,material:this.params.material,clip:this.params.clip,interior:this.params.interior,animation:this.params.animation}}}}ensureShape(C){var l;const S=this.plugin.state.data,T=S.tree,A=S.build(),x=s.StateSelection.findUniqueTagsInSubtree(T,C.transform.ref,v);x[m.TargetSel]||(x[m.TargetSel]=A.to(C).apply(i.StateTransforms.Model.StructureSelectionFromBundle,{bundle:r.StructureElement.Bundle.Empty,label:"[Focus] Target"},{tags:m.TargetSel}).ref),x[m.SurrSel]||(x[m.SurrSel]=A.to(C).apply(i.StateTransforms.Model.StructureSelectionFromExpression,{expression:o.MolScriptBuilder.struct.generator.empty(),label:this.surrLabel},{tags:m.SurrSel}).ref);const M=this.params.components;return M.indexOf("target")>=0&&!x[m.TargetRepr]&&(x[m.TargetRepr]=A.to(x[m.TargetSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.targetParams),{tags:m.TargetRepr}).ref),M.indexOf("surroundings")>=0&&!x[m.SurrRepr]&&(x[m.SurrRepr]=A.to(x[m.SurrSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.surroundingsParams),{tags:m.SurrRepr}).ref),M.indexOf("interactions")>=0&&!x[m.SurrNciRepr]&&C.obj&&e.InteractionsRepresentationProvider.isApplicable((l=C.obj)===null||l===void 0?void 0:l.data)&&(x[m.SurrNciRepr]=A.to(x[m.SurrSel]).apply(i.StateTransforms.Representation.StructureRepresentation3D,this.getReprParams(this.params.nciParams),{tags:m.SurrNciRepr}).ref),{state:S,builder:A,refs:x}}clear(C){const l=this.plugin.state.data;this.currentSource=void 0;const S=l.select(s.StateSelection.Generators.byRef(C).subtree().withTag(m.TargetSel)),T=l.select(s.StateSelection.Generators.byRef(C).subtree().withTag(m.SurrSel));if(S.length===0&&T.length===0)return;const A=l.build(),x=r.StructureElement.Bundle.Empty;for(const D of S)A.to(D).update(i.StateTransforms.Model.StructureSelectionFromBundle,V=>({...V,bundle:x}));const M=o.MolScriptBuilder.struct.generator.empty();for(const D of T)A.to(D).update(i.StateTransforms.Model.StructureSelectionFromExpression,V=>({...V,expression:M}));return y.PluginCommands.State.Update(this.plugin,{state:l,tree:A,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}async focus(C){const l=this.plugin.helpers.substructureParent.get(C.structure);if(!l||!l.obj)return;this.currentSource=C;const S=r.StructureElement.Loci.remap(C,l.obj.data),T=r.StructureElement.Loci.extendToWholeResidues(S),A=r.StructureElement.Bundle.fromLoci(T),x=r.StructureElement.Bundle.toExpression(A);let M=o.MolScriptBuilder.struct.modifier.includeSurroundings({0:x,radius:this.params.expandRadius,"as-whole-residues":!0});this.params.excludeTargetFromSurroundings&&(M=o.MolScriptBuilder.struct.modifier.exceptBy({0:M,by:x}));const{state:D,builder:V,refs:R}=this.ensureShape(l);V.to(R[m.TargetSel]).update(i.StateTransforms.Model.StructureSelectionFromBundle,E=>({...E,bundle:A})),V.to(R[m.SurrSel]).update(i.StateTransforms.Model.StructureSelectionFromExpression,E=>({...E,expression:M,label:this.surrLabel})),await y.PluginCommands.State.Update(this.plugin,{state:D,tree:V,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}register(C){this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,l=>{l?this.focus(l.loci):this.clear(s.StateTransform.RootRef)})}async update(C){const l=this.params;if(this.params=C,l.excludeTargetFromSurroundings!==C.excludeTargetFromSurroundings)return this.currentSource&&this.focus(this.currentSource),!0;const S=this.plugin.state.data,T=S.build(),A=s.StateSelection.Generators.root.subtree(),x=this.params.components;let M=x.indexOf("target")>=0;for(const D of S.select(A.withTag(m.TargetRepr)))M?T.to(D).update(this.getReprParams(this.params.targetParams)):T.delete(D.transform.ref);M=x.indexOf("surroundings")>=0;for(const D of S.select(A.withTag(m.SurrRepr)))M?T.to(D).update(this.getReprParams(this.params.surroundingsParams)):T.delete(D.transform.ref);M=x.indexOf("interactions")>=0;for(const D of S.select(A.withTag(m.SurrNciRepr)))M?T.to(D).update(this.getReprParams(this.params.nciParams)):T.delete(D.transform.ref);return await y.PluginCommands.State.Update(this.plugin,{state:S,tree:T,options:{doNotLogTiming:!0,doNotUpdate
7083Current:!0}}),C.expandRadius!==l.expandRadius&&this.currentSource&&this.focus(this.currentSource),!0}}return ol.StructureFocusRepresentation=c.PluginBehavior.create({name:"create-structure-focus-representation",display:{name:"Structure Focus Representation"},category:"interaction",ctor:b,params:(P,C)=>p(C)}),ol}var H9;function Xw(){if(H9)return Jo;H9=1,Object.defineProperty(Jo,"__esModule",{value:!0}),Jo.PresetStructureRepresentations=void 0,Jo.StructureRepresentationPresetProvider=p,Jo.presetStaticComponent=B,Jo.presetSelectionComponent=w;const e=Ne(),t=Tt(),r=Ke(),n=Et(),i=jl(),c=gs(),o=$w(),s=C2(),h=Uf(),f=a2(),y=Ua(),_=DT(),g=Gt(),a=wt(),d=ro();function p(O){return O}(function(O){O.CommonParams={ignoreHydrogens:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),ignoreHydrogensVariant:e.ParamDefinition.Optional(e.ParamDefinition.Select("all",e.ParamDefinition.arrayToOptions(["all","non-polar"]))),ignoreLight:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),quality:e.ParamDefinition.Optional(e.ParamDefinition.Select("auto",t.VisualQualityOptions)),theme:e.ParamDefinition.Optional(e.ParamDefinition.Group({globalName:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),globalColorParams:e.ParamDefinition.Optional(e.ParamDefinition.Value({},{isHidden:!0})),carbonColor:e.ParamDefinition.Optional(e.ParamDefinition.Select("chain-id",e.ParamDefinition.arrayToOptions(["chain-id","operator-name","element-symbol"]))),symmetryColor:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),symmetryColorParam
7083s:e.ParamDefinition.Optional(e.ParamDefinition.Value({},{isHidden:!0})),focus:e.ParamDefinition.Optional(e.ParamDefinition.Group({name:e.ParamDefinition.Optional(e.ParamDefinition.Text("")),params:e.ParamDefinition.Optional(e.ParamDefinition.Value({}))}))}))};function F(N){return N==="chain-id"?{name:N,params:h.ChainIdColorThemeProvider.defaultValues}:N==="operator-name"?{name:N,params:f.OperatorNameColorThemeProvider.defaultValues}:{name:N,params:{}}}function L(N){return N.units.some(k=>!k.conformation.operator.assembly&&k.conformation.operator.spgrOp>=0)}function U(N,k,j){var H,G,z,W,X,Y,K,Q,J,ae,te,ne,$,ie;const Z=N.state.data.build(),re=N.builders.structure.representation,oe=N.managers.structure.component.state.options.hydrogens,ce={quality:N.managers.structure.component.state.options.visualQuality,ignoreHydrogens:oe!=="all",ignoreHydrogensVariant:oe==="only-polar"?"non-polar":"all",ignoreLight:N.managers.structure.component.state.options.ignoreLight};k.quality&&k.quality!=="auto"&&(ce.quality=k.quality),k.ignoreHydrogens!==void 0&&(ce.ignoreHydrogens=!!k.ignoreHydrogens),k.ignoreHydrogensVariant!==void 0&&(ce.ignoreHydrogensVariant=k.ignoreHydrogensVariant),k.ignoreLight!==void 0&&(ce.ignoreLight=!!k.ignoreLight);const ue=!((H=k.theme)===null||H===void 0)&&H.globalName?(G=k.theme)===null||G===void 0?void 0:G.globalName:void 0,pe=((z=k.theme)===null||z===void 0?void 0:z.carbonColor)!==void 0?{carbonColor:F((W=k.theme)===null||W===void 0?void 0:W.carbonColor),...(X=k.theme)===null||X===void 0?void 0:X.globalColorParams}:{...(Y=k.theme)===null||Y===void 0?void 0:Y.globalColorParams},he=j&&(!((K=k.theme)===null||K===void 0)&&K.symmetryColor)&&L(j)?(Q=k.theme)===null||Q===void 0?void 0:Q.symmetryColor:ue,fe=!((J=k.theme)===null||J===void 0)&&J.symmetryColorParam
7083s?{...(ae=k.theme)===null||ae===void 0?void 0:ae.globalColorParams,...(te=k.theme)===null||te===void 0?void 0:te.symmetryColorParams}:{...(ne=k.theme)===null||ne===void 0?void 0:ne.globalColorParams},de=!(($=k.theme)===null||$===void 0)&&$.globalColorParams?{...(ie=k.theme)===null||ie===void 0?void 0:ie.globalColorParams}:void 0;return{update:Z,builder:re,color:ue,symmetryColor:he,symmetryColorParams:fe,globalColorParams:de,typeParams:ce,ballAndStickColor:pe}}O.reprBuilder=U;function q(N,k,j,H){if(N.state.hasBehavior(o.StructureFocusRepresentation))return N.state.updateBehavior(o.StructureFocusRepresentation,G=>{const z=(0,s.createStructureColorThemeParams)(N,k,"ball-and-stick",j||"element-symbol",H);G.surroundingsParams.colorTheme=z,G.targetParams.colorTheme=z})}O.updateFocusRepr=q})(p||(Jo.StructureRepresentationPresetProvider=p={}));const u=p.CommonParams,m=p.reprBuilder,v=p.updateFocusRepr,b=p({id:"preset-structure-representation-auto",display:{name:"Automatic",description:"Show representations based on the size of the structure. Smaller structures are shown with more detail than larger ones, ranging from atomistic display to coarse surfaces."},params:()=>u,apply(O,F,L){var U,q;const N=(q=(U=n.StateObjectRef.resolveAndCheck(L.state.data,O))===null||U===void 0?void 0:U.obj)===null||q===void 0?void 0:q.data;if(!N)return{};const k=L.config.get(c.PluginConfig.Structure.SizeThresholds)||r.Structure.DefaultSizeThresholds,j=r.Structure.getSize(N,k),H=N.polymerResidueCount/N.polymerGapCount;switch(j){case r.Structure.Size.Gigantic:case r.Structure.Size.Huge:return T.apply(O,F,L);case r.Structure.Size.Large:return A.apply(O,F,L);case r.Structure.Size.Medium:if(H>3)return l.apply(O,F,L);case r.Structure.Size.Small:return x.apply(O,{...F,showCarbohydrateSymbol:!0},L);default:(0,g.assertUnreachable)(j)}}}),P=p({id:"preset-structure-representation-empty",display:{name:"Empty",description:"Removes all existing representations."},async apply(O,F,L){return{}}}),C="Basic",l=p({id:"preset-structure-representation-polymer-and-ligand",display:{name:"Polymer & Ligand",group:C,description:"Shows polymers as Cartoon, ligands as Ball & Stick, carbohydrates as 3D-SNFG and water molecules semi-transparent."},params:()=>u,async apply(O,F,L){var U,q,N,k,j,H,G,z,W,X;const Y=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!Y)return{};const K={polymer:await B(L,Y,"polymer"),ligand:await B(L,Y,"ligand"),nonStandard:await B(L,Y,"non-standard"),branched:await B(L,Y,"branched",{label:"Carbohydrate"}),water:await B(L,Y,"water"),ion:await B(L,Y,"ion"),lipid:await B(L,Y,"lipid"),coarse:await B(L,Y,"coarse")},Q=Y.obj.data,J=(((N=(q=(U=K.water)===null||U===void 0?void 0:U.obj)===null||q===void 0?void 0:q.data)===null||N===void 0?void 0:N.elementCount)||0)>5e4?"line":"ball-and-stick",ae=(((H=(j=(k=K.lipid)===null||k===void 0?void 0:k.obj)===null||j===void 0?void 0:j.data)===null||H===void 0?void 0:H.elementCount)||0)>2e4?"line":"ball-and-stick",{update:te,builder:ne,typeParams:$,color:ie,symmetryColor:Z,symmetryColorParam
7083s:re,globalColorParams:oe,ballAndStickColor:ce}=m(L,F,Q),ue={polymer:ne.buildRepresentation(te,K.polymer,{type:"cartoon",typeParams:$,color:Z,colorParams:re},{tag:"polymer"}),ligand:ne.buildRepresentation(te,K.ligand,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:ce},{tag:"ligand"}),nonStandard:ne.buildRepresentation(te,K.nonStandard,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:ce},{tag:"non-standard"}),branchedBallAndStick:ne.buildRepresentation(te,K.branched,{type:"ball-and-stick",typeParams:{...$,alpha:.3},color:ie,colorParams:ce},{tag:"branched-ball-and-stick"}),branchedSnfg3d:ne.buildRepresentation(te,K.branched,{type:"carbohydrate",typeParams:$,color:ie,colorParams:oe},{tag:"branched-snfg-3d"}),water:ne.buildRepresentation(te,K.water,{type:J,typeParams:{...$,alpha:.6,visuals:J==="line"?["intra-bond","element-point"]:void 0},color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"water"}),ion:ne.buildRepresentation(te,K.ion,{type:"ball-and-stick",typeParams:$,color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"ion"}),lipid:ne.buildRepresentation(te,K.lipid,{type:ae,typeParams:{...$,alpha:.6,visuals:ae==="line"?["intra-bond"]:void 0},color:ie,colorParams:{carbonColor:{name:"element-symbol",params:{}},...oe}},{tag:"lipid"}),coarse:ne.buildRepresentation(te,K.coarse,{type:"spacefill",typeParams:$,color:ie||"chain-id",colorParams:oe},{tag:"coarse"})};return await te.commit({revertOnError:!1}),await v(L,Q,(z=(G=F.theme)===null||G===void 0?void 0:G.focus)===null||z===void 0?void 0:z.name,(X=(W=F.theme)===null||W===void 0?void 0:W.focus)===null||X===void 0?void 0:X.params),{components:K,representations:ue}}}),S=p({id:"preset-structure-representation-protein-and-nucleic",display:{name:"Protein & Nucleic",group:C,description:"Shows proteins as Cartoon and RNA/DNA as Gaussian Surface."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={protein:await w(L,j,"protein"),nucleic:await w(L,j,"nucleic")},G=j.obj.data,z={radiusOffset:G.isCoarseGrained?2:0,smoothness:G.isCoarseGrained?1:1.5},{update:W,builder:X,typeParams:Y,symmetryColor:K,symmetryColorParam
7083s:Q}=m(L,F,G),J={protein:X.buildRepresentation(W,H.protein,{type:"cartoon",typeParams:Y,color:K,colorParams:Q},{tag:"protein"}),nucleic:X.buildRepresentation(W,H.nucleic,{type:"gaussian-surface",typeParams:{...Y,...z},color:K,colorParams:Q},{tag:"nucleic"})};return await W.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:J}}}),T=p({id:"preset-structure-representation-coarse-surface",display:{name:"Coarse Surface",group:C,description:"Shows polymers and lipids as coarse Gaussian Surface."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={polymer:await B(L,j,"polymer"),lipid:await B(L,j,"lipid")},G=j.obj.data,z=L.config.get(c.PluginConfig.Structure.SizeThresholds)||r.Structure.DefaultSizeThresholds,W=r.Structure.getSize(G,z),X=Object.create(null);W===r.Structure.Size.Gigantic?Object.assign(X,{traceOnly:!G.isCoarseGrained,radiusOffset:2,smoothness:1,visuals:["structure-gaussian-surface-mesh"]}):W===r.Structure.Size.Huge?Object.assign(X,{radiusOffset:G.isCoarseGrained?2:0,smoothness:1}):G.isCoarseGrained&&Object.assign(X,{radiusOffset:2,smoothness:1});const{update:Y,builder:K,typeParams:Q,symmetryColor:J,symmetryColorParam
7083s:ae}=m(L,F,G),te={polymer:K.buildRepresentation(Y,H.polymer,{type:"gaussian-surface",typeParams:{...Q,...X},color:J,colorParams:ae},{tag:"polymer"}),lipid:K.buildRepresentation(Y,H.lipid,{type:"gaussian-surface",typeParams:{...Q,...X},color:J,colorParams:ae},{tag:"lipid"})};return await Y.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:te}}}),A=p({id:"preset-structure-representation-polymer-cartoon",display:{name:"Polymer Cartoon",group:C,description:"Shows polymers as Cartoon."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={polymer:await B(L,j,"polymer")},G=j.obj.data,{update:z,builder:W,typeParams:X,symmetryColor:Y,symmetryColorParams:K}=m(L,F,G),Q={polymer:W.buildRepresentation(z,H.polymer,{type:"cartoon",typeParams:X,color:Y,colorParams:K},{tag:"polymer"})};return await z.commit({revertOnError:!0}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:Q}}}),x=p({id:"preset-structure-representation-atomic-detail",display:{name:"Atomic Detail",group:C,description:"Shows everything in atomic detail."},params:()=>({...u,showCarbohydrateSymbol:e.ParamDefinition.Boolean(!1)}),async apply(O,F,L){var U,q,N,k,j,H;const G=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!G)return{};const z={all:await B(L,G,"all"),branched:void 0},W=G.obj.data,X=W.elementCount>1e5,Y=W.elementCount>1e6,K=W.units.length>5e3,Q=W.atomicResidueCount&&W.elementCount>1e3&&W.atomicResidueCount/W.elementCount<3,J=W.models[0],ae=!!y.IndexPairBonds.Provider.get(J)||_.StructConn.isExhaustive(J);let te="ball-and-stick";W.isCoarseGrained||K?te=Y?"point":"spacefill":Q&&!ae?te="spacefill":X&&(te="line");const ne=F.showCarbohydrateSymbol&&!X&&!Q;ne&&Object.assign(z,{branched:await B(L,G,"branched",{label:"Carbohydrate"})});const{update:$,builder:ie,typeParams:Z,color:re,ballAndStickColor:oe,globalColorParams:ce}=m(L,F,W),ue=Q&&!ae?{carbonColor:{name:"element-symbol",params:{}},...ce}:oe,pe={all:ie.buildRepresentation($,z.all,{type:te,typeParams:Z,color:re,colorParams:ue},{tag:"all"})};
7083return ne&&Object.assign(pe,{snfg3d:ie.buildRepresentation($,z.branched,{type:"carbohydrate",typeParams:{...Z,alpha:.4,visuals:["carbohydrate-symbol"]},color:re,colorParams:ce},{tag:"snfg-3d"})}),await $.commit({revertOnError:!0}),await v(L,W,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:re,(H=(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params)!==null&&H!==void 0?H:ue),{components:z,representations:pe}}}),M=p({id:"preset-structure-representation-illustrative",display:{name:"Illustrative",group:"Miscellaneous",description:"Show everything in spacefill representation with illustrative colors and ignore light."},params:()=>u,async apply(O,F,L){var U,q,N,k,j;const H=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!H)return{};const G={all:await B(L,H,"all"),branched:void 0},z=H.obj.data,{update:W,builder:X,typeParams:Y,color:K}=m(L,F,z),Q={all:X.buildRepresentation(W,G.all,{type:"spacefill",typeParams:{...Y,ignoreLight:!0},color:"illustrative",colorParams:{style:{name:"entity-id",params:{overrideWater:!0}}}},{tag:"all"})};return await W.commit({revertOnError:!0}),await v(L,z,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:K,(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params),{components:G,representations:Q}}}),D=p({id:"preset-structure-representation-molecular-surface",display:{name:"Molecular Surface",group:"Miscellaneous",description:"Show everything in molecular surface representation with illustrative colors."},params:()=>u,async apply(O,F,L){var U,q,N,k,j;const H=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!H)return{};const G={all:await B(L,H,"all"),branched:void 0},z=H.obj.data,{update:W,builder:X,typeParams:Y,color:K}=m(L,F,z),Q={all:X.buildRepresentation(W,G.all,{type:"molecular-surface",typeParams:Y,color:"entity-id",colorParams:{overrideWater:!0}},{tag:"all"})};return await W.commit({revertOnError:!0}),await v(L,z,(N=(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name)!==null&&N!==void 0?N:K,(j=(k=F.theme)===null||k===void 0?void 0:k.focus)===null||j===void 0?void 0:j.params),{components:G,representations:Q}}}),V=p({id:"preset-structure-representation-auto-lod",display:{name:"Automatic Detail",group:"Miscellaneous",description:"Shows more (or less) detailed representations automatically based on camera distance."},params:()=>u,async apply(O,F,L){var U,q,N,k;const j=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!j)return{};const H={all:await B(L,j,"all")},G=j.obj.data,{update:z,builder:W,typeParams:X,color:Y,symmetryColor:K,symmetryColorParam
7083s:Q,ballAndStickColor:J}=m(L,F,G),ae={gaussianSurface:W.buildRepresentation(z,H.all,{type:"gaussian-surface",typeParams:{...X,lod:a.Vec3.create(30,1e7,100)},color:K,colorParams:Q},{tag:"gaussian-surface"}),cartoon:W.buildRepresentation(z,H.all,{type:"cartoon",typeParams:{...X,lod:a.Vec3.create(-20,300,100)},color:K,colorParams:Q},{tag:"cartoon"}),ballAndStick:W.buildRepresentation(z,H.all,{type:"ball-and-stick",typeParams:{...X,lod:a.Vec3.create(-20,40,20)},color:Y,colorParams:J},{tag:"ball-and-stick"})};return await z.commit({revertOnError:!1}),await v(L,G,(q=(U=F.theme)===null||U===void 0?void 0:U.focus)===null||q===void 0?void 0:q.name,(k=(N=F.theme)===null||N===void 0?void 0:N.focus)===null||k===void 0?void 0:k.params),{components:H,representations:ae}}}),R=e.ParamDefinition.arrayToOptions(Object.keys(d.Spheres.LodLevelsPresets));function E(O){return d.Spheres.LodLevelsPresets[O]}const I=p({id:"preset-structure-representation-mesoscale",display:{name:"Mesoscale",group:"Miscellaneous",description:"Show everything in spacefill representation with instance-granularity and level-of-detail tuned for large particle scenes."},params:()=>({...u,graphics:e.ParamDefinition.Select("quality",R)}),async apply(O,F,L){var U,q,N,k,j,H;const G=n.StateObjectRef.resolveAndCheck(L.state.data,O);if(!G)return{};const z={all:await B(L,G,"all")},W=G.obj.data,{update:X,builder:Y,typeParams:K,color:Q}=m(L,F,W),J=(U=F.graphics)!==null&&U!==void 0?U:"quality",ae=E(J),te=J!=="quality"&&J!=="ultra",ne=J==="performance"?15:12,$={all:Y.buildRepresentation(X,z.all,{type:"spacefill",typeParams:{...K,instanceGranularity:!0,lodLevels:ae,approximate:te,alphaThickness:ne,clipPrimitive:!0},color:Q||"entity-id"},{tag:"all"})};return await X.commit({revertOnError:!0}),await v(L,W,(k=(N=(q=F.theme)===null||q===void 0?void 0:q.focus)===null||N===void 0?void 0:N.name)!==null&&k!==void 0?k:Q,(H=(j=F.theme)===null||j===void 0?void 0:j.focus)===null||H===void 0?void 0:H.params),{components:z,representations:$}}});function B(O,F,L,U){return O.builders.structure.tryCreateComponentStatic(F,L,U)}function w(O,F,L,U){return O.builders.structure.tryCreateComponentFromSelection(F,i.StructureSelectionQueries[L],`selection-${L}`,U)}return Jo.PresetStructureRepresentations={empty:P,auto:b,"atomic-detail":x,"polymer-cartoon":A,"polymer-and-ligand":l,"protein-and-nucleic":S,"coarse-surface":T,illustrative:M,"molecular-surface":D,"auto-lod":V,mesoscale:I},Jo}var W9;function dce(){if(W9)return $b;W9=1,Object.defineProperty($b,"__esModule",{value:!0}),$b.StructureRepresentationBuilder=void 0;const e=_t(),t=Et(),r=nt(),n=Ct(),i=vr(),c=Ne(),o=C2(),s=$S(),h=Xw(),f=Vt(),y=gs();class _{get dataState(){return this.plugin.state.data}resolveProvider(a){var d;return typeof a=="string"?(d=h.PresetStructureRepresentations[a])!==null&&d!==void 0?d:(0,e.arrayFind)(this._providers,p=>p.id===a):a}hasPreset(a){for(const d of this._providers)if(!d.isApplicable||d.isApplicable(a,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(a){if(!a)return this.providers;const d=[];for(const p of this._providers)p.isApplicable&&!p.isApplicable(a,this.plugin)||d.push(p);return d}getPresetSelect(a){const d=[];for(const p of this._providers)a&&p.isApplicable&&!p.isApplicable(a,this.plugin)||d.push([p.id,p.display.name,p.display.group]);return c.ParamDefinition.Select("auto",d)}getPresetsWithOptions(a){const d=[],p=Object.create(null);for(const u of this._providers)u.isApplicable&&!u.isApplicable(a,this.plugin)||(d.push([u.id,u.display.name]),p[u.id]=u.params?c.ParamDefinition.Group(u.params(a,this.plugin)):c.ParamDefinition.EmptyGroup());return d.length===0?c.ParamDefinition.MappedStatic("",{"":c.ParamDefinition.EmptyGroup()}):c.ParamDefinition.MappedStatic(d[0][0],p,{options:d})}registerPreset(a){if(this.providerMap.has(a.id))throw new Error(`Representation provider with id '${a.id}' already registered.`);this._providers.push(a),this.providerMap.set(a.id,a)}unregisterPreset(a){this.providerMap.delete(a.id),(0,f.arrayRemoveInPlace)(this._providers,a)}applyPreset(a,d,p){var u;const m=this.resolveProvider(d);if(!m)return;const v=this.plugin.state.data,b=t.StateObjectRef.resolveAndCheck(v,a);if(!b){n.isProductionMode||console.warn("Applying structure repr. provider to bad cell.");return}const P=((u=m.params)===null||u===void 0?void 0:u.call(m,b.obj,this.plugin))||{};let C=p||(m.params?c.ParamDefinition.getDefaultValues(P):{});const l=this.plugin.config.get(y.PluginConfig.Structure.DefaultRepresentationPresetParams);C=c.ParamDefinition.merge(P,l,C);const S=r.Task.create(`${m.display.name}`,()=>m.apply(b,C,this.plugin));return this.plugin.runTask(S)}async addRepresentation(a,d,p){const u=this.dataState.build(),m=this.buildRepresentation(u,a,d,p);if(m)return await u.commit(),m}buildRepresentation(a,d,p,u){var m,v;if(!d)return;const b=(v=(m=t.StateObjectRef.resolveAndCheck(this.dataState,d))===null||m===void 0?void 0:m.obj)===null||v===void 0?void 0:v.data;if(!b)return;const P=(0,o.createStructureRepresentationParams)(this.plugin,b,p);return u?.tag?a.to(d).applyOrUpdateTagged(u.tag,s.StructureRepresentation3D,P,{state:u?.initialState}).selector:a.to(d).apply(s.StructureRepresentation3D,P,{state:u?.initialState}).selector}constructor(a){this.plugin=a,this._providers=[],this.providerMap=new Map,this.defaultProvider=h.PresetStructureRepresentations.auto,(0,i.objectForEach)(h.PresetStructureRepresentations,d=>this.registerPreset(d))}}return $b.StructureRepresentationBuilder=_,$b}var Xb={},sl={},$9;
7083function fce(){if($9)return sl;$9=1,Object.defineProperty(sl,"__esModule",{value:!0}),sl.PresetTrajectoryHierarchy=void 0,sl.TrajectoryHierarchyPresetProvider=y;const e=Ne(),t=Et(),r=Dr(),n=Dw(),i=Xw(),c=Ge(),o=Ke(),s=ql(),h=a2(),f=gs();function y(l){return l}(function(l){l.CommonParams=(S,T)=>({modelProperties:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.CustomModelProperties,void 0,T))),structureProperties:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.CustomStructureProperties,void 0,T))),representationPreset:e.ParamDefinition.Optional(e.ParamDefinition.Text("auto"))})})(y||(sl.TrajectoryHierarchyPresetProvider=y={}));const _=y.CommonParams,a=y({id:"preset-trajectory-default",display:{name:"Default (Assembly)",group:"Preset",description:"Shows the first assembly or, if that is unavailable, the first model."},isApplicable:l=>!0,params:(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),showUnitcell:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),structure:e.ParamDefinition.Optional(n.RootStructureDefinition.getParams(void 0,"assembly").type),representationPresetParams:e.ParamDefinition.Optional(e.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams)),..._(l,S)}),async apply(l,S,T){const A=T.builders.structure,x=await A.createModel(l,S.model),M=await A.insertModelProperties(x,S.modelProperties),D=await A.createStructure(M||x,S.structure),V=await A.insertStructureProperties(D,S.structureProperties),R=S.showUnitcell===void 0||S.showUnitcell?await A.tryCreateUnitcell(M,void 0,{isHidden:!0}):void 0,E=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,I=await T.builders.structure.representation.applyPreset(V,E,S.representationPresetParams);return{model:x,modelProperties:M,unitcell:R,structure:D,structureProperties:V,representation:I}}}),p=y({id:"preset-trajectory-all-models",display:{name:"All Models",group:"Preset",description:"Shows all models; colored by trajectory-index."},isApplicable:l=>l.data.frameCount>1,params:(l,S)=>({useDefaultIfSingleModel:e.ParamDefinition.Optional(e.ParamDefinition.Boolean(!1)),representationPresetParams:e.ParamDefinition.Optional(e.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams)),..._(l,S)}),async apply(l,S,T){var A,x;const M=(x=(A=t.StateObjectRef.resolveAndCheck(T.state.data,l))===null||A===void 0?void 0:A.obj)===null||x===void 0?void 0:x.data;if(!M)return{};if(M.frameCount===1&&S.useDefaultIfSingleModel)return a.apply(l,S,T);const D=T.builders.structure,V=[],R=[];for(let E=0;E<M.frameCount;E++){const I=await D.createModel(l,{modelIndex:E}),B=await D.insertModelProperties(I,S.modelProperties,{isCollapsed:!0}),w=await D.createStructure(B||I,{name:"model",params:{}}),O=await D.insertStructureProperties(w,S.structureProperties);V.push(I),R.push(w);const F=w.obj?(0,s.getStructureQuality)(w.obj.data,{elementCountFactor:M.frameCount}):"medium",L=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id;await D.representation.applyPreset(O,L,{theme:{globalName:"trajectory-index"},quality:F})}return{models:V,structures:R}}}),u=(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),..._(l,S)});async function m(l,S,T,A){const x=A.builders.structure,M=await x.createModel(S,T.model),D=await x.insertModelProperties(M,T.modelProperties),V=await x.createStructure(D||M,{name:"symmetry",params:l}),R=await x.insertStructureProperties(V,T.structureProperties),E=await x.tryCreateUnitcell(D,void 0,{isHidden:!1}),I=T.representationPreset||A.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,B=await A.builders.structure.representation.applyPreset(R,I,{theme:{globalName:l.theme}});return{model:M,modelProperties:D,unitcell:E,structure:V,structureProperties:R,representation:B}}const v=y({id:"preset-trajectory-unitcell",display:{name:"Unit Cell",group:"Preset",description:"Shows the fully populated unit cell."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:u,async apply(l,S,T){return await m({ijkMin:c.Vec3.create(0,0,0),ijkMax:c.Vec3.create(0,0,0)},l,S,T)}}),b=y({id:"preset-trajectory-supercell",display:{name:"Super Cell",group:"Preset",description:"Shows the super cell, i.e. the central unit cell and all adjacent unit cells."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:u,async apply(l,S,T){return await m({ijkMin:c.Vec3.create(-1,-1,-1),ijkMax:c.Vec3.create(1,1,1),theme:"operator-hkl"},l,S,T)}}),C=y({id:"preset-trajectory-crystal-contacts",display:{name:"Crystal Contacts",group:"Preset",description:"Showsasymetric unit and chains from neighbours within 5 â«, i.e., symmetry mates."},isApplicable:l=>o.Model.hasCrystalSymmetry(l.data.representative),params:(l,S)=>({model:e.ParamDefinition.Optional(e.ParamDefinition.Group(t.StateTransformer.getParamDefinition(r.StateTransforms.Model.ModelFromTrajectory,l,S))),..._(l,S)}),async apply(l,S,T){const A=T.builders.structure,x=await A.createModel(l,S.model),M=await A.insertModelProperties(x,S.modelProperties),D=await A.createStructure(M||x,{name:"symmetry-mates",params:{radiu
7083s:5}}),V=await A.insertStructureProperties(D,S.structureProperties),R=await A.tryCreateUnitcell(M,void 0,{isHidden:!0}),E=S.representationPreset||T.config.get(f.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,I=await T.builders.structure.representation.applyPreset(V,E,{theme:{globalName:"operator-name",carbonColor:"operator-name",focus:{name:"element-symbol",params:{carbonColor:{name:"operator-name",params:h.OperatorNameColorThemeProvider.defaultValues}}}}});return{model:x,modelProperties:M,unitcell:R,structure:D,structureProperties:V,representation:I}}});return sl.PresetTrajectoryHierarchy={default:a,"all-models":p,unitcell:v,supercell:b,crystalContacts:C},sl}var X9;function mce(){if(X9)return Xb;X9=1,Object.defineProperty(Xb,"__esModule",{value:!0}),Xb.TrajectoryHierarchyBuilder=void 0;const e=_t(),t=Et(),r=nt(),n=Ct(),i=vr(),c=Ne(),o=fce(),s=Vt();class h{resolveProvider(y){var _;return typeof y=="string"?(_=o.PresetTrajectoryHierarchy[y])!==null&&_!==void 0?_:(0,e.arrayFind)(this._providers,g=>g.id===y):y}hasPreset(y){for(const _ of this._providers)if(!_.isApplicable||_.isApplicable(y,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(y){if(!y)return this.providers;const _=[];for(const g of this._providers)g.isApplicable&&!g.isApplicable(y,this.plugin)||_.push(g);return _}getPresetSelect(y){const _=[];for(const g of this._providers)y&&g.isApplicable&&!g.isApplicable(y,this.plugin)||_.push([g.id,g.display.name]);return c.ParamDefinition.Select("auto",_)}getPresetsWithOptions(y){const _=[],g=Object.create(null);for(const a of this._providers)a.isApplicable&&!a.isApplicable(y,this.plugin)||(_.push([a.id,a.display.name]),g[a.id]=a.params?c.ParamDefinition.Group(a.params(y,this.plugin)):c.ParamDefinition.EmptyGroup());return _.length===0?c.ParamDefinition.MappedStatic("",{"":c.ParamDefinition.EmptyGroup()}):c.ParamDefinition.MappedStatic(_[0][0],g,{options:_})}registerPreset(y){if(this.providerMap.has(y.id))throw new Error(`Hierarchy provider with id '${y.id}' already registered.`);this._providers.push(y),this.providerMap.set(y.id,y)}unregisterPreset(y){this.providerMap.delete(y.id),(0,s.arrayRemoveInPlace)(this._providers,y)}applyPreset(y,_,g){const a=this.resolveProvider(_);if(!a)return;const d=this.plugin.state.data,p=t.StateObjectRef.resolveAndCheck(d,y);if(!p){n.isProductionMode||console.warn("Applying hierarchy preset provider to bad cell.");return}const u=g||(a.params?c.ParamDefinition.getDefaultValues(a.params(p.obj,this.plugin)):{}),m=r.Task.create(`${a.display.name}`,()=>a.apply(p,u,this.plugin));return this.plugin.runTask(m)}constructor(y){this.plugin=y,this._providers=[],this.providerMap=new Map,this.defaultProvider=o.PresetTrajectoryHierarchy.default,(0,i.objectForEach)(o.PresetTrajectoryHierarchy,_=>this.registerPreset(_))}}return Xb.TrajectoryHierarchyBuilder=h,Xb}var K9;function pce(){if(K9)return Wb;K9=1,Object.defineProperty(Wb,"__esModule",{value:!0}),Wb.StructureBuilder=void 0;const e=Et(),t=jt(),r=Dr(),n=dce(),i=nt(),c=Ke(),o=Qn(),s=rt(),h=mce();class f{get dataState(){return this.plugin.state.data}async parseTrajectoryData(_,g){const a=typeof g=="string"?this.plugin.dataFormats.get(g):g;if(!a)throw new Error(`'${g}' is not a supported data format.`);const{trajectory:d}=await a.parse(this.plugin,_);return d}parseTrajectoryBlob(_,g){return this.dataState.build().to(_).apply(r.StateTransforms.Data.ParseBlob,g,{state:{isGhost:!0}}).apply(r.StateTransforms.Model.TrajectoryFromBlob,void 0).commit({revertOnError:!0})}parseTrajectory(_,g){const a=e.StateObjectRef.resolveAndCheck(this.dataState,_);if(!a)throw new Error("Invalid data cell.");return t.PluginStateObject.Data.Blob.is(a.obj)?this.parseTrajectoryBlob(_,g):this.parseTrajectoryData(_,g)}createModel(_,g,a){return this.dataState.build().to(_).apply(r.StateTransforms.Model.ModelFromTrajectory,g||{modelIndex:0},{state:a}).commit({revertOnError:!0})}insertModelProperties(_,g,a){return this.dataState.build().to(_).apply(r.StateTransforms.Model.CustomModelProperties,g,{state:a}).commit({revertOnError:!0})}tryCreateUnitcell(_,g,a){var d,p,u;const m=this.dataState,v=(p=(d=e.StateObjectRef.resolveAndCheck(m,_))===null||d===void 0?void 0:d.obj)===null||p===void 0?void 0:p.data;if(!v)return;const b=(u=o.ModelSymmetry.Provider.get(v))===null||u===void 0?void 0:u.spacegroup.cell;return s.SpacegroupCell.isZero(b)?void 0:m.build().to(_).apply(r.StateTransforms.Representation.ModelUnitcell3D,g,{state:a}).commit({revertOnError:!0})}createStructure(_,g,a,d){var p;const u=this.dataState;if(!g){const v=e.StateObjectRef.resolveAndCheck(u,_);if(v){const b=o.ModelSymmetry.Provider.get((p=v.obj)===null||p===void 0?void 0:p.data);(!b||b?.assemblies.length===0)&&(g={name:"model",params:{}})}}return u.build().to(_).apply(r.StateTransforms.Model.StructureFromModel,{type:g||{name:"assembly",params:{}}},{state:a,tags:d}).commit({revertOnError:!0})}insertStructureProperties(_,g){return this.dataState.build().to(_).apply(r.StateTransforms.Model.CustomStructureProperties,g).commit({revertOnError:!0})}isComponentTransform(_){return _.transform.transformer===r.StateTransforms.Model.StructureComponent}async tryCreateComponent(_,g,a,d){var p,u;const m=this.dataState,v=m.build().to(_),b=`structure-component-${a}`,P=v.applyOrUpdateTagged(b,r.StateTransforms.Model.StructureComponent,g,{tags:d?[...d,b]:[b]});await P.commit();const C=P.selector;
7083if(!C.isOk||((u=(p=C.cell)===null||p===void 0?void 0:p.obj)===null||u===void 0?void 0:u.data.elementCount)===0){await m.build().delete(C.ref).commit();return}return C}tryCreateComponentFromExpression(_,g,a,d){return this.tryCreateComponent(_,{type:{name:"expression",params:g},nullIfEmpty:!0,label:(d?.label||"").trim()},a,d?.tags)}tryCreateComponentStatic(_,g,a){return this.tryCreateComponent(_,{type:{name:"static",params:g},nullIfEmpty:!0,label:(a?.label||"").trim()},`static-${g}`,a?.tags)}tryCreateComponentFromSelection(_,g,a,d){return this.plugin.runTask(i.Task.create("Query Component",async p=>{var u,m;let{label:v,tags:b}=d||{};v=(v||"").trim();const P=(m=(u=e.StateObjectRef.resolveAndCheck(this.dataState,_))===null||u===void 0?void 0:u.obj)===null||m===void 0?void 0:m.data;if(!P)return;const C=g.referencesCurrent?{type:{name:"bundle",params:c.StructureElement.Bundle.fromSelection(await g.getSelection(this.plugin,p,P))},nullIfEmpty:!0,label:v||g.label}:{type:{name:"expression",params:g.expression},nullIfEmpty:!0,label:v||g.label};return g.ensureCustomProperties&&await g.ensureCustomProperties({runtime:p,assetManager:this.plugin.managers.asset,errorContext:this.plugin.errorContext},P),this.tryCreateComponent(_,C,a,b)}))}constructor(_){this.plugin=_,this.hierarchy=new h.TrajectoryHierarchyBuilder(this.plugin),this.representation=new n.StructureRepresentationBuilder(this.plugin)}}return Wb.StructureBuilder=f,Wb}var Kb={},aM={},Yb={},Y9;function tC(){if(Y9)return Yb;Y9=1,Object.defineProperty(Yb,"__esModule",{value:!0}),Yb.DataFormatProvider=t,Yb.guessCifVariant=r;const e=sX();function t(o){return o}function r(o,s){if(o.ext==="bcif")try{const h=(0,e.decodeMsgPack)(s);if(h.encoder.startsWith("VolumeServer"))return"dscif";if(h.encoder.startsWith("volseg-volume-server"))return"segcif";if(i(h,"_volume_data_3d_info")){if(i(h,"_volume_data_3d"))return"dscif";if(i(h,"_segmentation_data_3d"))return"segcif"}if(i(h,"_refln")&&(c(h,"_refln","pdbx_FWT")||c(h,"_refln","pdbx_DELFWT")))return"sfcif"}catch(h){console.error(h)}else if(o.ext==="cif"){const h=s;if(h.startsWith(`data_SERVER 7084# 7085_density_server_result`))return"dscif";if(h.startsWith(`data_SERVER 7086# 7087data_SEGMENTATION_DATA`))return"segcif";if(n(h,"volume_data_3d_info")){if(n(h,"volume_data_3d"))return"dscif";if(n(h,"segmentation_data_3d"))return"segcif"}if(h.includes("_refln.pdbx_FWT")||h.includes("_refln.pdbx_DELFWT"))return"sfcif";if(h.includes("atom_site_fract_x")||h.includes("atom_site.fract_x"))return"coreCif"}return-1}function n(o,s){return o.includes(`_${s}.`)}function i(o,s){for(const h of o.dataBlocks)for(const f of h.categories)if(f.name===s)return!0;return!1}function c(o,s,h){for(const f of o.dataBlocks)for(const y of f.categories)if(y.name===s){for(const _ of y.columns)if(_.name===h)return!0}return!1}return Yb}var Q9;function lZ(){return Q9||(Q9=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInTrajectoryFormats=e.Mol2Provider=e.SdfProvider=e.MolProvider=e.GroProvider=e.LammpsTrajectoryDataProvider=e.LammpsDataProvider=e.XyzProvider=e.PqrProvider=e.PdbqtProvider=e.PdbProvider=e.CifCoreProvider=e.MmcifProvider=e.TrajectoryFormatCategory=void 0;const t=Dr(),r=tC();e.TrajectoryFormatCategory="Trajectory";function n(c,o){return c.builders.structure.hierarchy.applyPreset(o.trajectory,"default")}e.MmcifProvider={label:"mmCIF",description:"mmCIF",category:e.TrajectoryFormatCategory,stringExtensions:["cif","mmcif","mcif"],binaryExtensions:["bcif"],isApplicable:(c,o)=>c.ext==="mmcif"||c.ext==="mcif"?!0:c.ext==="cif"||c.ext==="bcif"?(0,r.guessCifVariant)(c,o)===-1:!1,parse:async(c,o,s)=>{var h,f;const _=c.state.data.build().to(o).apply(t.StateTransforms.Data.ParseCif,void 0,{state:{isGhost:!0}}),g=await _.apply(t.StateTransforms.Model.TrajectoryFromMmCif,void 0,{tags:s?.trajectoryTags}).commit({revertOnError:!0});return(((f=(h=_.selector.cell)===null||h===void 0?void 0:h.obj)===null||f===void 0?void 0:f.data.blocks.length)||0)>1&&c.state.data.updateCellState(_.ref,{isGhost:!1}),{trajectory:g}},visuals:n},e.CifCoreProvider={label:"cifCore",description:"CIF Core",category:e.TrajectoryFormatCategory,stringE
7087xtensions:["cif"],isApplicable:(c,o)=>c.ext==="cif"?(0,r.guessCifVariant)(c,o)==="coreCif":!1,parse:async(c,o,s)=>{var h,f;const _=c.state.data.build().to(o).apply(t.StateTransforms.Data.ParseCif,void 0,{state:{isGhost:!0}}),g=await _.apply(t.StateTransforms.Model.TrajectoryFromCifCore,void 0,{tags:s?.trajectoryTags}).commit({revertOnError:!0});return(((f=(h=_.selector.cell)===null||h===void 0?void 0:h.obj)===null||f===void 0?void 0:f.data.blocks.length)||0)>1&&c.state.data.updateCellState(_.ref,{isGhost:!1}),{trajectory:g}},visuals:n};function i(c,o){return async(s,h,f)=>({trajectory:await s.state.data.build().to(h).apply(c,o,{tags:f?.trajectoryTags}).commit({revertOnError:!0})})}e.PdbProvider={label:"PDB",description:"PDB",category:e.TrajectoryFormatCategory,stringExtensions:["pdb","ent"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB),visuals:n},e.PdbqtProvider={label:"PDBQT",description:"PDBQT",category:e.TrajectoryFormatCategory,stringExtensions:["pdbqt"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB,{variant:"pdbqt"}),visuals:n},e.PqrProvider={label:"PQR",description:"PQR",category:e.TrajectoryFormatCategory,stringExtensions:["pqr"],parse:i(t.StateTransforms.Model.TrajectoryFromPDB,{variant:"pqr"}),visuals:n},e.XyzProvider={label:"XYZ",description:"XYZ",category:e.TrajectoryFormatCategory,stringExtensions:["xyz"],parse:i(t.StateTransforms.Model.TrajectoryFromXYZ),visuals:n},e.LammpsDataProvider={label:"Lammps Data",description:"Lammps Data",category:e.TrajectoryFormatCategory,stringExtensions:["data"],parse:i(t.StateTransforms.Model.TrajectoryFromLammpsData),visuals:n},e.LammpsTrajectoryDataProvider={label:"Lammps Trajectory Data",description:"Lammps Trajectory Data",category:e.TrajectoryFormatCategory,stringExtensions:["lammpstrj"],parse:i(t.StateTransforms.Model.TrajectoryFromLammpsTrajData),visuals:n},e.GroProvider={label:"GRO",description:"GRO",category:e.TrajectoryFormatCategory,stringExtensions:["gro"],binaryExtensions:[],parse:i(t.StateTransforms.Model.TrajectoryFromGRO),visuals:n},e.MolProvider={label:"MOL",description:"MOL",category:e.TrajectoryFormatCategory,stringExtensions:["mol"],parse:i(t.StateTransforms.Model.TrajectoryFromMOL),visuals:n},e.SdfProvider={label:"SDF",description:"SDF",category:e.TrajectoryFormatCategory,stringExtensions:["sdf","sd"],parse:i(t.StateTransforms.Model.TrajectoryFromSDF),visuals:n},e.Mol2Provider={label:"MOL2",description:"MOL2",category:e.TrajectoryFormatCategory,stringExtensions:["mol2"],parse:i(t.StateTransforms.Model.TrajectoryFromMOL2),visuals:n},e.BuiltInTrajectoryFormats=[["mmcif",e.MmcifProvider],["cifCore",e.CifCoreProvider],["pdb",e.PdbProvider],["pdbqt",e.PdbqtProvider],["pqr",e.PqrProvider],["gro",e.GroProvider],["xyz",e.XyzProvider],["lammps_data",e.LammpsDataProvider],["lammps_traj_data",e.LammpsTrajectoryDataProvider],["mol",e.MolProvider],["sdf",e.SdfProvider],["mol2",e.Mol2Provider]]})(aM)),aM}var oM={},cl={},Z9;function dZ(){if(Z9)return cl;Z9=1,Object.defineProperty(cl,"__esModule",{value:!0}),cl.createVolumeRepresentationParams=r,cl.getVolumeThemeTypes=n,cl.createVolumeColorThemeParams=i,cl.createVolumeSizeThemeParams=c;const e=sn(),t=Ne();function r(h,f,y={}){const _=y;return typeof _.type=="string"||typeof _.color=="string"||typeof _.size=="string"?o(h,f||e.Volume.One,y):s(h,f||e.Volume.One,y)}function n(h,f){const{themes:y}=h.representation.volume;return f?y.colorThemeRegistry.getApplicableTypes({volume:f}):y.colorThemeRegistry.types}function i(h,f,y,_,g){const{registry:a,themes:d}=h.representation.volume,p=a.get(y||a.default.name),u=d.colorThemeRegistry.get(_||p.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({volume:f||e.Volume.One}));return u.name===p.defaultColorTheme.name&&Object.assign(m,p.defaultColorTheme.props),{name:u.name,params:Object.assign(m,g)}}function c(h,f,y,_,g){const{registry:a,themes:d}=h.representation.volume,p=a.get(y||a.default.name),u=d.sizeThemeRegistry.get(_||p.defaultSizeTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams({volume:f||e.Volume.One}));return u.name===p.defaultSizeTheme.name&&Object.assign(m,p.defaultSizeTheme.props),{name:u.name,params:Object.assign(m,g)}}function o(h,f,y){const _=y.type&&h.representation.volume.registry.get(y.type)||h.representation.volume.registry.default.provider,g=y.color&&h.representation.volume.themes.colorThemeRegistry.get(y.color)||h.representation.volume.themes.colorThemeRegistry.get(_.defaultColorTheme.name),a=y.size&&h.representation.volume.themes.sizeThemeRegistry.get(y.size)||h.representation.volume.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);
7087return s(h,f,{type:_,typeParams:y.typeParams,color:g,colorParams:y.colorParams,size:a,sizeParams:y.sizeParams})}function s(h,f,y={}){const{themes:_}=h.representation.volume,g={volume:f},a=y.type||h.representation.volume.registry.default.provider,d=t.ParamDefinition.getDefaultValues(a.getParams(_,f)),p=Object.assign(d,y.typeParams),u=y.color||_.colorThemeRegistry.get(a.defaultColorTheme.name),m=t.ParamDefinition.getDefaultValues(u.getParams(g));u.name===a.defaultColorTheme.name&&Object.assign(m,a.defaultColorTheme.props);const v=Object.assign(m,y.colorParams),b=y.size||_.sizeThemeRegistry.get(a.defaultSizeTheme.name),P=t.ParamDefinition.getDefaultValues(b.getParams(g));b.name===a.defaultSizeTheme.name&&Object.assign(P,a.defaultSizeTheme.props);const C=Object.assign(P,y.sizeParams);return{type:{name:a.name,params:p},colorTheme:{name:u.name,params:v},sizeTheme:{name:b.name,params:C}}}return cl}var ul={},J9;function hce(){if(J9)return ul;J9=1,Object.defineProperty(ul,"__esModule",{value:!0}),ul.RecommendedIsoValue=ul.PropertyProvider=void 0;var e;(function(r){function n(i){const{name:c}=i;return{descriptor:i,get(o){return o._propertyData[c]},set(o,s){o.customProperties.add(i),o._propertyData[c]=s}}}r.create=n})(e||(ul.PropertyProvider=e={}));var t;return(function(r){r.Descriptor={name:"recommended_iso_value"},r.Provider=e.create(r.Descriptor)})(t||(ul.RecommendedIsoValue=t={})),ul}var da={},e7;function fZ(){if(e7)return da;e7=1,Object.defineProperty(da,"__esModule",{value:!0}),da.getStreamingMethod=n,da.getEmIds=i,da.getXrayIds=c,da.getIds=o,da.getContourLevel=s,da.getContourLevelEmdb=h,da.getContourLevelPdbe=f,da.getEmdbIds=_;const e=Ke(),t=Mi(),r=gs();function n(g,a="x-ray"){if(!g)return a;const d=g.models[0];return t.MmcifFormat.is(d.sourceData)?e.Model.hasEmMap(d)?"em":e.Model.hasXrayMap(d)?"x-ray":e.Model.isFromEm(d)?"em":e.Model.isFromXray(d)?"x-ray":a:a}function i(g){const a=[];if(!t.MmcifFormat.is(g.sourceData))return[g.entryId];const{db_id:d,db_name:p,content_type:u}=g.sourceData.data.db.pdbx_database_related;if(!p.isDefined)return[g.entryId];for(let m=0,v=p.rowCount;m<v;++m)p.value(m).toUpperCase()==="EMDB"&&u.value(m)==="associated EM volume"&&a.push(d.value(m));return a}function c(g){return[g.entryId]}function o(g,a){if(!a||!a.models.length)return[];const d=a.models[0];switch(g){case"em":return i(d);case"x-ray":return c(d)}}async function s(g,a,d,p){switch(g){case"emdb":return h(a,d,p);case"pdbe":return f(a,d,p)}}async function h(g,a,d){const p=g.config.get(r.PluginConfig.VolumeStreaming.EmdbHeaderServer),v=(await g.fetch({url:`${p}/${d.toUpperCase()}/header/${d.toLowerCase()}.xml`,type:"xml"}).runInContext(a)).getElementsByTagName("map")[0].getElementsByTagName("contour");let b=v[0];for(let C=1;C<v.length;C++)if(v[C].getAttribute("primary")==="true"){b=v[C];break}return parseFloat(b.getElementsByTagName("level")[0].textContent)}async function f(g,a,d){var p,u,m,v;d=d.toUpperCase();const b=await g.fetch({url:`https://www.ebi.ac.uk/emdb/api/entry/map/${d}`,type:"json"}).runInContext(a),P=(u=(p=b?.map)===null||p===void 0?void 0:p.contour_list)===null||u===void 0?void 0:u.contour;return!P||P.length===0?y(g,a,d):(v=(m=P.find(C=>C.primary))===null||m===void 0?void 0:m.level)!==null&&v!==void 0?v:P[0].level}async function y(g,a,d){var p,u,m;d=d.toUpperCase();const v=await g.fetch({url:`https://www.ebi.ac.uk/pdbe/api/emdb/entry/map/${d}`,type:"json"}).runInContext(a),b=v?.[d];let P;return((m=(u=(p=b?.[0])===null||p===void 0?void 0:p.map)===null||u===void 0?void 0:u.contour_level)===null||m===void 0?void 0:m.value)!==void 0&&(P=+b[0].map.contour_level.value),P}async function _(g,a,d){var p;const u=await g.fetch({url:`https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/${d}`,type:"json"}).runInContext(a),m=u?.[d],v=[];if(!((p=m?.[0])===null||p===void 0)&&p.related_structures){const b=m[0].related_structures.filter(P=>P.resource==="EMDB"&&P.relationship==="associated EM volume");if(!b.length)throw new Error(`No related EMDB entry found for '${d}'.`);v.push(...b.map(P=>P.accession))}else throw new Error(`No related EMDB entry found for '${d}'.`);return v}return da}var t7;function gce(){return t7||(t7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.BuiltInVolumeFormats=e.MtzProvider=e.SfcifProvider=e.SegcifProvider=e.DscifProvider=e.CubeProvider=e.DxProvider=e.Dsn6Provider=e.Ccp4Provider=e.VolumeFormatCategory=void 0;const t=Dr(),r=tC(),n=$S(),i=Vr(),c=sn(),o=dZ(),s=vr(),h=hce(),f=fZ(),y=nt(),_=wn(),g=UQ();e.VolumeFormatCategory="Volume";async function a(u,m){if(!m)return;const{entryId:v}=m;if(!(!v||!v.toLowerCase().startsWith("emd")))return u.runTask(y.Task.create("Try Set Recommended IsoValue",async b=>{try{const P=await(0,f.getContourLevelEmdb)(u,b,v);h.RecommendedIsoValue.Provider.set(m,c.Volume.IsoValue.absolute(P))}catch(P){console.warn(P)}}))}function d(u){const m=h.RecommendedIsoValue.Provider.get(u);if(m)return m.kind==="relative"?m:c.Volume.adjustedIsoValue(u,m.absoluteValue,"absolute")}async function p(u,m){const v={},b=m.volume.data&&d(m.volume.data);return b&&(v.isoValue=b),[await u.build().to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,m.volume.data,{type:"isosurface",typeParams:v})).commit()]}e.Ccp4Provider=(0,r.DataFormatProvider)({label:"CCP4/MRC/MAP",description:"CCP4/MRC/MAP",category:e.VolumeFormatCategory,binaryExtensions:["ccp4","mrc","map"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseCcp4,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromCcp4,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector}},visuals:p}),e.Dsn6Provider=(0,r.DataFormatProvider)({label:"DSN6/BRIX",description:"DSN6/BRIX",category:e.VolumeFormatCategory,binaryExtensions:["dsn6","brix"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseDsn6,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromDsn6,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector}},visuals:p}),e.DxProvider=(0,r.DataFormatProvider)({label:"DX",description:"DX",category:e.VolumeFormatCategory,stringExtensions:["dx"],binaryExtensions:["dxbin"],parse:async(u,m,v)=>{const P=u.build().to(m).apply(t.StateTransforms.Data.ParseDx,{},{state:{isGhost:!0}}).apply(t.StateTransforms.Volume.VolumeFromDx,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);return await P.commit({revertOnError:!0}),await a(u,P.selector.data),{volume:P.selector}},visuals:p}),e.CubeProvider=(0,r.DataFormatProvider)({label:"Cube",description:"Cube",category:e.VolumeFormatCategory,stringExtensions:["cub","cube"],parse:async(u,m,v)=>{const b=u.build().to(m).apply(t.StateTransforms.Data.ParseCube,{},{state:{isGhost:!0}}),P=b.apply(t.StateTransforms.Volume.VolumeFromCube,{entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties),C=b.apply(t.StateTransforms.Model.TrajectoryFromCube,void 0,{state:{isGhost:!0}}).apply(t.StateTransforms.Model.ModelFromTrajectory).apply(t.StateTransforms.Model.CustomModelProperties).apply(t.StateTransforms.Model.StructureFromModel).apply(t.StateTransforms.Model.CustomStructureProperties);return await b.commit({revertOnError:!0}),await a(u,P.selector.data),{format:b.selector,volume:P.selector,structure:C.selector}},visuals:async(u,m)=>{var v,b;const P=u.build(),C=[],l=(b=(v=m.volume.cell)===null||v===void 0?void 0:v.obj)===null||b===void 0?void 0:b.data;if(l&&c.Volume.isOrbitals(l)){const A=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(1),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.blue}})),x=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createVolumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(-1),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.red}}));C.push(A.selector,x.selector)}else{const A=P.to(m.volume).apply(t.StateTransforms.Representation.VolumeRepresentation3D,(0,o.createV
7087olumeRepresentationParams)(u,l,{type:"isosurface",typeParams:{isoValue:c.Volume.IsoValue.relative(2),alpha:.4},color:"uniform",colorParams:{value:i.ColorNames.grey}}));C.push(A.selector)}const S=await u.builders.structure.representation.applyPreset(m.structure,"auto");await P.commit();const T=[];return(0,s.objectForEach)(S?.representations,A=>{A&&T.push(A)}),[...C,...T]}}),e.DscifProvider=(0,r.DataFormatProvider)({label:"DensityServer CIF",description:"DensityServer CIF",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="dscif",parse:async(u,m,v)=>{var b;const P=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),C=u.build().to(P),l=P.obj.data.blocks;if(l.length===0)throw new Error("no data blocks");const S=[];let T=0;for(const A of l){if(A.header.toUpperCase()==="SERVER")continue;const x=Array.isArray(v?.entryId)?v?.entryId[T]:v?.entryId;if(((b=A.categories.volume_data_3d_info)===null||b===void 0?void 0:b.rowCount)>0){const M=C.apply(t.StateTransforms.Volume.VolumeFromDensityServerCif,{blockHeader:A.header,entryId:x}).apply(t.StateTransforms.Volume.CustomVolumeProperties);S.push(M.selector),T++}}await C.commit();for(const A of S)await a(u,A.data);return{volumes:S}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v.length>0){const C=v[0].data&&d(v[0].data)||c.Volume.IsoValue.relative(1.5);P[0]=b.to(v[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:i.ColorNames.teal})).selector}if(v.length>1){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:i.ColorNames.green}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:i.ColorNames.red});P[P.length]=b.to(v[1]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector,P[P.length]=b.to(v[1]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector}return await b.commit(),P}}),e.SegcifProvider=(0,r.DataFormatProvider)({label:"Segmentation CIF",description:"Segmentation CIF",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="segcif",parse:async(u,m)=>{var v;const b=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),P=u.build().to(b),C=b.obj.data.blocks;if(C.length===0)throw new Error("no data blocks");const l=[];for(const S of C)if(S.header.toUpperCase()!=="SERVER"&&((v=S.categories.volume_data_3d_info)===null||v===void 0?void 0:v.rowCount)>0){const T=P.apply(t.StateTransforms.Volume.VolumeFromSegmentationCif,{blockHeader:S.header}).apply(t.StateTransforms.Volume.CustomVolumeProperties);l.push(T.selector)}return await P.commit(),{volumes:l}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];return v.length>0&&c.Volume.Segmentation.get(v[0].data)&&(P[P.length]=b.to(v[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParams(u,"segment",v[0].data,{alpha:1,instanceGranularity:!0},"volume-segment",{})).selector),await b.commit(),P}}),e.SfcifProvider=(0,r.DataFormatProvider)({label:"Structure Factors CIF",description:"mmCIF structure factor file with reflection data (pdbx_FWT/pdbx_PHWT map coefficients)",category:e.VolumeFormatCategory,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(u,m)=>(0,r.guessCifVariant)(u,m)==="sfcif",parse:async(u,m,v)=>{var b,P,C,l,S,T,A,x;const M=await u.build().to(m).apply(t.StateTransforms.Data.ParseCif).commit(),D=u.build().to(M),V=M.obj.data.blocks;if(V.length===0)throw new Error("no data blocks");const R={"2fofc":[],fofc:[]};for(const E of V){const I=E.categories.refln;if(!(I?.rowCount>0))continue;const B=((P=(b=I.getField("pdbx_FWT"))===null||b===void 0?void 0:b.rowCount)!==null&&P!==void 0?P:0)>0&&((l=(C=I.getField("pdbx_PHWT"))===null||C===void 0?void 0:C.rowCount)!==null&&l!==void 0?l:0)>0,w=((T=(S=I.getField("pdbx_DELFWT"))===null||S===void 0?void 0:S.rowCount)!==null&&T!==void 0?T:0)>0&&((x=(A=I.getField("pdbx_DELPHWT"))===null||A===void 0?void 0:A.rowCount)!==null&&x!==void 0?x:0)>0;
7087if(!(!B&&!w)){if(B){const O=D.apply(t.StateTransforms.Volume.VolumeFromStructureFactorsCif,{blockHeader:E.header,entryId:v?.entryId,mapType:"2fo-fc"}).apply(t.StateTransforms.Volume.CustomVolumeProperties);R["2fofc"].push(O.selector)}if(w){const O=D.apply(t.StateTransforms.Volume.VolumeFromStructureFactorsCif,{blockHeader:E.header,entryId:v?.entryId,mapType:"fo-fc"}).apply(t.StateTransforms.Volume.CustomVolumeProperties);R.fofc.push(O.selector)}}}return await D.commit(),{volumes:R}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v["2fofc"].length>0){const C=c.Volume.IsoValue.relative(2);P.push(b.to(v["2fofc"][0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:(0,_.Color)(3367602)})).selector)}if(v.fofc.length>0){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:(0,_.Color)(3390259)}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:(0,_.Color)(12268339)});P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector),P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector)}return await b.commit(),P}}),e.MtzProvider=(0,r.DataFormatProvider)({label:"MTZ",description:"CCP4 MTZ reflection data file with amplitude and phase columns",category:e.VolumeFormatCategory,binaryExtensions:["mtz"],isApplicable:(u,m)=>!(m instanceof Uint8Array)||m.length<4?!1:m[0]===77&&m[1]===84&&m[2]===90,parse:async(u,m,v)=>{const b=await u.build().to(m).apply(t.StateTransforms.Data.ParseMtz).commit(),P=u.build().to(b),C=b.obj.data,l=(0,g.detectMtzColumnPairs)(C.header);if(l.length===0)throw new Error("MTZ file does not contain any recognised amplitude+phase column pairs (FWT/PHWT, DELFWT/DELPHWT, 2FOFCWT/PH2FOFCWT, FOFCWT/PHFOFCWT).");const S={"2fofc":[],fofc:[]};for(const T of l){const A=P.apply(t.StateTransforms.Volume.VolumeFromMtz,{ampLabel:T.ampLabel,phiLabel:T.phiLabel,entryId:v?.entryId}).apply(t.StateTransforms.Volume.CustomVolumeProperties);T.label==="2fo-fc"?S["2fofc"].push(A.selector):S.fofc.push(A.selector)}return await P.commit(),{volumes:S}},visuals:async(u,m)=>{const{volumes:v}=m,b=u.build(),P=[];if(v["2fofc"].length>0){const C=c.Volume.IsoValue.relative(2);P.push(b.to(v["2fofc"][0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:C,alpha:1},"uniform",{value:(0,_.Color)(3367602)})).selector)}if(v.fofc.length>0){const C=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(3),alpha:.3},"uniform",{value:(0,_.Color)(3390259)}),l=n.VolumeRepresentation3DHelpers.getDefaultParamsStatic(u,"isosurface",{isoValue:c.Volume.IsoValue.relative(-3),alpha:.3},"uniform",{value:(0,_.Color)(12268339)});P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,C).selector),P.push(b.to(v.fofc[0]).apply(t.StateTransforms.Representation.VolumeRepresentation3D,l).selector)}return await b.commit(),P}}),e.BuiltInVolumeFormats=[["ccp4",e.Ccp4Provider],["dsn6",e.Dsn6Provider],["cube",e.CubeProvider],["dx",e.DxProvider],["dscif",e.DscifProvider],["segcif",e.SegcifProvider],["sfcif",e.SfcifProvider],["mtz",e.MtzProvider]]})(oM)),oM}var sM={},r7;function yce(){return r7||(r7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInShapeFormats=e.VtpProvider=e.ObjProvider=e.PlyProvider=e.ShapeFormatCategory=void 0;const t=Dr(),r=tC();e.ShapeFormatCategory="Shape",e.PlyProvider=(0,r.DataFormatProvider)({label:"PLY",description:"PLY",category:e.ShapeFormatCategory,stringExtensions:["ply"],binaryExtensions:["ply"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParsePly,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromPly);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.ObjProvider=(0,r.DataFormatProvider)({label:"OBJ",description:"OBJ",category:e.ShapeFormatCategory,stringE
7087xtensions:["obj"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParseObj,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromObj);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.VtpProvider=(0,r.DataFormatProvider)({label:"VTP",description:"VTK PolyData (VTP)",category:e.ShapeFormatCategory,binaryExtensions:["vtp"],parse:async(n,i)=>{const c=n.state.data.build().to(i).apply(t.StateTransforms.Data.ParseVtp,{},{state:{isGhost:!0}}),o=c.apply(t.StateTransforms.Shape.ShapeFromVtp);return await c.commit(),{format:c.selector,shape:o.selector}},visuals(n,i){return n.state.data.build().to(i.shape).apply(t.StateTransforms.Representation.ShapeRepresentation3D).commit()}}),e.BuiltInShapeFormats=[["ply",e.PlyProvider],["obj",e.ObjProvider],["vtp",e.VtpProvider]]})(sM)),sM}var cM={},n7;function mZ(){return n7||(n7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInTopologyFormats=e.TopProvider=e.PrmtopProvider=e.PsfProvider=e.TopologyFormatCategory=void 0;const t=Dr(),r=tC();e.TopologyFormatCategory="Topology";const n=(0,r.DataFormatProvider)({label:"PSF",description:"PSF",category:e.TopologyFormatCategory,stringExtensions:["psf"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParsePsf,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromPsf);return await h.commit(),{format:h.selector,topology:f.selector}}});e.PsfProvider=n;const i=(0,r.DataFormatProvider)({label:"PRMTOP",description:"PRMTOP",category:e.TopologyFormatCategory,stringExtensions:["prmtop","parm7"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParsePrmtop,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromPrmtop);return await h.commit(),{format:h.selector,topology:f.selector}}});e.PrmtopProvider=i;const c=(0,r.DataFormatProvider)({label:"TOP",description:"TOP",category:e.TopologyFormatCategory,stringExtensions:["top"],parse:async(o,s)=>{const h=o.state.data.build().to(s).apply(t.StateTransforms.Data.ParseTop,{},{state:{isGhost:!0}}),f=h.apply(t.StateTransforms.Model.TopologyFromTop);return await h.commit(),{format:h.selector,topology:f.selector}}});e.TopProvider=c,e.BuiltInTopologyFormats=[["psf",n],["prmtop",i],["top",c]]})(cM)),cM}var uM={},i7;function pZ(){return i7||(i7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BuiltInCoordinatesFormats=e.LammpsTrajectoryProvider=e.NctrajProvider=e.TrrProvider=e.XtcProvider=e.DcdProvider=e.CoordinatesFormatCategory=void 0;const t=Dr(),r=tC();e.CoordinatesFormatCategory="Coordinates";const n=(0,r.DataFormatProvider)({label:"DCD",description:"DCD",category:e.CoordinatesFormatCategory,binaryExtensions:["dcd"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromDcd).commit()});e.DcdProvider=n;const i=(0,r.DataFormatProvider)({label:"XTC",description:"XTC",category:e.CoordinatesFormatCategory,binaryExtensions:["xtc"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromXtc).commit()});e.XtcProvider=i;const c=(0,r.DataFormatProvider)({label:"TRR",description:"TRR",category:e.CoordinatesFormatCategory,binaryExtensions:["trr"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromTrr).commit()});e.TrrProvider=c;const o=(0,r.DataFormatProvider)({label:"NCTRAJ",description:"NCTRAJ",category:e.CoordinatesFormatCategory,binaryExtensions:["nc","nctraj"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromNctraj).commit()});e.NctrajProvider=o;const s=(0,r.DataFormatProvider)({label:"LAMMPSTRAJ",description:"LAMMPSTRAJ",category:e.CoordinatesFormatCategory,stringExtensions:["lammpstrj"],parse:(h,f)=>h.state.data.build().to(f).apply(t.StateTransforms.Model.CoordinatesFromLammpstraj).commit()});e.LammpsTrajectoryProvider=s,e.BuiltInCoordinatesFormats=[["dcd",n],["xtc",i],["trr",c],["nctraj",o],["lammpstrj",s]]})(uM)),uM}var a7;function vce(){if(a7)return Kb;
7087a7=1,Object.defineProperty(Kb,"__esModule",{value:!0}),Kb.DataFormatRegistry=void 0;const e=lZ(),t=gce(),r=yce(),n=mZ(),i=pZ();class c{get types(){return this._list.map(s=>[s.name,s.provider.label])}get extensions(){if(this._extensions)return this._extensions;const s=new Set;return this._list.forEach(({provider:h})=>{var f,y;(f=h.stringExtensions)===null||f===void 0||f.forEach(_=>s.add(_)),(y=h.binaryExtensions)===null||y===void 0||y.forEach(_=>s.add(_))}),this._extensions=s,s}get binaryExtensions(){if(this._binaryExtensions)return this._binaryExtensions;const s=new Set;return this._list.forEach(({provider:h})=>{var f;return(f=h.binaryExtensions)===null||f===void 0?void 0:f.forEach(y=>s.add(y))}),this._binaryExtensions=s,s}get options(){if(this._options)return this._options;const s=[];return this._list.forEach(({name:h,provider:f})=>s.push([h,f.label,f.category||""])),this._options=s,s}constructor(){this._list=[],this._map=new Map,this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0;for(const[s,h]of t.BuiltInVolumeFormats)this.add(s,h);for(const[s,h]of n.BuiltInTopologyFormats)this.add(s,h);for(const[s,h]of i.BuiltInCoordinatesFormats)this.add(s,h);for(const[s,h]of r.BuiltInShapeFormats)this.add(s,h);for(const[s,h]of e.BuiltInTrajectoryFormats)this.add(s,h)}_clear(){this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0}add(s,h){this._clear(),this._list.push({name:s,provider:h}),this._map.set(s,h)}remove(s){this._clear(),this._list.splice(this._list.findIndex(h=>h.name===s),1),this._map.delete(s)}auto(s,h){var f,y;for(let _=0,g=this.list.length;_<g;++_){const a=this._list[_].provider;let d=!1;if((!((f=a.binaryExtensions)===null||f===void 0)&&f.includes(s.ext)||!((y=a.stringExtensions)===null||y===void 0)&&y.includes(s.ext))&&(d=!0),d&&(!a.isApplicable||a.isApplicable(s,h.data)))return a}}get(s){if(this._map.has(s))return this._map.get(s);throw new Error(`unknown data format name '${s}'`)}get list(){return this._list}}return Kb.DataFormatRegistry=c,Kb}var Qb={},o7;function bce(){if(o7)return Qb;o7=1,Object.defineProperty(Qb,"__esModule",{value:!0}),Qb.PluginAnimationManager=void 0;const e=Vi(),t=Ne(),r=Ct();class n extends e.StatefulPluginComponent{get isEmpty(){return this._animations.length===0}get current(){return this._current}get animations(){return this._animations}get isAnimatingStateTransition(){return!!this._current&&this._current.anim.name==="built-in.animate-state-snapshot-transition"}triggerUpdate(){this.events.updated.next(void 0)}triggerApply(){this.events.applied.next(void 0)}getParams(){return this._params||(this._params={current:t.ParamDefinition.Select(this._animations[0]&&this._animations[0].name,this._animations.map(c=>[c.name,c.display.name]),{label:"Animation"})}),this._params}updateParams(c){if(this.isEmpty)return;this.updateState({params:{...this.state.params,...c}});const o=this.map.get(this.state.params.current);if(!o){r.isDebugMode&&console.warn(`Animation '${this.state.params.current}' not found. State might be from a different plugin instance.`);return}const s=o.params(this.context);this._current={anim:o,params:s,paramValues:t.ParamDefinition.getDefaultValues(s),state:{},startedTime:-1,lastTime:0},this.triggerUpdate()}updateCurrentParams(c){this.isEmpty||(this._current.paramValues={...this._current.paramValues,...c},this.triggerUpdate())}register(c){if(this.map.has(c.name)){this.context.log.error(`Animation '${c.name}' is already registered.`);return}this._params=void 0,this.map.set(c.name,c),this._animations.push(c),this._animations.length===1?this.updateParams({current:c.name}):this.triggerUpdate()}async play(c,o){await this.stop(),this.map.has(c.name)||this.register(c),this.updateParams({current:c.name}),this.updateCurrentParams(o),await this.start()}async tick(c,o,s){this.currentTime=c,!this.isStopped&&(o||s?await this.applyFrame(s):this.applyAsync())}async start(){this.updateState({animationState:"playing"}),this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),this.triggerUpdate();const c=this._current.anim;let o=this._current.anim.initialState(this._current.paramValues,this.context);if(c.setup){const s=await c.setup(this._current.paramValues,o,this.context);s&&(o=s)}this._current.lastTime=0,this._current.startedTime=-1,this._current.state=o,this.isStopped=!1}async stop(){if(this.isStopped=!0,this.state.animationState!=="stopped"){const c=this._current.anim;c.teardown&&await c.teardown(this._current.paramValues,this._current.state,this.context),this.updateState({animationState:"stopped"}),this.triggerUpdate()}this.context.behaviors.state.isAnimating.value&&this.context.behaviors.state.isAnimating.next(!1)}stopStateTransitionAnimation(){if(this.isAnimatingStateTransition)return this.stop()}get isAnimating(){return this.state.animationState==="playing"}async applyAsync(){if(!this.isApplying){this.isApplying=!0;try{await this.applyFrame()}finally{this.isApplying=!1}}}async applyFrame(c){const o=this.currentTime;this._current.startedTime<0&&(this._current.startedTime=o);const s=await this._current.anim.apply(this._current.state,{lastApplied:this._current.lastTime,current:o-this._current.startedTime,animation:c},{params:this._current.paramValues,plugin:this.context});s.kind==="finished"?this.stop():s.kind==="next"&&(this._current.state=s.state,this._current.lastTime=o-this._current.startedTime),this.triggerApply()}getSnapshot(){return this.current?{state:this.state,current:{paramValues:this._current.paramValues,state:this._current.anim.stateSeri
7087alization?this._current.anim.stateSerialization.toJSON(this._current.state):this._current.state}}:{state:this.state}}setSnapshot(c){this.isEmpty||(this.updateState({animationState:c.state.animationState}),this.updateParams(c.state.params),c.current&&(this.current.paramValues=c.current.paramValues,this.current.state=this._current.anim.stateSerialization?this._current.anim.stateSerialization.fromJSON(c.current.state):c.current.state,this.triggerUpdate(),this.state.animationState==="playing"&&this.resume()))}async resume(){this._current.lastTime=0,this._current.startedTime=-1;const c=this._current.anim;this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),c.setup&&await c.setup(this._current.paramValues,this._current.state,this.context),this.isStopped=!1}constructor(c){super({params:{current:""},animationState:"stopped"}),this.context=c,this.map=new Map,this._animations=[],this.currentTime=0,this._params=void 0,this.events={updated:this.ev(),applied:this.ev()},this.isStopped=!0,this.isApplying=!1}}return Qb.PluginAnimationManager=n,Qb}var lM={},JP={},Zb={},s7;function _ce(){if(s7)return Zb;
7087s7=1,Object.defineProperty(Zb,"__esModule",{value:!0}),Zb.EVD=void 0;const e=ST();var t;(function(o){function s(f){return{size:f,matrix:e.Matrix.create(f,f),eigenValues:new Float64Array(f),D:new Float64Array(f),E:new Float64Array(f)}}o.createCache=s;function h(f){r(f.size,f.matrix.data,f.eigenValues,f.D,f.E)}o.compute=h})(t||(Zb.EVD=t={}));function r(o,s,h,f,y){for(let g=0;g<o;g++)y[g]=0;const _=o-1;for(let g=0;g<o;g++)f[g]=s[g*o+_];n(s,f,y,o),i(s,f,y,o);for(let g=0;g<o;g++)h[g]=f[g]}function n(o,s,h,f){for(let y=f-1;y>0;y--){let _=0,g=0;for(let a=0;a<y;a++)_=_+Math.abs(s[a]);if(_===0){h[y]=s[y-1];for(let a=0;a<y;a++)s[a]=o[a*f+y-1],o[a*f+y]=0,o[y*f+a]=0}else{for(let u=0;u<y;u++)s[u]/=_,g+=s[u]*s[u];let a=s[y-1],d=Math.sqrt(g);a>0&&(d=-d),h[y]=_*d,g=g-a*d,s[y-1]=a-d;for(let u=0;u<y;u++)h[u]=0;for(let u=0;u<y;u++){a=s[u],o[y*f+u]=a,d=h[u]+o[u*f+u]*a;for(let m=u+1;m<=y-1;m++)d+=o[u*f+m]*s[m],h[m]+=o[u*f+m]*a;h[u]=d}a=0;for(let u=0;u<y;u++)h[u]/=g,a+=h[u]*s[u];const p=a/(g+g);for(let u=0;u<y;u++)h[u]-=p*s[u];for(let u=0;u<y;u++){a=s[u],d=h[u];for(let m=u;m<=y-1;m++)o[u*f+m]-=a*h[m]+d*s[m];s[u]=o[u*f+y-1],o[u*f+y]=0}}s[y]=g}for(let y=0;y<f-1;y++){o[y*f+f-1]=o[y*f+y],o[y*f+y]=1;const _=s[y+1];if(_!==0){for(let g=0;g<=y;g++)s[g]=o[(y+1)*f+g]/_;for(let g=0;g<=y;g++){let a=0;for(let d=0;d<=y;d++)a+=o[(y+1)*f+d]*o[g*f+d];for(let d=0;d<=y;d++)o[g*f+d]-=a*s[d]}}for(let g=0;g<=y;g++)o[(y+1)*f+g]=0}for(let y=0;y<f;y++)s[y]=o[y*f+f-1],o[y*f+f-1]=0;o[f*f-1]=1,h[0]=0}function i(o,s,h,f){for(let d=1;d<f;d++)h[d-1]=h[d];h[f-1]=0;let _=0,g=0;const a=Math.pow(2,-53);for(let d=0;d<f;d++){g=Math.max(g,Math.abs(s[d])+Math.abs(h[d]));let p=d;for(;p<f&&!(Math.abs(h[p])<=a*g);)p++;if(p>d){let u=0;do{u=u+1;let m=s[d],v=(s[d+1]-m)/(2*h[d]),b=c(v,1);v<0&&(b=-b),s[d]=h[d]/(v+b),s[d+1]=h[d]*(v+b);const P=s[d+1];let C=m-s[d];for(let D=d+2;D<f;D++)s[D]-=C;_=_+C,v=s[p];let l=1,S=l,T=l;const A=h[d+1];let x=0,M=0;for(let D=p-1;D>=d;D--){T=S,S=l,M=x,m=l*h[D],C=l*v,b=c(v,h[D]),h[D+1]=x*b,x=h[D]/b,l=v/b,v=l*s[D]-x*m,s[D+1]=C+x*(l*m+x*s[D]);for(let V=0;V<f;V++)C=o[(D+1)*f+V],o[(D+1)*f+V]=x*o[D*f+V]+l*C,o[D*f+V]=l*o[D*f+V]-x*C}if(v=-x*M*T*A*h[d]/P,h[d]=x*v,s[d]=l*v,u>=1e3)throw new Error("SVD: Not converging.")}while(Math.abs(h[d])>a*g)}s[d]=s[d]+_,h[d]=0}for(let d=0;d<f-1;d++){let p=d,u=s[d];for(let m=d+1;m<f;m++)s[m]<u&&(p=m,u=s[m]);if(p!==d){s[p]=s[d],s[d]=u;for(let m=0;m<f;m++)u=o[d*f+m],o[d*f+m]=o[p*f+m],o[p*f+m]=u}}}function c(o,s){return Math.sqrt(o*o+s*s)}return Zb}var c7;function Sce(){if(c7)return JP;c7=1,Object.defineProperty(JP,"__esModule",{value:!0}),JP.leastObstructedDirection=i;const e=wt(),t=_ce(),r=ST();function n(c,o){if(Array.isArray(c))for(const s of c)o(s[0],s[1],s[2]);else{const{x:s,y:h,z:f}=c,y=Math.min(s.length,h.length,f.length);for(let _=0;_<y;_++)o(s[_],h[_],f[_])}}function i(c,o={}){var s;const h=o.origin,f=(s=o.minDistance)!==null&&s!==void 0?s:1e-6,y=f*f,_=o.sigma,g=_!==void 0&&_>0,a=g?2*_*_:1,d=t.EVD.createCache(3),p=d.matrix;r.Matrix.makeZero(p);const u=e.Vec3.zero();let m=0,v=0;if(n(c,(P,C,l)=>{let S=P,T=C,A=l;h&&(S-=h[0],T-=h[1],A-=h[2]);const x=S*S+T*T+A*A;if(x<=y)return;const D=1/Math.sqrt(x);S*=D,T*=D,A*=D;const V=g?Math.exp(-x/a):1;r.Matrix.add(p,0,0,V*S*S),r.Matrix.add(p,0,1,V*S*T),r.Matrix.add(p,0,2,V*S*A),r.Matrix.add(p,1,0,V*T*S),r.Matrix.add(p,1,1,V*T*T),r.Matrix.add(p,1,2,V*T*A),r.Matrix.add(p,2,0,V*A*S),r.Matrix.add(p,2,1,V*A*T),r.Matrix.add(p,2,2,V*A*A),u[0]+=V*S,u[1]+=V*T,u[2]+=V*A,m++,v+=V}),m===0||v<=0)return;t.EVD.compute(d);const b=e.Vec3.create(r.Matrix.get(p,0,0),r.Matrix.get(p,1,0),r.Matrix.get(p,2,0));if(!(e.Vec3.magnitude(b)<1e-6))return e.Vec3.normalize(b,b),e.Vec3.dot(b,u)>0&&e.Vec3.scale(b,b,-1),b}return JP}var Jb={},u7;function Cce(){if(u7)return Jb;u7=1,Object.defineProperty(Jb,"__esModule",{value:!0}),Jb.pcaFocus=s,Jb.getPcaTransform=h;const e=wt(),t=_l(),r=ta();function n(f){if(f.atomicResidueCount===1)return;const{polymerResidueCount:y}=f;if(y<=1)return;const _=2**Math.max(Math.ceil(Math.log10(y/1e3)),0),g=_===1?y:Math.ceil(y/_)+f.units.length,a=(0,e.Vec3)(),d=new Float32Array(3*g);let p=0;for(const u of f.units){const{polymerElements:m}=u.props,{conformation:v}=u;if(m)for(let b=0;b<m.length;b+=_)v.position(m[b],a),e.Vec3.toArray(a,d,3*p),p++}return d.length!==p?d.slice(0,3*p):d}function i(f,y,_){const g=_[0],a=_[1],d=_[2],p=-g*y[0]-a*y[1]-d*y[2],u=f[0],m=f[1],v=f[2];return(g*u+a*m+d*v+p)/Math.sqrt(g*g+a*a+d*d)}function c(f,y,_,g){const a=i(f,y,g);return{aroundX:i(f,y,_)<0,aroundY:a<0}}function o(f,y){if(f.units.length===1)return e.Vec3.create(y[0],y[1],y[2]);{const _=f.units.find(g=>g.props.polymerElements);if(_){const g=(0,e.Vec3)(),a=(0,e.Vec3)(),{polymerElements:d,conformation:p}=_;for(let u=0,m=d.length;u<m;
7087u++)p.position(d[u],g),e.Vec3.add(a,a,g);return e.Vec3.scale(a,a,1/d.length)}else return e.Vec3.create(y[0],y[1],y[2])}}function s(f,y,_){if(!f.canvas3d)return;const{origin:g,dirA:a,dirB:d,dirC:p}=_.principalAxes.boxAxes,u=e.Vec3.clone(a),m=e.Vec3.clone(p);if(_.positionToFlip){const{aroundX:b,aroundY:P}=c(_.positionToFlip,g,u,d);b&&(e.Vec3.negate(m,m),e.Vec3.negate(u,u)),P&&e.Vec3.negate(m,m)}const v=e.Vec3.scale((0,e.Vec3)(),g,-100);return e.Vec3.dot(v,u)<=0&&e.Vec3.negate(m,m),e.Vec3.dot(e.Vec3.unitY,m)<=0&&e.Vec3.negate(u,u),f.canvas3d.camera.getFocus(g,y,u,m,r.Camera.createDefaultSnapshot())}function h(f){var y;const _=(y=f[0].cell.obj)===null||y===void 0?void 0:y.data;if(!_)return;if("_pcaTransformData"in _.currentPropertyData)return _.currentPropertyData._pcaTransformData;const g=n(_);if(!g){_.currentPropertyData._pcaTransformData=void 0;return}const a=o(_,g),d={principalAxes:t.PrincipalAxes.ofPositions(g),positionToFlip:a};return _.currentPropertyData._pcaTransformData=d,d}return Jb}var tf={},l7;function hZ(){if(l7)return tf;l7=1,Object.defineProperty(tf,"__esModule",{value:!0}),tf.getFocusSnapshot=s,tf.getCellBoundingSphere=y,tf.getPluginBoundingSphere=a;const e=rt(),t=Ki(),r=Ge(),n=gt(),i=Ke(),c=Et(),o=jt();function s(m,v){var b,P;if(!m.canvas3d)return;const C=(b=v.targets)===null||b===void 0?void 0:b.map(S=>{var T,A,x,M;if(S.center!==void 0&&S.radius!==void 0)return e.Sphere3D.create(S.center,S.radius);const D=S.targetRef!==void 0?y(m,S.targetRef):a(m);if(!D)return;const V=(T=S.center)!==null&&T!==void 0?T:D.center,R=(A=S.radius)!==null&&A!==void 0?A:D.radius*((x=S.radiusFactor)!==null&&x!==void 0?x:1)+((M=S.extraRadius)!==null&&M!==void 0?M:0);return e.Sphere3D.create(V,R)}).filter(S=>S!==void 0),l=C&&C.length>0?u(C):a(m);return f(m.canvas3d.camera,{center:l.center,radius:Math.max(l.radius,(P=v.minRadius)!==null&&P!==void 0?P:0),up:v.up,direction:v.direction})}const h=(0,r.Vec3)();function f(m,v){var b,P;const C=v.center,l=Math.max(v.radius,.01),S=(b=v.direction)!==null&&b!==void 0?b:r.Vec3.sub((0,r.Vec3)(),m.target,m.position),T=r.Vec3.orthogonalize((0,r.Vec3)(),S,(P=v.up)!==null&&P!==void 0?P:m.up),A=m.getTargetDistance(l),x=r.Vec3.setMagnitude(h,S,A),M=r.Vec3.sub((0,r.Vec3)(),C,x);return{target:C,position:M,up:T,radius:l}}function y(m,v){const b=_([],m,v);if(b.length!==0)return b.length===1?b[0]:u(b)}function _(m,v,b){const P=v.state.data.cells.get(b),C=g(v,P);return C?m.push(...C):v.state.data.tree.children.get(b).forEach(S=>_(m,v,S)),m}function g(m,v){var b,P;const C=v?.obj;if(C){if(!C.data){console.warn("Focus: no data");return}if(C.data instanceof i.Structure){const l=c.StateSelection.getDecorated(m.state.data,v.transform.ref),S=(P=(b=l?.obj)===null||b===void 0?void 0:b.data)!==null&&P!==void 0?P:C?.data;if(S.isEmpty)return[];const T=n.Loci.getBoundingSphere(i.Structure.Loci(S));return T?[T]:[]}else if(o.PluginStateObject.isRepresentation3D(C)){const l=[];for(const S of C.data.repr.renderObjects){const T=S.values.boundingSphere.ref.value;T.radius>0&&l.push(T)}return l}}}function a(m){const b=d(m).map(P=>P.values.boundingSphere.ref.value).filter(P=>P.radius>0);return u(b)}function d(m,v){let b=Array.from(m.state.data.cells.values()).filter(C=>C.obj&&o.PluginStateObject.isRepresentation3D(C.obj));return b=b.filter(C=>!C.state.isHidden),b.flatMap(C=>C.obj.data.repr.renderObjects)}let p;function u(m){p??(p=new t.BoundaryHelper("98")),p.reset();for(const v of m)p.includeSphere(v);p.finishedIncludeStep();for(const v of m)p.radiusSphere(v);return p.getSphere()}return tf}var dM={},d7;function Pce(){return d7||(d7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ROTATION_MATRICES=void 0,e.structureLayingTransform=c,e.layingTransform=o,e.changeCameraRotation=d;
7087const t=Ge(),r=_l(),n=Ke(),i=3;e.ROTATION_MATRICES={identity:t.Mat3.create(1,0,0,0,1,0,0,0,1),rotX90:t.Mat3.create(1,0,0,0,0,1,0,-1,0),rotY90:t.Mat3.create(0,0,-1,0,1,0,1,0,0),rotZ90:t.Mat3.create(0,1,0,-1,0,0,0,0,1),rotX270:t.Mat3.create(1,0,0,0,0,-1,0,1,0),rotY270:t.Mat3.create(0,0,1,0,1,0,-1,0,0),rotZ270:t.Mat3.create(0,-1,0,1,0,0,0,0,1),rotX180:t.Mat3.create(1,0,0,0,-1,0,0,0,-1),rotY180:t.Mat3.create(-1,0,0,0,1,0,0,0,-1),rotZ180:t.Mat3.create(-1,0,0,0,-1,0,0,0,1)};function c(p,u){const m=s(p,i);return o(m,u)}function o(p,u){if(p.length===0)return console.warn("Skipping PCA, no atoms"),{rotation:e.ROTATION_MATRICES.identity,origin:t.Vec3.zero()};const m=r.PrincipalAxes.calculateMomentsAxes(p),v=r.PrincipalAxes.calculateNormalizedAxes(m),b=g(v.dirA,v.dirB,v.dirC);a(b);const P=u?f(b,u):y(p,b,m.origin);return t.Mat3.mul(b,P,b),{rotation:b,origin:v.origin}}function s(p,u){let m;return m=h(p,{onlyTrace:!0}),m.length>=3*u||(m=h(p,{skipHydrogens:!0,skipWater:!0}),m.length>=3*u)||(m=h(p,{})),m}function h(p,u){const{onlyTrace:m,skipHydrogens:v,skipWater:b}=u,{x:P,y:C,z:l,type_symbol:S,label_comp_id:T}=n.StructureProperties.atom,A=[];for(const x of p){const M=n.StructureElement.Location.create(x);for(const D of x.units){M.unit=D;const V=m?D.polymerElements:D.elements;for(let R=0;R<V.length;R++)M.element=V[R],!(v&&S(M)==="H")&&(b&&T(M)==="HOH"||A.push(P(M),C(M),l(M)))}}return A}function f(p,u){let m=e.ROTATION_MATRICES.identity,v=0;const b=(0,t.Mat3)();for(const P of[e.ROTATION_MATRICES.identity,e.ROTATION_MATRICES.rotX180,e.ROTATION_MATRICES.rotY180,e.ROTATION_MATRICES.rotZ180]){const C=t.Mat3.innerProduct(t.Mat3.mul(b,P,p),u);C>v&&(m=P,v=C)}return m}function y(p,u,m){const v=t.Vec3.create(t.Mat3.getValue(u,0,0),t.Mat3.getValue(u,0,1),t.Mat3.getValue(u,0,2)),b=t.Vec3.create(t.Mat3.getValue(u,1,0),t.Mat3.getValue(u,1,1),t.Mat3.getValue(u,1,2)),P=t.Vec3.create(t.Mat3.getValue(u,2,0),t.Mat3.getValue(u,2,1),t.Mat3.getValue(u,2,2)),C=Math.floor(p.length/3),l=(0,t.Vec3)();let S=0,T=0,A=0;for(let D=0;D<C;D++)t.Vec3.fromArray(l,p,3*D),t.Vec3.sub(l,l,m),S+=D*t.Vec3.dot(l,v),T+=D*t.Vec3.dot(l,b),A+=_(D,C)*t.Vec3.dot(l,P);const x=A<0,M=x?S+T<0:S-T<0;return M&&x?e.ROTATION_MATRICES.rotY180:x?e.ROTATION_MATRICES.rotX180:M?e.ROTATION_MATRICES.rotZ180:e.ROTATION_MATRICES.identity}function _(p,u){const m=Math.floor(u/2);return p<m?u%2?m-p:m-p-1:p-m}function g(p,u,m){const v=(0,t.Mat3)();return t.Mat3.setValue(v,0,0,p[0]),t.Mat3.setValue(v,0,1,p[1]),t.Mat3.setValue(v,0,2,p[2]),t.Mat3.setValue(v,1,0,u[0]),t.Mat3.setValue(v,1,1,u[1]),t.Mat3.setValue(v,1,2,u[2]),t.Mat3.setValue(v,2,0,m[0]),t.Mat3.setValue(v,2,1,m[1]),t.Mat3.setValue(v,2,2,m[2]),v}function a(p){t.Mat3.determinant(p)<0&&(t.Mat3.setValue(p,2,0,-t.Mat3.getValue(p,2,0)),t.Mat3.setValue(p,2,1,-t.Mat3.getValue(p,2,1)),t.Mat3.setValue(p,2,2,-t.Mat3.getValue(p,2,2)))}function d(p,u){const m=t.Mat3.invert((0,t.Mat3)(),u),v=t.Vec3.distance(p.position,p.target),b=t.Vec3.transformMat3((0,t.Vec3)(),t.Vec3.create(0,0,v),m),P=t.Vec3.transformMat3((0,t.Vec3)(),t.Vec3.create(0,1,0),m),C=t.Vec3.add((0,t.Vec3)(),p.target,b);return{...p,position:C,up:P}}})(dM)),dM}var f7;function Tce(){return f7||(f7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CameraManager=e.DefaultCameraFocusLociOptions=e.DefaultCameraFocusOptions=void 0;const t=Ki(),r=Ge(),n=Sce(),i=wt(),c=gt(),o=Ke(),s=jt(),h=Cce(),f=hZ(),y=Pce();e.DefaultCameraFocusOptions={minRadius:1,extraRadius:4,durationMs:250,zoomOut:!1,zoomOutOptions:{durationFactor:3.5}},e.DefaultCameraFocusLociOptions={...e.DefaultCameraFocusOptions,optimizeDirection:!1,optimizeDirectionUp:"current"};class _{transformedLoci(a){var d,p;if(o.StructureElement.Loci.is(a)){const u=(p=(d=this.plugin.helpers.substructureParent.get(a.structure))===null||d===void 0?void 0:d.obj)===null||p===void 0?void 0:p.data;u&&(a=o.StructureElement.Loci.remap(a,u))}return a}focusRenderObjects(a,d){if(!a)return;const p=[];for(const u of a){const m=u.values.boundingSphere.ref.value;m.radius!==0&&p.push(m)}this.focusSpheres(p,u=>u,d)}getFocusSphere(a){let d;if(Array.isArray(a)&&a.length>1){const p=[];for(const u of a){const m=c.Loci.getBoundingSphere(this.transformedLoci(u));m&&p.push(m)}if(p.length===0)return;this.boundaryHelper.reset();for(const u of p)this.boundaryHelper.includeSphere(u);this.boundaryHelper.finishedIncludeStep();
7087for(const u of p)this.boundaryHelper.radiusSphere(u);d=this.boundaryHelper.getSphere()}else if(Array.isArray(a)){if(a.length===0)return;d=c.Loci.getBoundingSphere(this.transformedLoci(a[0]))}else d=c.Loci.getBoundingSphere(this.transformedLoci(a));return d}focusLociOptimized(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const u=this.getFocusSphere(a);if(!u)return;const m=Array.isArray(a)?a:[a],v={x:[],y:[],z:[]},b=(0,i.Vec3)(),{extraRadius:P,minRadius:C}={...e.DefaultCameraFocusOptions,...d},l=Math.max(u.radius+P,C);if(l<=.001)return this.getFocusSphereSnapshot(u,d);const S=o.StructureProperties.entity.type;for(const x of m){if(!o.StructureElement.Loci.is(x))continue;const M=o.StructureElement.Loci.extendToRadius(x,l);o.StructureElement.Loci.forEachLocation(M,D=>{S(D)!=="water"&&(D.unit.conformation.position(D.element,b),v.x.push(b[0]),v.y.push(b[1]),v.z.push(b[2]))})}if(v.x.length===0)return this.getFocusSphereSnapshot(u,d);const T=(0,n.leastObstructedDirection)(v,{origin:u.center,minDistance:.001,sigma:u.radius});if(!T)return this.getFocusSphereSnapshot(u,d);i.Vec3.negate(T,T);const A=d?.optimizeDirectionUp==="default"?i.Vec3.unitY:i.Vec3.is(d?.optimizeDirectionUp)?d.optimizeDirectionUp:void 0;return A?p.camera.getInvariantFocus(u.center,l,A,T):p.camera.getFocus(u.center,l,void 0,T)}focusLociBase(a,d){const p=this.getFocusSphere(a);if(p)return this.getFocusSphereSnapshot(p,d)}focusLoci(a,d){if(!this.plugin.canvas3d)return;const p={...e.DefaultCameraFocusLociOptions,...d};let u;p.optimizeDirection?u=this.focusLociOptimized(a,p):u=this.focusLociBase(a,p),this.focusSnapshot(u,p)}focusSpheres(a,d,p){const u=[];for(const m of a){const v=d(m);v&&u.push(v)}if(u.length!==0){if(u.length===1)return this.focusSphere(u[0],p);this.boundaryHelper.reset();for(const m of u)this.boundaryHelper.includeSphere(m);this.boundaryHelper.finishedIncludeStep();
7087for(const m of u)this.boundaryHelper.radiusSphere(m);this.focusSphere(this.boundaryHelper.getSphere(),p)}}getFocusSphereSnapshot(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const{extraRadius:u,minRadius:m}={...e.DefaultCameraFocusOptions,...d},v=Math.max(a.radius+u,m);return d?.principalAxes?(0,h.pcaFocus)(this.plugin,v,d):p.camera.getFocus(a.center,v)}focusSnapshot(a,d){var p,u,m,v;if(!this.plugin.canvas3d||!a)return;const b=(p=d?.durationMs)!==null&&p!==void 0?p:e.DefaultCameraFocusOptions.durationMs;if(!d?.zoomOut){this.plugin.canvas3d.requestCameraReset({snapshot:a,durationMs:b});return}const P=this.plugin.canvas3d.boundingSphere,C=this.getFocusSphereSnapshot(P,d),l=(u=this.plugin.canvas3d)===null||u===void 0?void 0:u.camera.getSnapshot(),S=i.Vec3.distance(l.position,C.position),T=i.Vec3.distance(C.position,a.position),A=S/(S+T),M=1+((v=(m=d?.zoomOutOptions)===null||m===void 0?void 0:m.durationFactor)!==null&&v!==void 0?v:e.DefaultCameraFocusOptions.zoomOutOptions.durationFactor)*Math.min(A,.5);this.plugin.canvas3d.requestCameraReset({snapshot:a,durationMs:M*b,keyframes:A>.05?[{t:A,snapshot:C,easing:"cubic-out"},{t:1,snapshot:a,easing:"cubic-in"}]:void 0})}focusSphere(a,d){const{canvas3d:p}=this.plugin;if(!p)return;const u=this.getFocusSphereSnapshot(a,d);u&&this.focusSnapshot(u,d)}focusObject(a){var d,p;if(!this.plugin.canvas3d)return;const u=(0,f.getFocusSnapshot)(this.plugin,{...a,targets:(d=a.targets)===null||d===void 0?void 0:d.map(m=>{var v;return{...m,extraRadius:(v=m.extraRadius)!==null&&v!==void 0?v:e.DefaultCameraFocusOptions.extraRadius}}),minRadius:(p=a.minRadius)!==null&&p!==void 0?p:e.DefaultCameraFocusOptions.minRadius});this.focusSnapshot(u,a)}orientAxes(a,d){if(!this.plugin.canvas3d)return;a||(a=this.plugin.state.data.selectQ(b=>b.ofType(s.PluginStateObject.Molecule.Structure)).filter(b=>b.obj&&!b.transform.transformer.definition.isDecorator&&!b.obj.data.parent).map(b=>{var P;return(P=b.obj)===null||P===void 0?void 0:P.data}).filter(b=>!!b));const{rotation:p}=(0,y.structureLayingTransform)(a),u=(0,y.changeCameraRotation)(this.plugin.canvas3d.camera.getSnapshot(),p);this.setSnapshot(u,d)}resetAxes(a){if(!this.plugin.canvas3d)return;const d=(0,y.changeCameraRotation)(this.plugin.canvas3d.camera.getSnapshot(),r.Mat3.Identity);this.setSnapshot(d,a)}setSnapshot(a,d){var p;(p=this.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:a,durationMs:d})}reset(a,d){var p;(p=this.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:a,durationMs:d})}constructor(a){this.plugin=a,this.boundaryHelper=new t.BoundaryHelper("98")}}e.CameraManager=_})(lM)),lM}var rf={},m7;function xce(){if(m7)return rf;m7=1,Object.defineProperty(rf,"__esModule",{value:!0}),rf.InteractivityManager=void 0;const e=gt(),t=Ke(),r=Lt(),n=cn(),i=vr(),c=Ne(),o=Vi();class s extends o.StatefulPluginComponent{get props(){return{...this.state.props}}setProps(f){const y=this.props,_={...this.state.props,...f};(0,i.shallowEqual)(y,_)||(this.updateState({props:_}),this.lociSelects.setProps(_),this.lociHighlights.setProps(_),this.events.propsUpdated.next(void 0))}dispose(){super.dispose(),this.lociSelects.dispose(),this.lociHighlights.dispose()}constructor(f,y={}){super({props:{...c.ParamDefinition.getDefaultValues(s.Params),...y}}),this.plugin=f,this._props=c.ParamDefinition.getDefaultValues(s.Params),this.events={propsUpdated:this.ev()},this.lociSelects=new s.LociSelectManager(f,this._props),this.lociHighlights=new s.LociHighlightManager(f,this._props)}}return rf.InteractivityManager=s,(function(h){h.Params={granularity:c.ParamDefinition.Select("residue",e.Loci.GranularityOptions,{label:"Picking Level",description:"Controls if selections are expanded upon picking to whole residues, chains, structures, instances, or left as atoms and coarse elements"})};class f{setProps(a){Object.assign(this.props,a)}addProvider(a){this.providers.push(a)}removeProvider(a){this.providers=this.providers.filter(d=>d!==a)}normalizedLoci(a,d,p=!1){const{loci:u,repr:m}=a,v=d?this.props.granularity:void 0;return{loci:e.Loci.normalize(u,v,p),repr:m}}
7087mark(a,d,p=!1){if(!e.Loci.isEmpty(a.loci))for(const u of this.providers)u(a,d,p)}dispose(){this.providers.length=0,this.sel.dispose()}constructor(a,d={}){this.ctx=a,this.providers=[],this.props=c.ParamDefinition.getDefaultValues(h.Params),this.sel=a.managers.structure.selection,this.setProps(d)}}h.LociMarkManager=f;class y extends f{constructor(){super(...arguments),this.prev=[],this.clearHighlights=(a=!1)=>{for(const d of this.prev)this.mark(d,n.MarkerAction.RemoveHighlight,a);this.prev.length=0}}isHighlighted(a){for(const d of this.prev)if(r.Representation.Loci.areEqual(d,a))return!0;return!1}addHighlight(a){this.mark(a,n.MarkerAction.Highlight),this.prev.push(a)}highlight(a,d=!0){const p=this.normalizedLoci(a,d);this.isHighlighted(p)||this.addHighlight(p)}highlightOnly(a,d=!0){const p=this.normalizedLoci(a,d);this.isHighlighted(p)||(e.Loci.isEmpty(p.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(p)))}highlightOnlyExtend(a,d=!0){const p=this.normalizedLoci(a,d);if(t.StructureElement.Loci.is(p.loci)){const u=this.ctx.selectionMode?this.sel.tryGetRange(p.loci):this.ctx.managers.structure.focus.tryGetRange(p.loci),m={loci:u??p.loci,repr:p.repr};this.isHighlighted(m)||(e.Loci.isEmpty(m.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(m)))}}dispose(){super.dispose(),this.prev.length=0}}h.LociHighlightManager=y;class _ extends f{toggle(a,d=!0){if(e.Loci.isEmpty(a.loci))return;const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)?this.toggleSel(p):super.mark(p,n.MarkerAction.Toggle)}toggleExtend(a,d=!0){if(e.Loci.isEmpty(a.loci))return;const p=this.normalizedLoci(a,d,!0);if(t.StructureElement.Loci.is(p.loci)){const u=this.sel.tryGetRange(p.loci)||p.loci;this.toggleSel({loci:u,repr:p.repr})}}select(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("add",p.loci),this.mark(p,n.MarkerAction.Select)}selectJoin(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("intersect",p.loci),this.mark(p,n.MarkerAction.Select)}selectOnly(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&(this.mark({loci:t.Structure.Loci(p.loci.structure),repr:p.repr},n.MarkerAction.Deselect),this.sel.modify("set",p.loci)),this.mark(p,n.MarkerAction.Select)}deselect(a,d=!0){const p=this.normalizedLoci(a,d,!0);t.StructureElement.Loci.is(p.loci)&&this.sel.modify("remove",p.loci),this.mark(p,n.MarkerAction.Deselect)}deselectAll(){this.sel.clear(),this.mark({loci:e.EveryLoci},n.MarkerAction.Deselect)}deselectAllOnEmpty(a){(0,e.isEmptyLoci)(a.loci)&&this.deselectAll()}mark(a,d){const{loci:p}=a;
7087if(!e.Loci.isEmpty(p))if(t.StructureElement.Loci.is(p)){const u=this.sel.getLoci(p.structure);super.mark({loci:t.Structure.Loci(p.structure)},n.MarkerAction.Deselect,!e.Loci.isEmpty(u)),super.mark({loci:u},n.MarkerAction.Select)}else super.mark(a,d)}toggleSel(a){this.sel.has(a.loci)?(this.sel.modify("remove",a.loci),this.mark(a,n.MarkerAction.Deselect)):(this.sel.modify("add",a.loci),this.mark(a,n.MarkerAction.Select))}}h.LociSelectManager=_})(s||(rf.InteractivityManager=s={})),rf}var e_={},p7;function Ace(){if(p7)return e_;p7=1,Object.defineProperty(e_,"__esModule",{value:!0}),e_.LociLabelManager=void 0;const e=gt(),t=Lt(),r=cn(),n=Vt();class i{clearProviders(){this.providers=[],this.isDirty=!0,this.showLabels()}addProvider(o){this.providers.push(o),this.providers.sort((s,h)=>(h.priority||0)-(s.priority||0)),this.isDirty=!0,this.showLabels()}removeProvider(o){this.providers=this.providers.filter(s=>s!==o),this.isDirty=!0,this.showLabels()}mark(o,s){const h=this.locis.findIndex(f=>t.Representation.Loci.areEqual(o,f));h===-1&&s===r.MarkerAction.Highlight?(this.locis.push(o),this.isDirty=!0):h!==-1&&s===r.MarkerAction.RemoveHighlight&&((0,n.arrayRemoveAtInPlace)(this.locis,h),this.isDirty=!0)}showLabels(){this.ctx.behaviors.labels.highlight.next({labels:this.getLabels()})}getLabels(){if(this.isDirty){this.groupedLabels.clear(),this.labels.length=0;for(const o of this.providers)for(const s of this.locis){if(e.Loci.isEmpty(s.loci))continue;const h=o.label(s.loci,s.repr);if(h){const f=o.group?o.group(h):h.toString(),y=this.groupedLabels.get(f);y?y.push(h):this.groupedLabels.set(f,[h])}}
7087this.labels.length=0,this.groupedLabels.forEach((o,s)=>{const h=o.length,f=h>1&&o[0]!==o[1]?s:o[0];this.labels.push(h===1?f:`${f} <small>|| Ã ${h}</small>`)}),this.isDirty=!1}return this.labels}constructor(o){this.ctx=o,this.providers=[],this.locis=[],this.isDirty=!1,this.labels=[],this.groupedLabels=new Map,o.managers.interactivity.lociHighlights.addProvider((s,h,f)=>{this.providers.length!==0&&(this.mark(s,h),f||this.showLabels())})}}return e_.LociLabelManager=i,e_}var nf={},t_={},h7;function Mce(){if(h7)return t_;h7=1,Object.defineProperty(t_,"__esModule",{value:!0}),t_.setStructureOverpaint=s,t_.clearStructureOverpaint=h;const e=Ke(),t=Dr(),r=Et(),n=US(),i=vt(),c=gt(),o="overpaint-controls";async function s(_,g,a,d,p){await f(_,g,async(u,m,v)=>{if(p&&p.length>0&&!p.includes(m.params.values.type.name))return;const b=m.obj.data.sourceData,P=await d(b.root);if(c.Loci.isEmpty(P)||(0,c.isEmptyLoci)(P))return;const C={bundle:e.StructureElement.Bundle.fromLoci(P),color:a===-1?(0,i.Color)(0):a,clear:a===-1};if(v){const l=[...v.params.values.layers,C],S=y(l,b);u.to(v).update(n.Overpaint.toBundle(S))}else{const l=y([C],b);u.to(m.transform.ref).apply(t.StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle,n.Overpaint.toBundle(l),{tags:o})}})}async function h(_,g,a){await f(_,g,async(d,p,u)=>{a&&a.length>0&&!a.includes(p.params.values.type.name)||u&&d.delete(u.transform.ref)})}async function f(_,g,a){const d=_.state.data,p=d.build();for(const u of g)for(const m of u.representations){const v=d.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle,m.cell.transform.ref).withTag(o));await a(p,m.cell,v[0])}return p.commit({doNotUpdateCurrent:!0})}function y(_,g){const a=n.Overpaint.ofBundle(_,g.root),d=n.Overpaint.merge(a);return n.Overpaint.filter(d,g)}return t_}var eT={},g7;function Dce(){if(g7)return eT;g7=1,Object.defineProperty(eT,"__esModule",{value:!0}),eT.setStructureClipping=o;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=Yf(),c="clipping-controls";async function o(f,y,_,g,a){await s(f,y,async(d,p,u)=>{if(a&&a.length>0&&!a.includes(p.params.values.type.name))return;const m=p.obj.data.sourceData,v=await g(m.root);if(n.Loci.isEmpty(v)||(0,n.isEmptyLoci)(v))return;const b={bundle:e.StructureElement.Bundle.fromLoci(v),groups:_};if(u){const P=[...u.params.values.layers,b],C=h(P,m);d.to(u).update(i.Clipping.toBundle(C))}else{const P=h([b],m);d.to(p.transform.ref).apply(t.StateTransforms.Representation.ClippingStructureRepresentation3DFromBundle,i.Clipping.toBundle(P),{tags:c})}})}async function s(f,y,_){const g=f.state.data,a=g.build();for(const d of y)for(const p of d.representations){const u=g.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.ClippingStructureRepresentation3DFromBundle,p.cell.transform.ref).withTag(c));await _(a,p.cell,u[0])}return a.commit({doNotUpdateCurrent:!0})}function h(f,y){const _=i.Clipping.ofBundle(f,y.root),g=i.Clipping.merge(_);return i.Clipping.filter(g,y)}return eT}var r_={},y7;function Ice(){if(y7)return r_;y7=1,Object.defineProperty(r_,"__esModule",{value:!0}),r_.setStructureTransparency=o,r_.clearStructureTransparency=s;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=jS(),c="transparency-controls";async function o(y,_,g,a,d){await h(y,_,async(p,u,m)=>{if(d&&d.length>0&&!d.includes(u.params.values.type.name))return;const v=u.obj.data.sourceData,b=await a(v.root);if(n.Loci.isEmpty(b)||(0,n.isEmptyLoci)(b))return;const P={bundle:e.StructureElement.Bundle.fromLoci(b),value:g};if(m){const C=[...m.params.values.layers,P],l=f(C,v);p.to(m).update(i.Transparency.toBundle(l))}else{const C=f([P],v);p.to(u.transform.ref).apply(t.StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle,i.Transparency.toBundle(C),{tags:c})}})}async function s(y,_,g){await h(y,_,async(a,d,p)=>{g&&g.length>0&&!g.includes(d.params.values.type.name)||p&&a.delete(p.transform.ref)})}async function h(y,_,g){const a=y.state.data,d=a.build();for(const p of _)for(const u of p.representations){const m=a.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle,u.cell.transform.ref).withTag(c));await g(d,u.cell,m[0])}
7087return d.commit({doNotUpdateCurrent:!0})}function f(y,_){const g=i.Transparency.ofBundle(y,_.root),a=i.Transparency.merge(g);return i.Transparency.filter(a,_)}return r_}var n_={},v7;function wce(){if(v7)return n_;v7=1,Object.defineProperty(n_,"__esModule",{value:!0}),n_.setStructureSubstance=s,n_.clearStructureSubstance=h;const e=Ke(),t=Dr(),r=Et(),n=zS(),i=gt(),c=tc(),o="substance-controls";async function s(_,g,a,d,p){await f(_,g,async(u,m,v)=>{if(p&&p.length>0&&!p.includes(m.params.values.type.name))return;const b=m.obj.data.sourceData,P=await d(b.root);if(i.Loci.isEmpty(P)||(0,i.isEmptyLoci)(P))return;const C={bundle:e.StructureElement.Bundle.fromLoci(P),material:a??(0,c.Material)(),clear:!a};if(v){const l=[...v.params.values.layers,C],S=y(l,b);u.to(v).update(n.Substance.toBundle(S))}else{const l=y([C],b);u.to(m.transform.ref).apply(t.StateTransforms.Representation.SubstanceStructureRepresentation3DFromBundle,n.Substance.toBundle(l),{tags:o})}})}async function h(_,g,a){await f(_,g,async(d,p,u)=>{a&&a.length>0&&!a.includes(p.params.values.type.name)||u&&d.delete(u.transform.ref)})}async function f(_,g,a){const d=_.state.data,p=d.build();for(const u of g)for(const m of u.representations){const v=d.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.SubstanceStructureRepresentation3DFromBundle,m.cell.transform.ref).withTag(o));await a(p,m.cell,v[0])}return p.commit({doNotUpdateCurrent:!0})}function y(_,g){const a=n.Substance.ofBundle(_,g.root),d=n.Substance.merge(a);return n.Substance.filter(d,g)}return n_}var i_={},b7;function Vce(){if(b7)return i_;b7=1,Object.defineProperty(i_,"__esModule",{value:!0}),i_.setStructureEmissive=o,i_.clearStructureEmissive=s;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=HS(),c="emissive-controls";async function o(y,_,g,a,d){await h(y,_,async(p,u,m)=>{if(d&&d.length>0&&!d.includes(u.params.values.type.name))return;const v=u.obj.data.sourceData,b=await a(v.root);if(n.Loci.isEmpty(b)||(0,n.isEmptyLoci)(b))return;const P={bundle:e.StructureElement.Bundle.fromLoci(b),value:g};if(m){const C=[...m.params.values.layers,P],l=f(C,v);p.to(m).update(i.Emissive.toBundle(l))}else{const C=f([P],v);p.to(u.transform.ref).apply(t.StateTransforms.Representation.EmissiveStructureRepresentation3DFromBundle,i.Emissive.toBundle(C),{tags:c})}})}async function s(y,_,g){await h(y,_,async(a,d,p)=>{g&&g.length>0&&!g.includes(d.params.values.type.name)||p&&a.delete(p.transform.ref)})}async function h(y,_,g){const a=y.state.data,d=a.build();for(const p of _)for(const u of p.representations){const m=a.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.EmissiveStructureRepresentation3DFromBundle,u.cell.transform.ref).withTag(c));await g(d,u.cell,m[0])}return d.commit({doNotUpdateCurrent:!0})}function f(y,_){const g=i.Emissive.ofBundle(y,_.root),a=i.Emissive.merge(g);return i.Emissive.filter(a,_)}return i_}var af={},_7;function Ece(){if(_7)return af;_7=1,Object.defineProperty(af,"__esModule",{value:!0}),af.setStructureWiggle=s,af.clearStructureWiggle=h,af.setStructureWiggleFromUncertainty=a;const e=Ke(),t=Dr(),r=Et(),n=gt(),i=WS(),c=at(),o="wiggle-controls";async function s(d,p,u,m,v){await f(d,p,async(b,P,C)=>{if(v&&v.length>0&&!v.includes(P.params.values.type.name))return;const l=P.obj.data.sourceData,S=await m(l.root);if(n.Loci.isEmpty(S)||(0,n.isEmptyLoci)(S))return;const T={bundle:e.StructureElement.Bundle.fromLoci(S),value:u};if(C){const A=[...C.params.values.layers,T],x=y(A,l);b.to(C).update(i.Wiggle.toBundle(x))}else{const A=y([T],l);b.to(P.transform.ref).apply(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,i.Wiggle.toBundle(A),{tags:o})}})}async function h(d,p,u){await f(d,p,async(m,v,b)=>{u&&u.length>0&&!u.includes(v.params.values.type.name)||b&&m.delete(b.transform.ref)})}async function f(d,p,u){const m=d.state.data,v=m.build();for(const b of p)for(const P of b.representations){const C=m.select(r.StateSelection.Generators.ofTransformer(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,P.cell.transform.ref).withTag(o));await u(v,P.cell,C[0])}
7087return v.commit({doNotUpdateCurrent:!0})}function y(d,p){const u=i.Wiggle.ofBundle(d,p.root),m=i.Wiggle.merge(u);return i.Wiggle.filter(m,p)}function _(d,p){return e.Unit.isAtomic(d)?d.model.atomicConformation.B_iso_or_equiv.value(p):e.Unit.isSpheres(d)?d.model.coarseConformation.spheres.rmsf[p]:0}function g(d){let p=1/0,u=-1/0;for(const m of d.units){const v=m.elements;for(let b=0,P=v.length;b<P;b++){const C=_(m,v[b]);C<p&&(p=C),C>u&&(u=C)}}return isFinite(p)||(p=0),isFinite(u)||(u=0),{min:p,max:u}}async function a(d,p,u=1,m){await f(d,p,async(v,b,P)=>{if(m&&m.length>0&&!m.includes(b.params.values.type.name))return;const C=b.obj.data.sourceData,l=C.root,{min:S,max:T}=g(l),A=T-S;if(A<=0)return;const x=new Map;for(const V of l.units){const R=V.elements,E=new Map;for(let I=0,B=R.length;I<B;I++){const O=(_(V,R[I])-S)/A,F=Math.min(255,Math.round(O*255));E.has(F)||E.set(F,[]),E.get(F).push(I)}for(const[I,B]of E)x.has(I)||x.set(I,[]),x.get(I).push({unit:V,indices:B})}const M=[];for(const[V,R]of x){const E=V/255*u,I=[];for(const{unit:w,indices:O}of R)I.push({unit:w,indices:c.OrderedSet.ofSortedArray(new Int32Array(O))});const B=e.StructureElement.Loci(l,I);e.StructureElement.Loci.isEmpty(B)||M.push({bundle:e.StructureElement.Bundle.fromLoci(B),value:E})}if(M.length===0)return;const D=y(M,C);P?v.to(P).update(i.Wiggle.toBundle(D)):v.to(b.transform.ref).apply(t.StateTransforms.Representation.WiggleStructureRepresentation3DFromBundle,i.Wiggle.toBundle(D),{tags:o})})}return af}var S7;function Bce(){if(S7)return nf;S7=1,Object.defineProperty(nf,"__esModule",{value:!0}),nf.StructureComponentManager=void 0;const e=Tt(),t=Gl(),r=Ke(),n=If(),i=eC(),c=nt(),o=et(),s=Vr(),h=vr(),f=Ne(),y=Vi(),_=Mce(),g=C2(),a=jl(),d=$S(),p=Yf(),u=Dce(),m=Ice(),v=$w(),b=wce(),P=tc(),C=Pw(),l=Vce(),S=Ece(),T=jf(),A=rc();class x extends y.StatefulPluginComponent{get currentStructures(){return this.plugin.managers.structure.hierarchy.selection.structures}get pivotStructure(){return this.currentStructures[0]}_setSnapshotState(D){this.updateState({options:D}),this.events.optionsUpdated.next(void 0)}async setOptions(D){const V=D.interactions!==this.state.options.interactions;this.updateState({options:D}),this.events.optionsUpdated.next(void 0);const R=this.dataState.build();for(const E of this.currentStructures)for(const I of E.components)this.updateReprParams(R,I);return this.plugin.dataTransaction(async()=>{await R.commit(),await this.plugin.state.updateBehavior(v.StructureFocusRepresentation,E=>{E.ignoreHydrogens=D.hydrogens!=="all",E.ignoreHydrogensVariant=D.hydrogens==="only-polar"?"non-polar":"all",E.ignoreLight=D.ignoreLight,E.material=D.materialStyle,E.clip=D.clipObjects,E.interior=D.interior,E.animation=D.animation}),V&&await this.updateInterationProps()})}updateReprParams(D,V){const{hydrogens:R,visualQuality:E,ignoreLight:I,materialStyle:B,clipObjects:w,interior:O,animation:F}=this.state.options,L=R!=="all",U=R==="only-polar"?"non-polar":"all";for(const q of V.representations){if(q.cell.transform.transformer!==d.StructureRepresentation3D)continue;const N=q.cell.transform.params,k=N.type.params.interior,j=N.type.params.animation;(!!N.type.params.ignoreHydrogens!==L||N.type.params.ignoreHydrogensVariant!==U||N.type.params.quality!==E||N.type.params.ignoreLight!==I||!P.Material.areEqual(N.type.params.material,B)||!f.ParamDefinition.areEqual(C.Clip.Params,N.type.params.clip,w)||k&&!(0,T.areInteriorPropsEquals)(k,O)||j&&!(0,A.areAnimationPropsEqual)(j,F))&&D.to(q.cell).update(H=>{H.type.params.ignoreHydrogens=L,H.type.params.ignoreHydrogensVariant=U,H.type.params.quality=E,H.type.params.ignoreLight=I,H.type.params.material=B,H.type.params.clip=w,k&&(H.type.params.interior=O),j&&(H.type.params.animation=F)})}}async updateInterationProps(){var D,V,R;for(const E of this.currentStructures){const I=t.InteractionsProvider.getParams((D=E.cell.obj)===null||D===void 0?void 0:D.data);if(E.properties){const B=(V=E.properties.cell.transform.params)===null||V===void 0?void 0:V.properties[t.InteractionsProvider.descriptor.name];if(f.ParamDefinition.areEqual(I,B,this.state.options.interactions))continue;await this.dataState.build().to(E.properties.cell).update(w=>{w.properties[t.InteractionsProvider.descriptor.name]=this.state.options.interactions}).commit()}else{const B=this.plugin.customStructureProperties.getParams((R=E.cell.obj)===null||R===void 0?void 0:R.data),w=f.ParamDefinition.getDefaultValues(B);if(f.ParamDefinition.areEqual(I,w.properties[t.InteractionsProvider.descriptor.name],this.state.options.interactions))continue;w.properties[t.InteractionsProvider.descriptor.name]=this.state.options.interactions,await this.plugin.builders.structure.insertStructureProperties(E.cell,w)}}}applyPreset(D,V,R){return this.plugin.dataTransaction(async()=>{for(const E of D){const I=await this.plugin.builders.structure.representation.applyPreset(E.cell,V,R);await this.syncPreset(E,I)}},{canUndo:"Preset"})}syncPreset(D,V){if(!V||!V.components)return this.clearComponents([D]);const R=new Set;if((0,h.objectForEach)(V.components,w=>{w&&R.add(w.ref)}),V.representations&&(0,h.objectForEach)(V.representations,w=>{w&&R.add(w.ref)}),R.size===0)return this.clearComponents([D]);let E=!1;const I=this.dataState.build(),B=w=>{R.has(w.cell.transform.ref)||(E=!0,I.delete(w.cell))};for(const w of D.components){B(w);for(const O of w.representations)B(O);if(w.genericRepresentations)for(const O of w.genericRepresentations)B(O)}if(D.genericRepresentations)for(const w of D.genericRepresentations)B(w);if(E)return I.commit()}clear(D){return this.clearComponents(D)}selectThis(D){var V;const R=this.plugin.managers.structure.selection;R.clear();for(const E of D){const I=r.Structure.toSubStructureElementLoci(E.structure.cell.obj.data,(V=E.cell.obj)===null||V===void 0?void 0:V.data);R.fromLoci("set",I)}}canBeModified(D){return this.plugin.builders.structure.isComponentTransform(D.cell)}modifyByCurrentSelection(D,V){return this.plugin.runTask(c.Task.create("Modify Component",async R=>{const E=this.dataState.build();for(const I of D){if(!this.canBeModified(I))continue;const B=this.plugin.managers.structure.selection.getStructure(I.structure.cell.obj.data);!B||B.elementCount===0||this.modifyComponent(E,I,B,V)}await this.dataState.updateTree(E,{canUndo:"Modify Selection"}).runInContext(R)}))}toggleVisibility(D,V){if(D.length!==0)if(V){const R=D[0].representations.indexOf(V),E=!V.cell.state.isHidden;for(const I of D){const B=I.representations[R];
7087B&&(0,i.setSubtreeVisibility)(this.dataState,B.cell.transform.ref,E)}}else{const R=!D[0].cell.state.isHidden;for(const E of D)(0,i.setSubtreeVisibility)(this.dataState,E.cell.transform.ref,R)}}removeRepresentations(D,V){if(D.length===0)return;const R=[];if(V){const E=D[0].representations.indexOf(V);if(E<0)return;for(const I of D)I.representations[E]&&R.push(I.representations[E])}else for(const E of D)for(const I of E.representations)R.push(I);return this.plugin.managers.structure.hierarchy.remove(R,!0)}updateRepresentations(D,V,R){if(D.length===0)return Promise.resolve();const E=D[0].representations.indexOf(V);if(E<0)return Promise.resolve();const I=this.dataState.build();for(const B of D){const w=B.representations[E];w&&w.cell.transform.transformer===V.cell.transform.transformer&&I.to(w.cell).update(R)}return I.commit({canUndo:"Update Representation"})}updateRepresentationsTheme(D,V){var R,E,I,B;if(D.length===0)return;const w=this.dataState.build();for(const O of D)for(const F of O.representations){const L=F.cell.transform.params,U=typeof V=="function"?V(O,F):V,q=U.color==="default"?(0,g.createStructureColorThemeParams)(this.plugin,(R=O.structure.cell.obj)===null||R===void 0?void 0:R.data,L?.type.name):U.color?(0,g.createStructureColorThemeParams)(this.plugin,(E=O.structure.cell.obj)===null||E===void 0?void 0:E.data,L?.type.name,U.color,U.colorParams):void 0,N=U.size==="default"?(0,g.createStructureSizeThemeParams)(this.plugin,(I=O.structure.cell.obj)===null||I===void 0?void 0:I.data,L?.type.name):U.size?(0,g.createStructureSizeThemeParams)(this.plugin,(B=O.structure.cell.obj)===null||B===void 0?void 0:B.data,L?.type.name,U.size,U.sizeParams):void 0;(q||N)&&w.to(F.cell).update(k=>{q&&(k.colorTheme=q),N&&(k.sizeTheme=N)})}return w.commit({canUndo:"Update Theme"})}addRepresentation(D,V){if(D.length===0)return;const{hydrogens:R,visualQuality:E,ignoreLight:I,materialStyle:B,clipObjects:w,interior:O,animation:F}=this.state.options,q={ignoreHydrogens:R!=="all",ignoreHydrogensVariant:R==="only-polar"?"non-polar":"all",quality:E,ignoreLight:I,material:B,clip:w,interior:O,animation:F};return this.plugin.dataTransaction(async()=>{for(const N of D)await this.plugin.builders.structure.representation.addRepresentation(N.cell,{type:this.plugin.representation.structure.registry.get(V),typeParams:q})},{canUndo:"Add Representation"})}tryFindComponent(D,V){if(D.components.length!==0)return this.plugin.runTask(c.Task.create("Find Component",async R=>{var E,I;const B=(E=D.cell.obj)===null||E===void 0?void 0:E.data;if(!B)return;const w=r.StructureSelection.unionStructure(await V.getSelection(this.plugin,R,B));for(const O of D.components){const F=(I=O.cell.obj)===null||I===void 0?void 0:I.data;if(!(!F||!O.cell.parent)&&(0,n.structureAreEqual)(w,F))return O.cell}}))}async add(D,V){return this.plugin.dataTransaction(async()=>{const R=V||this.currentStructures;if(R.length===0)return;const{hydrogens:E,visualQuality:I,ignoreLight:B,materialStyle:w,clipObjects:O,interior:F,animation:L}=this.state.options,N={ignoreHydrogens:E!=="all",ignoreHydrogensVariant:E==="only-polar"?"non-polar":"all",quality:I,ignoreLight:B,material:w,clip:O,interior:F,animation:L},k=o.UUID.create22();for(const j of R){let H;D.options.checkExisting&&(H=await this.tryFindComponent(j,D.selection)),H||(H=await this.plugin.builders.structure.tryCreateComponentFromSelection(j.cell,D.selection,k,{label:D.options.label||(D.selection===a.StructureSelectionQueries.current?"Custom Selection":"")})),!(D.representation==="none"||!H)&&await this.plugin.builders.structure.representation.addRepresentation(H,{type:this.plugin.representation.structure.registry.get(D.representation),typeParams:N})}},{canUndo:"Add Selection"})}async applyTheme(D,V){return this.plugin.dataTransaction(async R=>{const E=V||this.currentStructures;if(E.length===0)return;const I=async B=>r.StructureSelection.toLociWithSourceUnits(await D.selection.getSelection(this.plugin,R,B));for(const B of E)if(D.action.name==="color"){const w=D.action.params;await(0,_.setStructureOverpaint)(this.plugin,B.components,w.color,I,D.representations)}else if(D.action.name==="resetColor")await(0,_.setStructureOverpaint)(this.plugin,B.components,-1,I,D.representations);else if(D.action.name==="transparency"){const w=D.action.params;await(0,m.setStructureTransparency)(this.plugin,B.components,w.value,I,D.representations)}else if(D.action.name==="emissive"){const w=D.action.params;await(0,l.setStructureEmissive)(this.plugin,B.components,w.value,I,D.representations)}else if(D.action.name==="material"){const w=D.action.params;await(0,b.setStructureSubstance)(this.plugin,B.components,w.material,I,D.representations)}else if(D.action.name==="resetMaterial")await(0,b.setStructureSubstance)(this.plugin,B.components,void 0,I,D.representations);else if(D.action.name==="clipping"){const w=D.action.params;await(0,u.setStructureClipping)(this.plugin,B.components,p.Clipping.Groups.fromN
7087ames(w.excludeGroups),I,D.representations)}else if(D.action.name==="wiggle"){const w=D.action.params;await(0,S.setStructureWiggle)(this.plugin,B.components,w.value,I,D.representations)}},{canUndo:"Apply Theme"})}modifyComponent(D,V,R,E){var I,B,w;const O=(I=V.cell.obj)===null||I===void 0?void 0:I.data;if(!O||(E==="subtract"||E==="intersect")&&!(0,n.structureAreIntersecting)(O,R))return;const F=(B=V.structure.cell.obj)===null||B===void 0?void 0:B.data,L=E==="union"?(0,n.structureUnion)(F,[O,R]):E==="intersect"?(0,n.structureIntersect)(O,R):(0,n.structureSubtract)(O,R);if(L.elementCount===0)D.delete(V.cell.transform.ref);else{const q={type:{name:"bundle",params:r.StructureElement.Bundle.fromSubStructure(F,L)},nullIfEmpty:!0,label:(w=V.cell.obj)===null||w===void 0?void 0:w.label};D.to(V.cell).update(q)}}updateLabel(D,V){var R,E;const I={type:(R=D.cell.params)===null||R===void 0?void 0:R.values.type,nullIfEmpty:(E=D.cell.params)===null||E===void 0?void 0:E.values.nullIfEmpty,label:V};this.dataState.build().to(D.cell).update(I).commit()}get dataState(){return this.plugin.state.data}clearComponents(D){const V=this.dataState.build();for(const R of D)for(const E of R.components)V.delete(E.cell.transform.ref);return V.commit({canUndo:"Clear Selections"})}constructor(D){super({options:f.ParamDefinition.getDefaultValues(x.OptionsParams)}),this.plugin=D,this.events={optionsUpdated:this.ev()}}}return nf.StructureComponentManager=x,(function(M){M.OptionsParams={hydrogens:f.ParamDefinition.Select("all",[["all","Show All"],["hide-all","Hide All"],["only-polar","Only Polar"]],{description:"Determine display of hydrogen atoms in representations"}),visualQuality:f.ParamDefinition.Select("auto",e.VisualQualityOptions,{description:"Control the visual/rendering quality of representations"}),ignoreLight:f.ParamDefinition.Boolean(!1,{description:"Ignore light for stylized rendering of representations"}),materialStyle:P.Material.getParam(),clipObjects:f.ParamDefinition.Group(C.Clip.Params),interactions:f.ParamDefinition.Group(t.InteractionsProvider.defaultParams,{label:"Non-covalent Interactions"}),interior:(0,T.getInteriorParam)(),animation:(0,A.getAnimationParam)()};function D(I,B){const{options:w}=I.query.structure.registry;return B={pivot:I.managers.structure.component.pivotStructure,allowNone:!0,hideSelection:!1,checkExisting:!1,...B},{selection:f.ParamDefinition.Select(w[1][0],w,{isHidden:B?.hideSelection}),representation:E(I,B?.pivot,B?.allowNone?[["none","< Create Later >"]]:[]),options:f.ParamDefinition.Group({label:f.ParamDefinition.Text(""),checkExisting:f.ParamDefinition.Boolean(!!B?.checkExisting,{help:()=>({description:"Checks if a selection with the specifield elements already exists to avoid creating duplicate components."})})})}}M.getAddParams=D;function V(I,B){const{options:w}=I.query.structure.registry;return{selection:f.ParamDefinition.Select(w[1][0],w,{isHidden:!1}),action:f.ParamDefinition.MappedStatic("color",{color:f.ParamDefinition.Group({color:f.ParamDefinition.Color(s.ColorNames.blue,{isExpanded:!0})},{isFlat:!0}),resetColor:f.ParamDefinition.EmptyGroup({label:"Reset Color"}),transparency:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),emissive:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),material:f.ParamDefinition.Group({material:P.Material.getParam({isFlat:!0})},{isFlat:!0}),resetMaterial:f.ParamDefinition.EmptyGroup({label:"Reset Material"}),clipping:f.ParamDefinition.Group({excludeGroups:f.ParamDefinition.MultiSelect([],f.ParamDefinition.objectToOptions(p.Clipping.Groups.Names))},{isFlat:!0}),wiggle:f.ParamDefinition.Group({value:f.ParamDefinition.Numeric(1,{min:0,max:5,step:.01})},{isFlat:!0})}),representations:f.ParamDefinition.MultiSelect([],R(I,B),{emptyValue:"All"})}}M.getThemeParams=V;function R(I,B){var w,O;return!((w=B?.cell.obj)===null||w===void 0)&&w.data?I.representation.structure.registry.getApplicableTypes((O=B.cell.obj)===null||O===void 0?void 0:O.data):I.representation.structure.registry.types}M.getRepresentationTypes=R;function E(I,B,w,O){const F=[...w,...R(I,B)];return f.ParamDefinition.Select(F[0][0],F,{label:O})}})(x||(nf.StructureComponentManager=x={})),nf}var a_={},of={},C7;function gZ(){if(C7)return of;
7087C7=1,Object.defineProperty(of,"__esModule",{value:!0}),of.StructureSelectionManager=void 0,of.getLociRange=b;const e=at(),t=Ki(),r=Ge(),n=gt(),i=Ke(),c=Et(),o=nt(),s=_a(),h=Vt(),f=Vi(),y=jt(),_=et(),g=_t(),a=new t.BoundaryHelper("98"),d=24;class p extends f.StatefulPluginComponent{get entries(){return this.state.entries}get additionsHistory(){return this.state.additionsHistory}get stats(){return this.state.stats?this.state.stats:(this.state.stats=this.calcStats(),this.state.stats)}getEntry(l){const S=this.plugin.helpers.substructureParent.get(l,!0);if(!S)return;const T=S.transform.ref;if(!this.entries.has(T)){const A=new m(i.StructureElement.Loci(l,[]));return this.entries.set(T,A),A}return this.entries.get(T)}calcStats(){let l=0,S=0;const T=i.StructureElement.Stats.create();this.entries.forEach(x=>{const{elements:M}=x.selection;if(M.length){l+=1;for(let D=0,V=M.length;D<V;++D)S+=e.OrderedSet.size(M[D].indices);i.StructureElement.Stats.add(T,T,i.StructureElement.Stats.ofLoci(x.selection))}});const A=(0,s.structureElementStatsLabel)(T,{countsOnly:!0});return{structureCount:l,elementCount:S,label:A}}add(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.union(S.selection,l),this.tryAddHistory(l),this.referenceLoci=l,this.events.loci.add.next(l),!i.StructureElement.Loci.areEqual(T,S.selection)}remove(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.subtract(S.selection,l),this.referenceLoci=l,this.events.loci.remove.next(l),!i.StructureElement.Loci.areEqual(T,S.selection)}intersect(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=i.StructureElement.Loci.intersect(S.selection,l),this.referenceLoci=l,!i.StructureElement.Loci.areEqual(T,S.selection)}set(l){if(!i.StructureElement.Loci.is(l))return!1;const S=this.getEntry(l.structure);if(!S)return!1;const T=S.selection;return S.selection=l,this.tryAddHistory(l),this.referenceLoci=void 0,!i.StructureElement.Loci.areEqual(T,S.selection)}modifyHistory(l,S,T,A=!1){const x=this.additionsHistory,M=x.indexOf(l);if(M<0)return;let D;switch(S){case"remove":(0,h.arrayRemoveAtInPlace)(x,M);break;case"up":D=M-1;break;case"down":D=M+1;break}if(D!==void 0){const V=T?Math.min(x.length,T):x.length;for(;;)if(D=D%V,D<0&&(D+=V),!A||x[M].loci.structure===x[D].loci.structure){const R=x[M];x[M]=x[D],x[D]=R;break}else D+=S==="up"?-1:1}this.events.additionsHistoryUpdated.next(void 0)}tryAddHistory(l){if(n.Loci.isEmpty(l))return;let S=0,T;for(const M of this.additionsHistory){if(n.Loci.areEqual(M.loci,l)){T=M;break}S++}if(T){(0,h.arrayRemoveAtInPlace)(this.additionsHistory,S),this.additionsHistory.unshift(T),this.events.additionsHistoryUpdated.next(void 0);return}const A=i.StructureElement.Stats.ofLoci(l),x=(0,s.structureElementStatsLabel)(A,{reverse:!0});this.additionsHistory.unshift({id:_.UUID.create22(),loci:l,label:x}),this.additionsHistory.length>d&&this.additionsHistory.pop(),this.events.additionsHistoryUpdated.next(void 0)}clearHistory(){this.state.additionsHistory.length!==0&&(this.state.additionsHistory=[],this.events.additionsHistoryUpdated.next(void 0))}clearHistoryForStructure(l){const S=[];for(const T of this.state.additionsHistory)T.loci.structure.root===l.root&&S.push(T);for(const T of S)this.modifyHistory(T,"remove");S.length!==0&&this.events.additionsHistoryUpdated.next(void 0)}onRemove(l,S){var T;this.entries.has(l)&&(this.entries.delete(l),S?.data&&this.clearHistoryForStructure(S.data),((T=this.referenceLoci)===null||T===void 0?void 0:T.structure)===S?.data&&(this.referenceLoci=void 0),this.state.stats=void 0,this.events.changed.next(void 0))}onUpdate(l,S,T){var A,x,M,D;if(S===T||S?.data===T.data)return;const V=this.plugin.helpers.substructureParent.get(T.data,!0);if(!V||l!==V.transform.ref||!this.entries.has(l))return;const R=(x=(A=this.plugin.helpers.substructureParent.get(T.data))===null||A===void 0?void 0:A.obj)===null||x===void 0?void 0:x.data;if(R)if(!S?.data||i.Structure.areUnitIdsAndIndicesEqual(S.data,T.data)){this.entries.set(l,v(this.entries.get(l),R)),((M=this.referenceLoci)===null||M===void 0?void 0:M.structure.root)===R.root&&(this.referenceLoci=i.StructureElement.Loci.remap(this.referenceLoci,R));let E=!1;for(const I of this.state.additionsHistory)I.loci.structure.root===R.root&&(I.loci=i.StructureElement.Loci.remap(I.loci,R),E=!0);E&&this.events.additionsHistoryUpdated.next(void 0)}else this.entries.set(l,new m(i.StructureElement.Loci(R,[]))),((D=this.referenceLoci)===null||D===void 0?void 0:D.structure.root)===R.root&&(this.referenceLoci=void 0),this.clearHistoryForStructure(R),this.state.stats=void 0,this.events.changed.next(void 0)}clear(){const l=this.entries.keys(),S=[];for(;;){const T=l.next();if(T.done)break;const A=this.entries.get(T.value);i.StructureElement.Loci.isEmpty(A.selection)||S.push(A.selection),A.selection=i.StructureElement.Loci(A.selection.structure,[])}return this.referenceLoci=void 0,this.state.stats=void 0,this.events.changed.next(void 0),this.events.loci.clear.next(void 0),this.clearHistory(),S}getLoci(l){const S=this.getEntry(l);return S?S.selection:n.EmptyLoci}getStructure(l){const S=this.getEntry(l);if(S)return S.structure}structureHasSelection(l){var S,T;const A=(T=(S=l.cell)===null||S===void 0?void 0:S.obj)===null||T===void 0?void 0:T.data;if(!A)return!1;const x=this.getEntry(A);return!!x&&!i.StructureElement.Loci.isEmpty(x.selection)}has(l){if(i.StructureElement.Loci.is(l)){const S=this.getEntry(l.structure);if(S)return i.StructureElement.Loci.isSubset(S.selection,l)}return!1}tryGetRange(l){if(i.StructureElement.Loci.is(l)&&this.getEntry(l.structure))return b(this.referenceLoci,l)}elementCount(){let l=0;
7087return this.entries.forEach(S=>{l+=i.StructureElement.Loci.size(S.selection)}),l}getBoundary(){const l=r.Vec3.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),S=r.Vec3.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);a.reset();const T=[];this.entries.forEach(A=>{const x=A.selection;i.StructureElement.Loci.isEmpty(x)||T.push(i.StructureElement.Loci.getBoundary(x))});for(let A=0,x=T.length;A<x;++A){const{box:M,sphere:D}=T[A];r.Vec3.min(l,l,M.min),r.Vec3.max(S,S,M.max),a.includePositionRadius(D.center,D.radius)}a.finishedIncludeStep();for(let A=0,x=T.length;A<x;++A){const{sphere:M}=T[A];a.radiusPositionRadius(M.center,M.radius)}return{box:{min:l,max:S},sphere:a.getSphere()}}getPrincipalAxes(){const l=(0,g.iterableToArray)(this.entries.values());return i.StructureElement.Loci.getPrincipalAxesMany(l.map(S=>S.selection))}modify(l,S){let T=!1;switch(l){case"add":T=this.add(S);break;case"remove":T=this.remove(S);break;case"intersect":T=this.intersect(S);break;case"set":T=this.set(S);break}T&&(this.state.stats=void 0,this.events.changed.next(void 0))}get applicableStructures(){return this.plugin.managers.structure.hierarchy.selection.structures.filter(l=>!!l.cell.obj).map(l=>l.cell.obj.data)}triggerInteraction(l,S,T=!0){switch(l){case"add":this.plugin.managers.interactivity.lociSelects.select({loci:S},T);break;case"remove":this.plugin.managers.interactivity.lociSelects.deselect({loci:S},T);break;case"intersect":this.plugin.managers.interactivity.lociSelects.selectJoin({loci:S},T);break;case"set":this.plugin.managers.interactivity.lociSelects.selectOnly({loci:S},T);break}}fromLoci(l,S,T=!0){this.triggerInteraction(l,S,T)}fromCompiledQuery(l,S,T=!0){for(const A of this.applicableStructures){const x=S(new i.QueryContext(A));this.triggerInteraction(l,i.StructureSelection.toLociWithSourceUnits(x),T)}}fromSelectionQuery(l,S,T=!0){this.plugin.runTask(o.Task.create("Structure Selection",async A=>{for(const x of this.applicableStructures){const M=await S.getSelection(this.plugin,A,x);this.triggerInteraction(l,i.StructureSelection.toLociWithSourceUnits(M),T)}}))}fromSelections(l){var S;const T=c.StateObjectRef.resolveAndCheck(this.plugin.state.data,l);if(!(!T||!T.obj)){if(!y.PluginStateObject.Molecule.Structure.Selections.is(T.obj)){console.warn("fromSelections applied to wrong object type.",T.obj);return}this.clear();for(const A of(S=T.obj)===null||S===void 0?void 0:S.data)this.fromLoci("set",A.loci)}}getSnapshot(){const l=[];return this.entries.forEach((S,T)=>{l.push({ref:T,bundle:i.StructureElement.Bundle.fromLoci(S.selection)})}),{entries:l}}setSnapshot(l){var S,T;this.entries.clear();for(const{ref:A,bundle:x}of l.entries){const M=(T=(S=this.plugin.state.data.select(c.StateSelection.Generators.byRef(A))[0])===null||S===void 0?void 0:S.obj)===null||T===void 0?void 0:T.data;if(!M)continue;const D=i.StructureElement.Bundle.toLoci(x,M);this.fromLoci("set",D,!1)}}constructor(l){super({entries:new Map,additionsHistory:[],stats:u()}),this.plugin=l,this.events={changed:this.ev(),additionsHistoryUpdated:this.ev(),loci:{add:this.ev(),remove:this.ev(),clear:this.ev()}},l.helpers.substructureParent.events.removed.subscribe(S=>this.onRemove(S.ref,S.obj)),l.helpers.substructureParent.events.updated.subscribe(S=>this.onUpdate(S.ref,S.oldObj,S.obj))}}of.StructureSelectionManager=p;function u(){return{structureCount:0,elementCount:0,label:"Nothing Selected"}}class m{get selection(){return this._selection}set selection(l){this._selection=l,this._structure=void 0}get structure(){return this._structure?this._structure:(n.Loci.isEmpty(this._selection)?this._structure=void 0:this._structure=i.StructureElement.Loci.toStructure(this._selection),this._structure)}constructor(l){this._structure=void 0,this._selection=l}}function v(C,l){return new m(i.StructureElement.Loci.remap(C.selection,l))}function b(C,l){if(!i.StructureElement.Loci.is(C)||!i.StructureElement.Loci.is(l)||C.structure!==l.structure||l.elements.length!==1)return;const S=l.elements[0];if(!S)return;let T;for(const A of C.elements)if(S.unit===A.unit){T=A;break}if(T&&S.unit===T.unit)return P(l.structure,T,S)}function P(C,l,S){const T=Math.min(e.OrderedSet.min(l.indices),e.OrderedSet.min(S.indices)),A=Math.max(e.OrderedSet.max(l.indices),e.OrderedSet.max(S.indices));return i.StructureElement.Loci(C,[{unit:l.unit,indices:e.OrderedSet.ofRange(T,A)}])}return of}var P7;function Rce(){if(P7)return a_;
7087P7=1,Object.defineProperty(a_,"__esModule",{value:!0}),a_.StructureFocusManager=void 0;const e=rt(),t=Ge(),r=gt(),n=Ke(),i=Et(),c=_a(),o=Vt(),s=Vi(),h=jt(),f=gZ(),y=8;class _ extends s.StatefulPluginComponent{get current(){return this.state.current}get history(){return this.state.history}tryAddHistory(d){if(n.StructureElement.Loci.isEmpty(d.loci))return;let p=0,u;for(const m of this.state.history){if(n.StructureElement.Loci.areEqual(m.loci,d.loci)){u=m;break}p++}if(u){(0,o.arrayRemoveAtInPlace)(this.state.history,p),this.state.history.unshift(d),this.events.historyUpdated.next(void 0);return}this.state.history.unshift(d),this.state.history.length>y&&this.state.history.pop(),this.events.historyUpdated.next(void 0)}set(d){this.tryAddHistory(d),(!this.state.current||!n.StructureElement.Loci.areEqual(this.state.current.loci,d.loci))&&(this.state.current=d,this.behaviors.current.next(d))}tryGetRange(d){return(0,f.getLociRange)(this.referenceLoci,d)}setFromLoci(d){const p=r.Loci.normalize(d);if(!n.StructureElement.Loci.is(p)||n.StructureElement.Loci.isEmpty(p)){this.clear();return}this.set({loci:p,label:(0,c.lociLabel)(p,{reverse:!0,hidePrefix:!0,htmlStyling:!1})}),this.referenceLoci=p}addFromLoci(d){const p=this.state.current&&n.StructureElement.Loci.is(d)&&d.structure===this.state.current.loci.structure?n.StructureElement.Loci.union(d,this.state.current.loci):d;this.setFromLoci(p);const u=r.Loci.normalize(d);this.referenceLoci=n.StructureElement.Loci.is(u)?u:void 0}toggleFromLoci(d){var p;const{kind:u,loci:m}=g((p=this.state.current)===null||p===void 0?void 0:p.loci,d);this.setFromLoci(m);const v=r.Loci.normalize(d);this.referenceLoci=n.StructureElement.Loci.is(v)&&u!=="subtract"?v:void 0}extendFromLoci(d){var p;const u=(p=this.tryGetRange(d))!==null&&p!==void 0?p:d;this.toggleFromLoci(u)}clear(){this.state.current&&(this.state.current=void 0,this.behaviors.current.next(void 0)),this.referenceLoci=void 0}getSnapshot(){if(!this.current)return{};const d=this.plugin.helpers.substructureParent.get(this.current.loci.structure),p=d?.transform.ref;return p?{current:{label:this.current.label,ref:p,bundle:n.StructureElement.Bundle.fromLoci(this.current.loci),category:this.current.category}}:{}}setSnapshot(d){var p,u;if(!d.current){this.clear();return}const{label:m,ref:v,bundle:b,category:P}=d.current,C=(u=(p=this.plugin.state.data.select(i.StateSelection.Generators.byRef(v))[0])===null||p===void 0?void 0:p.obj)===null||u===void 0?void 0:u.data;if(!C)return;const l=n.StructureElement.Bundle.toLoci(b,C);this.set({label:m,loci:l,category:P})}constructor(d){super({history:[]}),this.plugin=d,this.events={historyUpdated:this.ev()},this.behaviors={current:this.ev.behavior(void 0)},d.state.data.events.object.removed.subscribe(({obj:u})=>{var m;if(!h.PluginStateObject.Molecule.Structure.is(u))return;((m=this.current)===null||m===void 0?void 0:m.loci.structure)===u.data&&this.clear();const v=[];for(const b of this.history)b.loci.structure===u.data&&v.push(b);v.length!==this.history.length&&(this.history.length=0,this.history.push(...v),this.events.historyUpdated.next(void 0))});const p=(0,e.Sphere3D)();d.state.data.events.object.updated.subscribe(({oldData:u,obj:m,action:v})=>{var b;if(h.PluginStateObject.Molecule.Structure.is(m)&&u!==m.data&&v==="in-place"){const P=this.state.current,C=m.data;if(P&&P.loci.structure===u){const l=n.StructureElement.Loci.remap(P.loci,C);this.state.current={...P,loci:l},this.behaviors.current.next(this.state.current),r.Loci.getBoundingSphere(l,p);const S=(b=this.plugin.canvas3d)===null||b===void 0?void 0:b.camera,T=S.getTargetDistance(p.radius+4);(t.Vec3.distance(S.target,p.center)>p.radius||T>S.viewport.height/S.zoom)&&this.plugin.managers.camera.focusSphere(p,{durationMs:0})}}})}}a_.StructureFocusManager=_;function g(a,d){return a&&n.StructureElement.Loci.is(d)&&d.structure===a.structure?n.StructureElement.Loci.isSubset(a,d)?{kind:"subtract",loci:n.StructureElement.Loci.subtract(a,d)}:{kind:"add",loci:n.StructureElement.Loci.union(d,a)}:{kind:"new",loci:d}}return a_}var sf={},o_={},cf={},s_={},T7;
7087function Oce(){if(T7)return s_;T7=1,Object.defineProperty(s_,"__esModule",{value:!0}),s_.LRUCache=void 0;const e=zD();var t;return(function(r){function n(h,f){return{key:h,data:f}}function i(h){return{entries:(0,e.LinkedList)(),capacity:Math.max(1,h)}}r.create=i;function c(h,f){for(let y=h.entries.first;y;y=y.next)if(y.value.key===f)return h.entries.remove(y),h.entries.addLast(y.value),y.value.data}r.get=c;function o(h,f,y){let _;if(h.entries.count>=h.capacity){const g=h.entries.first;_=g.value.data,h.entries.remove(g)}return h.entries.addLast(n(f,y)),_}r.set=o;function s(h,f){for(let y=h.entries.first;y;y=y.next)if(y.value.key===f){h.entries.remove(y);break}}r.remove=s})(t||(s_.LRUCache=t={})),s_}var c_={},x7;function kce(){if(x7)return c_;x7=1,Object.defineProperty(c_,"__esModule",{value:!0}),c_.SingleAsyncQueue=void 0;class e{constructor(r=!1){this.isRunning=!1,this.queue=[],this.counter=0,this.log=r}enqueue(r){this.log&&console.log("SingleAsyncQueue enqueue",this.counter),this.queue[0]={id:this.counter,func:r},this.counter++,this.run()}async run(){if(this.isRunning)return;const r=this.queue.pop();if(r){this.isRunning=!0;try{this.log&&console.log("SingleAsyncQueue run",r.id),await r.func(),this.log&&console.log("SingleAsyncQueue complete",r.id)}finally{this.isRunning=!1,this.run()}}}}return c_.SingleAsyncQueue=e,c_}var A7;function yZ(){if(A7)return cf;A7=1,Object.defineProperty(cf,"__esModule",{value:!0}),cf.VolumeStreaming=void 0;const e=Ne(),t=jt(),r=sn(),n=rt(),i=Ge(),c=vt(),o=di(),s=Oce(),h=Ww(),f=Ti(),y=Tw(),_=Sn(),g=Et(),a=Ke(),d=gt(),p=Ha(),u=cI(),m=Rn(),v=kce();class b extends t.PluginStateObject.CreateBehavior({name:"Volume Streaming"}){}return cf.VolumeStreaming=b,(function(P){P.RootTag="volume-streaming-info";function C(D,V,R,E,I={}){var B,w,O,F;return e.ParamDefinition.Group({isoValue:r.Volume.createIsoValueParam((B=I.isoValue)!==null&&B!==void 0?B:R,E),color:e.ParamDefinition.Color((w=I.color)!==null&&w!==void 0?w:V),wireframe:e.ParamDefinition.Boolean((O=I.wireframe)!==null&&O!==void 0?O:!1),opacity:e.ParamDefinition.Numeric((F=I.opacity)!==null&&F!==void 0?F:.3,{min:0,max:1,step:.01})},{label:D,isExpanded:!0})}const l={byteOffset:0,rate:1,sampleCount:[1,1,1],valuesInfo:[{mean:0,min:-1,max:1,sigma:.1},{mean:0,min:-1,max:1,sigma:.1}]};function S(D={}){const{data:V,defaultView:R,channelParams:E}=D,I=new Map;V&&V.entries.forEach(O=>I.set(O.dataId,O));const B=V?V.entries.map(O=>[O.dataId,O.dataId]):[],w=V?V.entries[0].dataId:"";return{entry:e.ParamDefinition.Mapped(w,B,O=>e.ParamDefinition.Group(T({entryData:I.get(O),defaultView:R,structure:V&&V.structure,channelParams:E})))}}P.createParams=S;function T(D){const{entryData:V,defaultView:R,structure:E,channelParams:I={}}=D,B=V||{kind:"em",header:{sampling:[l],availablePrecisions:[{precision:0,maxVoxels:0}]},emDefaultContourLevel:r.Volume.IsoValue.relative(0)},w=E&&E.boundary.box||(0,n.Box3D)();return{view:e.ParamDefinition.MappedStatic(R||(B.kind==="em"?"auto":"selection-box"),{off:e.ParamDefinition.Group({}),box:e.ParamDefinition.Group({bottomLeft:e.ParamDefinition.Vec3(w.min),topRight:e.ParamDefinition.Vec3(w.max)},{description:"Static box defined by cartesian coords.",isFlat:!0}),"selection-box":e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in â« within which the volume is shown."}),bottomLeft:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0}),"camera-target":e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),dynamicDetailLevel:A(B.header.availablePrecisions,0,{label:"Dynamic Detail"}),bottomLeft:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(i.Vec3.create(0,0,0),{},{isHidden:!0})},{description:"Box around camera target.",isFlat:!0}),cell:e.ParamDefinition.Group({}
7087),auto:e.ParamDefinition.Group({radius:e.ParamDefinition.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in â« within which the volume is shown."}),selectionDetailLevel:A(B.header.availablePrecisions,6,{label:"Selection Detail"}),isSelection:e.ParamDefinition.Boolean(!1,{isHidden:!0}),bottomLeft:e.ParamDefinition.Vec3(w.min,{},{isHidden:!0}),topRight:e.ParamDefinition.Vec3(w.max,{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0})},{options:P.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Interaction" shows the volume around the focused element/atom. "Whole Structure" shows the volume for the whole structure.'}),detailLevel:A(B.header.availablePrecisions,3),channels:B.kind==="em"?e.ParamDefinition.Group({em:C("EM",(0,c.Color)(6524815),B.emDefaultContourLevel||r.Volume.IsoValue.relative(1),B.header.sampling[0].valuesInfo[0],I.em)},{isFlat:!0}):e.ParamDefinition.Group({"2fo-fc":C("2Fo-Fc",(0,c.Color)(3367602),r.Volume.IsoValue.relative(1.5),B.header.sampling[0].valuesInfo[0],I["2fo-fc"]),"fo-fc(+ve)":C("Fo-Fc(+ve)",(0,c.Color)(3390259),r.Volume.IsoValue.relative(3),B.header.sampling[0].valuesInfo[1],I["fo-fc(+ve)"]),"fo-fc(-ve)":C("Fo-Fc(-ve)",(0,c.Color)(12268339),r.Volume.IsoValue.relative(-3),B.header.sampling[0].valuesInfo[1],I["fo-fc(-ve)"])},{isFlat:!0})}}P.createEntryParams=T;function A(D,V,R){return e.ParamDefinition.Select(Math.min(V,D.length-1),D.map((E,I)=>[I,`${I+1} [ ${Math.pow(E.maxVoxels,1/3)|0}^3 cells ]`]),{description:"Determines the maximum number of voxels. Depending on the size of the volume options are in the range from 1 (0.52M voxels) to 7 (25.17M voxels).",...R})}function x(D){return{entry:{name:D.entry.name,params:{detailLevel:D.entry.params.detailLevel,channels:D.entry.params.channels,view:{name:D.entry.params.view.name,params:{...D.entry.params.view.params}}}}}}P.copyParams=x,P.ViewTypeOptions=[["off","Off"],["box","Bounded Box"],["selection-box","Around Focus"],["camera-target","Around Camera"],["cell","Whole Structure"],["auto","Auto"]],P.ChannelTypeOptions=[["em","em"],["2fo-fc","2fo-fc"],["fo-fc(+ve)","fo-fc(+ve)"],["fo-fc(-ve)","fo-fc(-ve)"]];class M extends o.PluginBehavior.WithSubscribers{get info(){return this.infoMap.get(this.params.entry.name)}async queryData(V){let R=(0,h.urlCombine)(this.data.serverUrl,`${this.info.kind}/${this.info.dataId.toLowerCase()}`);if(V){const{min:L,max:U}=V;R+=`/box/${L.map(q=>Math.round(1e3*q)/1e3).join(",")}/${U.map(q=>Math.round(1e3*q)/1e3).join(",")}`}else R+="/cell";let E=this.params.entry.params.detailLevel;this.params.entry.params.view.name==="auto"&&this.params.entry.params.view.params.isSelection&&(E=this.params.entry.params.view.params.selectionDetailLevel),this.params.entry.params.view.name==="camera-target"&&V&&(E=this.decideDetail(V,this.params.entry.params.view.params.dynamicDetailLevel)),R+=`?detail=${E}`;const I=s.LRUCache.get(this.cache,R);if(I)return I.data;const B=p.Asset.getUrlAsset(this.plugin.managers.asset,R),w=await this.plugin.runTask(this.plugin.managers.asset.resolve(B,"binary")),O=await this.parseCif(w.data);if(!O)return;const F=s.LRUCache.set(this.cache,R,{data:O,asset:w});return F&&F.asset.dispose(),O}async parseCif(V){const R=await this.plugin.runTask(f.CIF.parseBinary(V));if(R.isError){this.plugin.log.error("VolumeStreaming, parsing CIF: "+R.toString());return}if(R.result.blocks.length<2){this.plugin.log.error("VolumeStreaming: Invalid data.");return}const E={};for(let I=1;I<R.result.blocks.length;I++){const B=R.result.blocks[I],w=f.CIF.schema.densityServer(B),O=await this.plugin.runTask((0,y.volumeFromDensityServerData)(w));E[B.header]=O}return E}async updateParams(V,R=!1){const E=x(this.params),I=E.entry.params.view.name;I!=="off"&&I!=="cell"&&(E.entry.params.view.params.bottomLeft=V?.min||i.Vec3.zero(),E.entry.params.view.params.topRight=V?.max||i.Vec3.zero()),I==="auto"&&(E.entry.params.view.params.isSelection=R);const B=this.plugin.state.data,w=B.build().to(this.ref).update(E);await _.PluginCommands.State.Update(this.plugin,{state:B,tree:w,options:{doNotUpdate
7087Current:!0}})}getStructureRoot(){return this.plugin.state.data.select(g.StateSelection.Generators.byRef(this.ref).rootOfType(t.PluginStateObject.Molecule.Structure))[0]}register(V){this.ref=V,this.subscribeObservable(this.plugin.state.events.object.removed,R=>{!t.PluginStateObject.Molecule.Structure.is(R.obj)||!a.StructureElement.Loci.is(this.lastLoci)||this.lastLoci.structure===R.obj.data&&(this.lastLoci=d.EmptyLoci)}),this.subscribeObservable(this.plugin.state.events.object.updated,R=>{!t.PluginStateObject.Molecule.Structure.is(R.oldObj)||!a.StructureElement.Loci.is(this.lastLoci)||this.lastLoci.structure===R.oldObj.data&&(this.lastLoci=d.EmptyLoci)}),this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,R=>{if(!this.plugin.state.data.tree.children.has(this.ref))return;const E=R?R.loci:d.EmptyLoci;switch(this.params.entry.params.view.name){case"auto":this.updateAuto(E);break;case"selection-box":this.updateSelectionBox(E);break;default:this.lastLoci=E;break}})}unregister(){let V=this.cache.entries.first;for(;V;)V.value.data.asset.dispose(),V=V.next}isCameraTargetSame(V,R){if(!V||!R)return!1;const E=i.Vec3.equals(V.target,R.target),I=i.Vec3.squaredDistance(V.target,V.position),B=i.Vec3.squaredDistance(R.target,R.position),w=Math.abs(I-B)/I<.001;return E&&w}cameraTargetDistance(V){return i.Vec3.distance(V.target,V.position)}getBoxFromLoci(V){var R,E,I;if(d.Loci.isEmpty(V)||(0,d.isEmptyLoci)(V))return(0,n.Box3D)();const B=this.plugin.helpers.substructureParent.get(V.structure,!0);if(!B)return(0,n.Box3D)();const w=this.getStructureRoot();if(!w||((R=w.obj)===null||R===void 0?void 0:R.data)!==((E=B.obj)===null||E===void 0?void 0:E.data))return(0,n.Box3D)();const O=u.GlobalModelTransformInfo.get((I=w.obj)===null||I===void 0?void 0:I.data.models[0]);O&&i.Mat4.invert(this._invTransform,O);const F=a.StructureElement.Loci.extendToWholeResidues(V),L=a.StructureElement.Loci.getBoundary(F).box;return O&&!Number.isNaN(this._invTransform[0])&&n.Box3D.transform(L,L,this._invTransform),a.StructureElement.Loci.size(F)===1&&n.Box3D.expand(L,L,i.Vec3.create(1,1,1)),L}updateAuto(V){this.updateQueue.enqueue(async()=>{this.lastLoci=V,(0,d.isEmptyLoci)(V)?await this.updateParams(this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0,!1):await this.updateParams(this.getBoxFromLoci(V),!0)})}updateSelectionBox(V){this.updateQueue.enqueue(async()=>{d.Loci.areEqual(this.lastLoci,V)?this.lastLoci=d.EmptyLoci:this.lastLoci=V;const R=this.getBoxFromLoci(this.lastLoci);await this.updateParams(R)})}updateCameraTarget(V){this.updateQueue.enqueue(async()=>{var R,E,I;const B=(R=this.plugin.canvas3d)===null||R===void 0?void 0:R.props.camera.manualReset;try{B||(E=this.plugin.canvas3d)===null||E===void 0||E.setProps({camera:{manualReset:!0}});const w=this.boxFromCameraTarget(V,!0);await this.updateParams(w)}finally{B||(I=this.plugin.canvas3d)===null||I===void 0||I.setProps({camera:{manualReset:B}})}})}boxFromCameraTarget(V,R){var E;const I=V.target,B=this.cameraTargetDistance(V);let O=Math.tan(.5*V.fov)*B;const F=(E=this.plugin.canvas3d)===null||E===void 0?void 0:E.camera.viewport;F&&F.width>F.height&&(O*=F.width/F.height);const L=this.params.entry.params.view.name==="camera-target"?this.params.entry.params.view.params.radius:.5;O*=L;let U,q,N;if(R){const k=i.Vec3.zero();n.Box3D.size(k,this.data.structure.boundary.box),U=Math.min(O,.5*k[0]),q=Math.min(O,.5*k[1]),N=Math.min(O,.5*k[2])}else U=q=N=O;return n.Box3D.create(i.Vec3.create(I[0]-U,I[1]-q,I[2]-N),i.Vec3.create(I[0]+U,I[1]+q,I[2]+N))}decideDetail(V,R){const E=this.info.kind==="x-ray"?n.Box3D.volume(this.data.structure.boundary.box):this.info.header.spacegroup.size.reduce((F,L)=>F*L,1);let B=n.Box3D.volume(V)/E;const w=this.info.header.availablePrecisions.length-1;let O=R;for(;B<=.5&&O<w;)B*=2,O+=1;return O}async update(V){const R=V.entry.params.view.name==="selection-box"&&this.params&&this.params.entry&&this.params.entry.params&&this.params.entry.params.view&&this.params.entry.params.view.name!=="selection-box";this.params=V;let E,I=!1;switch(V.entry.params.view.name!=="camera-target"&&this.cameraTargetSubscription&&(this.cameraTargetSubscription.unsubscribe(),this.cameraTargetSubscription=void 0),V.entry.params.view.name){case"off":I=!0;break;case"box":E=n.Box3D.create(V.entry.params.view.params.bottomLeft,V.entry.params.view.params.topRight),I=n.Box3D.volume(E)<1e-4;break;case"selection-box":{R?E=this.getBoxFromLoci(this.lastLoci)||(0,n.Box3D)():E=n.Box3D.create(i.Vec3.clone(V.entry.params.view.params.bottomLeft),i.Vec3.clone(V.entry.params.view.params.topRight));const O=V.entry.params.view.params.radius;I=n.Box3D.volume(E)<1e-4,n.Box3D.expand(E,E,i.Vec3.create(O,O,O));break}case"camera-target":this.cameraTargetSubscription||(this.cameraTargetSubscription=this.subscribeOb
7087servable(this.cameraTargetObservable,O=>this.updateCameraTarget(O))),E=this.boxFromCameraTarget(this.plugin.canvas3d.camera.getSnapshot(),!0);break;case"cell":E=this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0;break;case"auto":if(E=V.entry.params.view.params.isSelection||this.info.kind==="x-ray"?n.Box3D.create(i.Vec3.clone(V.entry.params.view.params.bottomLeft),i.Vec3.clone(V.entry.params.view.params.topRight)):void 0,E&&(I=n.Box3D.volume(E)<1e-4,V.entry.params.view.params.isSelection)){const O=V.entry.params.view.params.radius;n.Box3D.expand(E,E,i.Vec3.create(O,O,O))}break}const B=I?{}:await this.queryData(E);if(!B)return!1;const w=V.entry.params.channels;return this.info.kind==="x-ray"?(this.channels["2fo-fc"]=this.createChannel(B["2FO-FC"]||r.Volume.One,w["2fo-fc"],this.info.header.sampling[0].valuesInfo[0]),this.channels["fo-fc(+ve)"]=this.createChannel(B["FO-FC"]||r.Volume.One,w["fo-fc(+ve)"],this.info.header.sampling[0].valuesInfo[1]),this.channels["fo-fc(-ve)"]=this.createChannel(B["FO-FC"]||r.Volume.One,w["fo-fc(-ve)"],this.info.header.sampling[0].valuesInfo[1])):this.channels.em=this.createChannel(B.EM||r.Volume.One,w.em,this.info.header.sampling[0].valuesInfo[0]),!0}createChannel(V,R,E){const I=R;return{data:V,color:I.color,wireframe:I.wireframe,opacity:I.opacity,isoValue:I.isoValue.kind==="relative"?I.isoValue:r.Volume.IsoValue.toRelative(I.isoValue,E)}}getDescription(){return this.params.entry.params.view.name==="selection-box"?"Selection":this.params.entry.params.view.name==="camera-target"?"Camera":this.params.entry.params.view.name==="box"?"Static Box":this.params.entry.params.view.name==="cell"?"Cell":""}constructor(V,R){super(V,{}),this.plugin=V,this.data=R,this.cache=s.LRUCache.create(25),this.params={},this.lastLoci=d.EmptyLoci,this.ref="",this.cameraTargetObservable=this.plugin.canvas3d.didDraw.pipe((0,m.throttleTime)(500,void 0,{leading:!0,trailing:!0}),(0,m.map)(()=>{var E;return(E=this.plugin.canvas3d)===null||E===void 0?void 0:E.camera.getSnapshot()}),(0,m.distinctUntilChanged)((E,I)=>this.isCameraTargetSame(E,I)),(0,m.filter)(E=>E!==void 0)),this.cameraTargetSubscription=void 0,this.channels={},this._invTransform=(0,i.Mat4)(),this.infoMap=new Map,this.data.entries.forEach(E=>this.infoMap.set(E.dataId,E)),this.updateQueue=new v.SingleAsyncQueue}}P.Behavior=M})(b||(cf.VolumeStreaming=b={})),cf}var M7;function Fce(){if(M7)return o_;M7=1,Object.defineProperty(o_,"__esModule",{value:!0}),o_.buildStructureHierarchy=i,o_.StructureHierarchy=c;const e=jt(),t=Et(),r=Dr(),n=yZ();function i(E,I){const B=v(E,I||c());return R(E.tree,B),I&&I.refs.forEach(M,B),{hierarchy:B.hierarchy,added:B.added,changed:B.changed}}function c(){return{trajectories:[],models:[],structures:[],refs:new Map}}function o(E){return{kind:"trajectory",cell:E,version:E.transform.version,models:[]}}function s(E,I){return{kind:"model",cell:E,version:E.transform.version,trajectory:I,structures:[]}}function h(E,I){return{kind:"model-properties",cell:E,version:E.transform.version,model:I}}function f(E,I){return{kind:"model-unitcell",cell:E,version:E.transform.version,model:I}}function y(E,I){return{kind:"structure",cell:E,version:E.transform.version,model:I,components:[]}}function _(E,I){return{kind:"structure-properties",cell:E,version:E.transform.version,structure:I}}function g(E,I){return{kind:"structure-transform",cell:E,version:E.transform.version,structure:I}}function a(E,I){return{kind:"structure-volume-streaming",cell:E,version:E.transform.version,structure:I}}function d(E){return E.transform.tags?[...E.transform.tags].sort().join():E.transform.ref}function p(E,I){return{kind:"structure-component",cell:E,version:E.transform.version,structure:I,key:d(E),representations:[]}}function u(E,I){return{kind:"structure-representation",cell:E,version:E.transform.version,component:I}}function m(E,I){return{kind:"generic-representation",cell:E,version:E.transform.version,parent:I}}function v(E,I){return{state:E,oldHierarchy:I,hierarchy:c(),changed:!1,added:new Set}}function b(E,I,B,w,...O){const F=w(...O);B.push(F),E.hierarchy.refs.set(I.transform.ref,F);const L=E.oldHierarchy.refs.get(I.transform.ref);return L?L.version!==I.transform.version&&(E.changed=!0):(E.added.add(F.cell.transform.ref),E.changed=!0),F}function P(E,I,B,...w){const O=B(...w);E.hierarchy.refs.set(I.transform.ref,O);const F=E.oldHierarchy.refs.get(I.transform.ref);return F?F.version!==I.transform.version&&(E.changed=!0):(E.added.add(O.cell.transform.ref),E.changed=!0),O}function C(E){return I=>E.is(I.obj)}function l(E,I){return(B,w)=>!I(w)&&E.is(B.obj)}function S(E){return I=>I.transform.transformer===E}function T(){}const A=[[C(e.PluginStateObject.Molecule.Trajectory),(E,I)=>{E.currentTrajectory=b(E,I,E.hierarchy.trajectories,o,I)},E=>E.currentTrajectory=void 0],[l(e.PluginStateObject.Molecule.Model,E=>E.currentModel),(E,I)=>{E.currentTrajectory?E.currentModel=b(E,I,E.currentTrajectory.models,s,I,E.currentTrajectory):E.currentModel=P
7087(E,I,s,I),E.hierarchy.models.push(E.currentModel)},E=>E.currentModel=void 0],[S(r.StateTransforms.Model.CustomModelProperties),(E,I)=>{if(!E.currentModel)return!1;E.currentModel.properties=P(E,I,h,I,E.currentModel)},T],[S(r.StateTransforms.Representation.ModelUnitcell3D),(E,I)=>{if(!E.currentModel)return!1;E.currentModel.unitcell=P(E,I,f,I,E.currentModel)},T],[l(e.PluginStateObject.Molecule.Structure,E=>E.currentStructure),(E,I)=>{E.currentModel?E.currentStructure=b(E,I,E.currentModel.structures,y,I,E.currentModel):E.currentStructure=P(E,I,y,I),E.hierarchy.structures.push(E.currentStructure)},E=>E.currentStructure=void 0],[S(r.StateTransforms.Model.CustomStructureProperties),(E,I)=>{if(!E.currentStructure)return!1;E.currentStructure.properties=P(E,I,_,I,E.currentStructure)},T],[S(r.StateTransforms.Model.TransformStructureConformation),(E,I)=>{if(!E.currentStructure)return!1;E.currentStructure.transform=P(E,I,g,I,E.currentStructure)},T],[C(n.VolumeStreaming),(E,I)=>(E.currentStructure&&(E.currentStructure.volumeStreaming=P(E,I,a,I,E.currentStructure)),!1),T],[(E,I)=>!I.currentStructure||E.transform.transformer.definition.isDecorator?!1:e.PluginStateObject.Molecule.Structure.is(E.obj),(E,I)=>{E.currentStructure&&(E.currentComponent&&(E.parentComponents||(E.parentComponents=[]),E.parentComponents.push(E.currentComponent)),E.currentComponent=b(E,I,E.currentStructure.components,p,I,E.currentStructure))},E=>{E.parentComponents&&E.parentComponents.length>0?E.currentComponent=E.parentComponents.pop():E.currentComponent=void 0}],[(E,I)=>!E.state.isGhost&&!!I.currentComponent&&e.PluginStateObject.Molecule.Structure.Representation3D.is(E.obj),(E,I)=>(E.currentComponent&&b(E,I,E.currentComponent.representations,u,I,E.currentComponent),!1),T],[E=>!E.state.isGhost&&e.PluginStateObject.isRepresentation3D(E.obj),(E,I)=>{const B=E.currentComponent||E.currentStructure||E.currentModel;B&&(B.genericRepresentations||(B.genericRepresentations=[]),b(E,I,B.genericRepresentations,m,I,B))},T]];function x(E){if(!E||!E?.parent||!E.parent.cells.has(E.transform.ref))return!1;const{obj:I}=E;return!(!I||I===t.StateObject.Null||E.status!=="ok"&&E.status!=="error")}function M(E){const{cell:I}=E;x(I)||(this.changed=!0)}function D(E){V(this,this.tree.transforms.get(E))}function V(E,I){const{state:B}=E,w=B.state.cells.get(I.ref);if(!x(w))return;let O,F=!1;for(const[U,q,N]of A)if(U(w,B)){if(q(B,w)===!1){F=!0;break}O=N;break}if(F)return;const L=E.tree.children.get(I.ref);L&&L.size&&L.forEach(D,E),O&&O(B)}function R(E,I){const B={tree:E,state:I};return V(B,E.root),B.state}return o_}var D7;function Lce(){if(D7)return sf;D7=1,Object.defineProperty(sf,"__esModule",{value:!0}),sf.StructureHierarchyManager=void 0;const e=eC(),t=Sn(),r=Et(),n=Hi(),i=Vi(),c=jt(),o=Fce();class s extends i.PluginComponent{get dataState(){return this.plugin.state.data}get currentComponentGroups(){return this._currentComponentGroups?this._currentComponentGroups:(this._currentComponentGroups=s.getComponentGroups(this.selection.structures),this._currentComponentGroups)}get seletionSet(){if(this._currentSelectionSet)return this._currentSelectionSet;this._currentSelectionSet=new Set;for(const f of this.selection.trajectories)this._currentSelectionSet.add(f.cell.transform.ref);for(const f of this.selection.models)this._currentSelectionSet.add(f.cell.transform.ref);for(const f of this.selection.structures)this._currentSelectionSet.add(f.cell.transform.ref);return this._currentSelectionSet}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}getStructuresWithSelection(){const f=this.plugin.managers.structure.hierarchy.current.structures,y=[];for(const _ of f)this.plugin.managers.structure.selection.structureHasSelection(_)&&y.push(_);return y}findStructure(f){if(!f)return;const y=this.plugin.helpers.substructureParent.get(f);if(!y)return;const _=this.plugin.state.data.selectQ(g=>g.byValue(y).rootOfType(c.PluginStateObject.Molecule.Structure))[0];if(_)return this.behaviors.selection.value.structures.find(g=>g.cell===_)}syncCurrent(f,y){const _=this.seletionSet,g=[];for(const a of f){const d=a.cell.transform.ref;(_.has(d)||y.has(d))&&g.push(a)}return g.length===0?f.length>0?[f[0]]:[]:g}
7087sync(f){if(!f&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){f&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,...this.state.selection}));return}this.state.syncedTree=this.dataState.tree;const y=(0,o.buildStructureHierarchy)(this.plugin.state.data,this.current);if(!y.changed)return;const{hierarchy:_}=y,g=this.syncCurrent(_.trajectories,y.added),a=this.syncCurrent(_.models,y.added),d=this.syncCurrent(_.structures,y.added);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.hierarchy=_,this.state.selection.trajectories=g,this.state.selection.models=a,this.state.selection.structures=d,f?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:_,trajectories:g,models:a,structures:d})):this.state.notified=!1}updateCurrent(f,y){const _=this.current,g=y==="add"?n.SetUtils.union(this.seletionSet,new Set(f.map(u=>u.cell.transform.ref))):n.SetUtils.difference(this.seletionSet,new Set(f.map(u=>u.cell.transform.ref))),a=[],d=[],p=[];for(const u of _.trajectories)g.has(u.cell.transform.ref)&&a.push(u);for(const u of _.models)g.has(u.cell.transform.ref)&&d.push(u);for(const u of _.structures)g.has(u.cell.transform.ref)&&p.push(u);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.selection.trajectories=a,this.state.selection.models=d,this.state.selection.structures=p,this.behaviors.selection.next({hierarchy:_,trajectories:a,models:d,structures:p})}remove(f,y){if(f.length===0)return;const _=this.plugin.state.data.build();for(const g of f)_.delete(typeof g=="string"?g:g.cell.transform.ref);return _.commit({canUndo:y?"Remove":!1})}toggleVisibility(f,y){if(f.length===0)return;const _=y!==void 0?y!=="show":!f[0].cell.state.isHidden;for(const g of f)(0,e.setSubtreeVisibility)(this.dataState,g.cell.transform.ref,_)}applyPreset(f,y,_){return this.plugin.dataTransaction(async()=>{for(const g of f)g.models.length>0&&await this.clearTrajectory(g),await this.plugin.builders.structure.hierarchy.applyPreset(g.cell,y,_)})}async updateStructure(f,y){await this.plugin.dataTransaction(async()=>{const _=r.StateTree.getDecoratorRoot(this.dataState.tree,f.cell.transform.ref),g=this.dataState.tree.children.get(_).toArray();await this.remove(g,!1),await this.plugin.state.updateTransform(this.plugin.state.data,f.cell.transform.ref,y,"Structure Type"),await this.plugin.builders.structure.representation.applyPreset(f.cell.transform.ref,"auto")},{canUndo:"Structure Type"}),t.PluginCommands.Camera.Reset(this.plugin)}clearTrajectory(f){const y=this.dataState.build();for(const _ of f.models)y.delete(_.cell);return y.commit()}constructor(f){super(),this.plugin=f,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:(0,o.StructureHierarchy)(),selection:{trajectories:[],models:[],structures:[]}},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,trajectories:this.selection.trajectories,models:this.selection.models,structures:this.selection.structures})},this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.subscribe(f.state.data.events.changed,y=>{y.inTransaction||f.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(f.behaviors.state.isAnimating,y=>{!y&&!f.behaviors.state.isUpdating.value&&this.sync(!0)})}}return sf.StructureHierarchyManager=s,(function(h){function f(_){if(!_.length)return[];if(_.length===1)return _[0].components.map(d=>[d]);const g=[],a=new Map;for(const d of _)for(const p of d.components){const u=p.key;if(!u)continue;let m=a.get(u);m||(m=[],a.set(u,m),g.push(m)),m.push(p)}return g}h.getComponentGroups=f;function y(_){var g,a,d,p,u,m,v,b,P;const{structures:C}=_.managers.structure.hierarchy.selection;if(C.length===0)return"";if(C.length===1){const A=C[0],x=(g=A.cell.obj)===null||g===void 0?void 0:g.data;if(!x)return((a=A.cell.obj)===null||a===void 0?void 0:a.label)||"Structure";const M=x.models[0]||x.representativeModel||x.masterModel;if(!M)return((d=A.cell.obj)===null||d===void 0?void 0:d.label)||"Structure";const D=M.entryId;return!((u=(p=A.model)===null||p===void 0?void 0:p.trajectory)===null||u===void 0)&&u.models&&A.model.trajectory.models.length===1?D:A.model?`${(m=A.model.cell.obj)===null||m===void 0?void 0:m.label} | ${D}`:D}const l=C[0],S=(v=l?.model)===null||v===void 0?void 0:v.trajectory;let T=!0;for(const A of C)if(((b=A?.model)===null||b===void 0?void 0:b.trajectory)!==S){T=!1;break}return T&&S?`${(P=S.cell.obj)===null||P===void 0?void 0:P.label} | ${C.length} structures`:`${C.length} structures`}
7087h.getSelectedStructuresDescription=y})(s||(sf.StructureHierarchyManager=s={})),sf}var fM={},I7;function Nce(){return I7||(I7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureMeasurementParams=e.MeasurementOrderLabelTag=e.MeasurementGroupTag=e.StructureMeasurementManager=void 0;const t=Ke(),r=Et(),n=Dr(),i=Sn(),c=Vt(),o=jt(),s=Vi(),h=Ne(),f=GS(),y=vt();e.MeasurementGroupTag="measurement-group",e.MeasurementOrderLabelTag="measurement-order-label",e.StructureMeasurementParams={distanceUnitLabel:h.ParamDefinition.Text("â«",{isEssential:!0}),textColor:f.MeasurementRepresentationCommonTextParams.textColor};const _=h.ParamDefinition.getDefaultValues(e.StructureMeasurementParams);function g(d){return{bundle:t.StructureElement.Bundle.fromLoci(d)}}class a extends s.StatefulPluginComponent{stateUpdated(){this.behaviors.state.next(this.state)}getGroup(){const p=this.plugin.state.data,u=r.StateSelection.findTagInSubtree(p.tree,r.StateTransform.RootRef,e.MeasurementGroupTag),m=this.plugin.state.data.build();return u?m.to(u):m.toRoot().group(n.StateTransforms.Misc.CreateGroup,{label:"Measurements"},{tags:e.MeasurementGroupTag})}async setOptions(p){this.updateState({options:p})&&this.stateUpdated();const u=this.plugin.state.data.build();for(const m of this.state.distances)u.to(m).update(v=>{v.unitLabel=p.distanceUnitLabel,v.textColor=p.textColor});for(const m of this.state.labels)u.to(m).update(v=>{v.textColor=p.textColor});for(const m of this.state.angles)u.to(m).update(v=>{v.textColor=p.textColor});for(const m of this.state.dihedrals)u.to(m).update(v=>{v.textColor=p.textColor});u.editInfo.count!==0&&await i.PluginCommands.State.Update(this.plugin,{state:this.plugin.state.data,tree:u,options:{doNotLogTiming:!0}})}async addDistance(p,u,m){const v=this.plugin.helpers.substructureParent.get(p.structure),b=this.plugin.helpers.substructureParent.get(u.structure);if(!v||!b)return;const P=[v.transform.ref];(0,c.arraySetAdd)(P,b.transform.ref);const l=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",groupId:"a",ref:v.transform.ref,...g(p)},{key:"b",groupId:"b",ref:b.transform.ref,...g(u)}],isTransitive:!0,label:"Distance"},{dependsOn:P,tags:m?.selectionTags}),S=l.apply(n.StateTransforms.Representation.StructureSelectionsDistance3D,{customText:m?.customText||"",unitLabel:this.state.options.distanceUnitLabel,textColor:this.state.options.textColor,...m?.lineParams,...m?.labelParams,...m?.visualParams},{tags:m?.reprTags}),T=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:T,tree:S,options:{doNotLogTiming:!0}}),{selection:l.selector,representation:S.selector}}async addAngle(p,u,m,v){const b=this.plugin.helpers.substructureParent.get(p.structure),P=this.plugin.helpers.substructureParent.get(u.structure),C=this.plugin.helpers.substructureParent.get(m.structure);if(!b||!P||!C)return;const l=[b.transform.ref];(0,c.arraySetAdd)(l,P.transform.ref),(0,c.arraySetAdd)(l,C.transform.ref);const T=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:b.transform.ref,...g(p)},{key:"b",ref:P.transform.ref,...g(u)},{key:"c",ref:C.transform.ref,...g(m)}],isTransitive:!0,label:"Angle"},{dependsOn:l,tags:v?.selectionTags}),A=T.apply(n.StateTransforms.Representation.StructureSelectionsAngle3D,{customText:v?.customText||"",textColor:this.state.options.textColor,...v?.lineParams,...v?.labelParams,...v?.visualParams},{tags:v?.reprTags}),x=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:x,tree:A,options:{doNotLogTiming:!0}}),{selection:T.selector,representation:A.selector}}async addDihedral(p,u,m,v,b){const P=this.plugin.helpers.substructureParent.get(p.structure),C=this.plugin.helpers.substructureParent.get(u.structure),l=this.plugin.helpers.substructureParent.get(m.structure),S=this.plugin.helpers.substructureParent.get(v.structure);if(!P||!C||!l||!S)return;const T=[P.transform.ref];(0,c.arraySetAdd)(T,C.transform.ref),(0,c.arraySetAdd)(T,l.transform.ref),(0,c.arraySetAdd)(T,S.transform.ref);const x=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:P.transform.ref,...g(p)},{key:"b",ref:C.transform.ref,...g(u)},{key:"c",ref:l.transform.ref,...g(m)},{key:"d",ref:S.transform.ref,...g(v)}],isTransitive:!0,label:"Dihedral"},{dependsOn:T,tags:b?.selectionTags}),M=x.apply(n.StateTransforms.Representation.StructureSelectionsDihedral3D,{customText:b?.customText||"",textColor:this.state.options.textColor,...b?.lineParams,...b?.labelParams,...b?.visualParams},{tags:b?.reprTags}),D=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:D,tree:M,options:{doNotLogTiming:!0}}),{selection:x.selector,representation:M.selector}}async addLabel(p,u){const m=this.plugin.helpers.substructureParent.get(p.structure);if(!m)return;const v=[m.transform.ref],P=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:m.transform.ref,...g(p)}],isTransitive:!0,label:"Label"},{dependsOn:v,tags:u?.selectionTags}),C=P.apply(n.StateTransforms.Representation.StructureSelectionsLabel3D,{textColor:this.state.options.textColor,...u?.labelParams,...u?.visualParams},{tags:u?.reprTags}),l=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:l,tree:C,options:{doNotLogTiming:!0}}),{selection:P.selector,representation:C.selector}}async addOrientation(p){const u=[],m=[];for(let l=0,S=p.length;l<S;++l){const T=p[l],A=this.plugin.helpers.substructureParent.get(T.structure);A&&((0,c.arraySetAdd)(m,A.transform.ref),u.push({key:`l${l}`,ref:A.transform.ref,...g(T)}))}if(u.length===0)return;const b=this.getGroup().apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:u,isTransitive:!0,label:"Orientation"},{dependsOn:m}),P=b.apply(n.StateTransforms.Representation.StructureSelectionsOrientation3D),C=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:C,tree:P,options:{doNotLogTiming:!0}}),{selection:b.selector,representation:P.selector}}async addPlane(p){const u=[],m=[];for(let l=0,S=p.length;l<S;++l){const T=p[l],A=this.plugin.helpers.substructureParent.get(T.structure);A&&((0,c.arraySetAdd)(m,A.transform.ref),u.push({key:`l${l}`,ref:A.transform.ref,...g(T)}))}if(u.length===0)return;const v=this.getGroup(),b=v.apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:u,isTransitive:!0,label:"Plane"},{dependsOn:m}),P=b.apply(n.StateTransforms.Representation.StructureSelectionsPlane3D),C=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:C,tree:v,options:{doNotLogTiming:!0}}),{selection:b.selector,representation:P.selector}}async addOrderLabels(p){const u=this.getGroup(),m=this.plugin.state.data.select(r.StateSelection.Generators.ofType(o.PluginStateObject.Molecule.Structure.Selections).withTag(e.MeasurementOrderLabelTag));for(const P of m)u.delete(P);let v=1;for(const P of p){const C=this.plugin.helpers.substructureParent.get(P.structure);if(!C)continue;const l=[C.transform.ref];u.apply(n.StateTransforms.Model.MultiStructureSelectionFromBundle,{selections:[{key:"a",ref:C.transform.ref,...g(P)}],isTransitive:!0,label:"Order"},{dependsOn:l,tags:e.MeasurementOrderLabelTag}).apply(n.StateTransforms.Representation.StructureSelectionsLabel3D,{textColor:y.Color.fromRgb(255,255,255),borderColor:y.Color.fromRgb(0,0,0),textSize:.33,borderWidth:.3,offsetZ:.75,customText:`${v++}`},{tags:e.MeasurementOrderLabelTag})}const b=this.plugin.state.data;return await i.PluginCommands.State.Update(this.plugin,{state:b,tree:u,options:{doNotLogTiming:!0}}),{representation:u.selector}}getTransforms(p){const u=this.plugin.state.data,m=r.StateSelection.findTagInSubtree(u.tree,r.StateTransform.RootRef,e.MeasurementGroupTag),v=m?u.select(r.StateSelection.Generators.ofTransformer(p,m)):this._empty;return v.length===0?this._empty:v}sync(){const p=[];for(const m of this.getTransforms(n.StateTransforms.Representation.StructureSelectionsLabel3D)){const v=m.obj.tags;(!v||!v.includes(e.MeasurementOrderLabelTag))&&p.push(m)}this.updateState({labels:p,distances:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsDistance3D),angles:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsAngle3D),dihedrals:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsDihedral3D),orientations:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsOrientation3D),planes:this.getTransforms(n.StateTransforms.Representation.StructureSelectionsPlane3D)})&&this.stateUpdated()}constructor(p){super({labels:[],distances:[],angles:[],dihedrals:[],orientations:[],planes:[],options:_}),this.plugin=p,this.behaviors={state:this.ev.behavior(this.state)},this._empty=[],p.state.data.events.changed.subscribe(u=>{u.inTransaction||p.behaviors.state.isAnimating.value||this.sync()}),p.behaviors.state.isAnimating.subscribe(u=>{!u&&!p.behaviors.state.isUpdating.value&&this.sync()})}}e.StructureMeasurementManager=a})(fM)),fM}var uf={},u_={},w7;function qce(){if(w7)return u_;
7087w7=1,Object.defineProperty(u_,"__esModule",{value:!0}),u_.buildVolumeHierarchy=r,u_.VolumeHierarchy=n;const e=jt(),t=Et();function r(m,v){const b=s(m,v||n());return u(m.tree,b),v&&v.refs.forEach(a,b),{hierarchy:b.hierarchy,added:b.added,changed:b.changed}}function n(){return{volumes:[],lazyVolumes:[],refs:new Map}}function i(m){return{kind:"volume",cell:m,version:m.transform.version,representations:[]}}function c(m){return{kind:"lazy-volume",cell:m,version:m.transform.version}}function o(m,v){return{kind:"volume-representation",cell:m,version:m.transform.version,volume:v}}function s(m,v){return{state:m,oldHierarchy:v,hierarchy:n(),changed:!1,added:new Set}}function h(m,v,b,P,...C){const l=P(...C);b.push(l),m.hierarchy.refs.set(v.transform.ref,l);const S=m.oldHierarchy.refs.get(v.transform.ref);return S?S.version!==v.transform.version&&(m.changed=!0):(m.added.add(l.cell.transform.ref),m.changed=!0),l}function f(m,v){return(b,P)=>!v(P)&&m.is(b.obj)}function y(){}const _=[[f(e.PluginStateObject.Volume.Data,m=>m.currentVolume),(m,v)=>{m.currentVolume=h(m,v,m.hierarchy.volumes,i,v)},m=>m.currentVolume=void 0],[m=>e.PluginStateObject.Volume.Lazy.is(m.obj),(m,v)=>{h(m,v,m.hierarchy.lazyVolumes,c,v)},y],[(m,v)=>!m.state.isGhost&&!!v.currentVolume&&e.PluginStateObject.Volume.Representation3D.is(m.obj),(m,v)=>(m.currentVolume&&h(m,v,m.currentVolume.representations,o,v,m.currentVolume),!1),y]];function g(m){if(!m||!m?.parent||!m.parent.cells.has(m.transform.ref))return!1;const{obj:v}=m;return!(!v||v===t.StateObject.Null||m.status!=="ok"&&m.status!=="error")}function a(m){const{cell:v}=m;g(v)||(this.changed=!0)}function d(m){p(this,this.tree.transforms.get(m))}function p(m,v){const{state:b}=m,P=b.state.cells.get(v.ref);if(!g(P))return;let C,l=!1;for(const[T,A,x]of _)if(T(P,b)){if(A(b,P)===!1){l=!0;break}C=x;break}if(l)return;const S=m.tree.children.get(v.ref);S&&S.size&&S.forEach(d,m),C&&C(b)}function u(m,v){const b={tree:m,state:v};return p(b,m.root),b.state}return u_}var V7;function Uce(){if(V7)return uf;V7=1,Object.defineProperty(uf,"__esModule",{value:!0}),uf.VolumeHierarchyManager=void 0;const e=eC(),t=Vi(),r=qce(),n=dZ(),i=Dr();class c extends t.PluginComponent{get dataState(){return this.plugin.state.data}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}sync(s){if(!s&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){s&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:this.state.selection}));return}this.state.syncedTree=this.dataState.tree;const h=(0,r.buildVolumeHierarchy)(this.plugin.state.data,this.current);if(!h.changed)return;const{hierarchy:f}=h;this.state.hierarchy=f,this.state.selection?this.state.selection=f.refs.has(this.state.selection.cell.transform.ref)?f.refs.get(this.state.selection.cell.transform.ref):f.volumes[0]:this.state.selection=f.volumes[0],s?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:f,volume:this.state.selection})):this.state.notified=!1}setCurrent(s){this.state.selection=s||this.state.hierarchy.volumes[0],this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:s||this.state.hierarchy.volumes[0]})}remove(s,h){if(s.length===0)return;const f=this.plugin.state.data.build();for(const y of s)f.delete(typeof y=="string"?y:y.cell.transform.ref);return f.commit({canUndo:h?"Remove":!1})}toggleVisibility(s,h){if(s.length===0)return;const f=h!==void 0?h!=="show":!s[0].cell.state.isHidden;for(const y of s)(0,e.setSubtreeVisibility)(this.dataState,y.cell.transform.ref,f)}addRepresentation(s,h){var f;return this.dataState.build().to(s.cell).apply(i.StateTransforms.Representation.VolumeRepresentation3D,(0,n.createVolumeRepresentationParams)(this.plugin,(f=s.cell.obj)===null||f===void 0?void 0:f.data,{type:h})).commit({canUndo:"Add Representation"})}constructor(s){super(),this.plugin=s,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:(0,r.VolumeHierarchy)(),selection:void 0},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,volume:this.selection})},this.subscribe(s.state.data.events.changed,h=>{h.inTransaction||s.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(s.behaviors.state.isAnimating,h=>{!h&&!s.behaviors.state.isUpdating.value&&this.sync(!0)})}}return uf.VolumeHierarchyManager=c,(function(o){function s(h,f){var y,_;return!((y=f?.cell.obj)===null||y===void 0)&&y.data?h.representation.volume.registry.getApplicableTypes((_=f.cell.obj)===null||_===void 0?void 0:_.data):h.representation.volume.registry.types}o.getRepresentationTypes=s})(c||(uf.VolumeHierarchyManager=c={})),uf}var mM={},E7;function jce(){return E7||(E7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.MarkdownExtensionManager=e.BuiltInMarkdownExtension=void 0,e.defaultParseMarkdownCommandArgs=_;const t=hZ(),r=jt(),n=Et(),i=va(),c=Ke(),o=Rn(),s=_2();e.BuiltInMarkdownExtension=[{name:"center-camera",execute:({event:g,args:a,manager:d})=>{g==="click"&&"center-camera"in a&&d.plugin.managers.camera.reset()}},{name:"apply-snapshot",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=a["apply-snapshot"];p&&d.plugin.managers.snapshot.applyKey(p)}},{name:"next-snapshot",execute:({event:g,args:a,manager:d})=>{if(g!=="click"||!("next-snapshot"in a))return;let p=+a["next-snapshot"]||1;p&&(p<0?p=-1:p=1,d.plugin.managers.snapshot.applyNext(p))}},{name:"focus-refs",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=f(a["focus-refs"]);if(!p?.length)return;const u=d.findCells(p);if(!u.length)return;const m=y(d.plugin,u);if(!m.length)return;const v=m.map(b=>(0,t.getCellBoundingSphere)(d.plugin,b.transform.ref)).filter(b=>!!b);v.length&&d.plugin.managers.camera.focusSpheres(v,b=>b,{extraRadius:3})}},{name:"highlight-refs",execute:({event:g,args:a,manager:d})=>{var p;const u=f(a["highlight-refs"]);if(u?.length){if(g==="mouse-leave"&&u.length){d.plugin.managers.interactivity.lociHighlights.clearHighlights();return}else if(g==="mouse-enter"){const m=d.findCells(u);for(const v of y(d.plugin,m)){if(!(!((p=v.obj)===null||p===void 0)&&p.data))continue;const{repr:b}=v.obj.data;for(const P of b.getAllLoci())d.plugin.managers.interactivity.lociHighlights.highlight({loci:P,repr:b},!1)}}}}},{name:"query",execute:({event:g,args:a,manager:d})=>{var p;const u=a.query;if(!u?.length)return;const m=a.lang||"mol-script",v=f(a.action||"highlight"),b=parseFloat(a["focus-radius"]||"3");if(g==="mouse-leave"){v.includes("highlight")&&d.plugin.managers.interactivity.lociHighlights.clearHighlights();return}let P;try{P=i.Script.toQuery({language:m,expression:u})}catch(l){console.warn(`Failed to parse query '${u}' (${m})`,l);return}const C=d.plugin.state.data.selectQ(l=>l.rootsOfType(r.PluginStateObject.Molecule.Structure));if(g==="mouse-enter"){if(!v.includes("focus"))return;d.plugin.managers.interactivity.lociHighlights.clearHighlights();for(const l of C){if(!(!((p=l.obj)===null||p===void 0)&&p.data))continue;const S=P(new c.QueryContext(l.obj.data)),T=c.StructureSelection.toLociWithSourceUnits(S);d.plugin.managers.interactivity.lociHighlights.highlight({loci:T},!1)}}if(g==="click"){if(!v.includes("focus"))return;const S=C.map(T=>n.StateSelection.getDecorated(d.plugin.state.data,T.transform.ref)).map(T=>{var A;if(!(!((A=T.obj)===null||A===void 0)&&A.data))return;const x=P(new c.QueryContext(T.obj.data));if(c.StructureSelection.isEmpty(x))return;const M=c.StructureSelection.toLociWithSourceUnits(x);return c.StructureElement.Loci.getBoundary(M).sphere}).filter(T=>!!T);S.length&&d.plugin.managers.camera.focusSpheres(S,T=>T,{extraRadius:b})}}},{name:"play-audio",execute:({event:g,args:a,manager:d})=>{if(g!=="click")return;const p=a["play-audio"];p?.length&&d.audio.play(p)}},{name:"toggle-audio",execute:({event:g,args:a,manager:d})=>{if(g!=="click"||!("toggle-audio"in a))return;const p=a["toggle-audio"];d.audio.play(p,{toggle:!0})}},{name:"pause-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("pause-audio"in a)||d.audio.pause()}},{name:"stop-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("stop-audio"in a)||d.audio.stop()}},{name:"dispose-audio",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("dispose-audio"in a)||d.audio.dispose()}},{name:"play-transition",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("play-transition"in a)||d.plugin.managers.animation.play(s.AnimateStateSnapshotTransition,{})}},{name:"play-snapshots",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("play-snapshots"in a)||d.plugin.managers.snapshot.play({restart:!0})}},{name:"stop-animation",execute:({event:g,args:a,manager:d})=>{g!=="click"||!("stop-animation"in a)||d.plugin.managers.snapshot.stop()}}];class h{registerArgsParser(a,d,p){this.removeArgsParser(a),this.argsParsers.push([a,d,p]),this.argsParsers.sort((u,m)=>m[1]-u[1])}removeArgsParser(a){const d=this.argsParsers.findIndex(p=>p[0]===a);d>=0&&this.argsParsers.splice(d,1)}parseArgs(a){for(const[,,d]of this.argsParsers){const p=d(a);if(p)return p}}registerRefResolver(a,d){this.refResolvers[a]=d}removeRefResolver(a){delete this.refResolvers[a]}registerUriResolver(a,d){this.uriResolvers[a]=d}removeUriResolver(a){delete this.uriResolvers[a]}registerExtension(a){const d=this.extension.findIndex(p=>p.name===a.name);d>=0?this.extension[d]=a:this.extension.push(a)}removeExtension(a){const d=this.extension.findIndex(p=>p.name===a);d>=0&&this.extension.splice(d,1)}_tryRender(a,d){var p;try{return(p=a.reactRenderFn)===null||p===void 0?void 0:p.call(a,d)}catch(u){return console.error(`Failed to render markdown extension '${a.name}'`,u),null}}tryRender(a,d){const p={args:a,manager:this};for(const u of this.extension){const m=this._tryRender(u,p);if(m)return m}for(const u of d){const m=this._tryRender(u,p);if(m)return m}return null}tryExecute(a,d){var p;const u={event:a,args:d,manager:this};for(const m of this.extension)try{(p=m.execute)===null||p===void 0||p.call(m,u)}catch(v){console.error(`Failed to execute markdown extension '${m.name}'`,v)}}tryResolveUri(a){for(const d of Object.values(this.uriResolvers)){const p=d(this.plugin,a);if(p)return p}}findCells(a){const d=new Set,p=[];for(const u of Object.values(this.refResolvers))for(const m of u(this.plugin,a))m&&!d.has(m.transform.ref)&&(d.add(m.transform.ref),p.push(m));return p}resolveAudioPlayer(){if(this.state.audioPlayer.value)return this.state.audioPlayer.value;const a=document.createElement("audio");return a.controls=!0,a.preload="auto",a.style.width="100%",a.style.height="32px",this.state.audioPlayer.next(a),a}get audioPlayer(){return this.state.audioPlayer.value}constructor(a){this.plugin=a,this.state={audioPlayer:new o.BehaviorSubject(null)},this.extension=[],this.refResolvers={default:(d,p)=>p.map(u=>d.state.data.cells.get(u)).filter(u=>!!u)},this.uriResolvers={},this.argsParsers=[["default",100,_]],this.audio={play:async(d,p)=>{try{const u=this.resolveAudioPlayer();let m=!1;if(d?.trim()){const v=this.tryResolveUri(d);let b=d;typeof v?.then=="function"?b=await v:v&&(b=v),m=u.src!==b,m&&(u.src=b,u.load())}!m&&p?.toggle?u.paused?await u.play():u.pause():(u.currentTime=0,await u.play())}catch(u){console.error("Failed to play audio",u)}},pause:()=>{var d;(d=this.audioPlayer)===null||d===void 0||d.pause()},stop:()=>{this.audioPlayer&&(this.audioPlayer.pause(),this.audioPlayer.currentTime=0)},dispose:()=>{this.audioPlayer&&(this.audioPlayer.pause(),this.audioPlayer.currentTime=0,this.state.audioPlayer.next(null))}};for(const d of e.BuiltInMarkdownExtension)this.registerExtension(d)}}e.MarkdownExtensionManager=h;function f(g){var a;return(a=g?.split(",").map(d=>d.trim()).filter(d=>d.length>0))!==null&&a!==void 0?a:[]}function y(g,a){return a.length?g.state.data.selectQ(d=>d.byValue(...a).subtree().filter(p=>r.PluginStateObject.isRepresentation3D(p.obj))):[]}function _(g){if(!g?.startsWith("!"))return;const a=decodeURIComponent(g.substring(1)).split("&").map(d=>d.trim()).filter(d=>d.length>0).map(d=>d.split("=",2).map(p=>p.trim()));if(a.length!==0)return Object.fromEntries(a)}})(mM)),mM}var pM={},B7;function Gce(){return B7||(B7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.PluginLayout=e.PluginLayoutStateParams=void 0;const t=Ne(),r=Vi(),n=Sn(),i=[["full","Full"],["collapsed","Collapsed"],["hidden","Hidden"]],c=[["full","Full"],["hidden","Hidden"]];e.PluginLayoutStateParams={isExpanded:t.ParamDefinition.Boolean(!1),showControls:t.ParamDefinition.Boolean(!0),regionState:t.ParamDefinition.Group({left:t.ParamDefinition.Select("full",i),top:t.ParamDefinition.Select("full",c),right:t.ParamDefinition.Select("full",c),bottom:t.ParamDefinition.Select("full",c)}),controlsDisplay:t.ParamDefinition.Value("outside",{isHidden:!0}),expandToFullscreen:t.ParamDefinition.Boolean(!1)};class o extends r.StatefulPluginComponent{updateProps(h){const f=!!this.state.isExpanded;if(this.updateState(h),this.root&&typeof h.isExpanded=="boolean"&&h.isExpanded!==f&&this.handleExpand(),this.state.expandToFullscreen){const y=document.getElementsByTagName("body")[0];y&&this.tryRequestFullscreen(y)}else document.fullscreenElement&&this.tryExitFullscreen();this.events.updated.next(void 0)}setProps(h){this.updateState(h)}setRoot(h){this.root=h,this.state.isExpanded&&this.handleExpand()}getScrollElement(){return document.scrollingElement?document.scrollingElement:document.documentElement?document.documentElement:document.body}async tryRequestFullscreen(h){if(!document.fullscreenElement)try{await h.requestFullscreen()}catch(f){console.error(f)}}async tryExitFullscreen(){if(document.fullscreenElement)try{await document.exitFullscreen()}catch(h){console.error(h)}}handleExpand(){try{const h=document.getElementsByTagName("body")[0],f=document.getElementsByTagName("head")[0];if(!h||!f||!this.root)return;if(this.state.isExpanded){const y=f.children,_=[];let g=!1;for(let m=0;m<y.length;m++)y[m]===this.expandedViewport?g=!0:(y[m].name||"").toLowerCase()==="viewport"&&_.push(y[m]);for(const m of _)f.removeChild(m);g||f.appendChild(this.expandedViewport);const a=h.style,d=this.getScrollElement(),p=d.scrollLeft,u=d.scrollTop;this.rootState={top:a.top,bottom:a.bottom,right:a.right,left:a.left,scrollTop:u,scrollLeft:p,position:a.position,overflow:a.overflow,viewports:_,zIndex:this.root.style.zIndex,width:a.width,height:a.height,maxWidth:a.maxWidth,maxHeight:a.maxHeight,margin:a.margin,marginLeft:a.marginLeft,marginRight:a.marginRight,marginTop:a.marginTop,marginBottom:a.marginBottom},a.overflow="hidden",a.position="fixed",a.top="0",a.bottom="0",a.right="0",a.left="0",a.width="100%",a.height="100%",a.maxWidth="100%",a.maxHeight="100%",a.margin="0",a.marginLeft="0",a.marginRight="0",a.marginTop="0",a.marginBottom="0"}else{const y=f.children;for(let _=0;_<y.length;_++)if(y[_]===this.expandedViewport){f.removeChild(this.expandedViewport);break}if(this.state.expandToFullscreen&&document.fullscreenElement&&document.exitFullscreen(),this.rootState){const _=this.rootState;for(const d of _.viewports)f.appendChild(d);const g=h.style;g.top=_.top,g.bottom=_.bottom,g.left=_.left,g.right=_.right,g.width=_.width,g.height=_.height,g.maxWidth=_.maxWidth,g.maxHeight=_.maxHeight,g.margin=_.margin,g.marginLeft=_.marginLeft,g.marginRight=_.marginRight,g.marginTop=_.marginTop,g.marginBottom=_.marginBottom,g.position=_.position,g.overflow=_.overflow||"";const a=this.getScrollElement();a.scrollTop=_.scrollTop,a.scrollLeft=_.scrollLeft,this.rootState=void 0,this.root.style.zIndex=_.zIndex}}}catch(h){const f="Layout change error, you might have to reload the page.";this.context.log.error(f),console.error(f,h)}}dispose(){super.dispose(),document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler)}constructor(h){super({...t.ParamDefinition.getDefaultValues(e.PluginLayoutStateParams),...h.spec.layout&&h.spec.layout.initial}),this.context=h,this.events={updated:this.ev()},this.rootState=void 0,this.fullscreenChangeHandler=()=>{document.fullscreenElement||this.updateProps({expandToFullscreen:!1})},document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),n.PluginCommands.Layout.Upd
7087ate.subscribe(h,f=>this.updateProps(f.state)),typeof document<"u"&&(this.expandedViewport=document.createElement("meta"),this.expandedViewport.name="viewport",this.expandedViewport.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0")}}e.PluginLayout=o})(pM)),pM}var lf={},hM={},gM={},yM={},R7;function rC(){return R7||(R7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BondIterator=e.DefaultBondLineProps=e.BondLineParams=e.DefaultBondCylinderProps=e.BondCylinderParams=e.DefaultBondProps=e.BondParams=void 0,e.ignoreBondType=_,e.makeIntraBondIgnoreTest=g,e.makeInterBondIgnoreTest=a,e.hasUnitVisibleBonds=d,e.hasStructureVisibleBonds=p,e.getIntraBondLoci=m,e.eachIntraBond=v,e.getInterBondLoci=b,e.eachInterBond=C,e.getStructureGroupsBondLoci=l,e.eachStructureGroupsBond=S;const t=dt(),r=Ke(),n=Ne(),i=zt(),c=Ca(),o=Gt(),s=_n(),h=gt(),f=at(),y=Er();e.BondParams={includeTypes:n.ParamDefinition.MultiSelect((0,o.ObjectKeys)(t.BondType.Names),n.ParamDefinition.objectToOptions(t.BondType.Names)),excludeTypes:n.ParamDefinition.MultiSelect([],n.ParamDefinition.objectToOptions(t.BondType.Names)),ignoreHydrogens:n.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:n.ParamDefinition.Select("all",n.ParamDefinition.arrayToOptions(["all","non-polar"])),aromaticBonds:n.ParamDefinition.Boolean(!0,{description:"Display aromatic bonds with dashes"}),multipleBonds:n.ParamDefinition.Select("symmetric",n.ParamDefinition.arrayToOptions(["off","symmetric","offset"])),metalCoordination:n.ParamDefinition.Select("dashed",n.ParamDefinition.arrayToOptions(["dashed","solid"]))},e.DefaultBondProps=n.ParamDefinition.getDefaultValues(e.BondParams),e.BondCylinderParams={...c.LinkCylinderParams,...e.BondParams,adjustCylinderLength:n.ParamDefinition.Boolean(!1,{description:"Shorten cylinders to reduce overlap with spheres. Useful for for transparent bonds. Not working well with aromatic bonds."})},e.DefaultBondCylinderProps=n.ParamDefinition.getDefaultValues(e.BondCylinderParams),e.BondLineParams={...c.LinkLineParams,...e.BondParams},e.DefaultBondLineProps=n.ParamDefinition.getDefaultValues(e.BondLineParams);function _(T,A,x){return!t.BondType.is(T,x)||t.BondType.is(A,x)}function g(T,A,x){const M=A.elements,D=A.bonds,{a:V,b:R,edgeProps:E}=D,{flags:I}=E,{ignoreHydrogens:B,ignoreHydrogensVariant:w,includeTypes:O,excludeTypes:F}=x,L=t.BondType.fromNames(O),U=t.BondType.fromNames(F),q=t.BondType.isAll(L)&&t.BondType.Flag.None===U,{child:N}=T,k=N?.unitMap.get(A.id);if(N&&!k)throw new Error("expected childUnit to exist if child exists");if(!(q&&!B&&!N))return j=>{const H=V[j],G=R[j];return k&&!f.SortedArray.has(k.elements,M[H])||!q&&_(L,U,I[j])?!0:B?!!((0,y.isHydrogen)(T,A,M[H],w)||(0,y.isHydrogen)(T,A,M[G],w)):!1}}function a(T,A){const x=T.interUnitBonds,{edges:M}=x,{ignoreHydrogens:D,ignoreHydrogensVariant:V,includeTypes:R,excludeTypes:E}=A,I=t.BondType.fromNames(R),B=t.BondType.fromNames(E),w=t.BondType.isAll(I)&&t.BondType.Flag.None===B,{child:O}=T;if(!(w&&!D&&!O))return F=>{if(O){const L=M[F],U=O.unitMap.get(L.unitA);if(!U)return!0;const N=T.unitMap.get(L.unitA).elements[L.indexA];if(!f.SortedArray.has(U.elements,N))return!0}if(D){const L=M[F],U=T.unitMap.get(L.unitA),q=T.unitMap.get(L.unitB);if((0,y.isHydrogen)(T,U,U.elements[L.indexA],V)||(0,y.isHydrogen)(T,q,q.elements[L.indexB],V))return!0}return!!(!w&&_(I,B,M[F].props.flag))}}function d(T,A){return r.Unit.Traits.is(T.traits,r.Unit.Trait.Water)?!A.ignoreHydrogens||A.ignoreHydrogensVariant==="non-polar":!0}function p(T,A){for(const{units:x}of T.unitSymmetryGroups)if(r.Unit.isAtomic(x[0])&&d(x[0],A))return!0;return!1}var u;(function(T){function A(D,V){const{group:R,structure:E}=D,I=R.units[0],B=r.Unit.isAtomic(I)?I.bonds.edgeCount*2:0,w=R.units.length,O=r.Bond.Location(E,void 0,void 0,E,void 0,void 0),F=(L,U)=>{const q=R.units[U];return O.aUnit=q,O.bUnit=q,O.aIndex=q.bonds.a[L],O.bIndex=q.bonds.b[L],O};if(V?.includeLocation2){const L=r.Bond.Location(E,void 0,void 0,E,void 0,void 0),U=(q,N)=>{const k=R.units[N];return L.aUnit=k,L.bUnit=k,L.aIndex=k.bonds.b[q],L.bIndex=k.bonds.a[q],L};return(0,i.LocationIterator)(B,w,1,F,!1,()=>!1,U)}return(0,i.LocationIterator)(B,w,1,F)}T.fromGroup=A;function x(D,V){const R=D.interUnitBonds.edgeCount,E=1,I=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),B=w=>{const O=D.interUnitBonds.edges[w];return I.aUnit=D.unitMap.get(O.unitA),I.aIndex=O.indexA,I.bUnit=D.unitMap.get(O.unitB),I.bIndex=O.indexB,I}
7087;if(V?.includeLocation2){const w=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),O=F=>{const L=D.interUnitBonds.edges[F];return w.aUnit=D.unitMap.get(L.unitB),w.aIndex=L.indexB,w.bUnit=D.unitMap.get(L.unitA),w.bIndex=L.indexA,w};return(0,i.LocationIterator)(R,E,1,B,!0,()=>!1,O)}return(0,i.LocationIterator)(R,E,1,B,!0)}T.fromStructure=x;function M(D,V){const{bondCount:R,unitIndex:E,unitGroupIndex:I,unitEdgeIndex:B}=D.intraUnitBondMapping,w=R,O=1,F=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),L=U=>{const N=D.unitSymmetryGroups[E[U]].units[I[U]],k=B[U];return F.aUnit=N,F.bUnit=N,F.aIndex=N.bonds.a[k],F.bIndex=N.bonds.b[k],F};if(V?.includeLocation2){const U=r.Bond.Location(D,void 0,void 0,D,void 0,void 0),q=N=>{const j=D.unitSymmetryGroups[E[N]].units[I[N]],H=B[N];return U.aUnit=j,U.bUnit=j,U.aIndex=j.bonds.b[H],U.bIndex=j.bonds.a[H],U};return(0,i.LocationIterator)(w,O,1,L,!0,()=>!1,q)}return(0,i.LocationIterator)(w,O,1,L,!0)}T.fromStructureGroups=M})(u||(e.BondIterator=u={}));function m(T,A,x){const{objectId:M,instanceId:D,groupId:V}=T;if(x===M){const{structure:R,group:E}=A,I=E.units[D];if(V===s.PickingId.Null){const B=f.OrderedSet.ofRange(0,I.elements.length);return r.StructureElement.Loci(R.target,[{unit:I,indices:B}])}else if(r.Unit.isAtomic(I)){const{target:B}=R,w=I.bonds.a[V],O=I.bonds.b[V];return r.Bond.Loci(B,[r.Bond.Location(B,I,w,B,I,O),r.Bond.Location(B,I,O,B,I,w)])}}return h.EmptyLoci}function v(T,A,x,M){let D=!1;if(r.Bond.isLoci(T)){const{structure:V,group:R}=A;if(!r.Structure.areEquivalent(T.structure,V))return!1;const E=R.units[0];if(!r.Unit.isAtomic(E))return!1;const I=E.bonds.edgeCount*2;for(const B of T.bonds){if(B.aUnit!==B.bUnit)continue;const w=R.unitIndexMap.get(B.aUnit.id);if(w!==void 0){const O=E.bonds.getDirectedEdgeIndex(B.aIndex,B.bIndex);O!==-1&&x(f.Interval.ofSingleton(w*I+O))&&(D=!0)}}}else if(r.StructureElement.Loci.is(T)){const{structure:V,group:R}=A;if(!r.Structure.areEquivalent(T.structure,V))return!1;const E=R.units[0];if(!r.Unit.isAtomic(E))return!1;const I=E.bonds.edgeCount*2;for(const B of T.elements){const w=R.unitIndexMap.get(B.unit.id);if(w!==void 0){const{offset:O,b:F}=E.bonds;f.OrderedSet.forEach(B.indices,L=>{for(let U=O[L],q=O[L+1];U<q;U++)(!M||f.OrderedSet.has(B.indices,F[U]))&&x(f.Interval.ofSingleton(w*I+U))&&(D=!0)})}}}return D}function b(T,A,x){const{objectId:M,groupId:D}=T;if(x===M){const{target:V}=A;if(D===s.PickingId.Null)return r.Structure.Loci(V);{const R=A.interUnitBonds.edges[D],E=A.unitMap.get(R.unitA),I=A.unitMap.get(R.unitB);return r.Bond.Loci(V,[r.Bond.Location(V,E,R.indexA,V,I,R.indexB),r.Bond.Location(V,I,R.indexB,V,E,R.indexA)])}}return h.EmptyLoci}const P=new Map;function C(T,A,x,M){let D=!1;if(r.Bond.isLoci(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const V of T.bonds){const R=A.interUnitBonds.getBondIndexFromLocation(V);R!==-1&&x(f.Interval.ofSingleton(R))&&(D=!0)}}else if(r.StructureElement.Loci.is(T)){if(!r.Structure.areEquivalent(T.structure,A)||M&&T.elements.length===1)return!1;for(const V of T.elements)P.set(V.unit.id,V.indices);for(const V of T.elements){const{unit:R}=V;if(r.Unit.isAtomic(R))for(const E of A.interUnitBonds.getConnectedUnits(R.id)){const I=P.get(E.unitB);(!M||I)&&f.OrderedSet.forEach(V.indices,B=>{if(E.connectedIndices.includes(B)){for(const w of E.getEdges(B))if(!M||I&&f.OrderedSet.has(I,w.indexB)){const O=A.interUnitBonds.getEdgeIndex(B,R.id,w.indexB,E.unitB);x(f.Interval.ofSingleton(O))&&(D=!0)}}})}}P.clear()}return D}function l(T,A,x){const{objectId:M,groupId:D}=T;if(x===M){const V=A.intraUnitBondMapping;return m({objectId:M,instanceId:V.unitGroupIndex[D],groupId:V.unitEdgeIndex[D]},{structure:A,group:A.unitSymmetryGroups[V.unitIndex[D]]},x)}return h.EmptyLoci}function S(T,A,x,M){const{unitGroupOffset:D}=A.intraUnitBondMapping;let V=!1;if(r.Bond.isLoci(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const R of T.bonds){if(R.aUnit!==R.bUnit)continue;const E=A.unitSymmetryGroupsIndexMap.get(R.aUnit.id),I=A.unitSymmetryGroups[E],B=I.units[0];if(!r.Unit.isAtomic(B))continue;const w=D[E],O=B.bonds.edgeCount*2,F=I.unitIndexMap.get(R.aUnit.id);if(F!==void 0){const L=B.bonds.getDirectedEdgeIndex(R.aIndex,R.bIndex);L!==-1&&x(f.Interval.ofSingleton(F*O+L+w))&&(V=!0)}}}else if(r.StructureElement.Loci.is(T)){if(!r.Structure.areEquivalent(T.structure,A))return!1;for(const R of T.elements){const E=A.unitSymmetryGroupsIndexMap.get(R.unit.id),I=A.unitSymmetryGroups[E],B=I.units[0];
7087if(!r.Unit.isAtomic(B))continue;const w=D[E],O=B.bonds.edgeCount*2,F=I.unitIndexMap.get(R.unit.id);if(F!==void 0){const{offset:L,b:U}=B.bonds;f.OrderedSet.forEach(R.indices,q=>{for(let N=L[q],k=L[q+1];N<k;N++)(!M||f.OrderedSet.has(R.indices,U[N]))&&x(f.Interval.ofSingleton(F*O+N+w))&&(V=!0)})}}}return V}})(yM)),yM}var O7;function vZ(){return O7||(O7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIntraUnitBondCylinderParams=e.IntraUnitBondCylinderParams=void 0,e.IntraUnitBondCylinderVisual=S,e.IntraUnitBondCylinderImpostorVisual=T,e.IntraUnitBondCylinderMeshVisual=A,e.StructureIntraUnitBondCylinderVisual=V,e.StructureIntraUnitBondCylinderImpostorVisual=R,e.StructureIntraUnitBondCylinderMeshVisual=E;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=et(),o=Ca(),s=mr(),h=dt(),f=rC(),y=rt(),_=is(),g=no(),a=at(),d=Vt(),p=Er(),u=ps(),m=Br(),v=zt(),b=h.BondType.is;function P(I,B,w,O){const F=I.elements,L=I.bonds,{edgeCount:U,a:q,b:N,edgeProps:k,offset:j}=L,{order:H,flags:G}=k,{sizeFactor:z,sizeAspectRatio:W,adjustCylinderLength:X,aromaticBonds:Y,includeTypes:K,excludeTypes:Q,multipleBonds:J,metalCoordination:ae}=O,te=J==="off",ne=J==="symmetric",$=ae==="dashed",ie=h.BondType.fromNames(K),Z=h.BondType.fromNames(Q),re=(0,f.ignoreBondType)(ie,Z,h.BondType.Flag.Computed),oe=(0,i.Vec3)(),ce=(0,i.Vec3)(),ue=I.conformation;let pe;const he=r.StructureElement.Location.create(B,I),fe=r.Bond.Location(B,I,void 0,B,I,void 0),{child:de}=B;if(O.includeParent&&de){const se=de.unitMap.get(I.id);if(!se)throw new Error("expected childUnit to exist");pe=ye=>{const Se=F[q[ye]],Ae=F[N[ye]];return a.SortedArray.has(se.elements,Se)&&!a.SortedArray.has(se.elements,Ae)}}const ge=se=>(fe.aIndex=q[se],fe.bIndex=N[se],w.size.size(fe)*z),Ce=se=>(he.element=F[q[se]],w.size.size(he)*z),ve=se=>(he.element=F[N[se]],w.size.size(he)*z),{elementRingIndices:le,elementAromaticRingIndices:me}=I.rings,ee=Y?I.resonance.delocalizedTriplets:void 0;return{linkCount:U*2,referencePosition:se=>{let ye=q[se],Se=N[se];const Ae=ee?.getThirdElement(ye,Se);if(Ae!==void 0)return ue.invariantPosition(F[Ae],oe);ye>Se&&([ye,Se]=[Se,ye]),j[ye+1]-j[ye]===1&&([ye,Se]=[Se,ye]);const _e=me.get(ye)||le.get(ye);let be=0;for(let xe=j[ye],we=j[ye+1];xe<we;++xe){const Be=N[xe];if(Be!==Se&&Be!==ye)if(_e){const Me=me.get(Be)||le.get(Be);if(!Me)continue;const Re=(0,d.arrayIntersectionSize)(_e,Me);Re>be&&(be=Re,ue.invariantPosition(F[Be],oe))}else return ue.invariantPosition(F[Be],oe)}return be>0?oe:null},position:(se,ye,Se,Ae)=>{if(ue.invariantPosition(F[q[Se]],se),ue.invariantPosition(F[N[Se]],ye),Ae&&X){const _e=Ce(Se),be=ve(Se),xe=Math.min(_e,be)*W,we=Math.sqrt(Math.max(0,_e*_e-xe*xe))-.05,Be=Math.sqrt(Math.max(0,be*be-xe*xe))-.05;if(we<=.01&&Be<=.01)return;i.Vec3.normalize(ce,i.Vec3.sub(ce,ye,se)),i.Vec3.scaleAndAdd(se,se,ce,we),i.Vec3.scaleAndAdd(ye,ye,ce,-Be)}},style:se=>{const ye=H[se],Se=G[se];if(b(Se,h.BondType.Flag.MetallicCoordination))return $?o.LinkStyle.Dashed:o.LinkStyle.Solid;if(b(Se,h.BondType.Flag.HydrogenBond))return o.LinkStyle.Dashed;if(ye===3)return te?o.LinkStyle.Solid:ne?o.LinkStyle.Triple:o.LinkStyle.OffsetTriple;if(Y){const Ae=q[se],_e=N[se],be=me.get(Ae),xe=me.get(_e),we=be&&xe?(0,d.arrayIntersectionSize)(be,xe):0;if(b(Se,h.BondType.Flag.Aromatic)||we&&!re)return we===2?o.LinkStyle.MirroredAromatic:o.LinkStyle.Aromatic}return ye!==2||te?o.LinkStyle.Solid:ne?o.LinkStyle.Double:o.LinkStyle.OffsetDouble},radius:se=>ge(se)*W,ignore:(0,f.makeIntraBondIgnoreTest)(B,I,O),stub:pe}}function C(I,B,w,O,F,L){if(!r.Unit.isAtomic(B)||!(0,f.hasUnitVisibleBonds)(B,F)||!B.bonds.edgeCount)return g.Cylinders.createEmpty(L);const{child:U}=w,q=U?.unitMap.get(B.id);if(U&&!q)return g.Cylinders.createEmpty(L);const N=P(B,w,O,F),{cylinders:k,boundingSphere:j}=(0,o.createLinkCylinderImpostors)(I,N,F,L);if(j)k.setBoundingSphere(j);else if(k.cylinderCount>0){const H=y.Sphere3D.expand((0,y.Sphere3D)(),(q??B).boundary.sphere,1*F.sizeFactor);k.setBoundingSphere(H)}return k}function l(I,B,w,O,F,L){if(!r.Unit.isAtomic(B)||!(0,f.hasUnitVisibleBonds)(B,F)||!B.bonds.edgeCount)return n.Mesh.createEmpty(L);const{child:U}=w,q=U?.unitMap.get(B.id);if(U&&!q)return n.Mesh.createEmpty(L);const N=P(B,w,O,F),{mesh:k,boundingSphere:j}
7087=(0,o.createLinkCylinderMesh)(I,N,F,L);if(j)k.setBoundingSphere(j);else if(k.triangleCount>0){const H=y.Sphere3D.expand((0,y.Sphere3D)(),(q??B).boundary.sphere,1*F.sizeFactor);k.setBoundingSphere(H)}return k}e.IntraUnitBondCylinderParams={...s.UnitsMeshParams,...s.UnitsCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function S(I,B,w,O){return w.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(O)?T(I):A(I)}function T(I){return(0,s.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondCylinderParams),createGeometry:C,createLocationIterator:(B,w)=>f.BondIterator.fromGroup(B,{includeLocation2:w.colorMode==="interpolate"}),getLoci:f.getIntraBondLoci,eachLocation:f.eachIntraBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.aromaticBonds!==O.aromaticBonds||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination||w.adjustCylinderLength&&!u.SizeTheme.areEqual(F.size,L.size),w.colorMode!==O.colorMode&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0);const N=U.group.units[0],k=q.group.units[0];r.Unit.isAtomic(N)&&r.Unit.isAtomic(k)&&(_.IntAdjacencyGraph.areEqual(N.bonds,k.bonds)||(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0))},mustRecreate:(B,w,O)=>!w.tryUseImpostor||!O},I)}function A(I){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondCylinderParams),createGeometry:l,createLocationIterator:B=>f.BondIterator.fromGroup(B),getLoci:f.getIntraBondLoci,eachLocation:f.eachIntraBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.radialSegments!==O.radialSegments||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.aromaticBonds!==O.aromaticBonds||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination;const N=U.group.units[0],k=q.group.units[0];r.Unit.isAtomic(N)&&r.Unit.isAtomic(k)&&(_.IntAdjacencyGraph.areEqual(N.bonds,k.bonds)||(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0))},mustRecreate:(B,w,O)=>w.tryUseImpostor&&!!O},I)}function x(I,B,w){const O=[],{bondCount:F,unitIndex:L,unitEdgeIndex:U,unitGroupIndex:q}=I.intraUnitBondMapping,{child:N}=I;for(const k of I.unitSymmetryGroups){const j=k.units[0],H=N?.unitMap.get(j.id),G=r.Unit.isAtomic(j)&&!(N&&!H)?P(j,I,B,w):o.EmptyLinkBuilderProps;O.push({group:k,props:G})}return{linkCount:F,referencePosition:k=>{const{group:j,props:H}=O[L[k]];if(!H.referencePosition)return null;const G=H.referencePosition(U[k]);if(!G)return null;const z=j.units[q[k]];return i.Vec3.transformMat4(G,G,z.conformation.operator.matrix),G},position:(k,j,H,G)=>{const{group:z,props:W}=O[L[H]];W.position(k,j,U[H],G);const X=z.units[q[H]];i.Vec3.transformMat4(k,k,X.conformation.operator.matrix),i.Vec3.transformMat4(j,j,X.conformation.operator.matrix)},style:k=>{const{props:j}=O[L[k]];return j.style?j.style(U[k]):o.LinkStyle.Solid},radius:k=>{const{props:j}=O[L[k]];return j.radius(U[k])},ignore:k=>{const{props:j}=O[L[k]];return j.ignore?j.ignore(U[k]):!1},stub:k=>{const{props:j}=O[L[k]];return j.stub?j.stub(U[k]):!1}}}
7087function M(I,B,w,O,F){if(!(0,f.hasStructureVisibleBonds)(B,O)||!B.intraUnitBondMapping.bondCount)return g.Cylinders.createEmpty(F);const L=x(B,w,O),{cylinders:U,boundingSphere:q}=(0,o.createLinkCylinderImpostors)(I,L,O,F);if(q)U.setBoundingSphere(q);else if(U.cylinderCount>0){const{child:N}=B,k=y.Sphere3D.expand((0,y.Sphere3D)(),(N??B).boundary.sphere,1*O.sizeFactor);U.setBoundingSphere(k)}return U}function D(I,B,w,O,F){if(!(0,f.hasStructureVisibleBonds)(B,O)||!B.intraUnitBondMapping.bondCount)return n.Mesh.createEmpty(F);const L=x(B,w,O),{mesh:U,boundingSphere:q}=(0,o.createLinkCylinderMesh)(I,L,O,F);if(q)U.setBoundingSphere(q);else if(U.triangleCount>0){const{child:N}=B,k=y.Sphere3D.expand((0,y.Sphere3D)(),(N??B).boundary.sphere,1*O.sizeFactor);U.setBoundingSphere(k)}return U}e.StructureIntraUnitBondCylinderParams={...m.ComplexMeshParams,...m.ComplexCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function V(I,B,w,O){return w.tryUseImpostor&&O&&O.extensions.fragDepth?R(I):E(I)}function R(I){return(0,m.ComplexCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondCylinderParams),createGeometry:M,createLocationIterator:(B,w)=>(0,f.hasStructureVisibleBonds)(B,w)?f.BondIterator.fromStructureGroups(B,{includeLocation2:w.colorMode==="interpolate"}):v.EmptyLocationIterator,getLoci:f.getStructureGroupsBondLoci,eachLocation:f.eachStructureGroupsBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination,w.colorMode!==O.colorMode&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0),(0,f.hasStructureVisibleBonds)(U,w)&&U.interUnitBonds!==q.interUnitBonds&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0)},mustRecreate:(B,w,O)=>!w.tryUseImpostor||!O},I)}function E(I){return(0,m.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondCylinderParams),createGeometry:D,createLocationIterator:(B,w)=>(0,f.hasStructureVisibleBonds)(B,w)?f.BondIterator.fromStructureGroups(B):v.EmptyLocationIterator,getLoci:f.getStructureGroupsBondLoci,eachLocation:f.eachStructureGroupsBond,setUpdateState:(B,w,O,F,L,U,q)=>{B.createGeometry=w.sizeFactor!==O.sizeFactor||w.sizeAspectRatio!==O.sizeAspectRatio||w.radialSegments!==O.radialSegments||w.linkScale!==O.linkScale||w.linkSpacing!==O.linkSpacing||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.linkCap!==O.linkCap||w.aromaticScale!==O.aromaticScale||w.aromaticSpacing!==O.aromaticSpacing||w.aromaticDashCount!==O.aromaticDashCount||w.dashCount!==O.dashCount||w.dashScale!==O.dashScale||w.dashCap!==O.dashCap||w.stubCap!==O.stubCap||!(0,c.arrayEqual)(w.includeTypes,O.includeTypes)||!(0,c.arrayEqual)(w.excludeTypes,O.excludeTypes)||w.adjustCylinderLength!==O.adjustCylinderLength||w.multipleBonds!==O.multipleBonds||w.metalCoordination!==O.metalCoordination||w.adjustCylinderLength&&!u.SizeTheme.areEqual(F.size,L.size),(0,f.hasStructureVisibleBonds)(U,w)&&U.interUnitBonds!==q.interUnitBonds&&(B.createGeometry=!0,B.updateTransform=!0,B.updateColor=!0,B.updateSize=!0)},mustRecreate:(B,w,O)=>w.tryUseImpostor&&!!O},I)}})(gM)),gM}var vM={},k7;function bZ(){return k7||(k7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.InterUnitBondCylinderParams=void 0,e.InterUnitBondCylinderVisual=l,e.InterUnitBondCylinderImpostorVisual=S,e.InterUnitBondCylinderMeshVisual=T;const t=Ne(),r=Ke(),n=Rt(),i=Ge(),c=et(),o=Ca(),s=Br(),h=dt(),f=rC(),y=rt(),_=no(),g=Na(),a=ps(),d=zt(),p=Er(),u=new r.Bond.ElementBondIterator;function m(A,x,M,D){for(u.setElement(x,M,D);u.hasNext;){const V=u.move();return V.otherUnit.conformation.position(V.otherUnit.elements[V.otherIndex],A),A}return null}const v=(0,i.Vec3)();function b(A,x,M){const D=r.StructureElement.Location.create(A),V=r.Bond.Location(A,void 0,void 0,A,void 0,void 0),R=A.interUnitBonds,{edgeCount:E,edges:I}=R,{sizeFactor:B,sizeAspectRatio:w,adjustCylinderLength:O,aromaticBonds:F,multipleBonds:L,metalCoordination:U}=M,q=L==="off",N=L==="symmetric",k=U==="dashed",j=(0,i.Vec3)();let H;const{child:G}=A;M.includeParent&&G&&(H=Y=>{const K=I[Y],Q=G.unitMap.get(K.unitA),J=G.unitMap.get(K.unitB),te=A.unitMap.get(K.unitA).elements[K.indexA],$=A.unitMap.get(K.unitB).elements[K.indexB];return Q&&g.SortedArray.has(Q.elements,te)&&(!J||!g.SortedArray.has(J.elements,$))});const z=Y=>{const K=I[Y];return V.aUnit=A.unitMap.get(K.unitA),V.aIndex=K.indexA,V.bUnit=A.unitMap.get(K.unitB),V.bIndex=K.indexB,x.size.size(V)*B},W=Y=>{const K=I[Y];return D.unit=A.unitMap.get(K.unitA),D.element=D.unit.elements[K.indexA],x.size.size(D)*B},X=Y=>{const K=I[Y];return D.unit=A.unitMap.get(K.unitB),D.element=D.unit.elements[K.indexB],x.size.size(D)*B};return{linkCount:E,referencePosition:Y=>{const K=I[Y];let Q,J,ae,te;if(K.unitA<K.unitB)Q=A.unitMap.get(K.unitA),J=A.unitMap.get(K.unitB),ae=K.indexA,te=K.indexB;else if(K.unitA>K.unitB)Q=A.unitMap.get(K.unitB),J=A.unitMap.get(K.unitA),ae=K.indexB,te=K.indexA;else throw new Error("same units in createInterUnitBondCylinderMesh");return m(v,A,Q,ae)||m(v,A,J,te)},position:(Y,K,Q,J)=>{const ae=I[Q],te=A.unitMap.get(ae.unitA),ne=A.unitMap.get(ae.unitB);if(te.conformation.position(te.elements[ae.indexA],Y),ne.conformation.position(ne.elements[ae.indexB],K),J&&O){const $=W(Q),ie=X(Q),Z=Math.min($,ie)*w,re=Math.sqrt(Math.max(0,$*$-Z*Z))-.05,oe=Math.sqrt(Math.max(0,ie*ie-Z*Z))-.05;if(re<=.01&&oe<=.01)return;i.Vec3.normalize(j,i.Vec3.sub(j,K,Y)),i.Vec3.scaleAndAdd(Y,Y,j,re),i.Vec3.scaleAndAdd(K,K,j,-oe)}},style:Y=>{const K=I[Y].props.order,Q=c.BitFlags.create(I[Y].props.flag);return h.BondType.is(Q,h.BondType.Flag.MetallicCoordination)?k?o.LinkStyle.Dashed:o.LinkStyle.Solid:h.BondType.is(Q,h.BondType.Flag.HydrogenBond)?o.LinkStyle.Dashed:K===3?q?o.LinkStyle.Solid:N?o.LinkStyle.Triple:o.LinkStyle.OffsetTriple:F&&h.BondType.is(Q,h.BondType.Flag.Aromatic)?o.LinkStyle.Aromatic:K!==2||q?o.LinkStyle.Solid:N?o.LinkStyle.Double:o.LinkStyle.OffsetDouble},radius:Y=>z(Y)*w,ignore:(0,f.makeInterBondIgnoreTest)(A,M),stub:H}}function P(A,x,M,D,V){if(!(0,f.hasStructureVisibleBonds)(x,D)||!x.interUnitBonds.edgeCount)return _.Cylinders.createEmpty(V);const R=b(x,M,D),{cylinders:E,boundingSphere:I}=(0,o.createLinkCylinderImpostors)(A,R,D,V);if(I)E.setBoundingSphere(I);else if(E.cylinderCount>0){const{child:B}=x,w=y.Sphere3D.expand((0,y.Sphere3D)(),(B??x).boundary.sphere,1*D.sizeFactor);E.setBoundingSphere(w)}return E}function C(A,x,M,D,V){if(!(0,f.hasStructureVisibleBonds)(x,D)||!x.interUnitBonds.edgeCount)return n.Mesh.createEmpty(V);const R=b(x,M,D),{mesh:E,boundingSphere:I}=(0,o.createLinkCylinderMesh)(A,R,D,V);if(I)E.setBoundingSphere(I);else if(E.triangleCount>0){const{child:B}=x,w=y.Sphere3D.expand((0,y.Sphere3D)(),(B??x).boundary.sphere,1*D.sizeFactor);E.setBoundingSphere(w)}return E}e.InterUnitBondCylinderParams={...s.ComplexMeshParams,...s.ComplexCylindersParams,...f.BondCylinderParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:t.ParamDefinition.Boolean(!0),includeParent:t.ParamDefinition.Boolean(!1)};function l(A,x,M,D){return M.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(D)?S(A):T(A)}function S(A){return(0,s.ComplexCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondCylinderParams),createGeometry:P,createLocationIterator:(x,M)=>
7087(0,f.hasStructureVisibleBonds)(x,M)?f.BondIterator.fromStructure(x,{includeLocation2:M.colorMode==="interpolate"}):d.EmptyLocationIterator,getLoci:f.getInterBondLoci,eachLocation:f.eachInterBond,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.sizeAspectRatio!==D.sizeAspectRatio||M.linkScale!==D.linkScale||M.linkSpacing!==D.linkSpacing||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.linkCap!==D.linkCap||M.aromaticScale!==D.aromaticScale||M.aromaticSpacing!==D.aromaticSpacing||M.aromaticDashCount!==D.aromaticDashCount||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.stubCap!==D.stubCap||!(0,c.arrayEqual)(M.includeTypes,D.includeTypes)||!(0,c.arrayEqual)(M.excludeTypes,D.excludeTypes)||M.adjustCylinderLength!==D.adjustCylinderLength||M.multipleBonds!==D.multipleBonds||M.metalCoordination!==D.metalCoordination,M.colorMode!==D.colorMode&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0),(0,f.hasStructureVisibleBonds)(E,M)&&E.interUnitBonds!==I.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,M,D)=>!M.tryUseImpostor||!D},A)}function T(A){return(0,s.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondCylinderParams),createGeometry:C,createLocationIterator:(x,M)=>(0,f.hasStructureVisibleBonds)(x,M)?f.BondIterator.fromStructure(x):d.EmptyLocationIterator,getLoci:f.getInterBondLoci,eachLocation:f.eachInterBond,setUpdateState:(x,M,D,V,R,E,I)=>{x.createGeometry=M.sizeFactor!==D.sizeFactor||M.sizeAspectRatio!==D.sizeAspectRatio||M.radialSegments!==D.radialSegments||M.linkScale!==D.linkScale||M.linkSpacing!==D.linkSpacing||M.ignoreHydrogens!==D.ignoreHydrogens||M.ignoreHydrogensVariant!==D.ignoreHydrogensVariant||M.linkCap!==D.linkCap||M.aromaticScale!==D.aromaticScale||M.aromaticSpacing!==D.aromaticSpacing||M.aromaticDashCount!==D.aromaticDashCount||M.dashCount!==D.dashCount||M.dashScale!==D.dashScale||M.dashCap!==D.dashCap||M.stubCap!==D.stubCap||!(0,c.arrayEqual)(M.includeTypes,D.includeTypes)||!(0,c.arrayEqual)(M.excludeTypes,D.excludeTypes)||M.adjustCylinderLength!==D.adjustCylinderLength||M.multipleBonds!==D.multipleBonds||M.metalCoordination!==D.metalCoordination||M.adjustCylinderLength&&!a.SizeTheme.areEqual(V.size,R.size),(0,f.hasStructureVisibleBonds)(E,M)&&E.interUnitBonds!==I.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,M,D)=>M.tryUseImpostor&&!!D},A)}})(vM)),vM}var bM={},ii={},l_={},F7;function P2(){if(F7)return l_;
7087F7=1,Object.defineProperty(l_,"__esModule",{value:!0}),l_.SpheresBuilder=void 0;const e=_t(),t=ro(),r=e.ChunkedArray.add3,n=e.ChunkedArray.add;var i;return(function(c){function o(s=2048,h=1024,f){const y=e.ChunkedArray.create(Float32Array,3,h,f?f.centerBuffer.ref.value:s),_=e.ChunkedArray.create(Float32Array,1,h,f?f.groupBuffer.ref.value:s);return{add:(g,a,d,p)=>{r(y,g,a,d),n(_,p)},getSpheres:()=>{const g=e.ChunkedArray.compact(y,!0),a=e.ChunkedArray.compact(_,!0);return t.Spheres.create(g,a,y.elementCount,f)}}}c.create=o})(i||(l_.SpheresBuilder=i={})),l_}var L7;function zi(){if(L7)return ii;L7=1,Object.defineProperty(ii,"__esModule",{value:!0}),ii.ElementIterator=void 0,ii.makeElementIgnoreTest=p,ii.createElementSphereMesh=u,ii.createElementSphereImpostor=m,ii.eachElement=v,ii.getElementLoci=b,ii.createStructureElementSphereMesh=P,ii.createStructureElementSphereImpostor=C,ii.eachSerialElement=l,ii.getSerialElementLoci=S;const e=Ge(),t=Ke(),r=gt(),n=at(),i=Rt(),c=Xf(),o=$t(),s=Jn(),h=_n(),f=zt(),y=ro(),_=P2(),g=Er(),a=rt(),d=e.Vec3.add;function p(A,x,M){const{ignoreHydrogens:D,ignoreHydrogensVariant:V,traceOnly:R}=M,E=t.Unit.isCoarse(x),{child:I}=A,B=I?.unitMap.get(x.id);if(I&&!B)throw new Error("expected childUnit to exist if child exists");if(!(!I&&!D&&!R))return w=>!!B&&!n.SortedArray.has(B.elements,w)||!E&&D&&(0,g.isHydrogen)(A,x,w,V)||R&&!(0,g.isTrace)(x,w)}function u(A,x,M,D,V,R){const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return i.Mesh.createEmpty(R);const{detail:B,sizeFactor:w,stride:O}=V,F=R?.hasBoundingSphere()?a.Sphere3D.clone(R.boundingSphere):void 0,{elements:L,conformation:U}=x,q=L.length,N=q*(0,c.sphereVertexCount)(B),k=o.MeshBuilder.createState(N,N/2,R),j=(0,e.Vec3)(),H=p(M,x,V),G=t.StructureElement.Location.create(M,x),z=D.size.size,W=(0,e.Vec3)();let X=0,Y=0;for(let J=0;J<q;J++){if(O&&J%O!==0||H&&H(L[J]))continue;U.invariantPosition(L[J],j),d(W,W,j),Y+=1,G.element=L[J];const ae=z(G);ae>X&&(X=ae),k.currentGroup=J,(0,s.addSphere)(k,j,ae*w,B)}const K=o.MeshBuilder.getMesh(k);if(Y===0)return K;let Q;return e.Vec3.scale(W,W,1/Y),F&&e.Vec3.distance(W,F.center)/F.radius<.1?Q=F:Q=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,X*w+.05),K.setBoundingSphere(Q),K}function m(A,x,M,D,V,R){const{child:E}=M,I=E?.unitMap.get(x.id);if(E&&!I)return y.Spheres.createEmpty(R);const{sizeFactor:B,stride:w}=V,O=R?.hasBoundingSphere()?a.Sphere3D.clone(R.boundingSphere):void 0,{elements:F,conformation:L}=x,U=F.length,q=_.SpheresBuilder.create(U,U/2,R),N=(0,e.Vec3)(),k=p(M,x,V),j=t.StructureElement.Location.create(M,x),H=D.size.size,G=(0,e.Vec3)();let z=0,W=0;if(w&&w>1||k||D.size.granularity!=="uniform")for(let K=0;K<U;K++){if(w&&K%w!==0||k&&k(F[K]))continue;L.invariantPosition(F[K],N),q.add(N[0],N[1],N[2],K),d(G,G,N),W+=1,j.element=F[K];const Q=H(j);Q>z&&(z=Q)}else{for(let K=0;K<U;K++)L.invariantPosition(F[K],N),q.add(N[0],N[1],N[2],K),d(G,G,N);W=U,z=H(j)}const X=q.getSpheres();if(W===0)return X;let Y;return e.Vec3.scale(G,G,1/W),O&&e.Vec3.distance(G,O.center)/O.radius<.1?Y=O:Y=a.Sphere3D.expand((0,a.Sphere3D)(),(I??x).boundary.sphere,z*B+.05),X.setBoundingSphere(Y),X}function v(A,x,M){let D=!1;if(!t.StructureElement.Loci.is(A))return!1;const{structure:V,group:R}=x;if(!t.Structure.areEquivalent(A.structure,V))return!1;const E=R.elements.length,{unitIndexMap:I}=R;for(const B of A.elements){const w=I.get(B.unit.id);if(w!==void 0){const O=w*E;if(n.Interval.is(B.indices)){const F=O+n.Interval.start(B.indices),L=O+n.Interval.end(B.indices);M(n.Interval.ofBounds(F,L))&&(D=!0)}else for(let F=0,L=B.indices.length;F<L;F++){const U=B.indices[F];let q=F+1;for(;q<L&&B.indices[q]===U;)q++;F=q-1;const N=B.indices[F];D=M(n.Interval.ofRange(O+U,O+N))||D}}}return D}function b(A,x,M){const{objectId:D,instanceId:V,groupId:R}=A;if(M===D){const{structure:E,group:I}=x,B=I.units[V],w=R===h.PickingId.Null?n.OrderedSet.ofRange(0,B.elements.length):n.OrderedSet.ofSingleton(R);return t.StructureElement.Loci(E.target,[{unit:B,indices:w}])}return r.EmptyLoci}function P(A,x,M,D,V){const{child:R}=x,{detail:E,sizeFactor:I,stride:B}=D,w=V?.hasBoundingSphere()?a.Sphere3D.clone(V.boundingSphere):void 0,{getSerialIndex:O}=x.serialMapping,L=x.elementCount*(0,c.sphereVertexCount)(E),U=o.MeshBuilder.createState(L,L/2,V),q=M.size.size,N=(0,e.Vec3)();let k=0,j=0;for(const z of x.units){const W=R?.unitMap.get(z.id);if(R&&!W)continue;const{elements:X,conformation:Y}=z,K=X.length,Q=(0,e.Vec3)(),J=p(x,z,D),ae=t.StructureElement.Location.create(x,z);for(let te=0;te<K;te++){const ne=X[te];if(B&&te%B!==0||J&&J(ne))continue;Y.position(ne,Q),d(N,N,Q),j+=1,ae.element=ne;const $=q(ae);$>k&&(k=$),U.currentGroup=O(z,ne),(0,s.addSphere)(U,Q,$*I,E)}}const H=o.MeshBuilder.getMesh(U);if(j===0)return H;let G;return e.Vec3.scale(N,N,1/j),w&&e.Vec3.distance(N,w.center)/w.radius<1?G=w:G=a.Sphere3D.expand((0,a.Sphere3D)(),(R??x).boundary.sphere,k*I+.05),H.setBoundingSphere(G),H}function C(A,x,M,D,V){const{child:R}=x,{sizeFactor:E,stride:I}=D,B=V?.hasBoundingSphere()?a.Sphere3D.clone(V.boundingSphere):void 0,{getSerialIndex:w}=x.serialMapping,O=x.elementCount,F=_.SpheresBuilder.create(O,O/2,V),L=M.size.size,U=(0,e.Vec3)();let q=0,N=0;for(const H of x.units){const G=R?.unitMap.get(H.id);if(R&&!G)continue;const{elements:z,conformation:W}=H,X=z.length,Y=(0,e.Vec3)(),K=p(x,H,D),Q=t.StructureElement.Location.create(x,H);if(I&&I>1||K||M.size.granularity!=="uniform")for(let J=0;J<X;J++){const ae=z[J];
7087if(I&&J%I!==0||K&&K(ae))continue;W.position(ae,Y),F.add(Y[0],Y[1],Y[2],w(H,ae)),d(U,U,Y),N+=1,Q.element=ae;const te=L(Q);te>q&&(q=te)}else{for(let J=0;J<X;J++){const ae=z[J];W.position(ae,Y),F.add(Y[0],Y[1],Y[2],w(H,ae)),d(U,U,Y)}N+=X,q=L(Q)}}const k=F.getSpheres();if(N===0)return k;let j;return e.Vec3.scale(U,U,1/N),B&&e.Vec3.distance(U,B.center)/B.radius<1?j=B:j=a.Sphere3D.expand((0,a.Sphere3D)(),(R??x).boundary.sphere,q*E+.05),k.setBoundingSphere(j),k}function l(A,x,M){let D=!1;if(!t.StructureElement.Loci.is(A)||!t.Structure.areEquivalent(A.structure,x))return!1;const{cumulativeUnitElementCount:V}=x.serialMapping;for(const R of A.elements){const E=x.unitIndexMap.get(R.unit.id);if(E!==void 0)if(n.Interval.is(R.indices)){const I=V[E]+n.Interval.start(R.indices),B=V[E]+n.Interval.end(R.indices);M(n.Interval.ofBounds(I,B))&&(D=!0)}else for(let I=0,B=R.indices.length;I<B;I++){const w=V[E]+R.indices[I];M(n.Interval.ofSingleton(w))&&(D=!0)}}return D}function S(A,x,M){const{objectId:D,groupId:V}=A;if(M===D){if(V===h.PickingId.Null)return t.Structure.Loci(x);{const{unitIndices:R,cumulativeUnitElementCount:E}=x.serialMapping,I=R[V],B=x.units[I],w=V-E[I],O=n.OrderedSet.ofSingleton(w);return t.StructureElement.Loci(x,[{unit:B,indices:O}])}}return r.EmptyLoci}var T;return(function(A){function x(D){const{group:V,structure:R}=D,E=V.elements.length,I=V.units.length,B=t.StructureElement.Location.create(R),w=(O,F)=>{const L=V.units[F];return B.unit=L,B.element=L.elements[O],B};return(0,f.LocationIterator)(E,I,1,w)}A.fromGroup=x;function M(D){const{units:V,elementCount:R}=D,E=R,I=1,{unitIndices:B,elementIndices:w}=D.serialMapping,O=t.StructureElement.Location.create(D),F=L=>(O.unit=V[B[L]],O.element=w[L],O);return(0,f.LocationIterator)(E,I,1,F,!0)}A.fromStructure=M})(T||(ii.ElementIterator=T={})),ii}var N7;function _Z(){return N7||(N7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureElementSphereParams=e.ElementSphereParams=e.CommonElementSphereParams=void 0,e.ElementSphereVisual=s,e.ElementSphereImpostorVisual=h,e.ElementSphereMeshVisual=f,e.StructureElementSphereVisual=y,e.StructureElementSphereImpostorVisual=_,e.StructureElementSphereMeshVisual=g;const t=Ne(),r=mr(),n=zi(),i=Tt(),c=Er(),o=Br();e.CommonElementSphereParams={sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},i.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),tryUseImpostor:t.ParamDefinition.Boolean(!0),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})},e.ElementSphereParams={...r.UnitsMeshParams,...r.UnitsSpheresParams,...e.CommonElementSphereParams};function s(a,d,p,u){return p.tryUseImpostor&&(0,c.checkSphereImpostorSupport)(u)?h(a):f(a)}function h(a){return(0,r.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementSphereParams),createGeometry:n.createElementSphereImpostor,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>!p.tryUseImpostor||!u},a)}function f(a){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementSphereParams),createGeometry:n.createElementSphereMesh,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.detail!==u.detail||p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>p.tryUseImpostor&&!!u},a)}e.StructureElementSphereParams={...o.ComplexMeshParams,...o.ComplexSpheresParams,...e.CommonElementSphereParams};function y(a,d,p,u){return p.tryUseImpostor&&u&&u.extensions.fragDepth&&u.extensions.textureFloat?_(a):g(a)}function _(a){return(0,o.ComplexSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementSphereParams),createGeometry:n.createStructureElementSphereImpostor,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>
7087!p.tryUseImpostor||!u},a)}function g(a){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementSphereParams),createGeometry:n.createStructureElementSphereMesh,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.detail!==u.detail||p.ignoreHydrogens!==u.ignoreHydrogens||p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant||p.traceOnly!==u.traceOnly||p.stride!==u.stride},mustRecreate:(d,p,u)=>p.tryUseImpostor&&!!u},a)}})(bM)),bM}var q7;function zce(){return q7||(q7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BallAndStickRepresentationProvider=e.BallAndStickParams=void 0,e.getBallAndStickParams=a,e.BallAndStickRepresentation=d;const t=vZ(),r=bZ(),n=_Z(),i=Ne(),c=Sa(),o=JS(),s=Yr(),h=Lt(),f=Ke(),y=Qf(),_=Tt(),g={"element-sphere":(p,u)=>(0,c.UnitsRepresentation)("Element sphere",p,u,n.ElementSphereVisual),"intra-bond":(p,u)=>(0,c.UnitsRepresentation)("Intra-unit bond cylinder",p,u,t.IntraUnitBondCylinderVisual),"inter-bond":(p,u)=>(0,o.ComplexRepresentation)("Inter-unit bond cylinder",p,u,r.InterUnitBondCylinderVisual),"structure-element-sphere":(p,u)=>(0,o.ComplexRepresentation)("Structure element sphere",p,u,n.StructureElementSphereVisual),"structure-intra-bond":(p,u)=>(0,o.ComplexRepresentation)("Structure intra-unit bond cylinder",p,u,t.StructureIntraUnitBondCylinderVisual)};e.BallAndStickParams={...n.ElementSphereParams,traceOnly:i.ParamDefinition.Boolean(!1,{isHidden:!0}),...t.IntraUnitBondCylinderParams,...r.InterUnitBondCylinderParams,includeParent:i.ParamDefinition.Boolean(!1),unitKinds:(0,y.getUnitKindsParam)(["atomic"]),sizeFactor:i.ParamDefinition.Numeric(.15,{min:.01,max:10,step:.01}),sizeAspectRatio:i.ParamDefinition.Numeric(2/3,{min:.01,max:3,step:.01}),visuals:i.ParamDefinition.MultiSelect(["element-sphere","intra-bond","inter-bond"],i.ParamDefinition.objectToOptions(g)),bumpFrequency:i.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},_.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},_.BaseGeometry.ShadingCategory)};function a(p,u){let m=e.BallAndStickParams;return f.Structure.getSize(u)>=f.Structure.Size.Huge?(m=i.ParamDefinition.clone(m),m.visuals.defaultValue=["element-sphere","intra-bond"]):u.unitSymmetryGroups.length>500&&(m=i.ParamDefinition.clone(m),m.visuals.defaultValue=["structure-element-sphere","structure-intra-bond"]),m}function d(p,u){return h.Representation.createMulti("Ball & Stick",p,u,s.StructureRepresentationStateBuilder,g)}e.BallAndStickRepresentationProvider=(0,s.StructureRepresentationProvider)({name:"ball-and-stick",label:"Ball & Stick",description:"Displays atoms as spheres and bonds as cylinders.",factory:d,getParams:a,defaultValues:i.ParamDefinition.getDefaultValues(e.BallAndStickParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:p=>p.elementCount>0,getData:(p,u)=>u.includeParent?p.asParent():p,mustRecreate:(p,u)=>p.includeParent!==u.includeParent})})(hM)),hM}var _M={},SM={},U7;function Hce(){return U7||(U7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateLinkParams=void 0,e.CarbohydrateLinkVisual=d;const t=Ke(),r=gt(),n=Ge(),i=Ca(),c=at(),o=Br(),s=mr(),h=Ne(),f=zt(),y=_n(),_=Er(),g=rt();function a(b,P,C,l,S){const{links:T,elements:A}=P.carbohydrates,{linkSizeFactor:x}=l,M=t.StructureElement.Location.create(P),D={linkCount:T.length,position:(E,I,B)=>{const w=T[B];n.Vec3.copy(E,A[w.carbohydrateIndexA].geometry.center),n.Vec3.copy(I,A[w.carbohydrateIndexB].geometry.center)},radius:E=>{const I=T[E],B=A[I.carbohydrateIndexA],w=B.unit.rings.all[B.ringIndex];return M.unit=B.unit,M.element=B.unit.elements[w[0]],C.size.size(M)*x}},{mesh:V,boundingSphere:R}=(0,i.createLinkCylinderMesh)(b,D,l,S);if(R)V.setBoundingSphere(R);else if(V.triangleCount>0){const E=g.Sphere3D.expand((0,g.Sphere3D)(),P.boundary.sphere,1*x);V.setBoundingSphere(E)}return V}e.CarbohydrateLinkParams={...s.UnitsMeshParams,...i.LinkCylinderParams,linkSizeFactor:h.ParamDefinition.Numeric(.3,{min:0,max:3,step:.01})};function d(b){return(0,o.ComplexMeshVisual)({defaultProps:h.ParamDefinition.getDefaultValues(e.CarbohydrateLinkParams),createGeometry:a,createLocationIterator:p,getLoci:u,eachLocation:v,setUpdateState:(P,C,l)=>{P.createGeometry=C.linkSizeFactor!==l.linkSizeFactor||C.radialSegments!==l.radialSegments||C.linkCap!==l.linkCap}},b)}function p(b){const{elements:P,links:C}=b.carbohydrates,l=C.length,S=1,T=t.StructureElement.Location.create(b),A=x=>{const M=C[x],D=P[M.carbohydrateIndexA],V=D.unit.rings.all[D.ringIndex];return T.unit=D.unit,T.element=D.unit.elements[V[0]],T};return(0,f.LocationIterator)(l,S,1,A,!0)}function u(b,P,C){const{objectId:l,groupId:S}=b;if(C===l){if(S===y.PickingId.Null)return t.Structure.Loci(P);{const{links:T,elements:A}=P.carbohydrates,x=T[S],M=A[x.carbohydrateIndexA],D=A[x.carbohydrateIndexB];return t.StructureElement.Loci.union((0,_.getAltResidueLociFromId)(P,M.unit,M.residueIndex,M.altId),(0,_.getAltResidueLociFromId)(P,D.unit,D.residueIndex,D.altId))}}return r.EmptyLoci}const m=new Set;function v(b,P,C){let l=!1;if(!t.StructureElement.Loci.is(b)||!t.Structure.areEquivalent(b.structure,P))return!1;const{getLinkIndices:S}=P.carbohydrates;for(const{unit:T,indices:A}of b.elements)t.Unit.isAtomic(T)&&(m.clear(),c.OrderedSet.forEach(A,x=>
7087{const M=S(T,T.elements[x]);for(let D=0,V=M.length;D<V;++D)m.has(M[D])||(m.add(M[D]),C(c.Interval.ofSingleton(M[D]))&&(l=!0))}));return l}})(SM)),SM}var CM={},es={},j7;function Wce(){if(j7)return es;j7=1,Object.defineProperty(es,"__esModule",{value:!0}),es.Pyramid=f,es.TriangularPyramid=_,es.OctagonalPyramid=a,es.PerforatedOctagonalPyramid=p,es.PyramidCage=u,es.OctagonalPyramidCage=v;const e=Ge(),t=to(),r=kS(),n=e.Vec3.create(0,0,-.5),i=e.Vec3.create(0,0,.5),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)();function f(b){const P=b.length/3,l=(P===3?1:P===4?2:P)+P,S=P===4?P*3+4:l*3,T=(0,t.PrimitiveBuilder)(l,S);for(let A=0;A<P;++A){const x=(A+1)%P;e.Vec3.set(c,b[A*3],b[A*3+1],-.5),e.Vec3.set(o,b[x*3],b[x*3+1],-.5),T.add(c,o,i)}if(P===3)e.Vec3.set(c,b[0],b[1],-.5),e.Vec3.set(o,b[3],b[4],-.5),e.Vec3.set(s,b[6],b[7],-.5),T.add(s,o,c);else if(P===4)e.Vec3.set(c,b[0],b[1],-.5),e.Vec3.set(o,b[3],b[4],-.5),e.Vec3.set(s,b[6],b[7],-.5),e.Vec3.set(h,b[9],b[10],-.5),T.addQuad(h,s,o,c);else for(let A=0;A<P;++A){const x=(A+1)%P;e.Vec3.set(c,b[A*3],b[A*3+1],-.5),e.Vec3.set(o,b[x*3],b[x*3+1],-.5),T.add(n,o,c)}return T.getPrimitive()}let y;function _(){return y||(y=f((0,r.polygon)(3,!0))),y}let g;function a(){return g||(g=f((0,r.polygon)(8,!0))),g}let d;function p(){if(!d){const b=(0,r.polygon)(8,!0),P=new Float32Array(30);for(let l=0;l<8;++l)P[l*3]=b[l*3],P[l*3+1]=b[l*3+1],P[l*3+2]=-.5;P[24]=0,P[25]=0,P[26]=-.5,P[27]=0,P[28]=0,P[29]=.5;const C=[0,1,8,1,2,8,4,5,8,5,6,8,2,3,9,3,4,9,6,7,9,7,0,9];d=(0,t.createPrimitive)(P,C)}return d}function u(b){const P=b.length/3,C=[],l=[];let S=1;C.push(i[0],i[1],i[2]);for(let T=0;T<P;++T)C.push(b[T*3],b[T*3+1],-.5),l.push(0,S),S+=1;for(let T=0;T<P;++T){const A=(T+1)%P;l.push(T+1,A+1)}return{vertices:C,edges:l}}let m;function v(){return m||(m=u((0,r.polygon)(8,!0))),m}return es}var PM={},G7;function $ce(){return G7||(G7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultStarProps=void 0,e.Star=h;
7087const t=Ge(),r=to();e.DefaultStarProps={pointCount:5,outerRadius:1,innerRadius:.5,thickness:.3};const n=t.Vec3.zero(),i=t.Vec3.zero(),c=t.Vec3.zero(),o=t.Vec3.zero(),s=t.Vec3.zero();function h(f){const{outerRadius:y,innerRadius:_,thickness:g,pointCount:a}={...e.DefaultStarProps,...f},d=a*2*2,p=(0,r.PrimitiveBuilder)(d),u=new Float32Array(a*2),m=new Float32Array(a*2);for(let v=0;v<a;++v){const b=v*2,P=v*2+1,C=(b+1)/a*Math.PI,l=(P+1)/a*Math.PI;m[b]=Math.cos(C)*y,m[P]=Math.sin(C)*y,u[b]=Math.cos(l)*_,u[P]=Math.sin(l)*_}t.Vec3.set(n,0,0,g/2),t.Vec3.set(i,0,0,-g/2);for(let v=0;v<a;++v){const b=(v+1)%a;t.Vec3.set(c,m[v*2],m[v*2+1],0),t.Vec3.set(o,u[v*2],u[v*2+1],0),t.Vec3.set(s,m[b*2],m[b*2+1],0),p.add(n,c,o),p.add(o,c,i),p.add(n,o,s),p.add(s,o,i)}return p.getPrimitive()}})(PM)),PM}var TM={},z7;function Xce(){return z7||(z7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.perforatedOctahedronIndices=e.octahedronIndices=e.octahedronVertices=void 0,e.Octahedron=c,e.PerforatedOctahedron=s,e.OctahedronCage=f;const t=to(),r=Gf();e.octahedronVertices=[.5,0,0,-.5,0,0,0,.5,0,0,-.5,0,0,0,.5,0,0,-.5],e.octahedronIndices=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e.perforatedOctahedronIndices=[0,2,4,0,4,3,1,2,5,1,5,3];const n=[0,2,1,3,2,1,3,0,0,4,1,4,2,4,3,4,0,5,1,5,2,5,3,5];let i;function c(){return i||(i=(0,t.createPrimitive)(e.octahedronVertices,e.octahedronIndices)),i}let o;function s(){return o||(o=(0,t.createPrimitive)(e.octahedronVertices,e.perforatedOctahedronIndices)),o}const h=(0,r.createCage)(e.octahedronVertices,n);function f(){return h}})(TM)),TM}var H7;function Kce(){return H7||(H7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateSymbolParams=void 0,e.CarbohydrateSymbolVisual=F;
7087const t=Ge(),r=FS(),n=Wce(),i=$ce(),c=Xce(),o=Rw(),s=Ke(),h=$t(),f=xf(),y=Jn(),_=Br(),g=Ne(),a=zt(),d=_n(),p=at(),u=gt(),m=Er(),v=Tt(),b=t.Mat4.identity(),P=(0,t.Vec3)(),C=(0,t.Vec3)(),l=2*.806,S=(0,r.Box)(),T=(0,r.PerforatedBox)(),A=(0,n.OctagonalPyramid)(),x=(0,n.PerforatedOctagonalPyramid)(),M=(0,i.Star)({outerRadius:1,innerRadius:.5,thickness:.5,pointCount:5}),D=(0,c.Octahedron)(),V=(0,c.PerforatedOctahedron)(),R=(0,o.DiamondPrism)(),E=(0,o.PentagonalPrism)(),I=(0,o.HexagonalPrism)(),B=(0,o.ShiftedHexagonalPrism)(),w=(0,o.HeptagonalPrism)();function O(k,j,H,G,z){const W=h.MeshBuilder.createState(256,128,z),{detail:X,sizeFactor:Y}=G,K=j.carbohydrates,Q=K.elements.length,J=s.StructureElement.Location.create(j);for(let ae=0;ae<Q;++ae){const te=K.elements[ae],ne=te.unit.rings.all[te.ringIndex],$=(0,f.getSaccharideShape)(te.component.type,ne.length);J.unit=te.unit,J.element=te.unit.elements[ne[0]];const ie=H.size.size(J),Z=ie*Y,re=ie*Y*l,{center:oe,normal:ce,direction:ue}=te.geometry;switch(t.Vec3.add(C,oe,ue),t.Mat4.targetTo(b,oe,C,ce),t.Mat4.setTranslation(b,oe),W.currentGroup=ae*2,$){case f.SaccharideShape.FilledSphere:(0,y.addSphere)(W,oe,Z,X);break;case f.SaccharideShape.FilledCube:t.Mat4.scaleUniformly(b,b,re),h.MeshBuilder.addPrimitive(W,b,S);break;case f.SaccharideShape.CrossedCube:t.Mat4.scaleUniformly(b,b,re),h.MeshBuilder.addPrimitive(W,b,T),t.Mat4.mul(b,b,t.Mat4.rotZ90X180),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,T);break;case f.SaccharideShape.FilledCone:t.Mat4.scaleUniformly(b,b,re*1.2),h.MeshBuilder.addPrimitive(W,b,A);break;case f.SaccharideShape.DevidedCone:t.Mat4.scaleUniformly(b,b,re*1.2),h.MeshBuilder.addPrimitive(W,b,x),t.Mat4.mul(b,b,t.Mat4.rotZ90),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,x);break;case f.SaccharideShape.FlatBox:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,S);break;case f.SaccharideShape.FilledStar:t.Mat4.scaleUniformly(b,b,re),t.Mat4.mul(b,b,t.Mat4.rotZY90),h.MeshBuilder.addPrimitive(W,b,M);break;case f.SaccharideShape.FilledDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re*1.4,re*1.4,re*1.4)),h.MeshBuilder.addPrimitive(W,b,D);break;case f.SaccharideShape.DividedDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re*1.4,re*1.4,re*1.4)),h.MeshBuilder.addPrimitive(W,b,V),t.Mat4.mul(b,b,t.Mat4.rotY90),W.currentGroup+=1,h.MeshBuilder.addPrimitive(W,b,V);break;case f.SaccharideShape.FlatDiamond:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re/2,re/2)),h.MeshBuilder.addPrimitive(W,b,R);break;case f.SaccharideShape.DiamondPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,R);break;case f.SaccharideShape.PentagonalPrism:case f.SaccharideShape.Pentagon:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,E);break;case f.SaccharideShape.HexagonalPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,I);break;case f.SaccharideShape.HeptagonalPrism:t.Mat4.mul(b,b,t.Mat4.rotZY90),t.Mat4.scale(b,b,t.Vec3.set(P,re,re,re/2)),h.MeshBuilder.addPrimitive(W,b,w);break;case f.SaccharideShape.FlatHexagon:default:t.Mat4.mul(b,b,t.Mat4.rotZYZ90),t.Mat4.scale(b,b,t.Vec3.set(P,re/1.5,re,re/2)),h.MeshBuilder.addPrimitive(W,b,B);break}}return h.MeshBuilder.getMesh(W)}e.CarbohydrateSymbolParams={..._.ComplexMeshParams,detail:g.ParamDefinition.Numeric(0,{min:0,max:3,step:1},v.BaseGeometry.CustomQualityParamInfo),sizeFactor:g.ParamDefinition.Numeric(1.75,{min:0,max:10,step:.01})};function F(k){return(0,_.ComplexMeshVisual)({defaultProps:g.ParamDefinition.getDefaultValues(e.CarbohydrateSymbolParams),createGeometry:O,createLocationIterator:L,getLoci:U,eachLocation:N,setUpdateState:(j,H,G)=>{j.createGeometry=H.sizeFactor!==G.sizeFactor||H.detail!==G.detail}},k)}function L(k){const j=k.carbohydrates.elements,H=j.length*2,G=1,z=s.StructureElement.Location.create(k);function W(Y,K){const Q=j[Math.floor(Y/2)],J=Q.unit.rings.all[Q.ringIndex];return z.unit=Q.unit,z.element=Q.unit.elements[J[0]],z}function X(Y,K){return Y%2===1}return(0,a.LocationIterator)(H,G,1,W,!0,X)}function U(k,j,H){const{objectId:G,groupId:z}=k;if(H===G){if(z===d.PickingId.Null)return s.Structure.Loci(j);{const W=j.carbohydrates.elements[Math.floor(z/2)];return(0,m.getAltResidueLociFromId)(j,W.unit,W.residueIndex,W.altId)}}return u.EmptyLoci}const q=new Set;function N(k,j,H){const{getElementIndices:G}=j.carbohydrates;let z=!1;if(!s.StructureElement.Loci.is(k)||!s.Structure.areEquivalent(k.structure,j))return!1;for(const{unit:W,indices:X}of k.elements)s.Unit.isAtomic(W)&&(q.clear(),p.OrderedSet.forEach(X,Y=>{const K=G(W,W.elements[Y]);for(let Q=0,J=K.length;Q<J;++Q)q.has(K[Q])||(q.add(K[Q]),H(p.Interval.ofSingleton(K[Q]*2))&&(z=!0))}));return z}})(CM)),CM}var xM={},W7;function Yce(){return W7||(W7=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.CarbohydrateTerminalLinkParams=void 0,e.CarbohydrateTerminalLinkVisual=p;const t=Ne(),r=Ke(),n=Ge(),i=Ca(),c=mr(),o=Br(),s=zt(),h=at(),f=_n(),y=gt(),_=AT(),g=Er(),a=rt();function d(P,C,l,S,T){const{terminalLinks:A,elements:x}=C.carbohydrates,{terminalLinkSizeFactor:M}=S,D=r.StructureElement.Location.create(C),V={linkCount:A.length,position:(I,B,w)=>{const O=A[w];O.fromCarbohydrate?(n.Vec3.copy(I,x[O.carbohydrateIndex].geometry.center),O.elementUnit.conformation.position(O.elementUnit.elements[O.elementIndex],B)):(O.elementUnit.conformation.position(O.elementUnit.elements[O.elementIndex],I),n.Vec3.copy(B,x[O.carbohydrateIndex].geometry.center))},radius:I=>{const B=A[I];if(B.fromCarbohydrate){const w=x[B.carbohydrateIndex],O=w.unit.rings.all[w.ringIndex];D.unit=w.unit,D.element=w.unit.elements[O[0]]}else D.unit=B.elementUnit,D.element=B.elementUnit.elements[B.elementIndex];return l.size.size(D)*M},style:I=>{const B=A[I],w=B.elementUnit.elements[B.elementIndex],O=(0,_.getElementIdx)(B.elementUnit.model.atomicHierarchy.atoms.type_symbol.value(w));return _.MetalsSet.has(O)?i.LinkStyle.Dashed:i.LinkStyle.Solid}},{mesh:R,boundingSphere:E}=(0,i.createLinkCylinderMesh)(P,V,S,T);if(E)R.setBoundingSphere(E);else if(R.triangleCount>0){const I=a.Sphere3D.expand((0,a.Sphere3D)(),C.boundary.sphere,1*M);R.setBoundingSphere(I)}return R}e.CarbohydrateTerminalLinkParams={...c.UnitsMeshParams,...i.LinkCylinderParams,terminalLinkSizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:3,step:.01})};function p(P){return(0,o.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.CarbohydrateTerminalLinkParams),createGeometry:d,createLocationIterator:u,getLoci:m,eachLocation:b,setUpdateState:(C,l,S)=>{C.createGeometry=l.terminalLinkSizeFactor!==S.terminalLinkSizeFactor||l.radialSegments!==S.radialSegments||l.linkCap!==S.linkCap}},P)}function u(P){const{elements:C,terminalLinks:l}=P.carbohydrates,S=l.length,T=1,A=r.StructureElement.Location.create(P),x=M=>{const D=l[M];if(D.fromCarbohydrate){const V=C[D.carbohydrateIndex],R=V.unit.rings.all[V.ringIndex];A.unit=V.unit,A.element=V.unit.elements[R[0]]}else A.unit=D.elementUnit,A.element=D.elementUnit.elements[D.elementIndex];return A};return(0,s.LocationIterator)(S,T,1,x,!0)}function m(P,C,l){const{objectId:S,groupId:T}=P;if(l===S){if(T===f.PickingId.Null)return r.Structure.Loci(C);{const{terminalLinks:A,elements:x}=C.carbohydrates,M=A[T],D=x[M.carbohydrateIndex];return r.StructureElement.Loci.union((0,g.getAltResidueLociFromId)(C,D.unit,D.residueIndex,D.altId),(0,g.getAltResidueLoci)(C,M.elementUnit,M.elementUnit.elements[M.elementIndex]))}}return y.EmptyLoci}const v=new Set;function b(P,C,l){let S=!1;if(!r.StructureElement.Loci.is(P)||!r.Structure.areEquivalent(P.structure,C))return!1;const{getTerminalLinkIndices:T}=C.carbohydrates;for(const{unit:A,indices:x}of P.elements)r.Unit.isAtomic(A)&&(v.clear(),h.OrderedSet.forEach(x,M=>{const D=T(A,A.elements[M]);for(let V=0,R=D.length;V<R;++V)v.has(D[V])||(v.add(D[V]),l(h.Interval.ofSingleton(D[V]))&&(S=!0))}));return S}})(xM)),xM}var $7;function Qce(){return $7||($7=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CarbohydrateRepresentationProvider=e.CarbohydrateParams=void 0,e.getCarbohydrateParams=_,e.CarbohydrateRepresentation=g;const t=Tt(),r=Ke(),n=Lt(),i=Ne(),c=JS(),o=Yr(),s=Hce(),h=Kce(),f=Yce(),y={"carbohydrate-symbol":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate symbol mesh",a,d,h.CarbohydrateSymbolVisual),"carbohydrate-link":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate link cylinder",a,d,s.CarbohydrateLinkVisual),"carbohydrate-terminal-link":(a,d)=>(0,c.ComplexRepresentation)("Carbohydrate terminal link cylinder",a,d,f.CarbohydrateTerminalLinkVisual)};e.CarbohydrateParams={...h.CarbohydrateSymbolParams,...s.CarbohydrateLinkParams,...f.CarbohydrateTerminalLinkParams,visuals:i.ParamDefinition.MultiSelect(["carbohydrate-symbol","carbohydrate-link","carbohydrate-terminal-link"],i.ParamDefinition.objectToOptions(y)),bumpFrequency:i.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},t.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.2,{min:0,max:1,step:.
708701},t.BaseGeometry.ShadingCategory)};function _(a,d){return e.CarbohydrateParams}function g(a,d){return n.Representation.createMulti("Carbohydrate",a,d,o.StructureRepresentationStateBuilder,y)}e.CarbohydrateRepresentationProvider=(0,o.StructureRepresentationProvider)({name:"carbohydrate",label:"Carbohydrate",description:"Displays carbohydrate symbols (3D SNFG).",factory:g,getParams:_,defaultValues:i.ParamDefinition.getDefaultValues(e.CarbohydrateParams),defaultColorTheme:{name:"carbohydrate-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:a=>a.models.some(d=>r.Model.hasCarbohydrate(d))})})(_M)),_M}var AM={},MM={},Hn={},DM={},df={},X7;function Kw(){if(X7)return df;X7=1,Object.defineProperty(df,"__esModule",{value:!0}),df.eachPolymerBackboneLink=i,df.eachPolymerBackboneElement=s,df.eachAtomicPolymerBackboneElement=h;const e=J_(),t=Ga(),r=Ke(),n=io();function i(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return c(y,_);case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:return o(y,_)}}function c(y,_){const g=y.model.atomicRanges.cyclicPolymerMap,a=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),d=e.Segmentation.transientSegments(y.model.atomicHierarchy.residueAtomSegments,y.elements),p=y.model.atomicHierarchy.derived.residue.traceElementIndex,{moleculeType:u}=y.model.atomicHierarchy.derived.residue;let m=-1,v=-1,b=!0,P=-1,C=0;for(;a.hasNext;){for(b=!0,P=C,d.setSegment(a.move());d.hasNext;){if(b){const S=d.move().index;if(++C,!d.hasNext)continue;b=!1,v=S}const l=d.move().index;m=v,v=l,_(p[m],p[v],C-1,C,u[m]),++C}g.has(v)&&(m=v,v=g.get(m),_(p[m],p[v],C-1,P,u[m]))}}function o(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),{elements:a}=y;let d=!0,p=0;for(;g.hasNext;){d=!0;const u=g.move(),m=u.start,v=u.end;for(let b=m,P=v;b<P;++b){if(d){if(++b,++p,b>P)continue;d=!1}_(a[b-1],a[b],p-1,p,0),++p}}}function s(y,_){switch(y.kind){case r.Unit.Kind.Atomic:return h(y,_);case r.Unit.Kind.Spheres:case r.Unit.Kind.Gaussians:return f(y,_)}}function h(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),a=e.Segmentation.transientSegments(y.model.atomicHierarchy.residueAtomSegments,y.elements),d=y.model.atomicHierarchy.derived.residue.traceElementIndex;let p=0;for(;g.hasNext;)for(a.setSegment(g.move());a.hasNext;){const u=a.move().index;_(d[u],p),++p}}function f(y,_){const g=t.SortedRanges.transientSegments((0,n.getPolymerRanges)(y),y.elements),{elements:a}=y;let d=0;for(;g.hasNext;){const p=g.move(),u=p.start,m=p.end;for(let v=u,b=m;v<b;++v)_(a[v],d),++d}}return df}var Ls={},K7;function Zce(){if(K7)return Ls;K7=1,Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.CoarsePolymerGapIterator=Ls.AtomicPolymerGapIterator=void 0,Ls.PolymerGapIterator=n;const e=Ke(),t=Ga(),r=io();function n(s,h){switch(h.kind){case e.Unit.Kind.Atomic:return new c(s,h);case e.Unit.Kind.Spheres:case e.Unit.Kind.Gaussians:return new o(s,h)}}function i(s,h){return{centerA:e.StructureElement.Location.create(s,h),centerB:e.StructureElement.Location.create(s,h)}}class c{move(){const{elements:h,residueIndex:f}=this.unit,y=this.gapIt.move();return this.value.centerA.element=this.traceElementIndex[f[h[y.start]]],this.value.centerB.element=this.traceElementIndex[f[h[y.end-1]]],this.hasNext=this.gapIt.hasNext,this.value}constructor(h,f){this.unit=f,this.hasNext=!1,this.traceElementIndex=f.model.atomicHierarchy.derived.residue.traceElementIndex,this.gapIt=t.SortedRanges.transientSegments((0,r.getGapRanges)(f),f.elements),this.value=i(h,f),this.hasNext=this.gapIt.hasNext}}Ls.AtomicPolymerGapIterator=c;class o{move(){const h=this.gapIt.move();return this.value.centerA.element=this.unit.elements[h.start],this.value.centerB.element=this.unit.elements[h.end-1],this.hasNext=this.gapIt.hasNext,this.value}constructor(h,f){this.unit=f,this.hasNext=!1,this.gapIt=t.SortedRanges.transientSegments((0,r.getGapRanges)(f),f.elements),this.value=i(h,f),this.hasNext=this.gapIt.hasNext}}return Ls.CoarsePolymerGapIterator=o,Ls}var Ns={},ll={},tT={},Y7;function Jce(){if(Y7)return tT;
7087Y7=1,Object.defineProperty(tT,"__esModule",{value:!0}),tT.calcHelixOrientation=i;const e=J_(),t=Ga(),r=at(),n=Ge();function i(c){const{x:o,y:s,z:h}=c.atomicConformation,{polymerType:f,traceElementIndex:y}=c.atomicHierarchy.derived.residue,_=f.length,g=r.OrderedSet.ofBounds(0,c.atomicConformation.atomId.rowCount),a=t.SortedRanges.transientSegments(c.atomicRanges.polymerRanges,g),d=e.Segmentation.transientSegments(c.atomicHierarchy.residueAtomSegments,g),p=new Float32Array(_*3),u=new Float32Array(_*3);let m=0,v=-1,b=-1;const P=(0,n.Vec3)(),C=(0,n.Vec3)(),l=(0,n.Vec3)(),S=(0,n.Vec3)(),T=(0,n.Vec3)(),A=(0,n.Vec3)(),x=(0,n.Vec3)(),M=(0,n.Vec3)(),D=(0,n.Vec3)(),V=(0,n.Vec3)(),R=(0,n.Vec3)(),E=(0,n.Vec3)(),I=(0,n.Vec3)(),B=(0,n.Vec3)();for(;a.hasNext;){const w=a.move();for(d.setSegment(w),m=-1,b=-1;d.hasNext;){m+=1;const{index:N}=d.move();m===0&&(b=N),v=N-2;const k=v*3;n.Vec3.copy(P,C),n.Vec3.copy(C,l),n.Vec3.copy(l,S);const j=y[N];if(n.Vec3.set(S,o[j],s[j],h[j]),m<3)continue;n.Vec3.sub(T,C,P),n.Vec3.sub(A,l,C),n.Vec3.sub(x,S,l),n.Vec3.sub(R,T,A),n.Vec3.sub(E,A,x),n.Vec3.cross(I,R,E),n.Vec3.normalize(I,I),n.Vec3.toArray(I,u,k);const H=Math.cos(n.Vec3.angle(R,E)),G=n.Vec3.magnitude(R),z=n.Vec3.magnitude(E),W=Math.sqrt(z*G)/Math.max(2,2*(1-H));n.Vec3.scale(M,R,W/G),n.Vec3.sub(M,C,M),n.Vec3.toArray(M,p,k),n.Vec3.scale(D,E,W/z),n.Vec3.sub(D,l,D),n.Vec3.toArray(D,p,k+3),n.Vec3.copy(B,I)}const O=b*3;n.Vec3.fromArray(M,p,O+3),n.Vec3.fromArray(D,p,O+6),n.Vec3.normalize(I,n.Vec3.sub(I,M,D));const F=y[b];n.Vec3.set(P,o[F],s[F],h[F]),n.Vec3.copy(V,P),n.Vec3.projectPointOnVector(V,V,I,M),n.Vec3.toArray(V,p,O);const L=v+2,U=L*3;n.Vec3.fromArray(M,p,U-3),n.Vec3.fromArray(D,p,U-6),n.Vec3.normalize(I,n.Vec3.sub(I,M,D));const q=y[L];n.Vec3.set(P,o[q],s[q],h[q]),n.Vec3.copy(V,P),n.Vec3.projectPointOnVector(V,V,I,M),n.Vec3.toArray(V,p,U)}return{centers:p}}return tT}var Q7;function SZ(){if(Q7)return ll;
7087Q7=1,Object.defineProperty(ll,"__esModule",{value:!0}),ll.HelixOrientationProvider=ll.HelixOrientationParams=void 0;const e=Pr(),t=uI(),r=Jce();return ll.HelixOrientationParams={},ll.HelixOrientationProvider=t.CustomModelProperty.createProvider({label:"Helix Orientation",descriptor:(0,e.CustomPropertyDescriptor)({name:"molstar_helix_orientation"}),type:"dynamic",defaultParams:{},getParams:()=>({}),isApplicable:n=>!0,obtain:async(n,i)=>({value:(0,r.calcHelixOrientation)(i)})}),ll}var Z7;function eue(){if(Z7)return Ns;Z7=1,Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.CoarsePolymerTraceIterator=Ns.AtomicPolymerTraceIterator=void 0,Ns.PolymerTraceIterator=y;const e=Ke(),t=dt(),r=Ge(),n=Ga(),i=io(),c=Pl(),o=SZ(),s=J_();function h(P){return t.SecondaryStructureType.is(P,t.SecondaryStructureType.Flag.Helix)}function f(P){return t.SecondaryStructureType.is(P,t.SecondaryStructureType.Flag.Beta)}function y(P,C,l={}){switch(P.kind){case e.Unit.Kind.Atomic:return new m(P,C,l);case e.Unit.Kind.Spheres:case e.Unit.Kind.Gaussians:return new b(P,C)}}const _=t.SecondaryStructureType.create(t.SecondaryStructureType.Flag.NA);function g(P,C){return{center:e.StructureElement.Location.create(P,C),centerPrev:e.StructureElement.Location.create(P,C),centerNext:e.StructureElement.Location.create(P,C),first:!1,last:!1,initial:!1,final:!1,secStrucFirst:!1,secStrucLast:!1,secStrucType:_,moleculeType:t.MoleculeType.Unknown,coarseBackboneFirst:!1,coarseBackboneLast:!1,p0:(0,r.Vec3)(),p1:(0,r.Vec3)(),p2:(0,r.Vec3)(),p3:(0,r.Vec3)(),p4:(0,r.Vec3)(),d12:(0,r.Vec3)(),d23:(0,r.Vec3)()}}var a;(function(P){P[P.nextPolymer=0]="nextPolymer",P[P.nextResidue=1]="nextResidue"})(a||(a={}));const d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)();class m{atomicPos(C,l){l!==-1&&(C[0]=this.atomicConformation.x[l],C[1]=this.atomicConformation.y[l],C[2]=this.atomicConformation.z[l])}pos(C,l,S){const T=this.traceElementIndex[l];this.helixOrientationCenters&&h(S)?r.Vec3.fromArray(C,this.helixOrientationCenters,l*3):this.atomicPos(C,T)}updateResidueSegmentRange(C){const{index:l}=this.residueAtomSegments;this.residueSegmentMin=l[this.polymerRanges[C.index*2]],this.residueSegmentMax=l[this.polymerRanges[C.index*2+1]]}getResidueIndex(C){if(C<this.residueSegmentMin){const l=this.cyclicPolymerMap.get(this.residueSegmentMin);l!==void 0?C=l-(this.residueSegmentMin-C-1):C=this.residueSegmentMin}else if(C>this.residueSegmentMax){const l=this.cyclicPolymerMap.get(this.residueSegmentMax);l!==void 0?C=l+(C-this.residueSegmentMax-1):C=this.residueSegmentMax}return C}getSecStruc(C){if(this.secondaryStructure){const{type:l,getIndex:S}=this.secondaryStructure,T=l[S(C)];return h(T)?t.SecondaryStructureType.Flag.Helix:T}else return _}setControlPoint(C,l,S,T,A){f(A)||this.helixOrientationCenters&&h(A)?r.Vec3.scale(C,r.Vec3.add(C,l,r.Vec3.add(C,T,r.Vec3.add(C,S,S))),1/4):r.Vec3.copy(C,S)}setFromToVector(C,l,S){this.helixOrientationCenters&&h(S)?r.Vec3.set(C,1,0,0):(this.atomicPos(p,this.directionFromElementIndex[l]),this.atomicPos(u,this.directionToElementIndex[l]),r.Vec3.sub(C,u,p))}setDirection(C,l,S,T){r.Vec3.matchDirection(p,l,S),r.Vec3.matchDirection(u,T,S),r.Vec3.scale(C,r.Vec3.add(C,p,r.Vec3.add(C,u,r.Vec3.add(C,S,S))),1/4)}move(){const{residueIt:C,polymerIt:l,value:S}=this;if(this.state===a.nextPolymer){for(;l.hasNext;)if(this.polymerSegment=l.move(),C.setSegment(this.polymerSegment),this.updateResidueSegmentRange(this.polymerSegment),C.hasNext){this.state=a.nextResidue;const T=this.residueAtomSegments.index[this.unit.elements[this.polymerSegment.start]],A=this.getResidueIndex(T-1);this.currSecStrucType=T===A?_:this.getSecStruc(A),this.nextSecStrucType=this.getSecStruc(T),this.currCoarseBackbone=this.directionFromElementIndex[A]===-1||this.directionToElementIndex[A]===-1,this.nextCoarseBackbone=this.directionFromElementIndex[T]===-1||this.directionToElementIndex[T]===-1;break}}if(this.state===a.nextResidue){const{index:T}=C.move(),A=this.getResidueIndex(T-3),x=this.getResidueIndex(T-2),M=this.getResidueIndex(T-1),D=this.getResidueIndex(T+1),V=this.getResidueIndex(T+2),R=this.getResidueIndex(T+3);this.prevSecStrucType=this.getSecStruc(M),this.currSecStrucType=this.getSecStruc(T),this.nextSecStrucType=T===D?_:this.getSecStruc(D),this.prevCoarseBackbone=this.currCoarseBackbone,this.currCoarseBackbone=this.nextCoarseBackbone,this.nextCoarseBackbone=this.directionFromElementIndex[D]===-1||this.directionToElementIndex[D]===-1,S.secStrucType=this.currSecStrucType,S.secStrucFirst=this.prevSecStrucType!==this.currSecStrucType,S.secStrucLast=this.currSecStrucType!==this.nextSecStrucType,S.coarseBackboneFirst=this.prevCoarseBackbone!==this.currCoarseBackbone,S.coarseBackboneLast=this.currCoarseBackbone!==this.nextCoarseBackbone,S.first=T===this.residueSegmentMin,S.last=T===this.residueSegmentMax,S.moleculeType=this.moleculeType[T],S.initial=T===M,S.final=T===D,S.centerPrev.element=this.traceElementIndex[M],S.center.element=this.traceElementIndex[T],S.centerNext.element=this.traceElementIndex[D];const E=this.getSecStruc(A),I=this.getSecStruc(x),B=this.getSecStruc(M),w=this.getSecStruc(T),O=this.getSecStruc(D),F=this.getSecStruc(V),L=this.getSecStruc(R);this.pos(this.p0,A,E),this.pos(this.p1,x,I),this.pos(this.p2,M,B),this.pos(this.p3,T,
7087w),this.pos(this.p4,D,O),this.pos(this.p5,V,F),this.pos(this.p6,R,L);const U=h(E),q=h(I),N=h(B),k=h(w),j=h(O),H=h(F),G=h(L);this.helixOrientationCenters&&!(k&&S.secStrucFirst&&S.secStrucLast)&&(k!==N?k?(r.Vec3.copy(this.p0,this.p3),r.Vec3.copy(this.p1,this.p3),r.Vec3.copy(this.p2,this.p3)):N&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p2,this.p3),2),r.Vec3.add(this.p2,this.p3,d),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):k!==q?k?(r.Vec3.copy(this.p0,this.p2),r.Vec3.copy(this.p1,this.p2)):q&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p1,this.p2),2),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):k!==U&&(k?r.Vec3.copy(this.p0,this.p1):U&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p0,this.p1),2),r.Vec3.add(this.p0,this.p1,d))),k!==j?k?(r.Vec3.copy(this.p4,this.p3),r.Vec3.copy(this.p5,this.p3),r.Vec3.copy(this.p6,this.p3)):j&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p4,this.p3),2),r.Vec3.add(this.p4,this.p3,d),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):k!==H?k?(r.Vec3.copy(this.p5,this.p4),r.Vec3.copy(this.p6,this.p4)):H&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p5,this.p4),2),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):k!==G&&(k?r.Vec3.copy(this.p6,this.p5):G&&(r.Vec3.scale(d,r.Vec3.sub(d,this.p6,this.p5),2),r.Vec3.add(this.p6,this.p5,d)))),this.currCoarseBackbone?(r.Vec3.triangleNormal(this.d01,this.p1,this.p2,this.p3),r.Vec3.triangleNormal(this.d12,this.p2,this.p3,this.p4),r.Vec3.triangleNormal(this.d23,this.p3,this.p4,this.p5),r.Vec3.triangleNormal(this.d34,this.p4,this.p5,this.p6)):(this.setFromToVector(this.d01,M,B),this.setFromToVector(this.d12,T,w),this.setFromToVector(this.d23,D,O),this.setFromToVector(this.d34,V,F));const z=k&&this.helixOrientationCenters,W=1.5;T===M||w!==B&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p3,this.p4),W),r.Vec3.add(this.p2,this.p3,d),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):M===x||w!==I&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p2,this.p3),W),r.Vec3.add(this.p1,this.p2,d),r.Vec3.add(this.p0,this.p1,d)):(x===A||w!==E&&z)&&(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p1,this.p2),W),r.Vec3.add(this.p0,this.p1,d)),T===D||w!==O&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p3,this.p2),W),r.Vec3.add(this.p4,this.p3,d),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):D===V||w!==F&&z?(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p4,this.p3),W),r.Vec3.add(this.p5,this.p4,d),r.Vec3.add(this.p6,this.p5,d)):(V===R||w!==L&&z)&&(r.Vec3.setMagnitude(d,r.Vec3.sub(d,this.p5,this.p4),W),r.Vec3.add(this.p6,this.p5,d)),this.setControlPoint(S.p0,this.p0,this.p1,this.p2,I),this.setControlPoint(S.p1,this.p1,this.p2,this.p3,B),this.setControlPoint(S.p2,this.p2,this.p3,this.p4,w),this.setControlPoint(S.p3,this.p3,this.p4,this.p5,O),this.setControlPoint(S.p4,this.p4,this.p5,this.p6,F),this.setDirection(S.d12,this.d01,this.d12,this.d23),this.setDirection(S.d23,this.d12,this.d23,this.d34),C.hasNext||(this.state=a.nextPolymer)}return this.hasNext=C.hasNext||l.hasNext,this.value}constructor(C,l,S={}){var T;if(this.unit=C,this.state=a.nextPolymer,this.p0=(0,r.Vec3)(),this.p1=(0,r.Vec3)(),this.p2=(0,r.Vec3)(),this.p3=(0,r.Vec3)(),this.p4=(0,r.Vec3)(),this.p5=(0,r.Vec3)(),this.p6=(0,r.Vec3)(),this.d01=(0,r.Vec3)(),this.d12=(0,r.Vec3)(),this.d23=(0,r.Vec3)(),this.d34=(0,r.Vec3)(),this.hasNext=!1,this.atomicConformation=C.model.atomicConformation,this.residueAtomSegments=C.model.atomicHierarchy.residueAtomSegments,this.polymerRanges=C.model.atomicRanges.polymerRanges,this.traceElementIndex=C.model.atomicHierarchy.derived.residue.traceElementIndex,this.directionFromElementIndex=C.model.atomicHierarchy.derived.residue.directionFromElementIndex,this.directionToElementIndex=C.model.atomicHierarchy.derived.residue.directionToElementIndex,this.moleculeType=C.model.atomicHierarchy.derived.residue.moleculeType,this.cyclicPolymerMap=C.model.atomicRanges.cyclicPolymerMap,this.polymerIt=n.SortedRanges.transientSegments(this.polymerRanges,C.elements),this.residueIt=s.Segmentation.transientSegments(this.residueAtomSegments,C.elements),this.value=g(l,C),this.hasNext=this.residueIt.hasNext&&this.polymerIt.hasNext,S.ignoreSecondaryStructure||(this.secondaryStructure=(T=c.SecondaryStructureProvider.get(l).value)===null||T===void 0?void 0:T.get(C.invariantId)),S.useHelixOrientation){const A=o.HelixOrientationProvider.get(C.model).value;if(!A)throw new Error("missing helix-orientation");this.helixOrientationCenters=A.centers}}}Ns.AtomicPolymerTraceIterator=m;var v;(function(P){P[P.nextPolymer=0]="nextPolymer",P[P.nextElement=1]="nextElement"})(v||(v={}));class b{getElementIndex(C){return Math.min(Math.max(this.polymerSegment.start,C),this.polymerSegment.end-1)}pos(C,l){const S=this.unit.elements[l];C[0]=this.conformation.x[S],C[1]=this.conformation.y[S],C[2]=this.conformation.z[S]}move(){if(this.state===v.nextPolymer){for(;this.polymerIt.hasNext;)if(this.polymerSegment=this.polymerIt.move(),this.elementIndex=this.polymerSegment.start,this.elementIndex<this.polymerSegment.end
7087){this.state=v.nextElement;break}}if(this.state===v.nextElement){const C=this.getElementIndex(this.elementIndex-2),l=this.getElementIndex(this.elementIndex-1),S=this.getElementIndex(this.elementIndex+1),T=this.getElementIndex(this.elementIndex+2);this.value.centerPrev.element=this.value.center.unit.elements[l],this.value.center.element=this.value.center.unit.elements[this.elementIndex],this.value.centerNext.element=this.value.center.unit.elements[S],this.pos(this.value.p0,C),this.pos(this.value.p1,l),this.pos(this.value.p2,this.elementIndex),this.pos(this.value.p3,S),this.pos(this.value.p4,T);const A=.5;this.elementIndex===l?(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p2,this.value.p3),A),r.Vec3.add(this.value.p1,this.value.p2,d),r.Vec3.add(this.value.p0,this.value.p1,d)):l===C&&(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p1,this.value.p2),A),r.Vec3.add(this.value.p0,this.value.p1,d)),this.elementIndex===S?(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p2,this.value.p1),A),r.Vec3.add(this.value.p3,this.value.p2,d),r.Vec3.add(this.value.p4,this.value.p3,d)):S===T&&(r.Vec3.scale(d,r.Vec3.sub(d,this.value.p3,this.value.p2),A),r.Vec3.add(this.value.p4,this.value.p3,d)),this.value.first=this.elementIndex===this.polymerSegment.start,this.value.last=this.elementIndex===this.polymerSegment.end-1,this.elementIndex+1>=this.polymerSegment.end&&(this.state=v.nextPolymer)}return this.hasNext=this.elementIndex+1<this.polymerSegment.end||this.polymerIt.hasNext,this.elementIndex+=1,this.value}constructor(C,l){switch(this.unit=C,this.state=v.nextPolymer,this.hasNext=!1,this.polymerIt=n.SortedRanges.transientSegments((0,i.getPolymerRanges)(C),C.elements),this.value=g(l,C),r.Vec3.set(this.value.d12,1,0,0),r.Vec3.set(this.value.d23,1,0,0),C.kind){case e.Unit.Kind.Spheres:this.conformation=C.model.coarseConformation.spheres;break;case e.Unit.Kind.Gaussians:this.conformation=C.model.coarseConformation.gaussians;break}this.hasNext=this.polymerIt.hasNext}}return Ns.CoarsePolymerTraceIterator=b,Ns}var qs={},J7;function tue(){if(J7)return qs;J7=1,Object.defineProperty(qs,"__esModule",{value:!0}),qs.createCurveSegmentState=d,qs.interpolateCurveSegment=p,qs.interpolatePointsAndTangents=b,qs.interpolateNormals=R,qs.interpolateSizes=E;const e=Ge(),t=ir(),r=e.Vec3.fromArray,n=e.Vec3.toArray,i=e.Vec3.normalize,c=e.Vec3.sub,o=e.Vec3.spline,s=e.Vec3.slerp,h=e.Vec3.copy,f=e.Vec3.cross,y=e.Vec3.orthogonalize,_=e.Vec3.matchDirection,g=e.Vec3.scale,a=e.Vec3.add;function d(I){const B=I+1,w=B*3;return{curvePoints:new Float32Array(w),tangentVectors:new Float32Array(w),normalVectors:new Float32Array(w),binormalVectors:new Float32Array(w),widthValues:new Float32Array(B),heightValues:new Float32Array(B),linearSegments:I}}function p(I,B,w,O){b(I,B,w,O),R(I,B)}const u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)();function b(I,B,w,O){const{curvePoints:F,tangentVectors:L,linearSegments:U}=I,{p0:q,p1:N,p2:k,p3:j,p4:H,secStrucFirst:G,secStrucLast:z}=B,W=1-O,X=G?.5:w,Y=z?.5:w;for(let K=0;K<=U;++K){const Q=K*1/U;if(Q<W){const J=(0,t.lerp)(X,w,Q);o(v,q,N,k,j,Q+O,J),o(u,q,N,k,j,Q+O+.01,X),o(m,q,N,k,j,Q+O-.01,X)}else{const J=(0,t.lerp)(w,Y,Q);o(v,N,k,j,H,Q-W,J),o(u,N,k,j,H,Q-W+.01,J),o(m,N,k,j,H,Q-W-.01,J)}n(v,F,K*3),i(C,c(C,u,m)),n(C,L,K*3)}}const P=(0,e.Vec3)(),C=(0,e.Vec3)(),l=(0,e.Vec3)(),S=(0,e.Vec3)(),T=(0,e.Vec3)(),A=(0,e.Vec3)(),x=(0,e.Vec3)(),M=(0,e.Vec3)(),D=(0,e.Vec3)(),V=(0,e.Vec3)();function R(I,B){const{curvePoints:w,tangentVectors:O,normalVectors:F,binormalVectors:L}=I,{d12:U,d23:q}=B,N=w.length/3;r(x,O,0),r(M,O,(N-1)*3),y(D,x,U),y(V,M,q),_(V,V,D),h(T,D);const k=N-1;for(let j=0;j<N;++j){const H=(0,t.smoothstep)(0,k,j)*k,G=j===0?0:1/(N-H);r(C,O,j*3),y(l,C,s(P,T,V,G)),n(l,F,j*3),h(T,l),i(S,f(S,C,l)),n(S,L,j*3)}for(let j=1;j<k;++j)r(T,F,(j-1)*3),r(l,F,j*3),r(A,F,(j+1)*3),g(l,a(l,T,a(l,A,l)),1/3),n(l,F,j*3),r(C,O,j*3),i(S,f(S,C,l)),n(S,L,j*3)}function E(I,B,w,O,F,L,U,q){const{widthValues:N,heightValues:k,linearSegments:j}=I,H=1-q;for(let G=0;G<=j;++G){const z=G*1/j;z<H?(N[G]=(0,t.lerp)(B,w,z+q),k[G]=(0,t.lerp)(F,L,z+q)):(N[G]=(0,t.lerp)(w,O,z-H),k[G]=(0,t.lerp)(L,U,z-H))}}return qs}var eW;function io(){return eW||(eW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.PolymerGapLocationIterator=e.PolymerLocationIterator=e.OverhangFactor=e.NucleicShift=e.StandardShift=e.HelixTension=e.StandardTension=void 0,e.getPolymerRanges=h,e.getGapRanges=f,e.getPolymerElementLoci=g,e.eachAtomicUnitTracedElement=d,e.eachPolymerElement=u,e.getPolymerGapElementLoci=m,e.eachPolymerGapElement=v;const t=At,r=Ke(),n=at(),i=gt(),c=zt(),o=_n(),s=Er();t.__exportStar(Kw(),e),t.__exportStar(Zce(),e),t.__exportStar(eue(),e),t.__exportStar(tue(),e),e.StandardTension=.5,e.HelixTension=.9,e.StandardShift=.5,e.NucleicShift=.3,e.OverhangFactor=2;function h(b){switch(b.kind){case r.Unit.Kind.Atomic:return b.model.atomicRanges.polymerRanges;case r.Unit.Kind.Spheres:return b.model.coarseHierarchy.spheres.polymerRanges;case r.Unit.Kind.Gaussians:return b.model.coarseHierarchy.gaussians.polymerRanges}}function f(b){switch(b.kind){case r.Unit.Kind.Atomic:return b.model.atomicRanges.gapRanges;case r.Unit.Kind.Spheres:return b.model.coarseHierarchy.spheres.gapRanges;case r.Unit.Kind.Gaussians:return b.model.coarseHierarchy.gaussians.gapRanges}}var y;(function(b){function P(C,l){const{group:S,structure:T}=C,A=S.units[0].polymerElements,x=A.length,M=S.units.length,D=r.StructureElement.Location.create(T),V=(I,B)=>{const w=S.units[B];return D.unit=w,D.element=A[I],D},R=!!l?.asSecondary;function E(I,B){return R}return(0,c.LocationIterator)(x,M,1,V,!1,E)}b.fromGroup=P})(y||(e.PolymerLocationIterator=y={}));var _;(function(b){function P(C,l){const{group:S,structure:T}=C,A=S.units[0].gapElements,x=A.length,M=S.units.length,D=r.StructureElement.Location.create(T),V=(I,B)=>{const w=S.units[B];return D.unit=w,D.element=A[I],D},R=!!l?.asSecondary;function E(I,B){return R}return(0,c.LocationIterator)(x,M,1,V,!1,E)}b.fromGroup=P})(_||(e.PolymerGapLocationIterator=_={}));function g(b,P,C){const{objectId:l,instanceId:S,groupId:T}=b;if(C===l){const{structure:A,group:x}=P,M=x.units[S];if(T===o.PickingId.Null){const D=n.OrderedSet.ofRange(0,M.elements.length);return r.StructureElement.Loci(A.target,[{unit:M,indices:D}])}else{if(r.Unit.isAtomic(M))return(0,s.getResidueLoci)(A,M,M.polymerElements[T]);{const{elements:D}=M,V=M.polymerElements[T],R=n.OrderedSet.indexOf(D,V);if(R!==-1){const E=n.OrderedSet.ofSingleton(R);return r.StructureElement.Loci(A,[{unit:M,indices:E}])}}}}return i.EmptyLoci}function a(b,P,C,l,S,T){let A=-1,x=-1;for(let D=S;D<=T;D++){const V=C[D];if(!(V<0)&&(A=n.OrderedSet.indexOf(P,V),A>=0)){x=D;break}}if(A<0)return!1;let M=A;for(let D=T;D>x;D--){const V=C[D];if(V<0)continue;const R=n.OrderedSet.indexOf(P,V);if(R>=0){M=R;break}}return l(n.Interval.ofRange(b+A,b+M))}function d(b,P,C,l,S){let T=!1;const{elements:A}=S.unit,{traceElementIndex:x}=S.unit.model.atomicHierarchy.derived.residue,{index:M}=S.unit.model.atomicHierarchy.residueAtomSegments,D=C(S.unit);if(n.Interval.is(S.indices))if(n.Interval.start(S.indices)===0&&n.Interval.end(S.indices)===S.unit.elements.length)T=l(n.Interval.ofBounds(b,b+P))||T;else{const V=M[A[n.Interval.min(S.indices)]],R=M[A[n.Interval.max(S.indices)]];T=a(b,D,x,l,V,R)||T}else{const{indices:V}=S;for(let R=0,E=V.length;R<E;R++){const I=M[A[V[R]]];let B=I,w=R+1;for(;w<E;){const O=M[A[V[w]]];if(O-B>1)break;B=O,w++}R=w-1,T=a(b,D,x,l,I,B)||T}}return T}function p(b){return b.polymerElements}function u(b,P,C){let l=!1;if(!r.StructureElement.Loci.is(b))return!1;const{structure:S,group:T}=P;if(!r.Structure.areEquivalent(b.structure,S))return!1;const A=T.units[0].polymerElements.length;for(const x of b.elements){if(!T.unitIndexMap.has(x.unit.id))continue;const M=T.unitIndexMap.get(x.unit.id)*A;if(r.Unit.isAtomic(x.unit))l=d(M,A,p,C,x)||l;else if(n.Interval.is(x.indices)){const D=M+n.Interval.start(x.indices),V=M+n.Interval.end(x.indices);l=C(n.Interval.ofBounds(D,V))||l}else for(let D=0,V=x.indices.length;D<V;D++){const R=x.indices[D];let E=D+1;for(;E<V&&x.indices[E]===R;)E++;D=E-1;const I=x.indices[D];l=C(n.Interval.ofRange(M+R,M+I))||l}}return l}function m(b,P,C){const{objectId:l,instanceId:S,groupId:T}=b;if(C===l){const{structure:A,group:x}=P,M=x.units[S],D=n.OrderedSet.indexOf(M.elements,M.gapElements[T]),V=n.OrderedSet.indexOf(M.elements,M.gapElements[T%2?T-1:T+1]);if(D!==-1&&V!==-1)return r.Bond.Loci(A,[r.Bond.Location(A,M,D,A,M,V),r.Bond.Location(A,M,V,A,M,D)])}return i.EmptyLoci}function v(b,P,C){let l=!1;if(r.Bond.isLoci(b)){const{structure:S,group:T}=P;if(!r.Structure.areRootsEquivalent(b.structure,S))return!1;b=r.Bond.remapLoci(b,S);const A=T.units[0].gapElements.length;for(const x of b.bonds){const M=T.unitIndexMap.get(x.aUnit.id);if(M!==void 0){const D=n.OrderedSet.indexOf(x.aUnit.gapElements,x.aUnit.elements[x.aIndex]),V=n.OrderedSet.indexOf(x.bUnit.gapElements,x.bUnit.elements[x.bIndex]);D!==-1&&V!==-1&&C(n.Interval.ofSingleton(M*A+D))&&(l=!0)}}}else if(r.StructureElement.Loci.is(b)){const{structure:S,group:T}=P;if(!r.Structure.areRootsEquivalent(b.structure,S))return!1;b=r.StructureElement.Loci.remap(b,S);const A=T.units[0].gapElements.length;for(const x of b.elements){const M=T.unitIndexMap.get(x.unit.id);M!==void 0&&n.OrderedSet.forEach(x.indices,D=>{const V=n.OrderedSet.indexOf(x.unit.gapElements,x.unit.elements[D]);V!==-1&&(C(n.Interval.ofSingleton(M*A+V))&&(l=!0),n.OrderedSet.getAt(x.unit.gapElements,V+1)===x.unit.elements[D]&&C(n.Interval.ofSingleton(M*A+V+1))&&(l=!0))})}}return l}})(DM)),DM}var tW;function nC(){if(tW)return Hn;tW=1,Object.defineProperty(Hn,"__esModule",{value:!0}),Hn.NucleotideLocationIterator=void 0,Hn.getNucleotideElementLoci=y,Hn.eachNucleotideElement=g,Hn.getNucleotideBaseType=p,Hn.createNucleicIndices=u,Hn.setPurinIndices=m,Hn.hasPurinIndices=v,Hn.setPyrimidineIndices=b,Hn.hasPyrimidineIndices=P,Hn.setSugarIndices=C,Hn.hasSugarIndices=l;
7087const e=Ke(),t=gt(),r=at(),n=zt(),i=_n(),c=Er(),o=io(),s=dt(),h=wt();var f;(function(S){function T(A){const{group:x,structure:M}=A,D=x.units[0],V=e.Unit.isAtomic(D)?D.nucleotideElements:[],R=V.length,E=x.units.length,I=e.StructureElement.Location.create(M),B=(w,O)=>{const F=x.units[O];return I.unit=F,I.element=V[w],I};return(0,n.LocationIterator)(R,E,1,B)}S.fromGroup=T})(f||(Hn.NucleotideLocationIterator=f={}));function y(S,T,A){const{objectId:x,instanceId:M,groupId:D}=S;if(A===x){const{structure:V,group:R}=T,E=R.units[M];if(e.Unit.isAtomic(E))if(D===i.PickingId.Null){const I=r.Interval.ofRange(0,E.elements.length);return e.StructureElement.Loci(V.target,[{unit:E,indices:I}])}else return(0,c.getResidueLoci)(V,E,E.nucleotideElements[D])}return t.EmptyLoci}function _(S){return S.nucleotideElements}function g(S,T,A){let x=!1;if(!e.StructureElement.Loci.is(S))return!1;const{structure:M,group:D}=T;if(!e.Structure.areEquivalent(S.structure,M))return!1;const V=D.units[0];if(!e.Unit.isAtomic(V))return!1;const{nucleotideElements:R}=V,E=R.length;for(const I of S.elements){if(!e.Unit.isAtomic(I.unit)||!D.unitIndexMap.has(I.unit.id))continue;const B=D.unitIndexMap.get(I.unit.id)*E;e.Unit.isAtomic(I.unit)&&(x=(0,o.eachAtomicUnitTracedElement)(B,E,_,A,I)||x)}return x}const a=(0,h.Vec3)(),d=(0,h.Vec3)();function p(S,T){const{model:A,conformation:x}=S,{residueAtomSegments:M,atoms:D,index:V}=A.atomicHierarchy,{label_comp_id:R}=D,E=R.value(M.offsets[T]);let I=(0,s.isPurineBase)(E),B=(0,s.isPyrimidineBase)(E);if(!I&&!B){const w=V.findAtomOnResidue(T,"C4"),O=V.findAtomOnResidue(T,"N9");w!==-1&&O!==-1&&h.Vec3.distance(x.invariantPosition(w,a),x.invariantPosition(O,d))<1.6?I=!0:B=!0}return{isPurine:I,isPyrimidine:B}}function u(){return{trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1}}function m(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.N1=x.findAtomOnResidue(A,"N1"),S.C2=x.findAtomOnResidue(A,"C2"),S.N3=x.findAtomOnResidue(A,"N3"),S.C4=x.findAtomOnResidue(A,"C4"),S.C5=x.findAtomOnResidue(A,"C5"),S.C5===-1&&(S.C5=x.findAtomOnResidue(A,"N5")),S.C6=x.findAtomOnResidue(A,"C6"),S.N7=x.findAtomOnResidue(A,"N7"),S.N7===-1&&(S.N7=x.findAtomOnResidue(A,"C7")),S.C8=x.findAtomOnResidue(A,"C8"),S.N9=x.findAtomOnResidue(A,"N9"),S}function v(S){return S.trace!==-1&&S.N1!==-1&&S.C2!==-1&&S.N3!==-1&&S.C4!==-1&&S.C5!==-1&&S.C6!==-1&&S.N7!==-1&&S.C8!==-1&&S.N9!==-1}function b(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.N1=x.findAtomOnResidue(A,"N1"),S.N1===-1&&(S.N1=x.findAtomOnResidue(A,"C1")),S.C2=x.findAtomOnResidue(A,"C2"),S.N3=x.findAtomOnResidue(A,"N3"),S.C4=x.findAtomOnResidue(A,"C4"),S.C5=x.findAtomOnResidue(A,"C5"),S.C6=x.findAtomOnResidue(A,"C6"),S}function P(S){return S.trace!==-1&&S.N1!==-1&&S.C2!==-1&&S.N3!==-1&&S.C4!==-1&&S.C5!==-1&&S.C6!==-1}function C(S,T,A){const x=T.model.atomicHierarchy.index,{traceElementIndex:M}=T.model.atomicHierarchy.derived.residue;return S.trace=M[A],S.C1_1=x.findAtomOnResidue(A,"C1'"),S.C2_1=x.findAtomOnResidue(A,"C2'"),S.C3_1=x.findAtomOnResidue(A,"C3'"),S.C4_1=x.findAtomOnResidue(A,"C4'"),S.O4_1=x.findAtomOnResidue(A,"O4'"),S}function l(S){return S.trace!==-1&&S.C1_1!==-1&&S.C2_1!==-1&&S.C3_1!==-1&&S.C4_1!==-1&&S.O4_1!==-1}return Hn}var rW;function rue(){return rW||(rW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideBlockParams=e.DefaultNucleotideBlockMeshProps=e.NucleotideBlockMeshParams=void 0,e.NucleotideBlockVisual=D;const t=Ne(),r=Ge(),n=FS(),i=Ke(),c=Rt(),o=$t(),s=at(),h=dt(),f=ba(),y=mr(),_=nC(),g=Tt(),a=rt(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=r.Mat4.identity(),A=(0,r.Vec3)(),x=(0,n.Box)();e.NucleotideBlockMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultNucleotideBlockMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideBlockMeshParams);function M(V,R,E,I,B,w){if(!i.Unit.isAtomic(R))return c.Mesh.createEmpty(w);const O=R.nucleotideElements.length;if(!O)return c.Mesh.createEmpty(w);const{sizeFactor:F,thicknessFactor:L,radialSegments:U}=B,q=O*(x.vertices.length/3+U*2),N=o.MeshBuilder.createState(q,q/4,w),{elements:k,model:j,conformation:H}=R,{chainAtomSegments:G,residueAtomSegments:z}=j.atomicHierarchy,{moleculeType:W}=j.atomicHierarchy.derived.residue,X=s.Segmentation.transientSegments(G,k),Y=s.Segmentation.transientSegments(z,k),K=1*F,Q=4.5,J=L*F*2,ae={radiusTop:K,radiusBottom:K,radialSegments:U,bottomCap:!0};let te=0;for(;X.hasNext;)for(Y.setSegment(X.move());Y.hasNext;){const{index:ie}=Y.move();if((0,h.isNucleic)(W[ie])){const Z=(0,_.createNucleicIndices)();let re=-1,oe=-1,ce=-1,ue=-1,pe=-1,he=4.5;const{isPurine:fe,isPyrimidine:de}=(0,_.getNucleotideBaseType)(R,ie);fe?(he=4.5,(0,_.setPurinIndices)(Z,R,ie),re=Z.N1,oe=Z.C4,ce=Z.C6,ue=Z.C2,pe=Z.N9):de&&(he=3,(0,_.setPyrimidineIndices)(Z,R,ie),re=Z.N3,oe=Z.C6,ce=Z.C4,ue=Z.C2,pe=Z.N1),pe!==-1&&Z.trace!==-1&&(H.invariantPosition(pe,v),H.invariantPosition(Z.trace,b),N.currentGroup=te,(0,f.addCylinder)(N,v,b,1,ae),re!==-1&&oe!==-1&&ce!==-1&&ue!==-1&&(H.invariantPosition(re,d),H.invariantPosition(oe,p),H.invariantPosition(ce,u),H.invariantPosition(ue,m),r.Vec3.normalize(P,r.Vec3.sub(P,p,d)),r.Vec3.normalize(C,r.Vec3.sub(C,m,u)),r.Vec3.normalize(l,r.Vec3.cross(l,P,C)),r.Mat4.targetTo(T,d,p,l),r.Vec3.scaleAndAdd(S,d,P,he/2-.2),r.Mat4.scale(T,T,r.Vec3.set(A,Q,J,he)),r.Mat4.setTranslation(T,S),o.MeshBuilder.addPrimitive(N,T,x))),++te}}const ne=o.MeshBuilder.getMesh(N),$=a.Sphere3D.expand((0,a.Sphere3D)(),R.boundary.sphere,K);return ne.setBoundingSphere($),ne}e.NucleotideBlockParams={...y.UnitsMeshParams,...e.NucleotideBlockMeshParams};function D(V){return(0,y.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideBlockParams),createGeometry:M,createLocationIterator:_.NucleotideLocationIterator.fromGroup,getLoci:_.getNucleotideElementLoci,eachLocation:_.eachNucleotideElement,setUpdateState:(R,E,I)=>{R.createGeometry=E.sizeFactor!==I.sizeFactor||E.thicknessFactor!==I.thicknessFactor||E.radialSegments!==I.radialSegments}},V)}})(MM)),MM}var IM={},nW;function nue(){return nW||(nW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.NucleotideRingParams=e.DefaultNucleotideRingMeshProps=e.NucleotideRingMeshParams=void 0,e.NucleotideRingVisual=F;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=ba(),f=Jn(),y=mr(),_=nC(),g=Tt(),a=rt(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)();e.NucleotideRingMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultNucleotideRingMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideRingMeshParams);const A=new Float32Array(54),x=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),M=new Uint32Array([8,12,14,16,6,4,2,0,10]),D=new Uint32Array([9,11,1,3,5,7,17,15,13]),V=new Float32Array(36),R=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),E=new Uint32Array([0,10,8,6,4,2]),I=new Uint32Array([1,3,5,7,9,11]),B=(0,r.Vec3)();function w(L,U,...q){for(let N=0,k=q.length;N<k;++N){const j=q[N];
7087r.Vec3.toArray(r.Vec3.add(B,j,U),L,N*2*3),r.Vec3.toArray(r.Vec3.sub(B,j,U),L,(N*2+1)*3)}}function O(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return i.Mesh.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return i.Mesh.createEmpty(j);const{sizeFactor:G,thicknessFactor:z,radialSegments:W,detail:X}=k,Y=H*(26+W*2),K=c.MeshBuilder.createState(Y,Y/4,j),{elements:Q,model:J,conformation:ae}=U,{chainAtomSegments:te,residueAtomSegments:ne}=J.atomicHierarchy,{moleculeType:$}=J.atomicHierarchy.derived.residue,ie=o.Segmentation.transientSegments(te,Q),Z=o.Segmentation.transientSegments(ne,Q),re=1*G,oe=z*G,ce={radiusTop:re,radiusBottom:re,radialSegments:W};let ue=0;for(;ie.hasNext;)for(Z.setSegment(ie.move());Z.hasNext;){const{index:fe}=Z.move();if((0,s.isNucleic)($[fe])){const de=(0,_.createNucleicIndices)();K.currentGroup=ue;const{isPurine:ge,isPyrimidine:Ce}=(0,_.getNucleotideBaseType)(U,fe);ge?((0,_.setPurinIndices)(de,U,fe),de.N9!==-1&&de.trace!==-1&&(ae.invariantPosition(de.N9,S),ae.invariantPosition(de.trace,d),K.currentGroup=ue,(0,h.addCylinder)(K,S,d,1,ce),(0,f.addSphere)(K,S,re,X)),(0,_.hasPurinIndices)(de)&&(ae.invariantPosition(de.N1,p),ae.invariantPosition(de.C2,u),ae.invariantPosition(de.N3,m),ae.invariantPosition(de.C4,v),ae.invariantPosition(de.C5,b),ae.invariantPosition(de.C6,P),ae.invariantPosition(de.N7,C),ae.invariantPosition(de.C8,l),r.Vec3.triangleNormal(T,p,v,b),r.Vec3.scale(T,T,oe),w(A,T,p,u,m,v,b,P,C,l,S),c.MeshBuilder.addTriangleStrip(K,A,x),c.MeshBuilder.addTriangleFan(K,A,M),c.MeshBuilder.addTriangleFan(K,A,D))):Ce&&((0,_.setPyrimidineIndices)(de,U,fe),de.N1!==-1&&de.trace!==-1&&(ae.invariantPosition(de.N1,p),ae.invariantPosition(de.trace,d),K.currentGroup=ue,(0,h.addCylinder)(K,p,d,1,ce),(0,f.addSphere)(K,p,re,X)),(0,_.hasPyrimidineIndices)(de)&&(ae.invariantPosition(de.C2,u),ae.invariantPosition(de.N3,m),ae.invariantPosition(de.C4,v),ae.invariantPosition(de.C5,b),ae.invariantPosition(de.C6,P),r.Vec3.triangleNormal(T,p,v,b),r.Vec3.scale(T,T,oe),w(V,T,p,u,m,v,b,P),c.MeshBuilder.addTriangleStrip(K,V,R),c.MeshBuilder.addTriangleFan(K,V,E),c.MeshBuilder.addTriangleFan(K,V,I))),++ue}}const pe=c.MeshBuilder.getMesh(K),he=a.Sphere3D.expand((0,a.Sphere3D)(),U.boundary.sphere,re);return pe.setBoundingSphere(he),pe}e.NucleotideRingParams={...y.UnitsMeshParams,...e.NucleotideRingMeshParams};function F(L){return(0,y.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideRingParams),createGeometry:O,createLocationIterator:_.NucleotideLocationIterator.fromGroup,getLoci:_.getNucleotideElementLoci,eachLocation:_.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor||q.thicknessFactor!==N.thicknessFactor||q.radialSegments!==N.radialSegments}},L)}})(IM)),IM}var wM={},iW;function iue(){return iW||(iW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideAtomicRingFillParams=e.DefaultNucleotideAtomicRingFillMeshProps=e.NucleotideAtomicRingFillMeshParams=void 0,e.NucleotideAtomicRingFillVisual=H;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=mr(),f=nC(),y=rt(),_=(0,r.Vec3)(),g=(0,r.Vec3)(),a=(0,r.Vec3)(),d=(0,r.Vec3)(),p=(0,r.Vec3)(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)();e.NucleotideAtomicRingFillMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.01})},e.DefaultNucleotideAtomicRingFillMeshProps=t.ParamDefinition.getDefaultValues(e.NucleotideAtomicRingFillMeshParams);const D=new Float32Array(54),V=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),R=new Uint32Array([8,12,14,16,6,4,2,0,10]),E=new Uint32Array([9,11,1,3,5,7,17,15,13]),I=new Float32Array(36),B=new Uint32Array([2,3,4,5,6,7,8,9,10,11,2,3]),w=new Uint32Array([0,10,8,6,4,2,10]),O=new Uint32Array([1,3,5,7,9,11,3]),F=new Float32Array(36),L=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),U=new Uint32Array([0,10,8,6,4,2]),q=new Uint32Array([1,3,5,7,9,11]),N=(0,r.Vec3)();function k(G,z,...W){for(let X=0,Y=W.length;X<Y;++X){const K=W[X];r.Vec3.toArray(r.Vec3.add(N,K,z),G,X*2*3),r.Vec3.toArray(r.Vec3.sub(N,K,z),G,(X*2+1)*3)}}function j(G,z,W,X,Y,K){if(!n.Unit.isAtomic(z))return i.Mesh.createEmpty(K);const Q=z.nucleotideElements.length;if(!Q)return i.Mesh.createEmpty(K);const{sizeFactor:J,thicknessFactor:ae}=Y,te=Q*25,ne=c.MeshBuilder.createState(te,te/4,K),{elements:$,model:ie,conformation:Z}=z,{chainAtomSegments:re,residueAtomSegments:oe}=ie.atomicHierarchy,{moleculeType:ce}=ie.atomicHierarchy.derived.residue,ue=o.Segmentation.transientSegments(re,$),pe=o.Segmentation.transientSegments(oe,$),he=J*ae;let fe=0;for(;ue.hasNext;)for(pe.setSegment(ue.move());pe.hasNext;){const{index:Ce}=pe.move();if((0,s.isNucleic)(ce[Ce])){const ve=(0,f.createNucleicIndices)();ne.currentGroup=fe,(0,f.setSugarIndices)(ve,z,Ce),(0,f.hasSugarIndices)(ve)&&(Z.invariantPosition(ve.C1_1,P),Z.invariantPosition(ve.C2_1,C),Z.invariantPosition(ve.C3_1,l),Z.invariantPosition(ve.C4_1,S),Z.invariantPosition(ve.O4_1,T),r.Vec3.triangleNormal(x,l,S,P),r.Vec3.scale(A,r.Vec3.add(A,T,r.Vec3.add(A,S,r.Vec3.add(A,l,r.Vec3.add(A,P,C)))),.2),r.Vec3.scale(M,x,he),k(I,M,A,l,S,T,P,C),c.MeshBuilder.addTriangleStrip(ne,I,B),c.MeshBuilder.addTriangleFanWithNormal(ne,I,w,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,I,O,x));const{isPurine:le,isPyrimidine:me}=(0,f.getNucleotideBaseType)(z,Ce);le?((0,f.setPurinIndices)(ve,z,Ce),(0,f.hasPurinIndices)(ve)&&(Z.invariantPosition(ve.N1,_),Z.invariantPosition(ve.C2,g),Z.invariantPosition(ve.N3,a),Z.invariantPosition(ve.C4,d),Z.invariantPosition(ve.C5,p),Z.invariantPosition(ve.C6,u),Z.invariantPosition(ve.N7,m),Z.invariantPosition(ve.C8,v),Z.invariantPosition(ve.N9,b),r.Vec3.triangleNormal(x,_,d,p),r.Vec3.scale(M,x,he),k(D,M,_,g,a,d,p,u,m,v,b),c.MeshBuilder.addTriangleStrip(ne,D,V),c.MeshBuilder.addTriangleFanWithNormal(ne,D,R,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,D,E,x))):me&&((0,f.setPyrimidineIndices)(ve,z,Ce),(0,f.hasPyrimidineIndices)(ve)&&(Z.invariantPosition(ve.N1,_),Z.invariantPosition(ve.C2,g),Z.invariantPosition(ve.N3,a),Z.invariantPosition(ve.C4,d),Z.invariantPosition(ve.C5,p),Z.invariantPosition(ve.C6,u),r.Vec3.triangleNormal(x,_,d,p),r.Vec3.scale(M,x,he),k(F,M,_,g,a,d,p,u),c.MeshBuilder.addTriangleStrip(ne,F,L),c.MeshBuilder.addTriangleFanWithNormal(ne,F,U,x),r.Vec3.negate(x,x),c.MeshBuilder.addTriangleFanWithNormal(ne,F,q,x))),++fe}}const de=c.MeshBuilder.getMesh(ne),ge=y.Sphere3D.expand((0,y.Sphere3D)(),z.boundary.sphere,he);return de.setBoundingSphere(ge),de}
7087e.NucleotideAtomicRingFillParams={...h.UnitsMeshParams,...e.NucleotideAtomicRingFillMeshParams};function H(G){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicRingFillParams),createGeometry:j,createLocationIterator:f.NucleotideLocationIterator.fromGroup,getLoci:f.getNucleotideElementLoci,eachLocation:f.eachNucleotideElement,setUpdateState:(z,W,X)=>{z.createGeometry=W.sizeFactor!==X.sizeFactor||W.thicknessFactor!==X.thicknessFactor}},G)}})(wM)),wM}var VM={},aW;function aue(){return aW||(aW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.NucleotideAtomicBondParams=void 0,e.NucleotideAtomicBondVisual=E,e.NucleotideAtomicBondImpostorVisual=B,e.NucleotideAtomicBondMeshVisual=O;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=ba(),f=mr(),y=nC(),_=Tt(),g=rt(),a=no(),d=qw(),p=Er(),u=(0,r.Vec3)(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)(),D=(0,r.Vec3)(),V=(0,r.Vec3)(),R=(0,r.Vec3)();e.NucleotideAtomicBondParams={...f.UnitsMeshParams,...f.UnitsCylindersParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},_.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};
7087function E(F,L,U,q){return U.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(q)?B(F):O(F)}function I(F,L,U,q,N,k){if(!n.Unit.isAtomic(L))return a.Cylinders.createEmpty(k);const j=L.nucleotideElements.length;if(!j)return a.Cylinders.createEmpty(k);const H=j*15,G=d.CylindersBuilder.create(H,H/4,k),{elements:z,model:W,conformation:X}=L,{chainAtomSegments:Y,residueAtomSegments:K}=W.atomicHierarchy,{moleculeType:Q}=W.atomicHierarchy.derived.residue,J=o.Segmentation.transientSegments(Y,z),ae=o.Segmentation.transientSegments(K,z);let te=0;const ne=2;for(;J.hasNext;)for(ae.setSegment(J.move());ae.hasNext;){const{index:Z}=ae.move();if((0,s.isNucleic)(Q[Z])){const re=(0,y.createNucleicIndices)();(0,y.setSugarIndices)(re,L,Z),(0,y.hasSugarIndices)(re)&&(X.invariantPosition(re.C1_1,x),X.invariantPosition(re.C2_1,M),X.invariantPosition(re.C3_1,D),X.invariantPosition(re.C4_1,V),X.invariantPosition(re.O4_1,R),X.invariantPosition(re.trace,u),G.add(D[0],D[1],D[2],u[0],u[1],u[2],1,!0,!0,ne,te),G.add(D[0],D[1],D[2],V[0],V[1],V[2],1,!0,!0,ne,te),G.add(V[0],V[1],V[2],R[0],R[1],R[2],1,!0,!0,ne,te),G.add(R[0],R[1],R[2],x[0],x[1],x[2],1,!0,!0,ne,te),G.add(x[0],x[1],x[2],M[0],M[1],M[2],1,!0,!0,ne,te),G.add(M[0],M[1],M[2],D[0],D[1],D[2],1,!0,!0,ne,te));const{isPurine:oe,isPyrimidine:ce}=(0,y.getNucleotideBaseType)(L,Z);oe?((0,y.setPurinIndices)(re,L,Z),re.C1_1!==-1&&re.N9!==-1?(X.invariantPosition(re.C1_1,x),X.invariantPosition(re.N9,A),G.add(A[0],A[1],A[2],x[0],x[1],x[2],1,!0,!0,ne,te)):re.N9!==-1&&re.trace!==-1&&(X.invariantPosition(re.N9,A),X.invariantPosition(re.trace,u),G.add(A[0],A[1],A[2],u[0],u[1],u[2],1,!0,!0,ne,te)),(0,y.hasPurinIndices)(re)&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.C2,v),X.invariantPosition(re.N3,b),X.invariantPosition(re.C4,P),X.invariantPosition(re.C5,C),X.invariantPosition(re.C6,l),X.invariantPosition(re.N7,S),X.invariantPosition(re.C8,T),X.invariantPosition(re.N9,A),G.add(A[0],A[1],A[2],T[0],T[1],T[2],1,!0,!0,ne,te),G.add(T[0],T[1],T[2],S[0],S[1],S[2],1,!0,!0,ne,te),G.add(S[0],S[1],S[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(C[0],C[1],C[2],l[0],l[1],l[2],1,!0,!0,ne,te),G.add(l[0],l[1],l[2],m[0],m[1],m[2],1,!0,!0,ne,te),G.add(m[0],m[1],m[2],v[0],v[1],v[2],1,!0,!0,ne,te),G.add(v[0],v[1],v[2],b[0],b[1],b[2],1,!0,!0,ne,te),G.add(b[0],b[1],b[2],P[0],P[1],P[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],A[0],A[1],A[2],1,!0,!0,ne,te))):ce&&((0,y.setPyrimidineIndices)(re,L,Z),re.C1_1!==-1&&re.N1!==-1?(X.invariantPosition(re.N1,m),X.invariantPosition(re.C1_1,x),G.add(m[0],m[1],m[2],x[0],x[1],x[2],1,!0,!0,ne,te)):re.N1!==-1&&re.trace!==-1&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.trace,u),G.add(m[0],m[1],m[2],u[0],u[1],u[2],1,!0,!0,ne,te)),(0,y.hasPyrimidineIndices)(re)&&(X.invariantPosition(re.N1,m),X.invariantPosition(re.C2,v),X.invariantPosition(re.N3,b),X.invariantPosition(re.C4,P),X.invariantPosition(re.C5,C),X.invariantPosition(re.C6,l),G.add(m[0],m[1],m[2],l[0],l[1],l[2],1,!0,!0,ne,te),G.add(l[0],l[1],l[2],C[0],C[1],C[2],1,!0,!0,ne,te),G.add(C[0],C[1],C[2],P[0],P[1],P[2],1,!0,!0,ne,te),G.add(P[0],P[1],P[2],b[0],b[1],b[2],1,!0,!0,ne,te),G.add(b[0],b[1],b[2],v[0],v[1],v[2],1,!0,!0,ne,te),G.add(v[0],v[1],v[2],m[0],m[1],m[2],1,!0,!0,ne,te))),++te}}const $=G.getCylinders(),ie=g.Sphere3D.expand((0,g.Sphere3D)(),L.boundary.sphere,1*N.sizeFactor);return $.setBoundingSphere(ie),$}function B(F){return(0,f.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicBondParams),createGeometry:I,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(L,U,q)=>{L.createGeometry=U.sizeFactor!==q.sizeFactor},mustRecreate:(L,U,q)=>!U.tryUseImpostor||!q},F)}function w(F,L,U,q,N,k){if(!n.Unit.isAtomic(L))return i.Mesh.createEmpty(k);const j=L.nucleotideElements.length;if(!j)return i.Mesh.createEmpty(k);const{sizeFactor:H,radialSegments:G}=N,z=j*(G*15),W=c.MeshBuilder.createState(z,z/4,k),{elements:X,model:Y,conformation:K}=L,{chainAtomSegments:Q,residueAtomSegments:J}=Y.atomicHierarchy,{moleculeType:ae}=Y.atomicHierarchy.derived.residue,te=o.Segmentation.transientSegments(Q,X),ne=o.Segmentation.transientSegments(J,X),$={radiusTop:1*H,radiusBottom:1*H,radialSegments:G};let ie=0;for(;te.hasNext;)for(ne.setSegment(te.move());ne.hasNext;){const{index:oe}=ne.move();if((0,s.isNucleic)(ae[oe])){const ce=(0,y.createNucleicIndices)();W.currentGroup=ie,(0,y.setSugarIndices)(ce,L,oe),(0,y.hasSugarIndices)(ce)&&(K.invariantPosition(ce.C1_1,x),K.invariantPosition(ce.C2_1,M),K.invariantPosition(ce.C3_1,D),K.invariantPosition(ce.C4_1,V),K.invariantPosition(ce.O4_1,R),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,D,u,1,$),(0,h.addCylinder)(W,D,V,1,$),(0,h.addCylinder)(W,V,R,1,$),(0,h.addCylinder)(W,R,x,1,$),(0,h.addCylinder)(W,x,M,1,$),(0,h.addCylinder)(W,M,D,1,$));const{isPurine:ue,isPyrimidine:pe}=(0,y.getNucleotideBaseType)(L,oe);ue?((0,y.setPurinIndices)(ce,L,oe),ce.C1_1!==-1&&ce.N9!==-1?(K.invariantPosition(ce.C1_1,x),K.invariantPosition(ce.N9,A),(0,h.addCylinder)(W,A,x,1,$)):ce.N9!==-1&&ce.trace!==-1&&(K.invariantPosition(ce.N9,A),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,A,u,1,$)),(0,y.hasPurinIndices)(ce)&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C2,v),K.invariantPosition(ce.N3,b),K.invariantPosition(ce.C4,P),K.invariantPosition(ce.C5,C),K.invariantPosition(ce.C6,l),K.invariantPosition(ce.N7,S),K.invariantPosition(ce.C8,T),K.invariantPosition(ce.N9,A),(0,h.addCylinder)(W,A,T,1,$),(0,h.addCylinder)(W,T,S,1,$),(0,h.addCylinder)(W,S,C,1,$),(0,h.addCylinder)(W,C,l,1,$),(0,h.addCylinder)(W,l,m,1,$),(0,h.addCylinder)(W,m,v,1,$),(0,h.addCylinder)(W,v,b,1,$),(0,h.addCylinder)(W,b,P,1,$),(0,h.addCylinder)(W,P,C,1,$),(0,h.addCylinder)(W,P,A,1,$))):pe&&((0,y.setPyrimidineIndices)(ce,L,oe),ce.C1_1!==-1&&ce.N1!==-1?(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C1_1,x),(0,h.addCylinder)(W,m,x,1,$)):ce.N1!==-1&&ce.trace!==-1&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.trace,u),(0,h.addCylinder)(W,m,u,1,$)),(0,y.hasPyrimidineIndices)(ce)&&(K.invariantPosition(ce.N1,m),K.invariantPosition(ce.C2,v),K.invariantPosition(ce.N3,b),K.invariantPosition(ce.C4,P),K.invariantPosition(ce.C5,C),K.invariantPosition(ce.C6,l),(0,h.addCylinder)(W,m,l,1,$),(0,h.addCylinder)(W,l,C,1,$),(0,h.addCylinder)(W,C,P,1,$),(0,h.addCylinder)(W,P,b,1,$),(0,h.addCylinder)(W,b,v,1,$),(0,h.addCylinder)(W,v,m,1,$))),++ie}}const Z=c.MeshBuilder.getMesh(W),re=g.Sphere3D.expand((0,g.Sphere3D)(),L.boundary.sphere,1*N.sizeFactor);return Z.setBoundingSphere(re),Z}function O(F){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicBondParams),createGeometry:w,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(L,U,q)=>{L.createGeometry=U.sizeFactor!==q.sizeFactor||U.radialSegments!==q.radialSegments},mustRecreate:(L,U,q)=>U.tryUseImpostor&&!!q},F)}})(VM)),VM}var EM={},oW;function oue(){return oW||(oW=1,(function(e){Object.defineProperty(e,"__esMo
7087dule",{value:!0}),e.NucleotideAtomicElementParams=void 0,e.NucleotideAtomicElementVisual=I,e.NucleotideAtomicElementImpostorVisual=w,e.NucleotideAtomicElementMeshVisual=F;const t=Ne(),r=Ge(),n=Ke(),i=Rt(),c=$t(),o=at(),s=dt(),h=Jn(),f=mr(),y=nC(),_=Tt(),g=rt(),a=ro(),d=Xf(),p=P2(),u=Er(),m=(0,r.Vec3)(),v=(0,r.Vec3)(),b=(0,r.Vec3)(),P=(0,r.Vec3)(),C=(0,r.Vec3)(),l=(0,r.Vec3)(),S=(0,r.Vec3)(),T=(0,r.Vec3)(),A=(0,r.Vec3)(),x=(0,r.Vec3)(),M=(0,r.Vec3)(),D=(0,r.Vec3)(),V=(0,r.Vec3)(),R=(0,r.Vec3)(),E=(0,r.Vec3)();e.NucleotideAtomicElementParams={...f.UnitsMeshParams,...f.UnitsSpheresParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},_.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function I(L,U,q,N){return q.tryUseImpostor&&(0,u.checkSphereImpostorSupport)(N)?w(L):F(L)}function B(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return a.Spheres.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return a.Spheres.createEmpty(j);const G=H*15,z=p.SpheresBuilder.create(G,G/4,j),{elements:W,model:X,conformation:Y}=U,{chainAtomSegments:K,residueAtomSegments:Q}=X.atomicHierarchy,{moleculeType:J}=X.atomicHierarchy.derived.residue,ae=o.Segmentation.transientSegments(K,W),te=o.Segmentation.transientSegments(Q,W);let ne=0;for(;ae.hasNext;)for(te.setSegment(ae.move());te.hasNext;){const{index:Z}=te.move();if((0,s.isNucleic)(J[Z])){const re=(0,y.createNucleicIndices)();(0,y.setSugarIndices)(re,U,Z),(0,y.hasSugarIndices)(re)&&(Y.invariantPosition(re.C1_1,M),Y.invariantPosition(re.C2_1,D),Y.invariantPosition(re.C3_1,V),Y.invariantPosition(re.C4_1,R),Y.invariantPosition(re.O4_1,E),Y.invariantPosition(re.trace,m),z.add(m[0],m[1],m[2],ne),z.add(V[0],V[1],V[2],ne),z.add(R[0],R[1],R[2],ne),z.add(E[0],E[1],E[2],ne),z.add(M[0],M[1],M[2],ne),z.add(D[0],D[1],D[2],ne));const{isPurine:oe,isPyrimidine:ce}=(0,y.getNucleotideBaseType)(U,Z);oe?((0,y.setPurinIndices)(re,U,Z),(0,y.hasPurinIndices)(re)&&(Y.invariantPosition(re.N1,v),Y.invariantPosition(re.C2,b),Y.invariantPosition(re.N3,P),Y.invariantPosition(re.C4,C),Y.invariantPosition(re.C5,l),Y.invariantPosition(re.C6,S),Y.invariantPosition(re.N7,T),Y.invariantPosition(re.C8,A),Y.invariantPosition(re.N9,x),z.add(x[0],x[1],x[2],ne),z.add(A[0],A[1],A[2],ne),z.add(T[0],T[1],T[2],ne),z.add(l[0],l[1],l[2],ne),z.add(S[0],S[1],S[2],ne),z.add(v[0],v[1],v[2],ne),z.add(b[0],b[1],b[2],ne),z.add(P[0],P[1],P[2],ne),z.add(C[0],C[1],C[2],ne))):ce&&((0,y.setPyrimidineIndices)(re,U,Z),(0,y.hasPyrimidineIndices)(re)&&(Y.invariantPosition(re.N1,v),Y.invariantPosition(re.C2,b),Y.invariantPosition(re.N3,P),Y.invariantPosition(re.C4,C),Y.invariantPosition(re.C5,l),Y.invariantPosition(re.C6,S),z.add(v[0],v[1],v[2],ne),z.add(S[0],S[1],S[2],ne),z.add(l[0],l[1],l[2],ne),z.add(C[0],C[1],C[2],ne),z.add(P[0],P[1],P[2],ne),z.add(b[0],b[1],b[2],ne))),++ne}}const $=z.getSpheres(),ie=g.Sphere3D.expand((0,g.Sphere3D)(),U.boundary.sphere,1*k.sizeFactor);return $.setBoundingSphere(ie),$}function w(L){return(0,f.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicElementParams),createGeometry:B,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor},mustRecreate:(U,q,N)=>!q.tryUseImpostor||!N},L)}function O(L,U,q,N,k,j){if(!n.Unit.isAtomic(U))return i.Mesh.createEmpty(j);const H=U.nucleotideElements.length;if(!H)return i.Mesh.createEmpty(j);
7087const{sizeFactor:G,detail:z}=k,W=H*(0,d.sphereVertexCount)(z),X=c.MeshBuilder.createState(W,W/2,j),{elements:Y,model:K,conformation:Q}=U,{chainAtomSegments:J,residueAtomSegments:ae}=K.atomicHierarchy,{moleculeType:te}=K.atomicHierarchy.derived.residue,ne=o.Segmentation.transientSegments(J,Y),$=o.Segmentation.transientSegments(ae,Y),ie=1*G;let Z=0;for(;ne.hasNext;)for($.setSegment(ne.move());$.hasNext;){const{index:ce}=$.move();if((0,s.isNucleic)(te[ce])){const ue=(0,y.createNucleicIndices)();X.currentGroup=Z,(0,y.setSugarIndices)(ue,U,ce),(0,y.hasSugarIndices)(ue)&&(Q.invariantPosition(ue.C1_1,M),Q.invariantPosition(ue.C2_1,D),Q.invariantPosition(ue.C3_1,V),Q.invariantPosition(ue.C4_1,R),Q.invariantPosition(ue.O4_1,E),Q.invariantPosition(ue.trace,m),(0,h.addSphere)(X,m,ie,z),(0,h.addSphere)(X,R,ie,z),(0,h.addSphere)(X,E,ie,z),(0,h.addSphere)(X,M,ie,z),(0,h.addSphere)(X,D,ie,z),(0,h.addSphere)(X,V,ie,z));const{isPurine:pe,isPyrimidine:he}=(0,y.getNucleotideBaseType)(U,ce);pe?((0,y.setPurinIndices)(ue,U,ce),(0,y.hasPurinIndices)(ue)&&(Q.invariantPosition(ue.N1,v),Q.invariantPosition(ue.C2,b),Q.invariantPosition(ue.N3,P),Q.invariantPosition(ue.C4,C),Q.invariantPosition(ue.C5,l),Q.invariantPosition(ue.C6,S),Q.invariantPosition(ue.N7,T),Q.invariantPosition(ue.C8,A),Q.invariantPosition(ue.N9,x),(0,h.addSphere)(X,A,ie,z),(0,h.addSphere)(X,T,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,S,ie,z),(0,h.addSphere)(X,v,ie,z),(0,h.addSphere)(X,b,ie,z),(0,h.addSphere)(X,P,ie,z),(0,h.addSphere)(X,C,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,x,ie,z))):he&&((0,y.setPyrimidineIndices)(ue,U,ce),(0,y.hasPyrimidineIndices)(ue)&&(Q.invariantPosition(ue.N1,v),Q.invariantPosition(ue.C2,b),Q.invariantPosition(ue.N3,P),Q.invariantPosition(ue.C4,C),Q.invariantPosition(ue.C5,l),Q.invariantPosition(ue.C6,S),(0,h.addSphere)(X,S,ie,z),(0,h.addSphere)(X,l,ie,z),(0,h.addSphere)(X,C,ie,z),(0,h.addSphere)(X,P,ie,z),(0,h.addSphere)(X,b,ie,z),(0,h.addSphere)(X,v,ie,z))),++Z}}const re=c.MeshBuilder.getMesh(X),oe=g.Sphere3D.expand((0,g.Sphere3D)(),U.boundary.sphere,1*k.sizeFactor);return re.setBoundingSphere(oe),re}function F(L){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.NucleotideAtomicElementParams),createGeometry:O,createLocationIterator:y.NucleotideLocationIterator.fromGroup,getLoci:y.getNucleotideElementLoci,eachLocation:y.eachNucleotideElement,setUpdateState:(U,q,N)=>{U.createGeometry=q.sizeFactor!==N.sizeFactor||q.detail!==N.detail},mustRecreate:(U,q,N)=>q.tryUseImpostor&&!!N},L)}})(EM)),EM}var BM={},ff={},sW;function sue(){if(sW)return ff;sW=1,Object.defineProperty(ff,"__esModule",{value:!0}),ff.createWedge=f,ff.Wedge=_,ff.WedgeCage=a;const e=Ge(),t=to(),r=kS(),n=Rw(),i=e.Vec3.zero(),c=e.Vec3.zero(),o=e.Vec3.zero(),s=e.Vec3.zero(),h=(0,r.polygon)(3,!1);function f(){const d=(0,t.PrimitiveBuilder)(8);for(let p=0;p<3;++p){const u=(p+1)%3;e.Vec3.set(i,h[p*3],h[p*3+1],-.5),e.Vec3.set(c,h[u*3],h[u*3+1],-.5),e.Vec3.set(o,h[u*3],h[u*3+1],.5),e.Vec3.set(s,h[p*3],h[p*3+1],.5),d.add(i,c,o),d.add(o,s,i)}return e.Vec3.set(i,h[0],h[1],-.5),e.Vec3.set(c,h[3],h[4],-.5),e.Vec3.set(o,h[6],h[7],-.5),d.add(o,c,i),e.Vec3.set(i,h[0],h[1],.5),e.Vec3.set(c,h[3],h[4],.5),e.Vec3.set(o,h[6],h[7],.5),d.add(i,c,o),d.getPrimitive()}let y;function _(){return y||(y=f()),y}let g;function a(){return g||(g=(0,n.PrismCage)(h)),g}return ff}var cW;function cue(){return cW||(cW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerDirectionParams=e.DefaultPolymerDirectionWedgeProps=e.PolymerDirectionWedgeParams=void 0,e.PolymerDirectionVisual=P;const t=Ne(),r=Ge(),n=sue(),i=Rt(),c=$t(),o=io(),s=dt(),h=mr(),f=rt(),y=r.Mat4.identity(),_=r.Vec3.zero(),g=r.Vec3.zero(),a=r.Vec3.zero(),d=r.Vec3.zero(),p=4,u=4,m=6,v=(0,n.Wedge)();e.PolymerDirectionWedgeParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01})},e.DefaultPolymerDirectionWedgeProps=t.ParamDefinition.getDefaultValues(e.PolymerDirectionWedgeParams);function b(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return i.Mesh.createEmpty(x);
7087const{sizeFactor:D}=A,V=M*24,R=c.MeshBuilder.createState(V,V/10,x),I=(0,o.createCurveSegmentState)(1),{normalVectors:B,binormalVectors:w}=I;let O=0;const F=(0,o.PolymerTraceIterator)(l,S);for(;F.hasNext;){const q=F.move();R.currentGroup=O;const N=(0,s.isNucleic)(q.moleculeType),k=s.SecondaryStructureType.is(q.secStrucType,s.SecondaryStructureType.Flag.Beta),j=N||k?.5:.9,H=N?.3:.5;if((0,o.interpolateCurveSegment)(I,q,j,H),k&&!q.secStrucLast||!k){const G=T.size.size(q.center)*D,z=p*G,W=u*G,X=m*G,Y=N?w:B;r.Vec3.fromArray(g,Y,0),r.Vec3.fromArray(a,Y,3),r.Vec3.normalize(d,r.Vec3.add(d,g,a)),r.Mat4.targetTo(y,q.p3,q.p1,d),r.Mat4.mul(y,y,r.Mat4.rotY90Z180),r.Mat4.scale(y,y,r.Vec3.set(_,X,W,z)),r.Mat4.setTranslation(y,q.p2),c.MeshBuilder.addPrimitive(R,y,v)}++O}const L=c.MeshBuilder.getMesh(R),U=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return L.setBoundingSphere(U),L}e.PolymerDirectionParams={...h.UnitsMeshParams,...e.PolymerDirectionWedgeParams};function P(C){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerDirectionParams),createGeometry:b,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor}},C)}})(BM)),BM}var RM={},uW;function Yw(){return uW||(uW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerGapParams=e.DefaultPolymerGapCylinderProps=e.PolymerGapCylinderParams=void 0,e.PolymerGapVisual=g;const t=Ne(),r=Rt(),n=$t(),i=Ge(),c=io(),o=ba(),s=mr(),h=Tt(),f=rt(),y=10;e.PolymerGapCylinderParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},h.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerGapCylinderProps=t.ParamDefinition.getDefaultValues(e.PolymerGapCylinderParams);function _(a,d,p,u,m,v){const b=d.gapElements.length;if(!b)return r.Mesh.createEmpty(v);const{sizeFactor:P,radialSegments:C}=m,l=y*C*2*b*2,S=n.MeshBuilder.createState(l,l/10,v),T=(0,i.Vec3)(),A=(0,i.Vec3)(),x={radiusTop:1,radiusBottom:1,topCap:!0,bottomCap:!0,radialSegments:C};let M=0;const D=(0,c.PolymerGapIterator)(p,d);for(;D.hasNext;){const{centerA:E,centerB:I}=D.move();E.element===I.element||(d.conformation.invariantPosition(E.element,T),d.conformation.invariantPosition(I.element,A),x.radiusTop=x.radiusBottom=u.size.size(E)*P,S.currentGroup=M,(0,o.addFixedCountDashedCylinder)(S,T,A,.5,y,!1,x),x.radiusTop=x.radiusBottom=u.size.size(I)*P,S.currentGroup=M+1,(0,o.addFixedCountDashedCylinder)(S,A,T,.5,y,!1,x)),M+=2}const V=n.MeshBuilder.getMesh(S),R=f.Sphere3D.expand((0,f.Sphere3D)(),d.boundary.sphere,1*m.sizeFactor);return V.setBoundingSphere(R),V}e.PolymerGapParams={...s.UnitsMeshParams,...e.PolymerGapCylinderParams};function g(a){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerGapParams),createGeometry:_,createLocationIterator:d=>c.PolymerGapLocationIterator.fromGroup(d,{asSecondary:!0}),getLoci:c.getPolymerGapElementLoci,eachLocation:c.eachPolymerGapElement,setUpdateState:(d,p,u)=>{d.createGeometry=p.sizeFactor!==u.sizeFactor||p.radialSegments!==u.radialSegments}},a)}})(RM)),RM}var OM={},rT={},lW;function CZ(){if(lW)return rT;lW=1,Object.defineProperty(rT,"__esModule",{value:!0}),rT.addSheet=V;const e=Ge(),t=_t(),r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)(),o=(0,e.Vec3)(),s=(0,e.Vec3)(),h=(0,e.Vec3)(),f=(0,e.Vec3)(),y=(0,e.Vec3)(),_=(0,e.Vec3)(),g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=e.Vec3.fromArray,v=e.Vec3.scale,b=e.Vec3.add,P=e.Vec3.sub,C=e.Vec3.magnitude,l=e.Vec3.negate,S=e.Vec3.copy,T=e.Vec3.cross,A=e.Vec3.set,x=t.ChunkedArray.add3,M=t.ChunkedArray.add;function D(R,E,I,B,w,O,F,L,U){const{vertices:q,normals:N,indices:k}=E,j=q.elementCount;if(m(r,B,R),v(h,r,F),v(s,r,L),m(n,w,R),v(c,n,O),T(_,n,r),m(y,I,R),b(a,b(a,y,c),s),P(d,b(d,y,c),h),P(p,P(p,y,c),h),b(u,P(u,y,c),s),F<L?(x(q,u[0],u[1],u[2]),x(q,p[0],p[1],p[2]),x(q,d[0],d[1],d[2]),x(q,a[0],a[1],a[2]),S(o,s)):(x(q,a[0],a[1],a[2]),x(q,d[0],d[1],d[2]),x(q,p[0],p[1],p[2]),x(q,u[0],u[1],u[2]),S(o,h)),U){for(let H=0;H<4;++H)x(N,-_[0],-_[1],-_[2]);
7087x(k,j,j+1,j+2),x(k,j+2,j+3,j)}else{for(let H=0;H<4;++H)x(N,_[0],_[1],_[2]);x(k,j+2,j+1,j),x(k,j,j+3,j+2)}}function V(R,E,I,B,w,O,F,L,U,q){const{currentGroup:N,vertices:k,normals:j,indices:H,groups:G}=R,z=k.elementCount;let W=0;L>0?(m(r,E,0),m(n,E,w*3),W=L/C(P(i,n,r))):A(f,0,0,0);for(let Y=0;Y<=w;++Y){const K=O[Y],Q=F[Y],J=L===0?Q:L*(1-Y/w),ae=Y*3;m(o,I,ae),v(o,o,J),m(c,B,ae),v(c,c,K),L>0&&(m(r,I,ae),m(n,B,ae),v(f,T(f,r,n),W)),m(y,E,ae),m(_,I,ae),m(g,B,ae),b(r,b(r,y,c),o),b(n,_,f),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(r,P(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),l(n,g),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),P(r,P(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(n,l(n,_),f),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),P(r,b(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),S(n,g),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2]),b(r,b(r,y,c),o),x(k,r[0],r[1],r[2]),x(j,n[0],n[1],n[2])}for(let Y=0;Y<w;++Y){for(let K=0;K<2;K++)x(H,z+Y*8+2*K,z+(Y+1)*8+2*K+1,z+Y*8+2*K+1),x(H,z+Y*8+2*K,z+(Y+1)*8+2*K,z+(Y+1)*8+2*K+1);for(let K=2;K<4;K++)x(H,z+Y*8+2*K,z+(Y+1)*8+2*K,z+Y*8+2*K+1),x(H,z+(Y+1)*8+2*K,z+(Y+1)*8+2*K+1,z+Y*8+2*K+1)}if(U){const Y=O[0],K=F[0],Q=L===0?K:L;D(0,R,E,I,B,Y,Q,Q,!1)}else if(L>0){const Y=O[0],K=F[0];D(0,R,E,I,B,Y,L,-K,!1),D(0,R,E,I,B,Y,-L,K,!1)}if(q&&L===0){const Y=O[w],K=F[w];D(w*3,R,E,I,B,Y,K,K,!0)}const X=(w+1)*8+(U?4:L>0?8:0)+(q&&L===0?4:0);for(let Y=0,K=X;Y<K;++Y)M(G,N)}return rT}var nT={},dW;function PZ(){if(dW)return nT;dW=1,Object.defineProperty(nT,"__esModule",{value:!0}),nT.addRibbon=C;const e=Ge(),t=_t(),r=e.Vec3.fromArray,n=e.Vec3.magnitude,i=e.Vec3.sub,c=e.Vec3.add,o=e.Vec3.scale,s=e.Vec3.negate,h=e.Vec3.copy,f=e.Vec3.cross,y=t.ChunkedArray.add3,_=t.ChunkedArray.add,g=(0,e.Vec3)(),a=(0,e.Vec3)(),d=(0,e.Vec3)(),p=(0,e.Vec3)(),u=(0,e.Vec3)(),m=(0,e.Vec3)(),v=(0,e.Vec3)(),b=(0,e.Vec3)(),P=(0,e.Vec3)();function C(l,S,T,A,x,M,D,V){const{currentGroup:R,vertices:E,normals:I,indices:B,groups:w}=l,O=E.elementCount;let F=0;V>0&&(r(g,S,0),r(a,S,x*3),F=V/n(i(d,a,g)));for(let U=0;U<=x;++U){const q=M[U],N=D[U],k=V===0?N:V*(1-U/x),j=U*3;r(u,T,j),o(u,u,k),r(p,A,j),o(p,p,q),V>0&&(r(g,T,j),r(a,A,j),o(m,f(m,g,a),F)),r(v,S,j),r(b,T,j),r(P,A,j),c(g,v,u),s(a,P),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),i(g,v,u),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),c(g,v,u),h(a,P),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2]),i(g,v,u),y(E,g[0],g[1],g[2]),y(I,a[0],a[1],a[2])}for(let U=0;U<x;++U)y(B,O+U*4,O+(U+1)*4+1,O+U*4+1),y(B,O+U*4,O+(U+1)*4,O+(U+1)*4+1),y(B,O+U*4+2+1,O+(U+1)*4+2+1,O+U*4+2),y(B,O+U*4+2,O+(U+1)*4+2+1,O+(U+1)*4+2);const L=(x+1)*4;for(let U=0,q=L;U<q;++U)_(w,R)}return nT}var fW;function uue(){return fW||(fW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerTraceParams=e.DefaultPolymerTraceMeshProps=e.PolymerTraceMeshParams=void 0,e.PolymerTraceVisual=v;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=io(),o=dt(),s=CZ(),h=Gw(),f=mr(),y=Pl(),_=PZ(),g=Jn(),a=Ge(),d=Tt(),p=rt();e.PolymerTraceMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),aspectRatio:t.ParamDefinition.Numeric(5,{min:.1,max:10,step:.1}),arrowFactor:t.ParamDefinition.Numeric(1.5,{min:0,max:3,step:.1},{description:"Size factor for sheet arrows"}),tubularHelices:t.ParamDefinition.Boolean(!1,{description:"Draw alpha helices as tubes"}),roundCap:t.ParamDefinition.Boolean(!1,{description:"Draw round caps on tubular alpha helices"}),helixProfile:t.ParamDefinition.Select("elliptical",t.ParamDefinition.arrayToOptions(["elliptical","rounded","square"]),{description:"Protein helix trace profile"}),nucleicProfile:t.ParamDefinition.Select("square",t.ParamDefinition.arrayToOptions(["elliptical","rounded","square"]),{description:"Nucleic strand trace profile"}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),linearSegments:t.ParamDefinition.Numeric(8,{min:1,max:48,step:1},d.BaseGeometry.CustomQualityParamInfo),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},d.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerTraceMeshProps=t.ParamDefinition.getDefaultValues(e.PolymerTraceMeshParams);const u=(0,a.Vec3)();function m(b,P,C,l,S,T){const A=P.polymerElements.length;if(!A)return n.Mesh.createEmpty(T);const{sizeFactor:x,detail:M,linearSegments:D,radialSegments:V,aspectRatio:R,arrowFactor:E,tubularHelices:I,roundCap:B,helixProfile:w,nucleicProfile:O}=S,F=D*V*A+(V+1)*A*2,L=i.MeshBuilder.createState(F,F/10,T),U=r.Unit.isCoarse(P),q=(0,c.createCurveSegmentState)(D),{curvePoints:N,normalVectors:k,binormalVectors:j,widthValues:H,heightValues:G}=q;let z=0;const W=(0,c.PolymerTraceIterator)(P,C,{ignoreSecondaryStructure:!1,useHelixOrientation:I});for(;W.hasNext;){const K=W.move();L.currentGroup=z;const Q=(0,o.isNucleic)(K.moleculeType),J=o.SecondaryStructureType.is(K.secStrucType,o.SecondaryStructureType.Flag.Beta),ae=o.SecondaryStructureType.is(K.secStrucType,o.SecondaryStructureType.Flag.Helix),te=ae&&!I?c.HelixTension:c.StandardTension,ne=Q?c.NucleicShift:c.StandardShift;(0,c.interpolateCurveSegment)(q,K,te,ne);let $=l.size.size(K.centerPrev)*x,ie=l.size.size(K.center)*x,Z=l.size.size(K.centerNext)*x;
7087U&&($*=R/2,ie*=R/2,Z*=R/2);const re=K.secStrucFirst||K.coarseBackboneFirst||K.first,oe=K.secStrucLast||K.coarseBackboneLast||K.last,ce=ae&&I&&B;let ue=D;if(K.initial){ue=Math.max(Math.round(D*ne),1);const pe=D-ue;N.copyWithin(0,pe*3),j.copyWithin(0,pe*3),k.copyWithin(0,pe*3),a.Vec3.fromArray(u,N,3),a.Vec3.normalize(u,a.Vec3.sub(u,K.p2,u)),a.Vec3.scaleAndAdd(u,K.p2,u,ie*c.OverhangFactor),a.Vec3.toArray(u,N,0)}else K.final&&(ue=Math.max(Math.round(D*(1-ne)),1),a.Vec3.fromArray(u,N,ue*3-3),a.Vec3.normalize(u,a.Vec3.sub(u,K.p2,u)),a.Vec3.scaleAndAdd(u,K.p2,u,ie*c.OverhangFactor),a.Vec3.toArray(u,N,ue*3));if(K.initial===!0&&K.final===!0)(0,g.addSphere)(L,K.p2,ie*2,M);else if(J){const pe=$*R,he=ie*R,fe=Z*R,de=K.secStrucLast?he*E:0;(0,c.interpolateSizes)(q,$,ie,Z,pe,he,fe,ne),V===2?(0,_.addRibbon)(L,N,k,j,ue,H,G,de):(0,s.addSheet)(L,N,k,j,ue,H,G,de,re,oe)}else{let pe,he,fe;ae?I?($*=R*1.5,ie*=R*1.5,Z*=R*1.5,pe=$,he=ie,fe=Z):(pe=$*R,he=ie*R,fe=Z*R):Q?(pe=$*R,he=ie*R,fe=Z*R):(pe=$,he=ie,fe=Z),(0,c.interpolateSizes)(q,$,ie,Z,pe,he,fe,ne);const[de,ge]=Q?[j,k]:[k,j];if(Q)for(let ve=0,le=de.length;ve<le;ve++)de[ve]*=-1;const Ce=Q?O:w;V===2?Q?(0,_.addRibbon)(L,N,de,ge,ue,G,H,0):(0,_.addRibbon)(L,N,de,ge,ue,H,G,0):V===4?(0,s.addSheet)(L,N,de,ge,ue,H,G,0,re,oe):he===ie?(0,h.addTube)(L,N,de,ge,ue,V,H,G,re,oe,"elliptical",ce):Ce==="square"?(0,s.addSheet)(L,N,de,ge,ue,H,G,0,re,oe):(0,h.addTube)(L,N,de,ge,ue,V,H,G,re,oe,Ce)}++z}const X=i.MeshBuilder.getMesh(L),Y=p.Sphere3D.expand((0,p.Sphere3D)(),P.boundary.sphere,1*S.sizeFactor);return X.setBoundingSphere(Y),X}e.PolymerTraceParams={...f.UnitsMeshParams,...e.PolymerTraceMeshParams};function v(b){return(0,f.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerTraceParams),createGeometry:m,createLocationIterator:P=>c.PolymerLocationIterator.fromGroup(P,{asSecondary:!0}),getLoci:c.getPolymerElementLoci,eachLocation:c.eachPolymerElement,setUpdateState:(P,C,l,S,T,A,x)=>{P.createGeometry=C.sizeFactor!==l.sizeFactor||C.tubularHelices!==l.tubularHelices||C.roundCap!==l.roundCap||C.detail!==l.detail||C.linearSegments!==l.linearSegments||C.radialSegments!==l.radialSegments||C.aspectRatio!==l.aspectRatio||C.arrowFactor!==l.arrowFactor||C.helixProfile!==l.helixProfile||C.nucleicProfile!==l.nucleicProfile;const M=y.SecondaryStructureProvider.get(A.structure).version;P.info.secondaryStructureHash!==M&&(P.info.secondaryStructureHash!==void 0&&(P.createGeometry=!0),P.info.secondaryStructureHash=M)},initUpdateState:(P,C,l,S)=>{const T=y.SecondaryStructureProvider.get(S.structure).version;P.info.secondaryStructureHash=T}},b)}})(OM)),OM}var mW;function lue(){return mW||(mW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CartoonRepresentationProvider=e.CartoonParams=void 0,e.getCartoonParams=v,e.CartoonRepresentation=b;const t=Ke(),r=Lt(),n=Ne(),i=Yr(),c=Sa(),o=rue(),s=nue(),h=iue(),f=aue(),y=oue(),_=cue(),g=Yw(),a=uue(),d=Pl(),p=SZ(),u=Tt(),m={"polymer-trace":(P,C)=>(0,c.UnitsRepresentation)("Polymer trace mesh",P,C,a.PolymerTraceVisual),"polymer-gap":(P,C)=>(0,c.UnitsRepresentation)("Polymer gap cylinder",P,C,g.PolymerGapVisual),"nucleotide-block":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide block mesh",P,C,o.NucleotideBlockVisual),"nucleotide-ring":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide ring mesh",P,C,s.NucleotideRingVisual),"nucleotide-atomic-ring-fill":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic ring fill",P,C,h.NucleotideAtomicRingFillVisual),"nucleotide-atomic-bond":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic bond",P,C,f.NucleotideAtomicBondVisual),"nucleotide-atomic-element":(P,C)=>(0,c.UnitsRepresentation)("Nucleotide atomic element",P,C,y.NucleotideAtomicElementVisual),"direction-wedge":(P,C)=>(0,c.UnitsRepresentation)("Polymer direction wedge",P,C,_.PolymerDirectionVisual)};e.CartoonParams={...a.PolymerTraceParams,...g.PolymerGapParams,...o.NucleotideBlockParams,...s.NucleotideRingParams,...f.NucleotideAtomicBondParams,...y.NucleotideAtomicElementParams,...h.NucleotideAtomicRingFillParams,..._.PolymerDirectionParams,sizeFactor:n.ParamDefinition.Numeric(.2,{min:0,max:10,step:.
708701}),visuals:n.ParamDefinition.MultiSelect(["polymer-trace","polymer-gap","nucleotide-ring","nucleotide-atomic-ring-fill","nucleotide-atomic-bond","nucleotide-atomic-element"],n.ParamDefinition.objectToOptions(m)),bumpFrequency:n.ParamDefinition.Numeric(2,{min:0,max:10,step:.1},u.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},u.BaseGeometry.ShadingCategory),colorMode:n.ParamDefinition.Select("default",n.ParamDefinition.arrayToOptions(["default","interpolate"]),{...u.BaseGeometry.ShadingCategory,isHidden:!0})};function v(P,C){const l=n.ParamDefinition.clone(e.CartoonParams);let S=!1,T=!1;return C.units.forEach(A=>{!S&&t.Unit.isAtomic(A)&&A.nucleotideElements.length&&(S=!0),!T&&A.gapElements.length&&(T=!0)}),l.visuals.defaultValue=["polymer-trace"],S&&l.visuals.defaultValue.push("nucleotide-ring"),T&&l.visuals.defaultValue.push("polymer-gap"),l}function b(P,C){return r.Representation.createMulti("Cartoon",P,C,i.StructureRepresentationStateBuilder,m)}e.CartoonRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"cartoon",label:"Cartoon",description:"Displays ribbons, planks, tubes smoothly following the trace atoms of polymers.",factory:b,getParams:v,defaultValues:n.ParamDefinition.getDefaultValues(e.CartoonParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:P=>P.polymerResidueCount>0,ensureCustomProperties:{attach:async(P,C)=>{await d.SecondaryStructureProvider.attach(P,C,void 0,!0);for(const l of C.models)await p.HelixOrientationProvider.attach(P,l,void 0,!0)},detach:P=>{d.SecondaryStructureProvider.ref(P,!1);for(const C of P.models)p.HelixOrientationProvider.ref(C,!1)}}})})(AM)),AM}var kM={},FM={},pW;function due(){return pW||(pW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureEllipsoidMeshParams=e.EllipsoidMeshParams=void 0,e.createEllipsoidMesh=m,e.EllipsoidMeshVisual=v,e.createStructureEllipsoidMesh=b,e.StructureEllipsoidMeshVisual=P;const t=Ne(),r=mr(),n=zi(),i=Ke(),c=Rt(),o=Xf(),s=$t(),h=Ge(),f=Ow(),y=FT(),_=rn(),g=Jn(),a=rt(),d=Tt(),p=Br(),u=h.Vec3.add;function m(C,l,S,T,A,x){const{child:M}=S,D=M?.unitMap.get(l.id);if(M&&!D)return c.Mesh.createEmpty(x);const{detail:V,sizeFactor:R}=A,E=x?.hasBoundingSphere()?a.Sphere3D.clone(x.boundingSphere):void 0,{elements:I,model:B}=l,w=I.length,O=w*(0,o.sphereVertexCount)(V),F=s.MeshBuilder.createState(O,O/2,x),L=y.AtomSiteAnisotrop.Provider.get(B);if(!L)return c.Mesh.createEmpty(x);const U=(0,h.Vec3)(),q=(0,h.Mat3)(),N=(0,h.Vec3)(),k=(0,h.Vec3)(),j=(0,h.Vec3)(),{elementToAnsiotrop:H,data:G}=L,{U:z}=G,W=G._schema.U.space,X=l.conformation,Y=i.StructureElement.Location.create(S);Y.unit=l;const K=(0,n.makeElementIgnoreTest)(S,l,A),Q=(0,h.Vec3)();let J=0;for(let ne=0;ne<w;ne++){const $=I[ne],ie=H[$];if(ie!==-1&&!(K&&K(I[ne]))){Y.element=$,X.invariantPosition($,U),u(Q,Q,U),J+=1,F.currentGroup=ne,h.Tensor.toMat3(q,W,z.value(ie)),h.Mat3.symmtricFromLower(q,q),h.Mat3.symmetricEigenvalues(N,q),h.Mat3.eigenvector(k,q,N[1]),h.Mat3.eigenvector(j,q,N[2]);for(let Z=0;Z<3;++Z)N[Z]=R*1.5958*Math.sqrt(Math.abs(N[Z]));(0,_.equalEps)(N[0],N[1],h.EPSILON)&&(0,_.equalEps)(N[1],N[2],h.EPSILON)?(0,g.addSphere)(F,U,N[0],V):(0,f.addEllipsoid)(F,U,j,k,N,V)}}const ae=s.MeshBuilder.getMesh(F);if(J===0)return ae;let te;return h.Vec3.scale(Q,Q,1/J),E&&h.Vec3.distance(Q,E.center)/E.radius<.1?te=E:te=a.Sphere3D.expand((0,a.Sphere3D)(),(D??l).boundary.sphere,1*R*2),ae.setBoundingSphere(te),ae}e.EllipsoidMeshParams={...r.UnitsMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1)};function v(C){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.EllipsoidMeshParams),createGeometry:m,createLocationIterator:n.ElementIterator.fromGroup,getLoci:n.getElementLoci,eachLocation:n.eachElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail||S.ignoreHydrogens!==T.ignoreHydrogens}},C)}function b(C,l,S,T,A){const{child:x}=l,M=A?.hasBoundingSphere()?a.Sphere3D.clone(A.boundingSphere):void 0,{detail:D,sizeFactor:V}=T,{getSerialIndex:R}=l.serialMapping,I=l.elementCount*(0,o.sphereVertexCount)(D),B=s.MeshBuilder.createState(I,I/2,A),w=(0,h.Vec3)(),O=(0,h.Mat3)(),F=(0,h.Vec3)(),L=(0,h.Vec3)(),U=(0,h.Vec3)(),q=(0,h.Vec3)();let N=0;for(const H of l.units){const G=x?.unitMap.get(H.id);if(x&&!G)return c.Mesh.createEmpty(A);const{elements:z,model:W}=H,X=z.length,Y=y.AtomSiteAnisotrop.Provider.get(W);if(!Y)return c.Mesh.createEmpty(A);const K=(0,n.makeElementIgnoreTest)(l,H,T),{elementToAnsiotrop:Q,data:J}=Y,{U:ae}=J,te=J._schema.U.space,ne=H.conformation,$=i.StructureElement.Location.create(l);$.unit=H;for(let ie=0;ie<X;ie++){const Z=z[ie],re=Q[Z];if(re!==-1&&!(K&&K(z[ie]))){$.element=Z,ne.position(Z,w),u(q,q,w),N+=1,B.currentGroup=R(H,z[ie]),h.Tensor.toMat3(O,te,ae.value(re)),h.Mat3.symmtricFromLower(O,O),h.Mat3.symmetricEigenvalues(F,O),h.Mat3.eigenvector(L,O,F[1]),h.Mat3.eigenvector(U,O,F[2]);for(let oe=0;oe<3;++oe)F[oe]=V*1.5958*Math.sqrt(Math.abs(F[oe]));(0,_.equalEps)(F[0],F[1],h.EPSILON)&&(0,_.equalEps)(F[1],F[2],h.EPSILON)?(0,g.addSphere)(B,w,F[0],D):(0,f.addEllipsoid)(B,w,U,L,F,D)}}}const k=s.MeshBuilder.getMesh(B);if(N===0)return k;let j;return h.Vec3.scale(q,q,1/N),M&&h.Vec3.distance(q,M.center)/M.radius<1?j=M:j=a.Sphere3D.expand((0,a.Sphere3D)(),(x??l).boundary.sphere,1*V*2),k.setBoundingSphere(j),k}
7087e.StructureEllipsoidMeshParams={...p.ComplexMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},d.BaseGeometry.CustomQualityParamInfo),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1)};function P(C){return(0,p.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureEllipsoidMeshParams),createGeometry:b,createLocationIterator:n.ElementIterator.fromStructure,getLoci:n.getSerialElementLoci,eachLocation:n.eachSerialElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail||S.ignoreHydrogens!==T.ignoreHydrogens}},C)}})(FM)),FM}var hW;function fue(){return hW||(hW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.EllipsoidRepresentationProvider=e.EllipsoidParams=void 0,e.getEllipsoidParams=g,e.EllipsoidRepresentation=a;const t=Ne(),r=Lt(),n=Ke(),i=Yr(),c=due(),o=FT(),s=vZ(),h=bZ(),f=Qf(),y=Tt(),_={"ellipsoid-mesh":(d,p)=>(0,i.UnitsRepresentation)("Ellipsoid Mesh",d,p,c.EllipsoidMeshVisual),"intra-bond":(d,p)=>(0,i.UnitsRepresentation)("Intra-unit bond cylinder",d,p,s.IntraUnitBondCylinderVisual),"inter-bond":(d,p)=>(0,i.ComplexRepresentation)("Inter-unit bond cylinder",d,p,h.InterUnitBondCylinderVisual),"structure-ellipsoid-mesh":(d,p)=>(0,i.ComplexRepresentation)("Structure Ellipsoid Mesh",d,p,c.StructureEllipsoidMeshVisual),"structure-intra-bond":(d,p)=>(0,i.ComplexRepresentation)("Structure intra-unit bond cylinder",d,p,s.StructureIntraUnitBondCylinderVisual)};e.EllipsoidParams={...c.EllipsoidMeshParams,...s.IntraUnitBondCylinderParams,...h.InterUnitBondCylinderParams,includeParent:t.ParamDefinition.Boolean(!1),adjustCylinderLength:t.ParamDefinition.Boolean(!1,{isHidden:!0}),unitKinds:(0,f.getUnitKindsParam)(["atomic"]),sizeFactor:t.ParamDefinition.Numeric(1,{min:.01,max:10,step:.01}),sizeAspectRatio:t.ParamDefinition.Numeric(.1,{min:.01,max:3,step:.01}),linkCap:t.ParamDefinition.Boolean(!0),visuals:t.ParamDefinition.MultiSelect(["ellipsoid-mesh","intra-bond","inter-bond"],t.ParamDefinition.objectToOptions(_)),bumpFrequency:t.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},y.BaseGeometry.ShadingCategory)};function g(d,p){let u=e.EllipsoidParams;return n.Structure.getSize(p)>=n.Structure.Size.Huge?(u=t.ParamDefinition.clone(u),u.visuals.defaultValue=["ellipsoid-mesh","intra-bond"]):p.unitSymmetryGroups.length>500&&(u=t.ParamDefinition.clone(u),u.visuals.defaultValue=["structure-ellipsoid-mesh","structure-intra-bond"]),u}function a(d,p){return r.Representation.createMulti("Ellipsoid",d,p,i.StructureRepresentationStateBuilder,_)}e.EllipsoidRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"ellipsoid",label:"Ellipsoid",description:"Displays anisotropic displacement ellipsoids of atomic elements plus bonds as cylinders.",factory:a,getParams:g,defaultValues:t.ParamDefinition.getDefaultValues(e.EllipsoidParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:d=>d.elementCount>0&&d.models.some(p=>o.AtomSiteAnisotrop.Provider.isApplicable(p)),getData:(d,p)=>p.includeParent?d.asParent():d,mustRecreate:(d,p)=>d.includeParent!==p.includeParent})})(kM)),kM}var LM={},NM={},qM={},dl={},d_={},gW;function mue(){return gW||(gW=1,Object.defineProperty(d_,"__esModule",{value:!0}),d_.gaussianDensity_vert=void 0,d_.gaussianDensity_vert=` 7088precision highp float; 7089 7090attribute vec3 aPosition; 7091attribute float aRadius; 7092 7093varying vec3 vPosition; 7094varying float vRadiusSqInv; 7095 7096#if defined(dCalcType_groupId) 7097 attribute float aGroup; 7098 varying float vGroup; 7099#endif 7100 7101uniform vec3 uBboxSize; 7102uniform vec3 uBboxMin; 7103uniform float uResolution; 7104 7105void main() { 7106 vRadiusSqInv = 1.0 / (aRadius * aRadius); 7107 #if defined(dCalcType_groupId) 7108 vGroup = aGroup; 7109 #endif 7110 gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution); 7111 vPosition = (aPosition - uBboxMin) / uResolution; 7112 gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0); 7113} 7114`),d_}var f_={},yW;function pue(){return yW||(yW=1,Object.defineProperty(f_,"__esMo
7114dule",{value:!0}),f_.gaussianDensity_frag=void 0,f_.gaussianDensity_frag=` 7115precision highp float; 7116 7117varying vec3 vPosition; 7118varying float vRadiusSqInv; 7119#if defined(dCalcType_groupId) 7120 #if defined(dGridTexType_2d) 7121 precision highp sampler2D; 7122 uniform sampler2D tMinDistanceTex; 7123 uniform vec3 uGridTexDim; 7124 #elif defined(dGridTexType_3d) 7125 precision highp sampler3D; 7126 uniform sampler3D tMinDistanceTex; 7127 #endif 7128 varying float vGroup; 7129#endif 7130 7131#include common 7132 7133uniform vec3 uGridDim; 7134uniform vec2 uGridTexScale; 7135uniform float uCurrentSlice; 7136uniform float uCurrentX; 7137uniform float uCurrentY; 7138uniform float uAlpha; 7139uniform float uResolution; 7140uniform float uRadiusFactorInv; 7141 7142void main() { 7143 vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5; 7144 vec3 fragPos = vec3(v.x, v.y, uCurrentSlice); 7145 float dist = distance(fragPos, vPosition) * uResolution; 7146 7147 #if defined(dCalcType_density) 7148 float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv)); 7149 gl_FragColor.a = density * uRadiusFactorInv; 7150 #elif defined(dCalcType_minDistance) 7151 gl_FragColor.a = 1.0 - dist * uRadiusFactorInv; 7152 #elif defined(dCalcType_groupId) 7153 #if defined(dGridTexType_2d) 7154 float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a; 7155 #elif defined(dGridTexType_3d) 7156 float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a; 7157 #endif 7158 if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05) 7159 discard; 7160 gl_FragColor.rgb = packIntToRGB(vGroup); 7161 #endif 7162} 7163`),f_}var vW;function hue(){if(vW)return dl;vW=1,Object.defineProperty(dl,"__esModule",{value:!0}),dl.GaussianDensityGPU=u,dl.GaussianDensityTexture=m,dl.GaussianDensityTexture2d=v,dl.GaussianDensityTexture3d=b;const e=rt(),t=at(),r=Ge(),n=et(),i=Jt(),c=nc(),o=Kt(),s=Zt(),h=Yt(),f=mue(),y=pue(),_=Ct(),g={drawCount:(0,h.ValueSpec)("number"),instanceCount:(0,h.ValueSpec)("number"),aRadius:(0,h.AttributeSpec)("float32",1,0),aPosition:(0,h.AttributeSpec)("float32",3,0),aGroup:(0,h.AttributeSpec)("float32",1,0),uCurrentSlice:(0,h.UniformSpec)("f"),uCurrentX:(0,h.UniformSpec)("f"),uCurrentY:(0,h.UniformSpec)("f"),uBboxMin:(0,h.UniformSpec)("v3","material"),uBboxSize:(0,h.UniformSpec)("v3","material"),uGridDim:(0,h.UniformSpec)("v3","material"),uGridTexDim:(0,h.UniformSpec)("v3","material"),uGridTexScale:(0,h.UniformSpec)("v2","material"),uAlpha:(0,h.UniformSpec)("f","material"),uResolution:(0,h.UniformSpec)("f","material"),uRadiusFactorInv:(0,h.UniformSpec)("f","material"),tMinDistanceTex:(0,h.TextureSpec)("texture","rgba","float","nearest","material"),dGridTexType:(0,h.DefineSpec)("string",["2d","3d"]),dCalcType:(0,h.DefineSpec)("string",["density","minDistance","groupId"])},a="gaussian-density";function d(B){return B.namedFramebuffers[a]||(B.namedFramebuffers[a]=B.resources.framebuffer()),B.namedFramebuffers[a]}function p(B,w,O,F,L,U){const q=`${a}-${B}`;return w.namedTextures[q]||(w.namedTextures[q]=w.resources.texture(O,F,L,U)),w.namedTextures[q]}function u(B,w,O,F,L){const U=p("tmp",L,"image-uint8","rgba","ubyte","linear"),{scale:q,bbox:N,texture:k,gridDim:j,gridTexDim:H,radiusFactor:G,resolution:z,maxRadius:W}=l(L,B,w,O,!1,F,U),{field:X,idField:Y}=I(L,k,j,H);return{field:X,idField:Y,transform:C(q,N),radiusFactor:G,resolution:z,maxRadius:W}}function m(B,w,O,F,L,U){return B.isWebGL2?b(B,w,O,F,L,U):v(B,w,O,F,!1,L,U)}function v(B,w,O,F,L,U,q){_.isTimingMode&&B.timer.mark("GaussianDensityTexture2d");const N=l(B,w,O,F,L,U,q);return _.isTimingMode&&B.timer.markEnd("GaussianDensityTexture2d"),P(N)}function b(B,w,O,F,L,U){_.isTimingMode&&B.timer.mark("GaussianDensityTexture3d");const q=S(B,w,O,F,L,U);return _.isTimingMode&&B.timer.markEnd("GaussianDensityTexture3d"),P(q)}function P({texture:B,scale:w,bbox:O,gridDim:F,gridTexDim:L,gridDataDim:U,gridTexScale:q,radiusFactor:N,resolution:k,maxRadius:j}){return{transform:C(w,O),texture:B,bbox:O,gridDim:F,gridTexDim:L,gridDataDim:U,gridTexScale:q,radiu
7163sFactor:N,resolution:k,maxRadius:j}}function C(B,w){const O=r.Mat4.identity();return r.Mat4.fromScaling(O,B),r.Mat4.setTranslation(O,w.min),O}function l(B,w,O,F,L,U,q){const{gl:N,resources:k,state:j,extensions:{colorBufferFloat:H,textureFloat:G,colorBufferHalfFloat:z,textureHalfFloat:W,blendMinMax:X}}=B,{smoothness:Y,resolution:K}=U,{drawCount:Q,positions:J,radii:ae,groups:te,scale:ne,expandedBox:$,dim:ie,maxRadius:Z}=T(w,O,F,U),[re,oe,ce]=ie,{texDimX:ue,texDimY:pe,texCols:he,powerOfTwoSize:fe}=E(ie),de=r.Vec3.create(ue,pe,0),ge=r.Vec2.create(ue/fe,pe/fe),Ce=Z*2,ve=L?fe:ue,le=L?fe:pe,me=p("min-dist-2d",B,"image-uint8","rgba","ubyte","nearest");me.define(ve,le);const ee=A(B,Q,J,ae,te,me,$,ie,de,ge,Y,K,Ce),{uCurrentSlice:se,uCurrentX:ye,uCurrentY:Se}=ee.values,Ae=d(B);Ae.bind(),M(B),q||(q=z&&W?k.texture("image-float16","rgba","fp16","linear"):H&&G?k.texture("image-float32","rgba","float","linear"):k.texture("image-uint8","rgba","ubyte","linear")),q.define(ve,le);function _e(be,xe){j.currentRenderItemId=-1,be.attachFramebuffer(Ae,0),xe&&(j.viewport(0,0,ve,le),j.scissor(0,0,ve,le),N.clear(N.COLOR_BUFFER_BIT)),n.ValueCell.update(Se,0);let we=0,Be=0,Me=0;for(let Re=0;Re<ce;++Re)we>=he&&(we-=he,Be+=oe,Me=0,n.ValueCell.update(Se,Be)),n.ValueCell.update(ye,Me),n.ValueCell.update(se,Re),j.viewport(Me,Be,re,oe),j.scissor(Me,Be,re,oe),ee.render(),++we,Me+=re;N.flush()}return V(B,ee),_e(q,!0),X&&(D(B,ee),_e(me,!0),R(B,ee),_e(q,!1)),{texture:q,scale:ne,bbox:$,gridDim:ie,gridTexDim:de,gridDataDim:ie,gridTexScale:ge,radiusFactor:Ce,resolution:K,maxRadius:Z}}function S(B,w,O,F,L,U){const{gl:q,resources:N,state:k,extensions:{colorBufferFloat:j,textureFloat:H,colorBufferHalfFloat:G,textureHalfFloat:z}}=B,{smoothness:W,resolution:X}=L,{drawCount:Y,positions:K,radii:Q,groups:J,scale:ae,expandedBox:te,dim:ne,maxRadius:$}=T(w,O,F,L),[ie,Z,re]=ne,oe=p("min-dist-3d",B,"volume-uint8","rgba","ubyte","nearest");oe.define(ie,Z,re);const ce=r.Vec2.create(1,1),ue=$*2,pe=A(B,Y,K,Q,J,oe,te,ne,ne,ce,W,X,ue),{uCurrentSlice:he}=pe.values,fe=d(B);fe.bind(),M(B),k.viewport(0,0,ie,Z),k.scissor(0,0,ie,Z),U||(U=G&&z?N.texture("volume-float16","rgba","fp16","linear"):j&&H?N.texture("volume-float32","rgba","float","linear"):N.texture("volume-uint8","rgba","ubyte","linear")),U.define(ie,Z,re);function de(ge,Ce){k.currentRenderItemId=-1;for(let ve=0;ve<re;++ve)n.ValueCell.update(he,ve),ge.attachFramebuffer(fe,0,ve),Ce&&q.clear(q.COLOR_BUFFER_BIT),pe.render();q.flush()}return V(B,pe),de(U,!0),D(B,pe),de(oe,!0),R(B,pe),de(U,!1),{texture:U,scale:ae,bbox:te,gridDim:ne,gridTexDim:ne,gridDataDim:ne,gridTexScale:ce,radiusFactor:ue,resolution:X,maxRadius:$}}function T(B,w,O,F){const{resolution:L,radiusOffset:U}=F,q=1/L,{indices:N,x:k,y:j,z:H,id:G}=B,z=t.OrderedSet.size(N),W=new Float32Array(z*3),X=new Float32Array(z),Y=new Float32Array(z);let K=0;for(let $=0;$<z;++$){const ie=t.OrderedSet.getAt(N,$);W[$*3]=k[ie],W[$*3+1]=j[ie],W[$*3+2]=H[ie];
7163const Z=O(ie)+U;K<Z&&(K=Z),X[$]=Z,Y[$]=G?G[$]:$}const Q=K*2+L*4,J=e.Box3D.expand((0,e.Box3D)(),w,r.Vec3.create(Q,Q,Q)),ae=e.Box3D.scale((0,e.Box3D)(),J,q),te=e.Box3D.size((0,r.Vec3)(),ae);r.Vec3.ceil(te,te);const ne=r.Vec3.create(L,L,L);return{drawCount:z,positions:W,radii:X,groups:Y,scale:ne,expandedBox:J,dim:te,maxRadius:K}}function A(B,w,O,F,L,U,q,N,k,j,H,G,z){if(B.namedComputeRenderables[a]){const W=r.Vec3.sub((0,r.Vec3)(),q.max,q.min),X=B.namedComputeRenderables[a].values;n.ValueCell.updateIfChanged(X.drawCount,w),n.ValueCell.updateIfChanged(X.instanceCount,1),n.ValueCell.update(X.aRadius,F),n.ValueCell.update(X.aPosition,O),n.ValueCell.update(X.aGroup,L),n.ValueCell.updateIfChanged(X.uCurrentSlice,0),n.ValueCell.updateIfChanged(X.uCurrentX,0),n.ValueCell.updateIfChanged(X.uCurrentY,0),n.ValueCell.update(X.uBboxMin,q.min),n.ValueCell.update(X.uBboxSize,W),n.ValueCell.update(X.uGridDim,N),n.ValueCell.update(X.uGridTexDim,k),n.ValueCell.update(X.uGridTexScale,j),n.ValueCell.updateIfChanged(X.uAlpha,H),n.ValueCell.updateIfChanged(X.uResolution,G),n.ValueCell.updateIfChanged(X.uRadiusFactorInv,1/z),n.ValueCell.update(X.tMinDistanceTex,U),n.ValueCell.updateIfChanged(X.dGridTexType,U.getDepth()>0?"3d":"2d"),n.ValueCell.updateIfChanged(X.dCalcType,"density"),B.namedComputeRenderables[a].update()}else B.namedComputeRenderables[a]=x(B,w,O,F,L,U,q,N,k,j,H,G,z);return B.namedComputeRenderables[a]}function x(B,w,O,F,L,U,q,N,k,j,H,G,z){const W=r.Vec3.sub((0,r.Vec3)(),q.max,q.min),X={drawCount:n.ValueCell.create(w),instanceCount:n.ValueCell.create(1),aRadius:n.ValueCell.create(F),aPosition:n.ValueCell.create(O),aGroup:n.ValueCell.create(L),uCurrentSlice:n.ValueCell.create(0),uCurrentX:n.ValueCell.create(0),uCurrentY:n.ValueCell.create(0),uBboxMin:n.ValueCell.create(q.min),uBboxSize:n.ValueCell.create(W),uGridDim:n.ValueCell.create(N),uGridTexDim:n.ValueCell.create(k),uGridTexScale:n.ValueCell.create(j),uAlpha:n.ValueCell.create(H),uResolution:n.ValueCell.create(G),uRadiusFactorInv:n.ValueCell.create(1/z),tMinDistanceTex:n.ValueCell.create(U),dGridTexType:n.ValueCell.create(U.getDepth()>0?"3d":"2d"),dCalcType:n.ValueCell.create("density")},Y={...g},K=(0,o.ShaderCode)(a,f.gaussianDensity_vert,y.gaussianDensity_frag),Q=(0,s.createComputeRenderItem)(B,"points",K,Y,X);return(0,i.createComputeRenderable)(Q,X)}function M(B){const{gl:w,state:O}=B;O.disable(w.CULL_FACE),O.enable(w.BLEND),O.disable(w.DEPTH_TEST),O.enable(w.SCISSOR_TEST),O.depthMask(!1),O.clearColor(0,0,0,0)}function D(B,w){const{gl:O,state:F}=B;if(n.ValueCell.update(w.values.dCalcType,"minDistance"),w.update(),F.colorMask(!1,!1,!1,!0),F.blendFunc(O.ONE,O.ONE),!B.extensions.blendMinMax)throw new Error("GPU gaussian surface calculation requires EXT_blend_minmax");F.blendEquation(B.extensions.blendMinMax.MAX)}function V(B,w){const{gl:O,state:F}=B;n.ValueCell.update(w.values.dCalcType,"density"),w.update(),F.colorMask(!1,!1,!1,!0),F.blendFunc(O.ONE,O.ONE),F.blendEquation(O.FUNC_ADD)}function R(B,w){const{gl:O,state:F}=B;n.ValueCell.update(w.values.dCalcType,"groupId"),w.update(),F.colorMask(!0,!0,!0,!1),F.blendFunc(O.ONE,O.ZERO),F.blendEquation(O.FUNC_ADD)}function E(B){const w=B[0]*B[1]*B[2],O=Math.sqrt(w),F=Math.pow(2,Math.ceil(Math.log(O)/Math.log(2)));let L=0,U=B[1],q=1,N=B[2];return F<B[0]*B[2]?(N=Math.floor(F/B[0]),q=Math.ceil(B[2]/N),L=N*B[
71630],U*=q):L=B[0]*B[2],{texDimX:L,texDimY:U,texRows:q,texCols:N,powerOfTwoSize:U<F?F:F*2}}function I(B,w,O,F){const[L,U,q]=O,[N,k]=F,j=Math.floor(N/L),H=r.Tensor.Space(O,[2,1,0],Float32Array),G=H.create(),z=r.Tensor.create(H,G),W=H.create(),X=r.Tensor.create(H,W),Y=new Uint8Array(N*k*4),K=d(B);K.bind(),w.attachFramebuffer(K,0),B.readPixels(0,0,N,k,Y);let Q=0,J=0,ae=0;for(let te=0;te<q;++te){J>=j&&(J=0,ae+=U);for(let ne=0;ne<U;++ne)for(let $=0;$<L;++$){const ie=4*(J*L+(ne+ae)*N+$);G[Q]=Y[ie+3]/255,W[Q]=(0,c.unpackRGBToInt)(Y[ie],Y[ie+1],Y[ie+2]),Q++}J++}return{field:z,idField:X}}return dl}var iT={},bW;function gue(){if(bW)return iT;bW=1,Object.defineProperty(iT,"__esModule",{value:!0}),iT.GaussianDensityCPU=s;const e=UD(),t=nn(),r=QQ(),n=os(),i=wt(),c=Tf(),o=Xr();async function s(h,f,y,_,g){const{resolution:a,radiusOffset:d,smoothness:p}=g,u=1/a,{indices:m,x:v,y:b,z:P,id:C}=f,l=t.OrderedSet.size(m),S=new Float32Array(l);let T=0;for(let Q=0;Q<l;++Q){const J=_(t.OrderedSet.getAt(m,Q))+d;T<J&&(T=J),S[Q]=J}const A=T*2+a,x=n.Box3D.expand((0,n.Box3D)(),y,i.Vec3.create(A,A,A)),M=x.min,D=n.Box3D.scale((0,n.Box3D)(),x,u),V=n.Box3D.size((0,i.Vec3)(),D);i.Vec3.ceil(V,V);const R=c.Tensor.Space(V,[0,1,2],Float32Array),E=R.create(),I=c.Tensor.create(R,E),B=R.create();B.fill(-1);const w=c.Tensor.create(R,B),[O,F,L]=V,U=L,q=F,N=U*q,k=(0,e.fillGridDim)(V[0],M[0],a),j=(0,e.fillGridDim)(V[1],M[1],a),H=(0,e.fillGridDim)(V[2],M[2],a),G=R.create(),z=p,W=Math.ceil(1e5/(Math.pow(Math.pow(T,3),3)*u));function X(Q,J){for(let ae=Q;ae<J;++ae){const te=t.OrderedSet.getAt(m,ae),ne=v[te],$=b[te],ie=P[te],Z=S[ae],oe=1/(Z*Z),ce=Z*2,ue=ce*ce,pe=Math.ceil(ce*u),he=Math.floor(u*(ne-M[0])),fe=Math.floor(u*($-M[1])),de=Math.floor(u*(ie-M[2])),ge=Math.max(0,he-pe),Ce=Math.max(0,fe-pe),ve=Math.max(0,de-pe),le=Math.min(O,he+pe+2),me=Math.min(F,fe+pe+2),ee=Math.min(L,de+pe+2);for(let se=ge;se<le;++se){const ye=k[se]-ne,Se=se*N;for(let Ae=Ce;Ae<me;++Ae){const _e=j[Ae]-$,be=ye*ye+_e*_e,xe=Ae*U+Se;for(let we=ve;we<ee;++we){const Be=H[we]-ie,Me=be+Be*Be;if(Me<=ue){const Re=(0,r.fasterExp)(-z*(Me*oe)),Te=we+xe;E[Te]+=Re,Re>G[Te]&&(G[Te]=Re,B[Te]=C?C[ae]:ae)}}}}}}async function Y(){for(let Q=0;Q<l;Q+=W)X(Q,Math.min(Q+W,l)),h.shouldUpdate&&await h.update({message:"filling density grid",current:Q,max:l})}await Y();const K=o.Mat4.identity();return o.Mat4.fromScaling(K,i.Vec3.create(a,a,a)),o.Mat4.setTranslation(K,x.min),{field:I,idField:w,transform:K,radiusFactor:1,resolution:a,maxRadius:T}}return iT}var _W;function Qw(){return _W||(_W=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultGaussianDensityProps=e.GaussianDensityParams=void 0,e.getTextureMaxCells=s,e.computeUnitGaussianDensity=h,e.computeUnitGaussianDensityTexture=f,e.computeUnitGaussianDensityTexture2d=y,e.computeStructureGaussianDensity=_,e.computeStructureGaussianDensityTexture=g,e.computeStructureGaussianDensityTexture2d=a;const t=nt(),r=Ne(),n=hue(),i=Er(),c=Tt(),o=gue();e.GaussianDensityParams={resolution:r.ParamDefinition.Numeric(1,{min:.1,max:20,step:.1},{description:"Grid resolution/cell spacing.",...c.BaseGeometry.CustomQualityParamInfo}),radiusOffset:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},{description:"Extra/offset radius added to the atoms/coarse elements for gaussian calculation. Useful to create coarse, low resolution surfaces."}),smoothness:r.ParamDefinition.Numeric(1.5,{min:1,max:3,step:.1},{description:"Smoothness of the gausian surface, lower is smoother."}),floodfill:r.ParamDefinition.Select("off",r.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the gaussian surface. Note that this disables GPU support."}),...i.CommonSurfaceParams},e.DefaultGaussianDensityProps=r.ParamDefinition.getDefaultValues(e.GaussianDensityParams);function s(d,p){const u=d.maxTextureSize/3;return u*u/Math.max(1,p?p.units.length/16:1)}function h(d,p,u,m){const{position:v,boundary:b,radius:P}=(0,i.getUnitConformationAndRadius)(d,p,u,m),C=(0,i.ensureReasonableResolution)(b.box,m);return t.Task.create("Gaussian Density",async l=>await(0,o.GaussianDensityCPU)(l,v,b.box,P,C))}function f(d,p,u,m,v,b){const{position:P,boundary:C,radius:l}=(0,i.getUnitConformationAndRadius)(d,p,u,m),S=(0,i.ensureReasonableResolution)(C.box,m,s(v,d));return(0,n.GaussianDensityTexture)(v,P,C.box,l,S,b)}
7163function y(d,p,u,m,v,b,P){const{position:C,boundary:l,radius:S}=(0,i.getUnitConformationAndRadius)(d,p,u,v),T=(0,i.ensureReasonableResolution)(l.box,v,s(b,d));return(0,n.GaussianDensityTexture2d)(b,C,l.box,S,m,T,P)}function _(d,p,u){const{position:m,boundary:v,radius:b}=(0,i.getStructureConformationAndRadius)(d,p,u),P=(0,i.ensureReasonableResolution)(v.box,u);return t.Task.create("Gaussian Density",async C=>await(0,o.GaussianDensityCPU)(C,m,v.box,b,P))}function g(d,p,u,m,v){const{position:b,boundary:P,radius:C}=(0,i.getStructureConformationAndRadius)(d,p,u),l=(0,i.ensureReasonableResolution)(P.box,u);return(0,n.GaussianDensityTexture)(m,b,P.box,C,l,v)}function a(d,p,u,m,v,b){const{box:P}=d.lookup3d.boundary,{position:C,boundary:l,radius:S}=(0,i.getStructureConformationAndRadius)(d,p,m),T=(0,i.ensureReasonableResolution)(l.box,m);return(0,n.GaussianDensityTexture2d)(v,C,P,S,u,T,b)}})(qM)),qM}var m_={},UM={},SW;function Zw(){return SW||(SW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AllowedContours=e.TriTable=e.EdgeTable=e.EdgeIdInfo=e.CubeEdges=e.CubeVertices=e.EdgesYZ=e.EdgesXZ=e.EdgesXY=void 0,e.Index=t,e.IndexPair=r;function t(n,i,c){return{i:n,j:i,k:c}}function r(n,i){return{a:n,b:i}}e.EdgesXY=[[],[0,3],[0,1],[1,3],[1,2],[0,1,1,2,2,3,0,3],[0,2],[2,3],[2,3],[0,2],[0,1,1,2,2,3,0,3],[1,2],[1,3],[0,1],[0,3],[]],e.EdgesXZ=[[],[0,8],[0,9],[9,8],[9,4],[0,9,9,4,4,8,0,8],[0,4],[4,8],[4,8],[0,4],[0,9,9,4,4,8,0,8],[9,4],[9,8],[0,9],[0,8],[]],e.EdgesYZ=[[],[3,8],[3,11],[11,8],[11,7],[3,11,11,7,7,8,3,8],[3,7],[7,8],[7,8],[3,7],[3,11,11,7,7,8,3,8],[11,7],[11,8],[3,11],[3,8],[]],e.CubeVertices=[t(0,0,0),t(1,0,0),t(1,1,0),t(0,1,0),t(0,0,1),t(1,0,1),t(1,1,1),t(0,1,1)],e.CubeEdges=[r(e.CubeVertices[0],e.CubeVertices[1]),r(e.CubeVertices[1],e.CubeVertices[2]),r(e.CubeVertices[2],e.CubeVertices[3]),r(e.CubeVertices[3],e.CubeVertices[0]),r(e.CubeVertices[4],e.CubeVertices[5]),r(e.CubeVertices[5],e.CubeVertices[6]),r(e.CubeVertices[6],e.CubeVertices[7]),r(e.CubeVertices[7],e.CubeVertices[4]),r(e.CubeVertices[0],e.CubeVertices[4]),r(e.CubeVertices[1],e.CubeVertices[5]),r(e.CubeVertices[2],e.CubeVertices[6]),r(e.CubeVertices[3],e.CubeVertices[7])],e.EdgeIdInfo=[{i:0,j:0,k:0,e:0},{i:1,j:0,k:0,e:1},{i:0,j:1,k:0,e:0},{i:0,j:0,k:0,e:1},{i:0,j:0,k:1,e:0},{i:1,j:0,k:1,e:1},{i:0,j:1,k:1,e:0},{i:0,j:0,k:1,e:1},{i:0,j:0,k:0,e:2},{i:1,j:0,k:0,e:2},{i:1,j:1,k:0,e:2},{i:0,j:1,k:0,e:2}],e.EdgeTable=[0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0],e.TriTable=[[],[0,8,3],[0,1,9],[1,8,3,9,8,1],[1,2,10],[0,8,3,1,2,10],[9,2,10,0,2,9],[2,8,3,2,10,8,10,9,8],[3,11,2],[0,11,2,8,11,0],[1,9,0,2,3,11],[1,11,2,1,9,11,9,8,11],[3,10,1,11,10,3],[0,10,1,0,8,10,8,11,10],[3,9,0,3,11,9,11,10,9],[9,8,10,10,8,11],[4,7,8],[4,3,0,7,3,4],[0,1,9,8,4,7],[4,1,9,4,7,1,7,3,1],[1,2,10,8,4,7],[3,4,7,3,0,4,1,2,10],[9,2,10,9,0,2,8,4,7],[2,10,9,2,9,7,2,7,3,7,9,4],[8,4,7,3,11,2],[11,4,7,11,2,4,2,0,4],[9,0,1,8,4,7,2,3,11],[4,7,11,9,4,11,9,11,2,9,2,1],[3,10,1,3,11,10,7,8,4],[1,11,10,1,4,11,1,0,4,7,11,4],[4,7,8,9,0,11,9,11,10,11,0,3],[4,7,11,4,11,9,9,11,10],[9,5,4],[9,5,4,0,8,3],[0,5,4,1,5,0],[8,5,4,8,3,5,3,1,5],[1,2,10,9,5,4],[3,0,8,1,2,10,4,9,5],[5,2,10,5,4,2,4,0,2],[2,10,5,3,2,5,3,5,4,3,4,8],[9,5,4,2,3,11],[0,11,2,0,8,11,4,9,5],[0,5,4,0,1,5,2,3,11],[2,1,5,2,5,8,2,8,11,4,8,5],[10,3,11,10,1,3,9,5,4],[4,9,5,0,8,1,8,10,1,8,11,10],[5,4,0,5,0,11,5,11,10,11,0,3],[5,4,8,5,8,10,10,8,11],[9,7,8,5,7,9],[9,3,0,9,5,3,5,7,3],[0,7,8,0,1,7,1,5,7],[1,5,3,3,5,7],[9,7,8,9,5,7,10,1,2],[10,1,2,9,5,0,5,3,0,5,7,3],[8,0,2,8,2,5,8,5,7,10,5,2],[2,10,5,2,5,3,3,5,7],[7,9,5,7,8,9,3,11,2],[9,5,7,9,7,2,9,2,0,2,7,11],[2,3,11,0,1,8,1,7,8,1,5,7],[11,2,1,11,1,7,7,1,5],[9,5,8,8,5,7,10,1,3,10,3,11],[5,7,0,5,0,9,7,11,0,1,0,10,11,10,0],[11,10,0,11,0,3,10,5,0,8,0,7,5,7,0],[11,10,5,7,11,5],[10,6,5],[0,8,3,5,10,6],[9,0,1,5,10,
71636],[1,8,3,1,9,8,5,10,6],[1,6,5,2,6,1],[1,6,5,1,2,6,3,0,8],[9,6,5,9,0,6,0,2,6],[5,9,8,5,8,2,5,2,6,3,2,8],[2,3,11,10,6,5],[11,0,8,11,2,0,10,6,5],[0,1,9,2,3,11,5,10,6],[5,10,6,1,9,2,9,11,2,9,8,11],[6,3,11,6,5,3,5,1,3],[0,8,11,0,11,5,0,5,1,5,11,6],[3,11,6,0,3,6,0,6,5,0,5,9],[6,5,9,6,9,11,11,9,8],[5,10,6,4,7,8],[4,3,0,4,7,3,6,5,10],[1,9,0,5,10,6,8,4,7],[10,6,5,1,9,7,1,7,3,7,9,4],[6,1,2,6,5,1,4,7,8],[1,2,5,5,2,6,3,0,4,3,4,7],[8,4,7,9,0,5,0,6,5,0,2,6],[7,3,9,7,9,4,3,2,9,5,9,6,2,6,9],[3,11,2,7,8,4,10,6,5],[5,10,6,4,7,2,4,2,0,2,7,11],[0,1,9,4,7,8,2,3,11,5,10,6],[9,2,1,9,11,2,9,4,11,7,11,4,5,10,6],[8,4,7,3,11,5,3,5,1,5,11,6],[5,1,11,5,11,6,1,0,11,7,11,4,0,4,11],[0,5,9,0,6,5,0,3,6,11,6,3,8,4,7],[6,5,9,6,9,11,4,7,9,7,11,9],[10,4,9,6,4,10],[4,10,6,4,9,10,0,8,3],[10,0,1,10,6,0,6,4,0],[8,3,1,8,1,6,8,6,4,6,1,10],[1,4,9,1,2,4,2,6,4],[3,0,8,1,2,9,2,4,9,2,6,4],[0,2,4,4,2,6],[8,3,2,8,2,4,4,2,6],[10,4,9,10,6,4,11,2,3],[0,8,2,2,8,11,4,9,10,4,10,6],[3,11,2,0,1,6,0,6,4,6,1,10],[6,4,1,6,1,10,4,8,1,2,1,11,8,11,1],[9,6,4,9,3,6,9,1,3,11,6,3],[8,11,1,8,1,0,11,6,1,9,1,4,6,4,1],[3,11,6,3,6,0,0,6,4],[6,4,8,11,6,8],[7,10,6,7,8,10,8,9,10],[0,7,3,0,10,7,0,9,10,6,7,10],[10,6,7,1,10,7,1,7,8,1,8,0],[10,6,7,10,7,1,1,7,3],[1,2,6,1,6,8,1,8,9,8,6,7],[2,6,9,2,9,1,6,7,9,0,9,3,7,3,9],[7,8,0,7,0,6,6,0,2],[7,3,2,6,7,2],[2,3,11,10,6,8,10,8,9,8,6,7],[2,0,7,2,7,11,0,9,7,6,7,10,9,10,7],[1,8,0,1,7,8,1,10,7,6,7,10,2,3,11],[11,2,1,11,1,7,10,6,1,6,7,1],[8,9,6,8,6,7,9,1,6,11,6,3,1,3,6],[0,9,1,11,6,7],[7,8,0,7,0,6,3,11,0,11,6,0],[7,11,6],[7,6,11],[3,0,8,11,7,6],[0,1,9,11,7,6],[8,1,9,8,3,1,11,7,6],[10,1,2,6,11,7],[1,2,10,3,0,8,6,11,7],[2,9,0,2,10,9,6,11,7],[6,11,7,2,10,3,10,8,3,10,9,8],[7,2,3,6,2,7],[7,0,8,7,6,0,6,2,0],[2,7,6,2,3,7,0,1,9],[1,6,2,1,8,6,1,9,8,8,7,6],[10,7,6,10,1,7,1,3,7],[10,7,6,1,7,10,1,8,7,1,0,8],[0,3,7,0,7,10,0,10,9,6,10,7],[7,6,10,7,10,8,8,10,9],[6,8,4,11,8,6],[3,6,11,3,0,6,0,4,6],[8,6,11,8,4,6,9,0,1],[9,4,6,9,6,3,9,3,1,11,3,6],[6,8,4,6,11,8,2,10,1],[1,2,10,3,0,11,0,6,11,0,4,6],[4,11,8,4,6,11,0,2,9,2,10,9],[10,9,3,10,3,2,9,4,3,11,3,6,4,6,3],[8,2,3,8,4,2,4,6,2],[0,4,2,4,6,2],[1,9,0,2,3,4,2,4,6,4,3,8],[1,9,4,1,4,2,2,4,6],[8,1,3,8,6,1,8,4,6,6,10,1],[10,1,0,10,0,6,6,0,4],[4,6,3,4,3,8,6,10,3,0,3,9,10,9,3],[10,9,4,6,10,4],[4,9,5,7,6,11],[0,8,3,4,9,5,11,7,6],[5,0,1,5,4,0,7,6,11],[11,7,6,8,3,4,3,5,4,3,1,5],[9,5,4,10,1,2,7,6,11],[6,11,7,1,2,10,0,8,3,4,9,5],[7,6,11,5,4,10,4,2,10,4,0,2],[3,4,8,3,5,4,3,2,5,10,5,2,11,7,6],[7,2,3,7,6,2,5,4,9],[9,5,4,0,8,6,0,6,2,6,8,7],[3,6,2,3,7,6,1,5,0,5,4,0],[6,2,8,6,8,7,2,1,8,4,8,5,1,5,8],[9,5,4,10,1,6,1,7,6,1,3,7],[1,6,10,1,7,6,1,0,7,8,7,0,9,5,4],[4,0,10,4,10,5,0,3,10,6,10,7,3,7,10],[7,6,10,7,10,8,5,4,10,4,8,10],[6,9,5,6,11,9,11,8,9],[3,6,11,0,6,3,0,5,6,0,9,5],[0,11,8,0,5,11,0,1,5,5,6,11],[6,11,3,6,3,5,5,3,1],[1,2,10,9,5,11,9,11,8,11,5,6],[0,11,3,0,6,11,0,9,6,5,6,9,1,2,10],[11,8,5,11,5,6,8,0,5,10,5,2,0,2,5],[6,11,3,6,3,5,2,10,3,10,5,3],[5,8,9,5,2,8,5,6,2,3,8,2],[9,5,6,9,6,0,0,6,2],[1,5,8,1,8,0,5,6,8,3,8,2,6,2,8],[1,5,6,2,1,6],[1,3,6,1,6,10,3,8,6,5,6,9,8,9,6],[10,1,0,10,0,6,9,5,0,5,6,0],[0,3,8,5,6,10],[10,5,6],[11,5,10,7,5,11],[11,5,10,11,7,5,8,3,0],[5,11,7,5,10,11,1,9,0],[10,7,5,10,11,7,9,8,1,8,3,1],[11,1,2,11,7,1,7,5,1],[0,8,3,1,2,7,1,7,5,7,2,11],[9,7,5,9,2,7,9,0,2,2,11,7],[7,5,2,7,2,11,5,9,2,3,2,8,9,8,2],[2,5,10,2,3,5,3,7,5],[8,2,0,8,5,2,8,7,5,10,2,5],[9,0,1,5,10,3,5,3,7,3,10,2],[9,8,2,9,2,1,8,7,2,10,2,5,7,5,2],[1,3,5,3,7,5],[0,8,7,0,7,1,1,7,5],[9,0,3,9,3,5,5,3,7],[9,8,7,5,9,7],[5,8,4,5,10,8,10,11,8],[5,0,4,5,11,0,5,10,11,11,3,0],[0,1,9,8,4,10,8,10,11,10,4,5],[10,11,4,10,4,5,11,3,4,9,4,1,3,1,4],[2,5,1,2,8,5,2,11,8,4,5,8],[0,4,11,0,11,3,4,5,11,2,11,1,5,1,11],[0,2,5,0,5,9,2,11,5,4,5,8,11,8,5],[9,4,5,2,11,3],[2,5,10,3,5,2,3,4,5,3,8,4],[5,10,2,5,2,4,4,2,0],[3,10,2,3,5,10,3,8,5,4,5,8,0,1,9],[5,10,2,5,2,4,1,9,2,9,4,2],[8,4,5,8,5,3,3,5,1],[0,4,5,1,0,5],[8,4,5,8,5,3,9,0,5,0,3,5],[9,4,5],[4,11,7,4,9,11,9,10,11],[0,8,3,4,9,7,9,11,7,9,10,11],[1,10,11,1,11,4,1,4,0,7,4,11],[3,1,4,3,4,8,1,10,4,7,4,11,10,11,4],[4,11,7,9,11,4,9,2,11,9,1,2],[9,7,4,9,11,7,9,1,11,2,11,1,0,8,3],[11,7,4,11,4,2,2,4,0],[11,7,4,11,4,2,8,3,4,3,2,4],[2,9,10,2,7,9,2,3,7,7,4,9],[9,10,7,9,7,4,10,2,7,8,7,0,2,0,7],[3,7,10,3,10,2,7,4,10,1,10,0,4,0,10],[1,10,2,8,7,4],[4,9,1,4,1,7,7,1,3],[4,9,1,4,1,7,0,8,1,8,7,1],[4,0,3,7,4,3],[4,8,7],[9,10,8,10,11,8],[3,0,9,3,9,11,11,9,10],[0,1,10,0,10,8,8,10,11],[3,1,10,11,3,10],[1,2,11,1,11,9,9,11,8],[3,0,9,3,9,11,1,2,9,2,11,9],[0,2,11,8,0,11],[3,2,11],[2,3,8,2,8,10,10,8,9],[9,10,2,0,9,2],[2,3,8,2,8,10,0,1,8,1,10,8],[1,10,2],[1,3,8,9,1,8],[0,9,1],[0,3,8],[]],e.AllowedContours=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]]})(UM)),UM}var p_={},CW;function yue(){if(CW)return p_;
7163CW=1,Object.defineProperty(p_,"__esModule",{value:!0}),p_.MarchingCubesMeshBuilder=c,p_.MarchingCubesLinesBuilder=o;const e=_t(),t=et(),r=Rt(),n=Zw(),i=ac();function c(s,h){const f=Math.min(65536,s*4),y=e.ChunkedArray.create(Float32Array,3,s,h&&h.vertexBuffer.ref.value),_=e.ChunkedArray.create(Float32Array,3,s,h&&h.normalBuffer.ref.value),g=e.ChunkedArray.create(Float32Array,1,s,h&&h.groupBuffer.ref.value),a=e.ChunkedArray.create(Uint32Array,3,f,h&&h.indexBuffer.ref.value);let d=0,p=0;return{addVertex:(u,m,v)=>(++d,e.ChunkedArray.add3(y,u,m,v)),addNormal:(u,m,v)=>{e.ChunkedArray.add3(_,u,m,v)},addGroup:u=>{e.ChunkedArray.add(g,u)},addTriangle:(u,m,v,b)=>{const P=u[m],C=u[v],l=u[b];P>=0&&C>=0&&l>=0&&(++p,e.ChunkedArray.add3(a,P,C,l))},get:()=>{const u=e.ChunkedArray.compact(y,!0),m=e.ChunkedArray.compact(_,!0),v=e.ChunkedArray.compact(a,!0),b=e.ChunkedArray.compact(g,!0);return r.Mesh.create(u,v,m,b,d,p,h)}}}function o(s,h){const f=e.ChunkedArray.create(Float32Array,3,s),y=e.ChunkedArray.create(Float32Array,1,s),_=e.ChunkedArray.create(Float32Array,2,s);let g=0;return{addVertex:(a,d,p)=>e.ChunkedArray.add3(f,a,d,p),addNormal:()=>t.noop,addGroup:a=>{e.ChunkedArray.add(y,a)},addTriangle:(a,d,p,u,m)=>{const v=a[d],b=a[p],P=a[u];v>=0&&b>=0&&P>=0&&(n.AllowedContours[d][p]&m&&(++g,e.ChunkedArray.add2(_,a[d],a[p])),n.AllowedContours[p][u]&m&&(++g,e.ChunkedArray.add2(_,a[p],a[u])),n.AllowedContours[d][u]&m&&(++g,e.ChunkedArray.add2(_,a[d],a[u])))},get:()=>{const a=e.ChunkedArray.compact(f,!0),d=e.ChunkedArray.compact(_,!0),p=e.ChunkedArray.compact(y,!0),u=i.LinesBuilder.create(g,g/10,h);for(let m=0;m<g;++m){const v=d[m*2],b=d[m*2+1];u.add(a[v*3],a[v*3+1],a[v*3+2],a[b*3],a[b*3+1],a[b*3+2],p[v])}return u.getLines()}}}return p_}var PW;function em(){if(PW)return m_;PW=1,Object.defineProperty(m_,"__esModule",{value:!0}),m_.computeMarchingCubesMesh=o,m_.computeMarchingCubesLines=s;const e=nt(),t=Zw(),r=et(),n=yue();function i(y){return{...y,bottomLeft:(0,r.defaults)(y.bottomLeft,[0,0,0]),topRight:(0,r.defaults)(y.topRight,y.scalarField.space.dimensions)}}function c(y){return{dX:y.topRight[0]-y.bottomLeft[0],dY:y.topRight[1]-y.bottomLeft[1],dZ:y.topRight[2]-y.bottomLeft[2]}}function o(y,_){return e.Task.create("Marching Cubes Mesh",async g=>{const a=i(y),{dX:d,dY:p,dZ:u}=c(a),m=Math.min(262144,Math.max(d*p*u/32,1024)),v=(0,n.MarchingCubesMeshBuilder)(m,_);return await new h(g,v,a).run(),v.get()})}function s(y,_){return e.Task.create("Marching Cubes Lines",async g=>{const a=i(y),{dX:d,dY:p,dZ:u}=c(a),m=Math.min(262144,Math.max(d*p*u/32,1024)),v=(0,n.MarchingCubesLinesBuilder)(m,_);return await new h(g,v,a).run(),v.get()})}class h{async doSlices(){let _=0;this.edgeFilter=15;for(let g=this.minZ;g<this.maxZ;g++,this.edgeFilter&=-5)this.slice(g),_+=this.sliceSize,this.ctx.shouldUpdate&&await this.ctx.update({message:"Computing surface...",current:_,max:this.size})}slice(_){this.edgeFilter|=2;for(let g=this.minY;g<this.maxY;g++,this.edgeFilter&=-3){this.edgeFilter|=1;for(let a=this.minX;a<this.maxX;a++,this.edgeFilter&=-2)this.state.processCell(a,g,_,this.edgeFilter)}this.state.clearEdgeVertexIndexSlice(_)}async run(){await this.doSlices()}constructor(_,g,a){this.ctx=_,this.minX=0,this.minY=0,this.minZ=0,this.maxX=0,this.maxY=0,this.maxZ=0,this.state=new f(g,a),this.minX=a.bottomLeft[0],this.minY=a.bottomLeft[1],this.minZ=a.bottomLeft[2],this.maxX=a.topRight[0]-1,this.maxY=a.topRight[1]-1,this.maxZ=a.topRight[2]-1,this.size=(this.maxX-this.minX)*(this.maxY-this.minY)*(this.maxZ-this.minZ),this.sliceSize=(this.maxX-this.minX)*(this.maxY-this.minY)}}class f{get3dOffsetFromEdgeInfo(_){return this.nX*((this.k+_.k)%2*this.nY+this.j+_.j)+this.i+_.i}clearEdgeVertexIndexSlice(_){const g=_%2===0?0:3*this.nX*this.nY,a=_%2===0?3*this.nX*this.nY:this.verticesOnEdges.length;this.verticesOnEdges.fill(0,g,a)}interpolate(_){const g=t.EdgeIdInfo[_],a=3*this.get3dOffsetFromEdgeInfo(g)+g.e,d=this.verticesOnEdges[a];if(d>0)return d-1;const p=this.scalarField,u=this.scalarFieldGet,m=t.CubeEdges[_],v=m.a,b=m.b,P=v.i+this.i,C=v.j+this.j,l=v.k+this.k,S=b.i+this.i,T=b.j+this.j,A=b.k+this.k,x=u(p,P,C,l),M=u(p,S,T,A),D=(this.isoLevel-x)/(x-M);if(this.idField){const q=this.idFieldGet(this.idField,P,C,l),N=this.idFieldGet(this.idField,S,T,A);let k=D<.5?q:N;if(k===-1&&(k=D<.5?N:q),k===-2)return-1;this.builder.addGroup(k)}else this.builder.addGroup(0);const V=this.builder.addVertex(P+D*(P-S),C+D*(C-T),l+D*(l-A));this.verticesOnEdges[a]=V+1;const R=u(p,Math.max(0,P-1),C,l)-u(p,Math.min(this.nX-1,P+1),C,l),E=u(p,P,Math.max(0,C-1),l)-u(p,P,Math.min(this.nY-1,C+1),l),I=u(p,P,C,Math.max(0,l-1))-u(p,P,C,Math.min(this.nZ-1,l+1)),B=u(p,Math.max(0,S-1),T,A)-u(p,Math.min(this.nX-1,S+1),T,A),w=u(p,S,Math.max(0,T-1),A)-u(p,S,Math.min(this.nY-1,T+1),A),O=u(p,S,T,Math.max(0,A-1))-u(p,S,T,Math.min(this.nZ-1,A+1)),F=R+D*(R-B),L=E+D*(E-w),U=I+D*(I-O);return this.isoLevel>=0?this.builder.addNormal(F,L,U):this.builder.addNormal(-F,-L,-U),V}constructor(_,g){this.builder=_,this.vertList=[0,0,0,0,0,0,0,0,0,0,0,0],this.i=0,this.j=0,this.k=0;const a=g.scalarField.space.dimensions;this.nX=a[0],this.nY=a[1],this.nZ=a[2],this.isoLevel=g.isoLevel,this.scalarFieldGet=g.scalarField.space.get,this.scalarField=g.scalarField.data,g.idField&&(this.idField=g.idField.data,this.idFieldGet=g.idField.space.get),this.verticesOnEdges=new Int32Array(3*this.nX*this.nY*2)}get(_,g,a){return this.scalarFieldGet(this.scalarField,_,g,a)}processCell(_,g,a,d){let p=0;if(this.get(_,g,a)<this.isoLevel&&(p|=1),this.get(_+1,g,a)<this.isoLevel&&(p|=2),this.get(_+1,g+1,a)<this.isoLevel&&(p|=4),this.get(_,g+1,a)<this.isoLevel&&(p|=8),this.get(_,g,a+1)<this.isoLevel&&(p|=16),this.get(_+1,g,a+1)<this.isoLevel&&(p|=32),this.get(_+1,g+1,a+1)<this.isoLevel&&(p|=64),this.get(_,g+1,a+1)<this.isoLevel&&(p|=128),p===0||p===255)return;this.i=_,this.j=g,this.k=a;const u=t.EdgeTable[p];(u&1)>0&&(this.vertList[0]=this.interpolate(0)),(u&2)>0&&(this.vertList[1]=this.interpolate(1)),(u&4)>0&&(this.vertList[2]=this.interpolate(2)),(u&8)>0&&(this.vertList[3]=this.interpolate(3)),(u&16)>0&&(this.vertList[4]=this.interpolate(4)),(u&32)>0&&(this.vertList[5]=this.interpolate(5)),(u&64)>0&&(this.vertList[6]=this.interpolate(6)),(u&128)>0&&(this.vertList[7]=this.interpolate(7)),(u&256)>0&&(this.vertList[8]=this.interpolate(8)),(u&512)>0&&(this.vertList[9]=this.interpolate(9)),(u&1024)>
71630&&(this.vertList[10]=this.interpolate(10)),(u&2048)>0&&(this.vertList[11]=this.interpolate(11));const m=t.TriTable[p];for(let v=0;v<m.length;v+=3){const b=m[v],P=m[v+1],C=m[v+2];this.isoLevel>=0?this.builder.addTriangle(this.vertList,b,P,C,d):this.builder.addTriangle(this.vertList,C,P,b,d)}}}return m_}var h_={},aT={},oT={},g_={},TW;function vue(){return TW||(TW=1,Object.defineProperty(g_,"__esModule",{value:!0}),g_.sum_frag=void 0,g_.sum_frag=` 7164precision highp float; 7165precision highp int; 7166 7167#if __VERSION__ == 100 7168 precision highp sampler2D; 7169 uniform sampler2D tTexture; 7170#else 7171 precision highp isampler2D; 7172 uniform isampler2D tTexture; 7173#endif 7174 7175void main(void) { 7176 #if __VERSION__ == 100 7177 gl_FragColor = texture2D(tTexture, vec2(0.5)); 7178 #else 7179 gl_FragColor = ivec4(texture2D(tTexture, vec2(0.5)).r); 7180 #endif 7181} 7182`),g_}var xW;function bue(){if(xW)return oT;xW=1,Object.defineProperty(oT,"__esModule",{value:!0}),oT.getHistopyramidSum=v;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=nc(),o=Mr(),s=Gr(),h=vue(),f=on(),y=Ct(),_={...o.QuadSchema,tTexture:(0,r.TextureSpec)("texture","rgba","float","nearest")},g="histopyramid-sum";function a(b,P){if(b.namedComputeRenderables[g]){const C=b.namedComputeRenderables[g].values;i.ValueCell.update(C.tTexture,P),b.namedComputeRenderables[g].update()}else b.namedComputeRenderables[g]=d(b,P);return b.namedComputeRenderables[g]}function d(b,P){const C={...o.QuadValues,tTexture:i.ValueCell.create(P)},l={..._},S=(0,n.ShaderCode)("sum",s.quad_vert,h.sum_frag,{},{0:"ivec4"}),T=(0,t.createComputeRenderItem)(b,"triangles",S,l,C);return(0,e.createComputeRenderable)(T,C)}function p(b){const{gl:P,state:C}=b;C.disable(P.CULL_FACE),C.disable(P.BLEND),C.disable(P.DEPTH_TEST),C.disable(P.SCISSOR_TEST),C.depthMask(!1),C.colorMask(!0,!0,!0,!0),C.clearColor(0,0,0,0)}const u=new Uint8Array(4),m=new Int32Array(4);function v(b,P){y.isTimingMode&&b.timer.mark("getHistopyramidSum");const{gl:C,state:l,resources:S}=b,T=a(b,P);b.state.currentRenderItemId=-1,b.namedFramebuffers[g]||(b.namedFramebuffers[g]=S.framebuffer());const A=b.namedFramebuffers[g];return b.namedTextures[g]||(b.namedTextures[g]=(0,f.isWebGL2)(C)?S.texture("image-int32","rgba","int","nearest"):S.texture("image-uint8","rgba","ubyte","nearest"),b.namedTextures[g].define(1,1)),b.namedTextures[g].attachFramebuffer(A,0),p(b),l.viewport(0,0,1,1),T.render(),C.finish(),b.readPixels(0,0,1,1,(0,f.isWebGL2)(C)?m:u),C.bindFramebuffer(C.FRAMEBUFFER,null),y.isTimingMode&&b.timer.markEnd("getHistopyramidSum"),(0,f.isWebGL2)(C)?m[0]:(0,c.unpackRGBToInt)(u[0],u[1],u[2])}return oT}var y_={},AW;function _ue(){return AW||(AW=1,Object.defineProperty(y_,"__esModule",{value:!0}),y_.reduction_frag=void 0,y_.reduction_frag=` 7183precision highp float; 7184precision highp int; 7185precision highp sampler2D; 7186 7187uniform sampler2D tInputLevel; 7188 7189// previous level used to evaluate the new level 7190#if __VERSION__ == 100 7191 uniform sampler2D tPreviousLevel; 7192#else 7193 precision highp isampler2D; 7194 uniform isampler2D tPreviousLevel; 7195#endif 7196 7197// inverted size of the previous level texture. 7198uniform float uSize; 7199uniform float uTexSize; 7200uniform bool uFirst; 7201 7202#include common 7203 7204void main(void) { 7205 float k = 0.5 * uSize; 7206 vec2 position = floor((gl_FragCoord.xy / uTexSize) / uSize) * uSize; 7207 7208 #if __VERSION__ == 100 7209 float a, b, c, d; 7210 7211 if (uFirst) { 7212 a = texture2D(tInputLevel, position).r * 255.0; 7213 b = texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0; 7214 c = texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0; 7215 d = texture2D(tInputLevel, position + vec2(k, k)).r * 255.0; 7216 } else { 7217 a = unpackRGBToInt(texture2D(tPreviousLevel, position).rgb); 7218 b = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, 0.0)).rgb); 7219 c = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(0.0, k)).rgb); 7220 d = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, k)).rgb); 7221 } 7222 gl_FragColor = vec4(packIntToRGB(a + b + c + d), 1.0); 7223 #else 7224 int a, b, c, d; 7225 7226 if (uFirst) { 7227 a = int(texture2D(tInputLevel, position).r * 255.0); 7228 b = int(texture2D(tInputLevel, position + vec2(k, 0.0
7228)).r * 255.0); 7229 c = int(texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0); 7230 d = int(texture2D(tInputLevel, position + vec2(k, k)).r * 255.0); 7231 } else { 7232 a = texture2D(tPreviousLevel, position).r; 7233 b = texture2D(tPreviousLevel, position + vec2(k, 0.0)).r; 7234 c = texture2D(tPreviousLevel, position + vec2(0.0, k)).r; 7235 d = texture2D(tPreviousLevel, position + vec2(k, k)).r; 7236 } 7237 gl_FragColor = ivec4(a + b + c + d); 7238 #endif 7239} 7240`),y_}var MW;function Sue(){if(MW)return aT;MW=1,Object.defineProperty(aT,"__esModule",{value:!0}),aT.createHistogramPyramid=C;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Mr(),o=bue(),s=er(),h=Gr(),f=_ue(),y=on(),_=Ct(),g={...c.QuadSchema,tInputLevel:(0,r.TextureSpec)("texture","rgba","float","nearest"),tPreviousLevel:(0,r.TextureSpec)("texture","rgba","float","nearest"),uSize:(0,r.UniformSpec)("f"),uTexSize:(0,r.UniformSpec)("f"),uFirst:(0,r.UniformSpec)("b")},a="histogram-pyramid";function d(l,S,T){if(l.namedComputeRenderables[a]){const A=l.namedComputeRenderables[a].values;i.ValueCell.update(A.tInputLevel,S),i.ValueCell.update(A.tPreviousLevel,T),l.namedComputeRenderables[a].update()}else l.namedComputeRenderables[a]=p(l,S,T);return l.namedComputeRenderables[a]}function p(l,S,T){const A={...c.QuadValues,tInputLevel:i.ValueCell.create(S),tPreviousLevel:i.ValueCell.create(T),uSize:i.ValueCell.create(0),uTexSize:i.ValueCell.create(0),uFirst:i.ValueCell.create(!0)},x={...g},M=(0,n.ShaderCode)("reduction",h.quad_vert,f.reduction_frag,{},{0:"ivec4"}),D=(0,t.createComputeRenderItem)(l,"triangles",M,x,A);return(0,e.createComputeRenderable)(D,A)}function u(l,S){const T=Math.pow(2,S),A=`level${S}`,x=l.isWebGL2?b(A,l,"image-int32","alpha","int","nearest"):b(A,l,"image-uint8","rgba","ubyte","nearest");x.define(T,T);let M=P(A,l);return M||(M=v(A,l)),x.attachFramebuffer(M,0),{texture:x,framebuffer:M}}function m(l){const{gl:S,state:T}=l;T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.enable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,!0,!0),T.clearColor(0,0,0,0)}function v(l,S){const T=`${a}-${l}`;return S.namedFramebuffers[T]||(S.namedFramebuffers[T]=S.resources.framebuffer()),S.namedFramebuffers[T]}function b(l,S,T,A,x,M){const D=`${a}-${l}`;return S.namedTextures[D]||(S.namedTextures[D]=S.resources.texture(T,A,x,M)),S.namedTextures[D]}function P(l,S){const T=`${a}-${l}`;return S.namedFramebuffers[T]}function C(l,S,T,A){_.isTimingMode&&l.timer.mark("createHistogramPyramid");const{gl:x,state:M}=l,D=S.getWidth(),V=S.getHeight();if(D!==V||!(0,s.isPowerOfTwo)(D))throw new Error("inputTexture must be of square power-of-two size");const R=Math.ceil(Math.log(D)/Math.log(2)),E=Math.pow(2,R),I=Math.pow(2,R),B=Math.pow(2,R-1),w=l.isWebGL2?b("pyramid",l,"image-int32","alpha","int","nearest"):b("pyramid",l,"image-uint8","rgba","ubyte","nearest");w.define(I,B);const O=v("pyramid",l);w.attachFramebuffer(O,0),M.viewport(0,0,I,B),(0,y.isWebGL2)(x)?x.clearBufferiv(x.COLOR,0,[0,0,0,0]):x.clear(x.COLOR_BUFFER_BIT);const F=[];for(let k=0;k<R;++k)F.push(u(l,k));const L=d(l,S,F[0].texture);M.currentRenderItemId=-1,m(l);let U=0;for(let k=0;k<R;k++){const j=R-1-k;F[j].framebuffer.bind();const G=Math.pow(2,j);i.ValueCell.update(L.values.uSize,Math.pow(2,k+1)/E),i.ValueCell.update(L.values.uTexSize,G),i.ValueCell.updateIfChanged(L.values.uFirst,k===0),k>0&&(i.ValueCell.update(L.values.tPreviousLevel,F[R-k].texture),L.update()),M.currentRenderItemId=-1,M.viewport(0,0,G,G),M.scissor(0,0,G,G),(0,y.isWebGL2)(x)?x.clearBufferiv(x.COLOR,0,[0,0,0,0]):x.clear(x.COLOR_BUFFER_BIT),M.scissor(0,0,A[0],A[1]),L.render(),w.bind(0),x.copyTexSubImage2D(x.TEXTURE_2D,0,U,0,0,0,G,G),w.unbind(0),U+=G}x.finish(),_.isTimingMode&&l.timer.markEnd("createHistogramPyramid");const q=Math.max(1,(0,o.getHistopyramidSum)(l,F[0].texture)),N=Math.ceil(q/Math.pow(2,R));return{pyramidTex:w,count:q,height:N,levels:R,scale:T}}return aT}var v_={},DW;function TZ(){if(DW)return v_;
7240DW=1,Object.defineProperty(v_,"__esModule",{value:!0}),v_.getTriCount=n,v_.getTriIndices=c;const e=Zw(),t=kr();let r;function n(){if(r!==void 0)return r;r=(0,t.createTextureImage)(256,1,Uint8Array);const{array:o}=r;for(let s=0,h=e.TriTable.length;s<h;++s)o[s]=e.TriTable[s].length/3;return r}let i;function c(){if(i!==void 0)return i;i=(0,t.createTextureImage)(4096,1,Uint8Array);const{array:o}=i;for(let s=0,h=e.TriTable.length;s<h;++s)for(let f=0;f<16;++f)f<e.TriTable[s].length?o[s*16+f]=e.TriTable[s][f]:o[s*16+f]=255;return i}return v_}var b_={},IW;function Cue(){return IW||(IW=1,Object.defineProperty(b_,"__esModule",{value:!0}),b_.isosurface_frag=void 0,b_.isosurface_frag=` 7241precision highp float; 7242precision highp int; 7243precision highp sampler2D; 7244 7245#if __VERSION__ == 100 7246 uniform sampler2D tActiveVoxelsPyramid; 7247#else 7248 precision highp isampler2D; 7249 uniform isampler2D tActiveVoxelsPyramid; 7250#endif 7251 7252uniform sampler2D tActiveVoxelsBase; 7253uniform sampler2D tVolumeData; 7254uniform sampler2D tTriIndices; 7255 7256uniform float uIsoValue; 7257uniform float uLevels; 7258uniform float uSize; 7259uniform float uCount; 7260uniform bool uInvert; 7261 7262uniform vec3 uGridDim; 7263uniform vec3 uGridTexDim; 7264uniform vec3 uGridDataDim; 7265uniform mat4 uGridTransform; 7266uniform mat3 uGridTransformAdjoint; 7267 7268// scale to volume data coord 7269uniform vec2 uScale; 7270 7271#include common 7272 7273// cube corners (excluding origin) 7274const vec3 c1 = vec3(1., 0., 0.); 7275const vec3 c2 = vec3(1., 1., 0.); 7276const vec3 c3 = vec3(0., 1., 0.); 7277const vec3 c4 = vec3(0., 0., 1.); 7278const vec3 c5 = vec3(1., 0., 1.); 7279const vec3 c6 = vec3(1., 1., 1.); 7280const vec3 c7 = vec3(0., 1., 1.); 7281 7282vec3 index3dFrom2d(vec2 coord) { 7283 vec2 gridTexPos = coord * uGridTexDim.xy; 7284 vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy); 7285 vec2 posXY = gridTexPos - columnRow * uGridDim.xy; 7286 float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x; 7287 return vec3(posXY, posZ); 7288} 7289 7290vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { 7291 float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice 7292 float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x); 7293 float row = intDiv(zSlice * gridDim.x, texDim.x); 7294 vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale); 7295 return texture2D(tex, coord + 0.5 / (texDim / uScale)); 7296} 7297 7298vec4 voxel(vec3 pos) { 7299 pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0)); 7300 return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy); 7301} 7302 7303float voxelValuePadded(vec3 pos) { 7304 pos = min(max(vec3(0.0), pos), uGridDim - vec3(vec2(2.0), 1.0)); // remove xy padding 7305 vec4 v = texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy); 7306 #ifdef dValueChannel_red 7307 return v.r; 7308 #else 7309 return v.a; 7310 #endif 7311} 7312 7313int idot2(const in ivec2 a, const in ivec2 b) { 7314 return a.x * b.x + a.y * b.y; 7315} 7316 7317int idot4(const in ivec4 a, const in ivec4 b) { 7318 return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; 7319} 7320 7321#if __VERSION__ == 100 7322 int pyramidVoxel(vec2 pos) { 7323 return int(unpackRGBToInt(texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).rgb)); 7324 } 7325#else 7326 int pyramidVoxel(vec2 pos) { 7327 return texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).r; 7328 } 7329#endif 7330 7331vec4 baseVoxel(vec2 pos) { 7332 return texture2D(tActiveVoxelsBase, pos / uSize); 7333} 7334 7335vec4 getGroup(const in vec3 p) { 7336 // note that we swap x and z because the texture is flipped around y 7337 #if defined(dAxisOrder_012) 7338 float group = p.z + p.y * uGridDataDim.z + p.x * uGridDataDim.z * uGridDataDim.y; // 210 7339 #elif defined(dAxisOrder_021) 7340 float group = p.y + p.z * uGridDataDim.y + p.x * uGridDataDim.y * uGridDataDim.z; // 120 7341 #elif defined(dAxisOrder_102) 7342 float group = p.z + p.x * uGridDataDim.z + p.y * uGridDataDim.z * uGridDataDim.x; // 201 7343 #elif defined(dAxisOrder_120) 7344 float group = p.x + p.z * uGridDataDim.x + p.y * uGridDataDim.x * uGridDataDim.z; // 021 7345 #elif defined(dAxisOrder_201) 7346 float group = p.y + p.x * uGridDataDim.y + p.z * uGridDataDim.y * uGridDataDim.x; // 102 7347 #elif defined(dAxisOrder_210) 7348 float group = p.x + p.y * uGridDataDim.x + p.z * uGridDataDim.x * uGridDataDim.y; // 012 7349 #endif 7350 return vec4(group > 16777215.5 ? vec3(1.0) : packIntToRGB(group), 1.0); 7351} 7352 7353void main(void) { 7354 // get 1D index 7355 int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize); 7356 7357 // ignore 1D indices outside of the grid 7358 if(vI >= int(uCount)) discard; 7359 7360 ivec2 offset = ivec2(int(uSize) - 2, 0); 7361 7362 int start = 0; 7363 ivec4 starts = ivec4(0); 7364 ivec4 ends = ivec4(0); 7365 int diff = 2; 7366 ivec4 m = ivec4(0); 7367 ivec2 position = ivec2(0); 7368 ivec4 vI4 = ivec4(vI); 7369 7370 ivec2 relativePosition = ivec2(0); 7371 int end = 0; 7372 ivec2 pos1 = ivec2(0); 7373 ivec2 pos2 = ivec2(0); 7374 ivec2 pos3 = ivec2(0); 7375 ivec2 pos4 = ivec2(0); 7376 ivec3 vI3 = ivec3(vI); 7377 ivec3 mask = ivec3(0); 7378 7379 // traverse the different levels of the pyramid 7380 for(int i = 1; i < 14; i++) { 7381 if(float(i) >= uLevels) break; 7382 7383 offset.x -= diff; 7384 diff *= 2; 7385 relativePosition = position + offset; 7386 7387 end = start + pyramidVoxel(vec2(relativePosition)); 7388 pos1 = ivec2(relativePosition); 7389 starts.x = start; 7390 ends.x = end; 7391 pos2 = ivec2(relativePosition + ivec2(1, 0)); 7392 starts.y = ends.x; 7393 ends.y = ends.x + pyramidVoxel(vec2(pos2)); 7394 pos3 = relativePosition + ivec2(0, 1); 7395 starts.z = ends.y; 7396 ends.z = ends.y + pyramidVoxel(vec2(pos3)); 7397 pos4 = relativePosition + ivec2(1, 1); 7398 starts.w = ends.z; 7399 mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb)); 7400 m = ivec4(mask, 1 - int(any(bvec3(mask)))); 7401 7402 relativePosition = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4; 7403 start = idot4(m, starts); 7404 position = 2 * (relativePosition - offset); 7405 } 7406 7407 end = start + int(baseVoxel(vec2(position)).r * 255.0); 7408 pos1 = position; 7409 starts.x = start; 7410 ends.x = end; 7411 pos2 = position + ivec2(1, 0); 7412 starts.y = ends.x; 7413 ends.y = ends.x + int(baseVoxel(vec2(pos2)).r * 255.0); 7414 pos3 = position + ivec2(0, 1); 7415 starts.z = ends.y; 7416 ends.z = ends.y + int(baseVoxel(vec2(pos3)).r * 255.0); 7417 pos4 = position + ivec2(1, 1); 7418 starts.w = ends.z; 7419 mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb)); 7420 m = ivec4(mask, 1 - int(any(bvec3(mask)))); 7421 position = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4; 7422 7423 vec2 coord2d = (vec2(position) / uSize) / uScale; 7424 vec3 coord3d = floor(index3dFrom2d(coord2d) + 0.5); 7425 7426 float edgeIndex = floor(baseVoxel(vec2(position)).a * 255.0 + 0.5); 7427 7428 // current vertex for the up to 15 MC cases 7429 int currentVertex = vI - idot4(m, starts); 7430 7431 // ensure winding-order is the same for negative and positive iso-levels 7432 if (uInvert) { 7433 int v = imod(currentVertex + 1, 3); 7434 if (v == 1) currentVertex += 2; 7435 else if (v == 0) currentVertex -= 2; 7436 } 7437 7438 // get index into triIndices table 7439 int mcIndex = 16 * int(edgeIndex) + currentVertex; 7440 vec4 mcData = texture2D(tTriIndices, vec2(imod(mcIndex, 64), mcIndex / 64) / 64.); 7441 7442 // bit mask to avoid conditionals (see comment below) for getting MC case corner 7443 vec4 m0 = vec4(floor(mcData.a * 255.0 + 0.5)); 7444 7445 // get edge value masks 7446 vec4 m1 = vec4(equal(m0, vec4(0., 1., 2., 3.))); 7447 vec4 m2 = vec4(equal(m0, vec4(4., 5., 6., 7.))); 7448 vec4 m3 = vec4(equal(m0, vec4(8., 9., 10., 11.))); 7449 7450 // apply bit masks 7451 vec3 b0 = coord3d + 7452 m1.y * c1 + 7453 m1.z * c2 + 7454 m1.w * c3 + 7455 m2.x * c4 + 7456 m2.y * c5 + 7457 m2.z * c6 + 7458 m2.w * c7 + 7459 m3.y * c1 + 7460 m3.z * c2 + 7461 m3.w * c3; 7462 vec3 b1 = coord3d + 7463 m1.x * c1 + 7464 m1.y * c2 + 7465 m1.z * c3 + 7466 m2.x * c5 + 7467 m2.y * c6 + 7468 m2.z * c7 + 7469 m2.w * c4 + 7470 m3.x * c4 + 7471 m3.y * c5 + 7472 m3.z * c6 + 7473 m3.w * c7; 7474 7475 // the conditionals that are avoided by above bitmasks 7476 // vec3 b0 = coord3d; 7477 // vec3 b1 = coord3d; 7478 // if (mcIndex == 0.0) { 7479 // b1 += c1; 7480 // } else if (mcIndex == 1.0) { 7481 // b0 += c1; b1 += c2; 7482 // } else if (mcIndex == 2.0) { 7483 // b0 += c2; b1 += c3; 7484 // } else if (mcIndex == 3.0) { 7485 // b0 += c3; 7486 // } else if (mcIndex == 4.0) { 7487 // b0 += c4; b1 += c5; 7488 // } else if (mcIndex == 5.0) { 7489 // b0 += c5; b1 += c6; 7490 // } else if (mcIndex == 6.0) { 7491 // b0 += c6; b1 += c7; 7492 // } else if (mcIndex == 7.0) { 7493 // b0 += c7; b1 += c4; 7494 // } else if (mcIndex == 8.0) { 7495 // b1 += c4; 7496 // } else if (mcIndex == 9.0) { 7497 // b0 += c1; b1 += c5; 7498 // } else if (mcIndex == 10.0) { 7499 // b0 += c2; b1 += c6; 7500 // } else if (mcIndex == 11.0) { 7501 // b0 += c3; b1 += c7; 7502 // } 7503 // b0 = floor(b0 + 0.5); 7504 // b1 = floor(b1 + 0.5); 7505 7506 vec4 d0 = voxel(b0); 7507 vec4 d1 = voxel(b1); 7508 7509 #ifdef dValueChannel_red 7510 float v0 = d0.r; 7511 float v1 = d1.r; 7512 #else 7513 float v0 = d0.a; 7514 float v1 = d1.a; 7515 #endif 7516 7517 float t = (uIsoValue - v0) / (v0 - v1); 7518 gl_FragData[0].xyz = (uGridTransform * vec4(b0 + t * (b0 - b1), 1.0)).xyz; 7519 7520 // group id 7521 #if __VERSION__ == 100 || defined(dConstantGroup) 7522 // webgl1 does not support 'flat' interpolation (i.e. no interpolation) 7523 // ensure a constant group id per triangle as needed 7524 #ifdef dPackedGroup 7525 gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0); 7526 #else 7527 gl_FragData[1] = getGroup(coord3d); 7528 #endif 7529 #else 7530 #ifdef dPackedGroup
7531 gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0); 7532 #else 7533 gl_FragData[1] = getGroup(t < 0.5 ? b0 : b1); 7534 #endif 7535 #endif 7536 7537 // normals from gradients 7538 vec3 n0 = -normalize(vec3( 7539 voxelValuePadded(b0 - c1) - voxelValuePadded(b0 + c1), 7540 voxelValuePadded(b0 - c3) - voxelValuePadded(b0 + c3), 7541 voxelValuePadded(b0 - c4) - voxelValuePadded(b0 + c4) 7542 )); 7543 vec3 n1 = -normalize(vec3( 7544 voxelValuePadded(b1 - c1) - voxelValuePadded(b1 + c1), 7545 voxelValuePadded(b1 - c3) - voxelValuePadded(b1 + c3), 7546 voxelValuePadded(b1 - c4) - voxelValuePadded(b1 + c4) 7547 )); 7548 gl_FragData[2].xyz = -vec3( 7549 n0.x + t * (n0.x - n1.x), 7550 n0.y + t * (n0.y - n1.y), 7551 n0.z + t * (n0.z - n1.z) 7552 ); 7553 7554 // ensure normal-direction is the same for negative and positive iso-levels 7555 if (uInvert) { 7556 gl_FragData[2].xyz *= -1.0; 7557 } 7558 7559 // apply normal matrix 7560 gl_FragData[2].xyz = uGridTransformAdjoint * gl_FragData[2].xyz; 7561} 7562`),b_}var sT={},__={},wW;function Pue(){return wW||(wW=1,Object.defineProperty(__,"__esMo
7562dule",{value:!0}),__.activeVoxels_frag=void 0,__.activeVoxels_frag=` 7563precision highp float; 7564precision highp int; 7565precision highp sampler2D; 7566 7567uniform sampler2D tTriCount; 7568uniform sampler2D tVolumeData; 7569 7570uniform float uIsoValue; 7571uniform vec3 uGridDim; 7572uniform vec3 uGridTexDim; 7573uniform vec2 uScale; 7574 7575#include common 7576 7577// cube corners (excluding origin) 7578const vec3 c1 = vec3(1., 0., 0.); 7579const vec3 c2 = vec3(1., 1., 0.); 7580const vec3 c3 = vec3(0., 1., 0.); 7581const vec3 c4 = vec3(0., 0., 1.); 7582const vec3 c5 = vec3(1., 0., 1.); 7583const vec3 c6 = vec3(1., 1., 1.); 7584const vec3 c7 = vec3(0., 1., 1.); 7585 7586vec3 index3dFrom2d(vec2 coord) { 7587 vec2 gridTexPos = coord * uGridTexDim.xy; 7588 vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy); 7589 vec2 posXY = gridTexPos - columnRow * uGridDim.xy; 7590 float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x; 7591 return vec3(posXY, posZ); 7592} 7593 7594vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { 7595 float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice 7596 float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x); 7597 float row = intDiv(zSlice * gridDim.x, texDim.x); 7598 vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale); 7599 return texture2D(tex, coord); 7600} 7601 7602float voxelValue(vec3 pos) { 7603 pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0)); 7604 vec4 v = texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy); 7605 #ifdef dValueChannel_red 7606 return v.r; 7607 #else 7608 return v.a; 7609 #endif 7610} 7611 7612void main(void) { 7613 vec2 uv = gl_FragCoord.xy / uGridTexDim.xy; 7614 vec3 posXYZ = index3dFrom2d(uv); 7615 7616 // get MC case as the sum of corners that are below the given iso level 7617 float c = step(voxelValue(posXYZ), uIsoValue) 7618 + 2. * step(voxelValue(posXYZ + c1), uIsoValue) 7619 + 4. * step(voxelValue(posXYZ + c2), uIsoValue) 7620 + 8. * step(voxelValue(posXYZ + c3), uIsoValue) 7621 + 16. * step(voxelValue(posXYZ + c4), uIsoValue) 7622 + 32. * step(voxelValue(posXYZ + c5), uIsoValue) 7623 + 64. * step(voxelValue(posXYZ + c6), uIsoValue) 7624 + 128. * step(voxelValue(posXYZ + c7), uIsoValue); 7625 c *= step(c, 254.); 7626 7627 // handle out of bounds positions 7628 posXYZ += 1.0; 7629 posXYZ.xy += 1.0; // pixel padding (usually ok even if the texture has no padding) 7630 if (posXYZ.x >= uGridDim.x || posXYZ.y >= uGridDim.y || posXYZ.z >= uGridDim.z) 7631 c = 0.0; 7632 7633 // get total triangles to generate for calculated MC case from triCount texture 7634 float totalTrianglesToGenerate = texture2D(tTriCount, vec2(intMod(c, 16.), floor(c / 16.)) / 16.).a; 7635 gl_FragColor = vec4(vec3(totalTrianglesToGenerate * 3.0), c / 255.0); 7636} 7637`),__}var VW;function Tue(){if(VW)return sT;VW=1,Object.defineProperty(sT,"__esModule",{value:!0}),sT.calcActiveVoxels=m;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Mr(),o=TZ(),s=Gr(),h=Pue(),f=Ct(),y=on(),_={...c.QuadSchema,tTriCount:(0,r.TextureSpec)("image-uint8","alpha","ubyte","nearest"),tVolumeData:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),dValueChannel:(0,r.DefineSpec)("string",["red","alpha"]),uIsoValue:(0,r.UniformSpec)("f"),uGridDim:(0,r.UniformSpec)("v3"),uGridTexDim:(0,r.UniformSpec)("v3"),uScale:(0,r.UniformSpec)("v2")},g="active-voxels";function a(v,b){return(0,y.isWebGL2)(v.gl)&&b.format===v.gl.RED?"red":"alpha"}function d(v,b,P,C,l,S){if(v.namedComputeRenderables[g]){const T=v.namedComputeRenderables[g].values;i.ValueCell.update(T.uQuadScale,S),i.ValueCell.update(T.tVolumeData,b),i.ValueCell.update(T.dValueChannel,a(v,b)),i.ValueCell.updateIfChanged(T.uIsoValue,l),i.ValueCell.update(T.uGridDim,P),i.ValueCell.update(T.uGridTexDim,C),i.ValueCell.update(T.uScale,S),v.namedComputeRenderables[g].update()}else v.namedComputeRenderables[g]=p(v,b,P,C,l,S);return v.namedComputeRenderables[g]}function p(v,b,P,C,l,S){const T={...c.QuadValues,tTriCount:i.ValueCell.create((0,o.getTriCount)()),uQuadScale:i.ValueCell.create(S),tVolumeData:i.ValueCell.create(b),dValueChannel:i.ValueCell.create(a(v,b)),uIsoValue:i.ValueCell.create(l),uGridDim:i.ValueCell.create(P),uGridTexDim:i.ValueCell.create(C),uScale:i.ValueCell.create(S)},A={..._},x=(0,n.ShaderCode)("active-voxels",s.quad_vert,h.activeVoxels_frag),M=(0,t.createComputeRenderItem)(v,"triangles",x,A,T);return(0,e.createComputeRenderable)(M,T)}function u(v){const{gl:b,state:P}=v;P.disable(b.CULL_FACE),P.disable(b.BLEND),P.disable(b.DEPTH_TEST),P.enable(b.SCISSOR_TEST),P.depthMask(!1),P.colorMask(!0,!0,
7637!0,!0),P.clearColor(0,0,0,0)}function m(v,b,P,C,l,S){f.isTimingMode&&v.timer.mark("calcActiveVoxels");const{gl:T,state:A,resources:x}=v,M=b.getWidth(),D=b.getHeight();v.namedFramebuffers[g]||(v.namedFramebuffers[g]=x.framebuffer());const V=v.namedFramebuffers[g];V.bind(),v.namedTextures[g]||(v.namedTextures[g]=x.texture("image-uint8","rgba","ubyte","nearest"));const R=v.namedTextures[g];R.define(M,D);const E=d(v,b,P,C,l,S);return v.state.currentRenderItemId=-1,R.attachFramebuffer(V,0),u(v),A.viewport(0,0,M,D),A.scissor(0,0,M,D),T.clear(T.COLOR_BUFFER_BIT),A.scissor(0,0,C[0],C[1]),E.render(),T.finish(),f.isTimingMode&&v.timer.markEnd("calcActiveVoxels"),R}return sT}var EW;function Jw(){if(EW)return h_;EW=1,Object.defineProperty(h_,"__esModule",{value:!0}),h_.createIsosurfaceBuffers=P,h_.extractIsosurface=C;const e=Jt(),t=Zt(),r=Yt(),n=Kt(),i=et(),c=Ge(),o=Mr(),s=Sue(),h=TZ(),f=Gr(),y=Cue(),_=Tue(),g=on(),a=Ct(),d={...o.QuadSchema,tTriIndices:(0,r.TextureSpec)("image-uint8","alpha","ubyte","nearest"),tActiveVoxelsPyramid:(0,r.TextureSpec)("texture","rgba","float","nearest"),tActiveVoxelsBase:(0,r.TextureSpec)("texture","rgba","float","nearest"),tVolumeData:(0,r.TextureSpec)("texture","rgba","ubyte","nearest"),dValueChannel:(0,r.DefineSpec)("string",["red","alpha"]),uIsoValue:(0,r.UniformSpec)("f"),uSize:(0,r.UniformSpec)("f"),uLevels:(0,r.UniformSpec)("f"),uCount:(0,r.UniformSpec)("f"),uInvert:(0,r.UniformSpec)("b"),uGridDim:(0,r.UniformSpec)("v3"),uGridTexDim:(0,r.UniformSpec)("v3"),uGridDataDim:(0,r.UniformSpec)("v3"),uGridTransform:(0,r.UniformSpec)("m4"),uGridTransformAdjoint:(0,r.UniformSpec)("m3"),uScale:(0,r.UniformSpec)("v2"),dPackedGroup:(0,r.DefineSpec)("boolean"),dAxisOrder:(0,r.DefineSpec)("string",["012","021","102","120","201","210"]),dConstantGroup:(0,r.DefineSpec)("boolean")},p="isosurface";function u(l,S){return(0,g.isWebGL2)(l.gl)&&S.format===l.gl.RED?"red":"alpha"}function m(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){if(l.namedComputeRenderables[p]){const U=l.namedComputeRenderables[p].values;i.ValueCell.update(U.tActiveVoxelsPyramid,S),i.ValueCell.update(U.tActiveVoxelsBase,T),i.ValueCell.update(U.tVolumeData,A),i.ValueCell.update(U.dValueChannel,u(l,A)),i.ValueCell.updateIfChanged(U.uIsoValue,R),i.ValueCell.updateIfChanged(U.uSize,Math.pow(2,E)),i.ValueCell.updateIfChanged(U.uLevels,E),i.ValueCell.updateIfChanged(U.uCount,B),i.ValueCell.updateIfChanged(U.uInvert,w),i.ValueCell.update(U.uGridDim,x),i.ValueCell.update(U.uGridTexDim,M),i.ValueCell.update(U.uGridDataDim,D),i.ValueCell.update(U.uGridTransform,V),i.ValueCell.update(U.uGridTransformAdjoint,c.Mat3.adjointFromMat4((0,c.Mat3)(),V)),i.ValueCell.update(U.uScale,I),i.ValueCell.updateIfChanged(U.dPackedGroup,O),i.ValueCell.updateIfChanged(U.dAxisOrder,F.join("")),i.ValueCell.updateIfChanged(U.dConstantGroup,L),l.namedComputeRenderables[p].update()}else l.namedComputeRenderables[p]=v(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L);return l.namedComputeRenderables[p]}function v(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){const U={...o.QuadValues,tTriIndices:i.ValueCell.create((0,h.getTriIndices)()),tActiveVoxelsPyramid:i.ValueCell.create(S),tActiveVoxelsBase:i.ValueCell.create(T),tVolumeData:i.ValueCell.create(A),dValueChannel:i.ValueCell.create(u(l,A)),uIsoValue:i.ValueCell.create(R),uSize:i.ValueCell.create(Math.pow(2,E)),uLevels:i.ValueCell.create(E),uCount:i.ValueCell.create(B),uInvert:i.ValueCell.create(w),uGridDim:i.ValueCell.create(x),uGridTexDim:i.ValueCell.create(M),uGridDataDim:i.ValueCell.create(D),uGridTransform:i.ValueCell.create(V),uGridTransformAdjoint:i.ValueCell.create(c.Mat3.adjointFromMat4((0,c.Mat3)(),V)),uScale:i.ValueCell.create(I),dPackedGroup:i.ValueCell.create(O),dAxisOrder:i.ValueCell.create(F.join("")),dConstantGroup:i.ValueCell.create(L)},q={...d},N=(0,n.ShaderCode)("isosurface",f.quad_vert,y.isosurface_frag,{drawBuffers:"required"}),k=(0,t.createComputeRenderItem)(l,"triangles",N,q,U);return(0,e.createComputeRenderable)(k,U)}function b(l){const{gl:S,state:T}=l;T.disable(S.CULL_FACE),T.disable(S.BLEND),T.disable(S.DEPTH_TEST),T.disable(S.SCISSOR_TEST),T.depthMask(!1),T.colorMask(!0,!0,
7637!0,!0),T.clearColor(0,0,0,0)}function P(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F,L){const{drawBuffers:U}=l.extensions;if(!U)throw new Error("need WebGL draw buffers");a.isTimingMode&&l.timer.mark("createIsosurfaceBuffers");const{gl:q,state:N,resources:k,extensions:j}=l,{pyramidTex:H,height:G,levels:z,scale:W,count:X}=A,Y=H.getWidth();l.namedFramebuffers[p]||(l.namedFramebuffers[p]=k.framebuffer());const K=l.namedFramebuffers[p];(0,g.isWebGL2)(q)?(O||(O=k.texture("image-float32","rgba","float","nearest")),F||(F=k.texture("image-uint8","rgba","ubyte","nearest")),L||(L=j.colorBufferHalfFloat&&j.textureHalfFloat?k.texture("image-float16","rgba","fp16","nearest"):k.texture("image-float32","rgba","float","nearest"))):(O||(O=k.texture("image-float32","rgba","float","nearest")),F||(F=k.texture("image-float32","rgba","float","nearest")),L||(L=k.texture("image-float32","rgba","float","nearest"))),O.define(Y,G),F.define(Y,G),L.define(Y,G),O.attachFramebuffer(K,0),F.attachFramebuffer(K,1),L.attachFramebuffer(K,2);const Q=m(l,H,S,T,x,M,D,V,R,z,W,X,E,I,B,w);return l.state.currentRenderItemId=-1,K.bind(),U.drawBuffers([U.COLOR_ATTACHMENT0,U.COLOR_ATTACHMENT1,U.COLOR_ATTACHMENT2]),b(l),N.viewport(0,0,Y,G),q.clear(q.COLOR_BUFFER_BIT),Q.render(),q.finish(),a.isTimingMode&&l.timer.markEnd("createIsosurfaceBuffers"),{vertexTexture:O,groupTexture:F,normalTexture:L,vertexCount:X}}function C(l,S,T,A,x,M,D,V,R,E,I,B,w,O,F){a.isTimingMode&&l.timer.mark("extractIsosurface");const L=(0,_.calcActiveVoxels)(l,S,T,A,V,M),U=(0,s.createHistogramPyramid)(l,L,M,A),q=P(l,L,S,U,T,A,x,D,V,R,E,I,B,w,O,F);return a.isTimingMode&&l.timer.markEnd("extractIsosurface"),q}return h_}var BW;function xue(){return BW||(BW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureGaussianSurfaceMeshParams=e.GaussianSurfaceMeshParams=void 0,e.GaussianSurfaceVisual=C,e.StructureGaussianSurfaceVisual=l,e.GaussianSurfaceMeshVisual=T,e.StructureGaussianSurfaceMeshVisual=x,e.GaussianSurfaceTextureMeshVisual=V,e.StructureGaussianSurfaceTextureMeshVisual=E;const t=Ne(),r=mr(),n=Qw(),i=Rt(),c=em(),o=zi(),s=Fl(),h=Jw(),f=rt(),y=Br(),_=Er(),g=Bw(),a=jQ(),d=Tt(),p=Ge(),u=Ct(),m=Kr(),v={...n.GaussianDensityParams,...d.ColorSmoothingParams,tryUseGpu:t.ParamDefinition.Boolean(!0)};e.GaussianSurfaceMeshParams={...r.UnitsMeshParams,...r.UnitsTextureMeshParams,...v},e.StructureGaussianSurfaceMeshParams={...y.ComplexMeshParams,...y.ComplexTextureMeshParams,...v};function b(I){return I.extensions.colorBufferFloat&&I.extensions.textureFloat&&I.extensions.textureFloatLinear&&I.extensions.blendMinMax&&I.extensions.drawBuffers}function P(I,B,w){if(B.resolution>1)return!1;const O=w.maxTextureSize/3,{areaCells:F,maxAreaCells:L}=(0,_.getVolumeSliceInfo)(I.boundary.box,B.resolution,O*O);return F<L}function C(I,B,w,O){return!w.includeParent&&w.floodfill==="off"&&w.tryUseGpu&&O&&b(O)&&P(B,w,O)?V(I):T(I)}function l(I,B,w,O){return!w.includeParent&&w.floodfill==="off"&&w.tryUseGpu&&O&&b(O)&&P(B,w,O)?E(I):x(I)}async function S(I,B,w,O,F,L){const{smoothness:U,floodfill:q,includeParent:N,radiusOffset:k}=F,{transform:j,field:H,idField:G,radiusFactor:z,resolution:W,maxRadius:X}=await(0,n.computeUnitGaussianDensity)(w,B,O.size,F).runInContext(I.runtime),Y=Math.exp(-U)/z,K={isoLevel:Y,scalarField:q!=="off"?p.Tensor.createFloodfilled(H,Y,q):H,idField:G},Q=await(0,c.computeMarchingCubesMesh)(K,L).runAsChild(I.runtime);if(Q.meta.resolution=W,N){const te=Math.ceil(2/W);i.Mesh.smoothEdges(Q,{iterations:te,maxNewEdgeLength:Math.sqrt(2)})}i.Mesh.transform(Q,j),I.webgl&&!I.webgl.isWebGL2?(i.Mesh.uniformTriangleGroup(Q),m.ValueCell.updateIfChanged(Q.varyingGroup,!1)):m.ValueCell.updateIfChanged(Q.varyingGroup,!0);const J=k*(1+Math.exp(-U)),ae=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,X+J);return Q.setBoundingSphere(ae),Q}function T(I){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianSurfaceMeshParams),createGeometry:S,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly||w.includeParent!==O.includeParent||w.floodfill!==O.floodfill,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.tryUseGpu&&!!O&&P(B.structure,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&((0,g.applyMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}async function A(I,B,w,O,F){const{smoothness:L,floodfill:U,includeParent:q,radiu
7637sOffset:N}=O,{transform:k,field:j,idField:H,radiusFactor:G,resolution:z,maxRadius:W}=await(0,n.computeStructureGaussianDensity)(B,w.size,O).runInContext(I.runtime),X=Math.exp(-L)/G,Y={isoLevel:X,scalarField:U!=="off"?p.Tensor.createFloodfilled(j,X,U):j,idField:H},K=await(0,c.computeMarchingCubesMesh)(Y,F).runAsChild(I.runtime);if(K.meta.resolution=z,q){const ae=Math.ceil(2/z);i.Mesh.smoothEdges(K,{iterations:ae,maxNewEdgeLength:Math.sqrt(2)})}i.Mesh.transform(K,k),I.webgl&&!I.webgl.isWebGL2?(i.Mesh.uniformTriangleGroup(K),m.ValueCell.updateIfChanged(K.varyingGroup,!1)):m.ValueCell.updateIfChanged(K.varyingGroup,!0);const Q=N*(1+Math.exp(-L)),J=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,W+Q);return K.setBoundingSphere(J),K}function x(I){return(0,y.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianSurfaceMeshParams),createGeometry:A,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly||w.includeParent!==O.includeParent||w.floodfill!==O.floodfill,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.tryUseGpu&&!!O&&P(B,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&((0,g.applyMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}const M="gaussian-surface";function D(I,B,w,O,F,L){const{webgl:U}=I;if(!U)throw new Error("webgl context required to create gaussian surface texture-mesh");const{namedTextures:q,resources:N,extensions:{colorBufferFloat:k,textureFloat:j,colorBufferHalfFloat:H,textureHalfFloat:G}}=U;q[M]||(q[M]=H&&G?N.texture("image-float16","rgba","fp16","linear"):k&&j?N.texture("image-float32","rgba","float","linear"):N.texture("image-uint8","rgba","ubyte","linear"));const z=p.Vec3.create(0,1,2),W=B.elements.length,X=K=>{u.isTimingMode&&U.timer.mark("createGaussianSurfaceTextureMesh");const Q=(0,n.computeUnitGaussianDensityTexture2d)(w,B,O.size,!0,F,U,q[M]),J=Math.exp(-F.smoothness)/Q.radiusFactor,ae=K?.doubleBuffer.get(),te=(0,h.extractIsosurface)(U,Q.texture,Q.gridDim,Q.gridTexDim,Q.gridDataDim,Q.gridTexScale,Q.transform,J,!1,!0,z,!0,ae?.vertex,ae?.group,ae?.normal);u.isTimingMode&&U.timer.markEnd("createGaussianSurfaceTextureMesh");const ne=F.radiusOffset*(1+Math.exp(-F.smoothness)),$=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,Q.maxRadius+ne),ie=s.TextureMesh.create(te.vertexCount,W,te.vertexTexture,te.groupTexture,te.normalTexture,$,K);return ie.meta.resolution=Q.resolution,ie},Y=X(L);return Y.meta.webgl=U,Y.meta.reset=()=>{X(Y)},Y}function V(I){return(0,r.UnitsTextureMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianSurfaceMeshParams),createGeometry:D,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.includeParent||w.floodfill!=="off"||!w.tryUseGpu||!O||!P(B.structure,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&L&&((0,a.applyTextureMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;B.vertexTexture.ref.value.destroy(),B.groupTexture.ref.value.destroy(),B.normalTexture.ref.value.destroy(),B.doubleBuffer.destroy(),(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}function R(I,B,w,O,F){const{webgl:L}=I;if(!L)throw new Error("webgl context required to create structure gaussian surface texture-mesh");const{namedTextures:U,resources:q,extensions:{colorBufferFloat:N,textureFloat:k,colorBufferHalfFloat:j,textureHalfFloat:H}}=L;U[M]||(U[M]=j&&H?q.texture("image-float16","rgba","fp16","linear"):N&&k?q.texture("image-float32","rgba","float","linear"):q.texture("image-uint8","rgba","ubyte","linear"));const G=p.Vec3.create(0,1,2),z=B.elementCount,W=Y=>{u.isTimingMode&&L.timer.mark("createStructureGaussianSurfaceTextureMesh");const K=(0,n.computeStructureGaussianDensityTexture2d)(B,w.size,!0,O,L,U[M]),Q=Math.exp(-O.
7637smoothness)/K.radiusFactor,J=Y?.doubleBuffer.get(),ae=(0,h.extractIsosurface)(L,K.texture,K.gridDim,K.gridTexDim,K.gridDataDim,K.gridTexScale,K.transform,Q,!1,!0,G,!0,J?.vertex,J?.group,J?.normal);u.isTimingMode&&L.timer.markEnd("createStructureGaussianSurfaceTextureMesh");const te=O.radiusOffset*(1+Math.exp(-O.smoothness)),ne=f.Sphere3D.expand((0,f.Sphere3D)(),B.boundary.sphere,K.maxRadius+te),$=s.TextureMesh.create(ae.vertexCount,z,ae.vertexTexture,ae.groupTexture,ae.normalTexture,ne,Y);return $.meta.resolution=K.resolution,$},X=W(F);return X.meta.webgl=L,X.meta.reset=()=>{W(X)},X}function E(I){return(0,y.ComplexTextureMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianSurfaceMeshParams),createGeometry:R,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(B,w,O)=>{B.createGeometry=w.resolution!==O.resolution||w.radiusOffset!==O.radiusOffset||w.smoothness!==O.smoothness||w.ignoreHydrogens!==O.ignoreHydrogens||w.ignoreHydrogensVariant!==O.ignoreHydrogensVariant||w.traceOnly!==O.traceOnly,w.smoothColors.name!==O.smoothColors.name?B.updateColor=!0:w.smoothColors.name==="on"&&O.smoothColors.name==="on"&&(w.smoothColors.params.resolutionFactor!==O.smoothColors.params.resolutionFactor&&(B.updateColor=!0),w.smoothColors.params.sampleStride!==O.smoothColors.params.sampleStride&&(B.updateColor=!0))},mustRecreate:(B,w,O)=>w.includeParent||w.floodfill!=="off"||!w.tryUseGpu||!O||!P(B,w,O),processValues:(B,w,O,F,L)=>{const{resolution:U,colorTexture:q}=w.meta,N=(0,d.getColorSmoothingProps)(O.smoothColors,F.color.preferSmoothing,U);N&&L&&((0,a.applyTextureMeshColorSmoothing)(B,N,L,q),w.meta.colorTexture=B.tColorGrid.ref.value)},dispose:B=>{var w;B.vertexTexture.ref.value.destroy(),B.groupTexture.ref.value.destroy(),B.normalTexture.ref.value.destroy(),B.doubleBuffer.destroy(),(w=B.meta.colorTexture)===null||w===void 0||w.destroy()}},I)}})(NM)),NM}var jM={},RW;function Aue(){return RW||(RW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureGaussianWireframeParams=e.GaussianWireframeParams=void 0,e.GaussianWireframeVisual=_,e.StructureGaussianWireframeVisual=a;const t=Ne(),r=kn(),n=Qw(),i=em(),c=mr(),o=zi(),s=rt(),h=Br(),f={...n.GaussianDensityParams,sizeFactor:t.ParamDefinition.Numeric(3,{min:0,max:10,step:.1}),lineSizeAttenuation:t.ParamDefinition.Boolean(!1)};e.GaussianWireframeParams={...c.UnitsLinesParams,...f},e.StructureGaussianWireframeParams={...h.ComplexLinesParams,...f};async function y(d,p,u,m,v,b){const{smoothness:P}=v,{transform:C,field:l,idField:S,maxRadius:T}=await(0,n.computeUnitGaussianDensity)(u,p,m.size,v).runInContext(d.runtime),A={isoLevel:Math.exp(-P),scalarField:l,idField:S},x=await(0,i.computeMarchingCubesLines)(A,b).runAsChild(d.runtime);r.Lines.transform(x,C);const M=s.Sphere3D.expand((0,s.Sphere3D)(),p.boundary.sphere,T);return x.setBoundingSphere(M),x}function _(d){return(0,c.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianWireframeParams),createGeometry:y,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.resolution!==m.resolution||u.radiusOffset!==m.radiusOffset||u.smoothness!==m.smoothness||u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.includeParent!==m.includeParent||u.floodfill!==m.floodfill}},d)}async function g(d,p,u,m,v){const{smoothness:b}=m,{transform:P,field:C,idField:l,maxRadius:S}=await(0,n.computeStructureGaussianDensity)(p,u.size,m).runInContext(d.runtime),T={isoLevel:Math.exp(-b),scalarField:C,idField:l},A=await(0,i.computeMarchingCubesLines)(T,v).runAsChild(d.runtime);r.Lines.transform(A,P);const x=s.Sphere3D.expand((0,s.Sphere3D)(),p.boundary.sphere,S);return A.setBoundingSphere(x),A}function a(d){return(0,h.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureGaussianWireframeParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.resolution!==m.resolution||u.radiusOffset!==m.radiusOffset||u.smoothness!==m.smoothness||u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.includeParent!==m.includeParent||u.floodfill!==m.floodfill}},d)}})(jM)),jM}var OW;function Mue(){return OW||(OW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.GaussianSurfaceRepresentationProvider=e.GaussianSurfaceParams=void 0,e.getGaussianSurfaceParams=f,e.GaussianSurfaceRepresentation=y;const t=xue(),r=Sa(),n=Aue(),i=Ne(),c=Yr(),o=Lt(),s=Tt(),h={"gaussian-surface-mesh":(_,g)=>(0,r.UnitsRepresentation)("Gaussian surface mesh",_,g,t.GaussianSurfaceVisual),"structure-gaussian-surface-mesh":(_,g)=>(0,c.ComplexRepresentation)("Structure-Gaussian surface mesh",_,g,t.StructureGaussianSurfaceVisual),"gaussian-surface-wireframe":(_,g)=>(0,r.UnitsRepresentation)("Gaussian surface wireframe",_,g,n.GaussianWireframeVisual),"structure-gaussian-surface-wireframe":(_,g)=>(0,c.ComplexRepresentation)("Structure-Gaussian surface wireframe",_,g,n.StructureGaussianWireframeVisual)};e.GaussianSurfaceParams={...t.GaussianSurfaceMeshParams,...n.GaussianWireframeParams,visuals:i.ParamDefinition.MultiSelect(["gaussian-surface-mesh"],i.ParamDefinition.objectToOptions(h)),bumpFrequency:i.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},s.BaseGeometry.ShadingCategory),density:i.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},s.BaseGeometry.ShadingCategory)};function f(_,g){return e.GaussianSurfaceParams}function y(_,g){return o.Representation.createMulti("Gaussian Surface",_,g,c.StructureRepresentationStateBuilder,h)}e.GaussianSurfaceRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"gaussian-surface",label:"Gaussian Surface",description:"Displays a gaussian molecular surface.",factory:y,getParams:f,defaultValues:i.ParamDefinition.getDefaultValues(e.GaussianSurfaceParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(LM)),LM}var GM={},zM={},kW;function Due(){return kW||(kW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LabelTextParams=void 0,e.LabelTextVisual=y;const t=Ne(),r=Ke(),n=Kf(),i=Br(),c=zi(),o=Vr(),s=Ge(),h=Ki(),f=zi();e.LabelTextParams={...i.ComplexTextParams,background:t.ParamDefinition.Boolean(!1),backgroundMargin:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),backgroundColor:t.ParamDefinition.Color(o.ColorNames.black),backgroundOpacity:t.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01}),borderWidth:t.ParamDefinition.Numeric(.25,{min:0,max:.5,step:.01}),level:t.ParamDefinition.Select("residue",[["chain","Chain"],["residue","Residue"],["element","Element"]],{isEssential:!0}),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),chainScale:t.ParamDefinition.Numeric(10,{min:0,max:20,step:.1}),residueScale:t.ParamDefinition.Numeric(1,{min:0,max:20,step:.1}),elementScale:t.ParamDefinition.Numeric(.5,{min:0,max:20,step:.1})};function y(m){return(0,i.ComplexTextVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.LabelTextParams),createGeometry:_,createLocationIterator:c.ElementIterator.fromStructure,getLoci:c.getSerialElementLoci,eachLocation:c.eachSerialElement,setUpdateState:(v,b,P)=>{v.createGeometry=b.level!==P.level||b.level==="chain"&&b.chainScale!==P.chainScale||b.level==="residue"&&b.residueScale!==P.residueScale||b.level==="element"&&b.elementScale!==P.elementScale||b.ignoreHydrogens!==P.ignoreHydrogens||b.ignoreHydrogensVariant!==P.ignoreHydrogensVariant}},m)}function _(m,v,b,P,C){switch(P.level){case"chain":return d(m,v,b,P,C);case"residue":return p(m,v,b,P,C);case"element":return u(m,v,b,P,C)}}const g=(0,s.Vec3)(),a=new h.BoundaryHelper("98");function d(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{auth_asym_id:A,label_asym_id:x}=r.StructureProperties.chain,{cumulativeUnitElementCount:M}=T,D=S.length,{chainScale:V}=P,R=n.TextBuilder.create(P,D,D/2,C);for(let E=0,I=S.length;E<I;++E){const B=S[E];l.unit=B,l.element=B.elements[0];const{center:w,radius:O}=B.lookup3d.boundary.sphere;s.Vec3.transformMat4(g,w,B.conformation.operator.matrix);const F=A(l),L=x(l),U=F===L?L:`${L} [${F}]`;R.add(U,g[0],g[1],g[2],O,V,M[E])}return R.getText()}function p(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{label_comp_id:A}=r.StructureProperties.atom,{auth_seq_id:x}=r.StructureProperties.residue,{cumulativeUnitElementCount:M}=T,D=v.polymerResidueCount*2,{residueScale:V}=P,R=n.TextBuilder.create(P,D,D/2,C);for(let E=0,I=S.length;E<I;++E){const B=S[E],w=B.conformation,{elements:O}=B;l.unit=B,l.element=B.elements[0];const F=B.model.atomicHierarchy.residueAtomSegments.index,L=M[E];let U=0;const q=O.length;for(;U<q;){const N=U,k=F[O[U]];for(U++;U<q&&F[O[U]]===k;)U++;a.reset();for(let X=N;X<U;X++)w.position(O[X],g),a.includePosition(g);a.finishedIncludeStep();for(let X=N;X<U;X++)w.position(O[X],g),a.radiusPosition(g);l.element=O[N];const{center:j,radius:H}=a.getSphere(),G=x(l),W=`${A(l)} ${G}`;R.add(W,j[0],j[1],j[2],H,V,L+N)}}return R.getText()}function u(m,v,b,P,C){const l=r.StructureElement.Location.create(v),{units:S,serialMapping:T}=v,{label_atom_id:A,label_alt_id:x}=r.StructureProperties.atom,{cumulativeUnitElementCount:M}=T,D=b.size,V=v.elementCount,{elementScale:R}=P,E=n.TextBuilder.create(P,V,V/2,C);for(let I=0,B=S.length;I<B;++I){const w=S[I],O=w.conformation,{elements:F}=w;l.unit=w;const L=M[I],U=(0,f.makeElementIgnoreTest)(v,w,{...P,traceOnly:!1});for(let q=0,N=F.length;q<N;q++){if(U&&U(F[q]))continue;l.element=F[q],O.position(l.element,g);const k=A(l),j=x(l),H=j?`${k}%${j}`:k;E.add(H,g[0],g[1],g[2],D.size(l),R,L+q)}}return E.getText()}})(zM)),zM}var FW;function Iue(){return FW||(FW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.LabelRepresentationProvider=e.LabelParams=void 0,e.getLabelParams=s,e.LabelRepresentation=h;const t=Ne(),r=Yr(),n=Lt(),i=Due(),c=cn(),o={"label-text":(f,y)=>(0,r.ComplexRepresentation)("Label text",f,y,i.LabelTextVisual)};e.LabelParams={...i.LabelTextParams,visuals:t.ParamDefinition.MultiSelect(["label-text"],t.ParamDefinition.objectToOptions(o))};function s(f,y){return e.LabelParams}function h(f,y){const _=n.Representation.createMulti("Label",f,y,r.StructureRepresentationStateBuilder,o);return _.setState({pickable:!1,markerActions:c.MarkerAction.None}),_}e.LabelRepresentationProvider=(0,r.StructureRepresentationProvider)({name:"label",label:"Label",description:"Displays labels.",factory:h,getParams:s,defaultValues:t.ParamDefinition.getDefaultValues(e.LabelParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"physical"},isApplicable:f=>f.elementCount>0})})(GM)),GM}var HM={},WM={},fl={},$M={},LW;function wue(){return LW||(LW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultMolecularSurfaceCalculationProps=e.MolecularSurfaceCalculationParams=void 0,e.calcMolecularSurface=_;const t=Ne(),r=nn(),n=UD(),i=jD(),c=os(),o=wt(),s=Tf(),h=Xr();function f(g,a){return g[0]=g[1]=g[2]=1,a[0]!==0?g[0]=(a[1]+a[2])/-a[0]:a[1]!==0?g[1]=(a[0]+a[2])/-a[1]:a[2]!==0&&(g[2]=(a[0]+a[1])/-a[2]),g}function y(g){let a=0;const d=2*Math.PI/g,p=new Float32Array(g),u=new Float32Array(g);for(let m=0;m<g;m++)p[m]=Math.cos(a),u[m]=Math.sin(a),a+=d;return{cosTable:p,sinTable:u}}e.MolecularSurfaceCalculationParams={probeRadius:t.ParamDefinition.Numeric(1.4,{min:0,max:10,step:.1},{description:"Radius of the probe tracing the molecular surface."}),resolution:t.ParamDefinition.Numeric(.5,{min:.01,max:20,step:.01},{description:"Grid resolution/cell spacing."}),probePositions:t.ParamDefinition.Numeric(36,{min:12,max:90,step:1},{description:"Number of positions tested for probe target intersection."})},e.DefaultMolecularSurfaceCalculationProps=t.ParamDefinition.getDefaultValues(e.MolecularSurfaceCalculationParams);async function _(g,a,d,p,u,m){let v=-1;function b(ee,se,ye,Se,Ae){if(v!==-1){const _e=v;if(_e!==Se&&_e!==Ae&&P(_e,ee,se,ye))return _e;v=-1}for(let _e=0,be=U.count;_e<be;++_e){const xe=r.OrderedSet.getAt(q,U.indices[_e]);if(xe!==Se&&xe!==Ae&&P(xe,ee,se,ye))return v=xe,xe}return-1}function P(ee,se,ye,Se){const Ae=G[ee],_e=N[ee]-se,be=k[ee]-ye,xe=j[ee]-Se;return _e*_e+be*be+xe*xe<Ae*Ae}function C(ee,se){for(let ye=ee;ye<se;++ye){const Se=r.OrderedSet.getAt(q,ye),Ae=N[Se],_e=k[Se],be=j[Se],xe=G[Se],we=xe*xe,Be=O>0;L.find(Ae,_e,be,xe);const Me=Math.ceil(xe*B)+O,Re=Math.floor(B*(Ae-Y)),Te=Math.floor(B*(_e-K)),Ve=Math.floor(B*(be-Q)),qe=Math.max(0,Re-Me),ke=Math.max(0,Te-Me),ze=Math.max(0,Ve-Me),We=Math.min(te,Re+Me+2),Je=Math.min(ne,Te+Me+2),De=Math.min($,Ve+Me+2);for(let Oe=qe;Oe<We;++Oe){const Fe=fe[Oe]-Ae,Le=Oe*re;for(let He=ke;He<Je;++He){const Pe=de[He]-_e,Ie=Fe*Fe+Pe*Pe,Ee=He*ie+Le;for(let Ue=ze;Ue<De;++Ue){const $e=ge[Ue]-be,Ye=Ie+$e*$e;if(Be||Ye<we){const Qe=Ue+Ee,it=Math.sqrt(Ye),ht=xe/it,mt=Fe*ht+Ae,St=Pe*ht+_e,Bt=$e*ht+be,Ot=b(mt,St,Bt,Se,-1);if(Ye<we){if(pe[Qe]<0&&(pe[Qe]*=-1),Ot===-1){const br=xe-it;br<pe[Qe]&&(pe[Qe]=br,he[Qe]=H[ye])}}else if(Be&&Ot===-1){const br=xe-it;br>pe[Qe]&&(pe[Qe]=br)}}}}}}}async function l(){for(let ee=0;ee<z;ee+=Ce)C(ee,Math.min(ee+Ce,z)),g.shouldUpdate&&await g.update({message:"projecting points",current:ee,max:z})}const S=(0,o.Vec3)(),T=(0,o.Vec3)(),A=(0,o.Vec3)(),x=(0,o.Vec3)();function M(ee,se){const ye=G[ee],Se=G[se],Ae=S[0]=N[se]-N[ee],_e=S[1]=k[se]-k[ee],be=S[2]=j[se]-j[ee],xe=Ae*Ae+_e*_e+be*be,we=Math.sqrt(xe),Be=(ye*ye+we*we-Se*Se)/(2*ye*we),Me=ye*Be;o.Vec3.normalize(S,S),f(A,S),o.Vec3.normalize(A,A),o.Vec3.cross(x,S,A),o.Vec3.normalize(x,x);const Re=Math.sqrt(ye*ye-Me*Me);o.Vec3.scale(A,A,Re),o.Vec3.scale(x,x,Re),o.Vec3.scale(S,S,Me),T[0]=S[0]+N[ee],T[1]=S[1]+k[ee],T[2]=S[2]+j[ee],v=-1;for(let Te=0;Te<I;++Te){const Ve=oe[Te],qe=ce[Te],ke=T[0]+Ve*A[0]+qe*x[0],ze=T[1]+Ve*A[1]+qe*x[1],We=T[2]+Ve*A[2]+qe*x[2];if(b(ke,ze,We,ee,se)===-1){const Je=Math.floor(B*(ke-Y)),De=Math.floor(B*(ze-K)),Oe=Math.floor(B*(We-Q)),Fe=Math.max(0,Je-w),Le=Math.max(0,De-w),He=Math.max(0,Oe-w),Pe=Math.min(te,Je+w+2),Ie=Math.min(ne,De+w+2),Ee=Math.min($,Oe+w+2);for(let Ue=Fe;Ue<Pe;++Ue){const $e=ke-fe[Ue],Ye=Ue*re;for(let Qe=Le;Qe<Ie;++Qe){const it=ze-de[Qe],ht=$e*$e+it*it,mt=Qe*ie+Ye;for(let St=He;St<Ee;++St){const Bt=We-ge[St],Ot=ht+Bt*Bt,br=St+mt,Ir=pe[br];if(Ir>0&&Ot<Ir*Ir){pe[br]=Math.sqrt(Ot);const Cn=$e*S[0]+it*S[1]+Bt*S[2];he[br]=H[r.OrderedSet.indexOf(q,Cn<0?se:ee)]}}}}}}}function D(ee,se){for(let ye=ee;ye<se;++ye){const Se=r.OrderedSet.getAt(q,ye);L.find(N[Se],k[Se],j[Se],G[Se]);for(let Ae=0,_e=U.count;Ae<_e;++Ae){const be=r.OrderedSet.getAt(q,U.indices[Ae]);Se<be&&M(Se,be)}}}async function V(){for(let ee=0;ee<z;ee+=Ce)D(ee,Math.min(ee+Ce,z)),g.shouldUpdate&&await g.update({message:"projecting torii",current:ee,max:z})}const{resolution:R,probeRadius:E,probePositions:I}=m,B=1/R,w=2+Math.floor(E*B),O=E<R*2?1:0,F=o.Vec3.create(p,p,p);o.Vec3.scale(F,F,2);const L=(0,i.GridLookup3D)(a,d,F),U=L.result;u===null&&(u=L.boundary.box);const{indices:q,x:N,y:k,z:j,id:H,radius:G}=a,z=r.OrderedSet.size(q),W=p+R,X=c.Box3D.expand((0,c.Box3D)(),u,o.Vec3.create(W,W,W)),[Y,K,Q]=X.min,J=c.Box3D.scale((0,c.Box3D)(),X,B),ae=c.Box3D.size((0,o.Vec3)(),J);o.Vec3.ceil(ae,ae);const[te,ne,$]=ae,ie=$,Z=ne,re=ie*Z,{cosTable:oe,sinTable:ce}=y(I),ue=s.Tensor.Space(ae,[0,1,2],Float32Array),pe=ue.create(),he=ue.create();pe.fill(-1001),he.fill(-1);const fe=(0,n.fillGridDim)(te,Y,R),de=(0,n.fillGridDim)(ne,K,R),ge=(0,n.fillGridDim)($,Q,R),Ce=Math.ceil(1e5/(Math.pow(Math.pow(p,3),3)*B));await l(),await V();const ve=s.Tensor.create(ue,pe),le=s.Tensor.create(ue,he),me=h.Mat4.identity();return h.Mat4.fromScaling(me,o.Vec3.create(R,R,R)),h.Mat4.setTranslation(me,X.min),{field:ve,idField:le,transform:me,resolution:R,maxRadius:p}}})($M)),$M}var NW;function xZ(){if(NW)return fl;
7637NW=1,Object.defineProperty(fl,"__esModule",{value:!0}),fl.CommonMolecularSurfaceCalculationParams=void 0,fl.computeUnitMolecularSurface=s,fl.computeStructureMolecularSurface=f;const e=nt(),t=Er(),r=wue(),n=at(),i=Tt(),c=Ne();fl.CommonMolecularSurfaceCalculationParams={...r.MolecularSurfaceCalculationParams,resolution:{...r.MolecularSurfaceCalculationParams.resolution,...i.BaseGeometry.CustomQualityParamInfo},probePositions:{...r.MolecularSurfaceCalculationParams.probePositions,...i.BaseGeometry.CustomQualityParamInfo},floodfill:c.ParamDefinition.Select("off",c.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the molecular surface."})};function o(_,g,a,d){const{probeRadius:p}=d,{position:u,boundary:m,radius:v}=(0,t.getUnitConformationAndRadius)(_,g,a,d),{indices:b}=u,P=n.OrderedSet.size(b),C=new Float32Array(n.OrderedSet.end(b));let l=0;for(let S=0;S<P;++S){const T=n.OrderedSet.getAt(b,S),A=v(T);l<A&&(l=A),C[T]=A+p}return{position:{...u,radius:C},boundary:m,maxRadius:l}}function s(_,g,a,d){const{position:p,boundary:u,maxRadius:m}=o(_,g,a,d),v=(0,t.ensureReasonableResolution)(u.box,d);return e.Task.create("Molecular Surface",async b=>await y(b,p,u,m,u.box,v))}function h(_,g,a){const{probeRadius:d}=a,{position:p,boundary:u,radius:m}=(0,t.getStructureConformationAndRadius)(_,g,a),{indices:v}=p,b=n.OrderedSet.size(v),P=new Float32Array(n.OrderedSet.end(v));let C=0;for(let l=0;l<b;++l){const S=n.OrderedSet.getAt(v,l),T=m(S);C<T&&(C=T),P[S]=T+d}return{position:{...p,radius:P},boundary:u,maxRadius:C}}function f(_,g,a){const{position:d,boundary:p,maxRadius:u}=h(_,g,a),m=(0,t.ensureReasonableResolution)(p.box,a);return e.Task.create("Molecular Surface",async v=>await y(v,d,p,u,p.box,m))}async function y(_,g,a,d,p,u){return(0,r.calcMolecularSurface)(_,g,a,d,p,u)}return fl}var qW;function Vue(){return qW||(qW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MolecularSurfaceMeshParams=void 0,e.MolecularSurfaceMeshVisual=p,e.StructureMolecularSurfaceMeshVisual=m;const t=Ne(),r=mr(),n=Rt(),i=xZ(),c=em(),o=zi(),s=Er(),h=rt(),f=Bw(),y=Tt(),_=et(),g=Br(),a=Tf();e.MolecularSurfaceMeshParams={...r.UnitsMeshParams,...i.CommonMolecularSurfaceCalculationParams,...s.CommonSurfaceParams,...y.ColorSmoothingParams};async function d(v,b,P,C,l,S){const{transform:T,field:A,idField:x,resolution:M,maxRadius:D}=await(0,i.computeUnitMolecularSurface)(P,b,C.size,l).runInContext(v.runtime),V={isoLevel:l.probeRadius,scalarField:l.floodfill!=="off"?a.Tensor.createFloodfilled(A,l.probeRadius,l.floodfill):A,idField:x},R=await(0,c.computeMarchingCubesMesh)(V,S).runAsChild(v.runtime);if(l.includeParent){const I=Math.ceil(2/l.resolution);n.Mesh.smoothEdges(R,{iterations:I,maxNewEdgeLength:Math.sqrt(2)})}n.Mesh.transform(R,T),v.webgl&&!v.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(R),_.ValueCell.updateIfChanged(R.varyingGroup,!1)):_.ValueCell.updateIfChanged(R.varyingGroup,!0);const E=h.Sphere3D.expand((0,h.Sphere3D)(),b.boundary.sphere,D);return R.setBoundingSphere(E),R.meta.resolution=M,R}function p(v){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceMeshParams),createGeometry:d,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(b,P,C)=>{b.createGeometry=P.resolution!==C.resolution||P.probeRadius!==C.probeRadius||P.probePositions!==C.probePositions||P.ignoreHydrogens!==C.ignoreHydrogens||P.ignoreHydrogensVariant!==C.ignoreHydrogensVariant||P.traceOnly!==C.traceOnly||P.includeParent!==C.includeParent||P.floodfill!==C.floodfill,P.smoothColors.name!==C.smoothColors.name?b.updateColor=!0:P.smoothColors.name==="on"&&C.smoothColors.name==="on"&&(P.smoothColors.params.resolutionFactor!==C.smoothColors.params.resolutionFactor&&(b.updateColor=!0),P.smoothColors.params.sampleStride!==C.smoothColors.params.sampleStride&&(b.updateColor=!0))},processValues:(b,P,C,l,S)=>{const{resolution:T,colorTexture:A}=P.meta,x=(0,y.getColorSmoothingProps)(C.smoothColors,l.color.preferSmoothing,T);x&&((0,f.applyMeshColorSmoothing)(b,x,S,A),P.meta.colorTexture=b.tColorGrid.ref.value)},dispose:b=>{var P;(P=b.meta.colorTexture)===null||P===void 0||P.destroy()}},v)}async function u(v,b,P,C,l){const{transform:S,field:T,idField:A,resolution:x,maxRadius:M}=await(0,i.computeStructureMolecularSurface)(b,P.size,C).runInContext(v.runtime),D={isoLevel:C.probeRadius,scalarField:C.floodfill!=="off"?a.Tensor.createFloodfilled(T,C.probeRadius,C.floodfill):T,idField:A},V=await(0,c.computeMarchingCubesMesh)(D,l).runAsChild(v.runtime);if(C.includeParent){const E=Math.ceil(2/C.resolution);n.Mesh.smoothEdges(V,{iterations:E,maxNewEdgeLength:Math.sqrt(2)})}n.Mesh.transform(V,S),v.webgl&&!v.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(V),_.ValueCell.updateIfChanged(V.varyingGroup,!1)):_.ValueCell.updateIfChanged(V.varyingGroup,!0);const R=h.Sphere3D.expand((0,h.Sphere3D)(),b.boundary.sphere,M);return V.setBoundingSphere(R),V.meta.resolution=x,V}function m(v){return(0,g.ComplexMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceMeshParams),createGeometry:u,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(b,P,C)=>{b.createGeometry=P.resolution!==C.resolution||P.probeRadius!==C.probeRadius||P.probePositions!==C.probePositions||P.ignoreHydrogens!==C.ignoreHydrogens||P.ignoreHydrogensVariant!==C.ignoreHydrogensVariant||P.traceOnly!==C.traceOnly||P.includeParent!==C.includeParent||P.floodfill!==C.floodfill,P.smoothColors.name!==C.smoothColors.name?b.updateColor=!0:P.smoothColors.name==="on"&&C.smoothColors.name==="on"&&(P.smoothColors.params.resolutionFactor!==C.smoothColors.params.resolutionFactor&&(b.updateColor=!0),P.smoothColors.params.sampleStride!==C.smoothColors.params.sampleStride&&(b.updateColor=!0))},processValues:(b,P,C,l,S)=>{const{resolution:T,colorTexture:A}=P.meta,x=(0,y.getColorSmoothingProps)(C.smoothColors,l.color.preferSmoothing,T);x&&((0,f.applyMeshColorSmoothing)(b,x,S,A),P.meta.colorTexture=b.tColorGrid.ref.value)},dispose:b=>{var P;(P=b.meta.colorTexture)===null||P===void 0||P.destroy()}},v)}})(WM)),WM}var XM={},UW;function Eue(){return UW||(UW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.StructureMolecularSurfaceWireframeParams=e.MolecularSurfaceWireframeParams=void 0,e.MolecularSurfaceWireframeVisual=a,e.StructureMolecularSurfaceWireframeVisual=p;const t=Ne(),r=mr(),n=kn(),i=xZ(),c=em(),o=zi(),s=Er(),h=rt(),f=Tf(),y=Br(),_={...i.CommonMolecularSurfaceCalculationParams,...s.CommonSurfaceParams,sizeFactor:t.ParamDefinition.Numeric(1.5,{min:0,max:10,step:.1})};e.MolecularSurfaceWireframeParams={...r.UnitsLinesParams,..._},e.StructureMolecularSurfaceWireframeParams={...y.ComplexLinesParams,..._};async function g(u,m,v,b,P,C){const{transform:l,field:S,idField:T,maxRadius:A}=await(0,i.computeUnitMolecularSurface)(v,m,b.size,P).runInContext(u.runtime),x={isoLevel:P.probeRadius,scalarField:P.floodfill!=="off"?f.Tensor.createFloodfilled(S,P.probeRadius,P.floodfill):S,idField:T},M=await(0,c.computeMarchingCubesLines)(x,C).runAsChild(u.runtime);n.Lines.transform(M,l);const D=h.Sphere3D.expand((0,h.Sphere3D)(),m.boundary.sphere,A);return M.setBoundingSphere(D),M}function a(u){return(0,r.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.MolecularSurfaceWireframeParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(m,v,b)=>{m.createGeometry=v.resolution!==b.resolution||v.probeRadius!==b.probeRadius||v.probePositions!==b.probePositions||v.ignoreHydrogens!==b.ignoreHydrogens||v.ignoreHydrogensVariant!==b.ignoreHydrogensVariant||v.includeParent!==b.includeParent||v.floodfill!==b.floodfill}},u)}async function d(u,m,v,b,P){const{transform:C,field:l,idField:S,maxRadius:T}=await(0,i.computeStructureMolecularSurface)(m,v.size,b).runInContext(u.runtime),A={isoLevel:b.probeRadius,scalarField:b.floodfill!=="off"?f.Tensor.createFloodfilled(l,b.probeRadius,b.floodfill):l,idField:S},x=await(0,c.computeMarchingCubesLines)(A,P).runAsChild(u.runtime);n.Lines.transform(x,C);const M=h.Sphere3D.expand((0,h.Sphere3D)(),m.boundary.sphere,T);return x.setBoundingSphere(M),x}function p(u){return(0,y.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureMolecularSurfaceWireframeParams),createGeometry:d,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(m,v,b)=>{m.createGeometry=v.resolution!==b.resolution||v.probeRadius!==b.probeRadius||v.probePositions!==b.probePositions||v.ignoreHydrogens!==b.ignoreHydrogens||v.ignoreHydrogensVariant!==b.ignoreHydrogensVariant||v.includeParent!==b.includeParent||v.floodfill!==b.floodfill}},u)}})(XM)),XM}var jW;function Bue(){return jW||(jW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MolecularSurfaceRepresentationProvider=e.MolecularSurfaceParams=void 0,e.getMolecularSurfaceParams=f,e.MolecularSurfaceRepresentation=y;const t=Vue(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Eue(),s=Tt(),h={"molecular-surface-mesh":(_,g)=>(0,r.UnitsRepresentation)("Molecular surface mesh",_,g,t.MolecularSurfaceMeshVisual),"structure-molecular-surface-mesh":(_,g)=>(0,i.ComplexRepresentation)("Structure Molecular surface mesh",_,g,t.StructureMolecularSurfaceMeshVisual),"molecular-surface-wireframe":(_,g)=>(0,r.UnitsRepresentation)("Molecular surface wireframe",_,g,o.MolecularSurfaceWireframeVisual),"structure-molecular-surface-wireframe":(_,g)=>(0,i.ComplexRepresentation)("Structure Molecular surface mesh",_,g,o.StructureMolecularSurfaceWireframeVisual)};e.MolecularSurfaceParams={...t.MolecularSurfaceMeshParams,...o.MolecularSurfaceWireframeParams,visuals:n.ParamDefinition.MultiSelect(["molecular-surface-mesh"],n.ParamDefinition.objectToOptions(h)),bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},s.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},s.BaseGeometry.ShadingCategory)};function f(_,g){return e.MolecularSurfaceParams}function y(_,g){return c.Representation.createMulti("Molecular Surface",_,g,i.StructureRepresentationStateBuilder,h)}e.MolecularSurfaceRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"molecular-surface",label:"Molecular Surface",description:"Displays a molecular surface.",factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.MolecularSurfaceParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(HM)),HM}var KM={},YM={},GW;function Rue(){return GW||(GW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.OrientationEllipsoidMeshParams=void 0,e.OrientationEllipsoidMeshVisual=d,e.createOrientationEllipsoidMesh=u;const t=Ne(),r=mr(),n=Ke(),i=Rt(),c=$t(),o=Ge(),s=Ow(),h=rt(),f=at(),y=gt(),_=zt(),g=dt(),a=Tt();e.OrientationEllipsoidMeshParams={...r.UnitsMeshParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:2,step:.1}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},a.BaseGeometry.CustomQualityParamInfo)};function d(P){return(0,r.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.OrientationEllipsoidMeshParams),createGeometry:u,createLocationIterator:m,getLoci:v,eachLocation:b,setUpdateState:(C,l,S)=>{C.createGeometry=l.sizeFactor!==S.sizeFactor||l.detail!==S.detail}},P)}function p(P){if(n.Unit.Traits.is(P.traits,n.Unit.Trait.MultiChain)||n.Unit.Traits.is(P.traits,n.Unit.Trait.Partitioned))return!1;if(n.Unit.isCoarse(P))return!0;if(P.elements.length===0)return!1;P.model.atomicHierarchy.derived.residue.moleculeType;const C=P.residueIndex[P.elements[0]],l=P.model.atomicHierarchy.derived.residue.moleculeType[C];return!(l===g.MoleculeType.Ion||l===g.MoleculeType.Water)}function u(P,C,l,S,T,A){if(!p(C))return i.Mesh.createEmpty(A);const{detail:x,sizeFactor:M}=T,D=256,V=c.MeshBuilder.createState(D,D/2,A),R=C.principalAxes.boxAxes,{origin:E,dirA:I,dirB:B}=R,w=h.Axes3D.size((0,o.Vec3)(),R);o.Vec3.scale(w,w,M/2);const O=o.Vec3.create(w[2],w[1],w[0]);V.currentGroup=0,(0,s.addEllipsoid)(V,E,I,B,O,x+1);const F=c.MeshBuilder.getMesh(V),L=h.Sphere3D.expand((0,h.Sphere3D)(),C.boundary.sphere,1*T.sizeFactor);return F.setBoundingSphere(L),F}function m(P){const{group:C,structure:l}=P,S=1,T=C.units.length,A=n.StructureElement.Location.create(l),x=(M,D)=>{const V=C.units[D];return A.unit=V,A.element=V.elements[M],A};return(0,_.LocationIterator)(S,T,1,x)}function v(P,C,l){const{objectId:S,instanceId:T}=P;if(l===S){const{structure:A,group:x}=C,M=x.units[T],D=f.OrderedSet.ofBounds(0,M.elements.length);return n.StructureElement.Loci(A,[{unit:M,indices:D}])}return y.EmptyLoci}function b(P,C,l){let S=!1;if(!n.StructureElement.Loci.is(P))return!1;const{structure:T,group:A}=C;if(!n.Structure.areEquivalent(P.structure,T))return!1;const x=A.elements.length;for(const M of P.elements){const D=A.unitIndexMap.get(M.unit.id);D!==void 0&&f.OrderedSet.size(M.indices)===x&&l(f.Interval.ofSingleton(D))&&(S=!0)}return S}})(YM)),YM}var zW;function Oue(){return zW||(zW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.OrientationRepresentationProvider=e.OrientationParams=void 0,e.getOrientationParams=h,e.OrientationRepresentation=f;const t=Sa(),r=Ne(),n=Yr(),i=Lt(),c=Rue(),o=Tt(),s={"orientation-ellipsoid-mesh":(y,_)=>(0,t.UnitsRepresentation)("Orientation ellipsoid mesh",y,_,c.OrientationEllipsoidMeshVisual)};e.OrientationParams={...c.OrientationEllipsoidMeshParams,visuals:r.ParamDefinition.MultiSelect(["orientation-ellipsoid-mesh"],r.ParamDefinition.objectToOptions(s)),bumpFrequency:r.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory)};function h(y,_){return e.OrientationParams}function f(y,_){return i.Representation.createMulti("Orientation",y,_,n.StructureRepresentationStateBuilder,s)}e.OrientationRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"orientation",label:"Orientation",description:"Displays orientation ellipsoids for polymer chains.",factory:f,getParams:h,defaultValues:r.ParamDefinition.getDefaultValues(e.OrientationParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0})})(KM)),KM}var QM={},ZM={},S_={},HW;function AZ(){if(HW)return S_;HW=1,Object.defineProperty(S_,"__esModule",{value:!0}),S_.PointsBuilder=void 0;const e=_t(),t=ic(),r=e.ChunkedArray.add3,n=e.ChunkedArray.add;var i;return(function(c){function o(s=2048,h=1024,f){const y=e.ChunkedArray.create(Float32Array,3,h,f?f.centerBuffer.ref.value:s),_=e.ChunkedArray.create(Float32Array,1,h,f?f.groupBuffer.ref.value:s);return{add:(g,a,d,p)=>{r(y,g,a,d),n(_,p)},getPoints:()=>{const g=e.ChunkedArray.compact(y,!0),a=e.ChunkedArray.compact(_,!0);return t.Points.create(g,a,y.elementCount,f)}}}c.create=o})(i||(S_.PointsBuilder=i={})),S_}var WW;function MZ(){return WW||(WW=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.StructureElementPointParams=e.ElementPointParams=void 0,e.createElementPoint=y,e.ElementPointVisual=_,e.createStructureElementPoint=g,e.StructureElementPointVisual=a;const t=Ne(),r=mr(),n=ic(),i=AZ(),c=Ge(),o=zi(),s=rt(),h=Br(),f=c.Vec3.add;e.ElementPointParams={...r.UnitsPointsParams,pointSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})};function y(d,p,u,m,v,b){const{child:P}=u,C=P?.unitMap.get(p.id);if(P&&!C)return n.Points.createEmpty(b);const{stride:l}=v,S=b?.hasBoundingSphere()?s.Sphere3D.clone(b.boundingSphere):void 0,T=p.elements,A=T.length,x=i.PointsBuilder.create(A,A/10,b),M=(0,c.Vec3)(),D=p.conformation,V=(0,o.makeElementIgnoreTest)(u,p,v),R=(0,c.Vec3)();let E=0;if(l&&l>1||V)for(let w=0;w<A;++w)l&&w%l!==0||V&&V(T[w])||(D.invariantPosition(T[w],M),f(R,R,M),E+=1,x.add(M[0],M[1],M[2],w));else for(let w=0;w<A;++w)D.invariantPosition(T[w],M),f(R,R,M),E+=1,x.add(M[0],M[1],M[2],w);const I=x.getPoints();if(E===0)return I;let B;return c.Vec3.scale(R,R,1/E),S&&c.Vec3.distance(R,S.center)/S.radius<.1?B=S:B=s.Sphere3D.expand((0,s.Sphere3D)(),(C??p).boundary.sphere,1*v.sizeFactor),I.setBoundingSphere(B),I}function _(d){return(0,r.UnitsPointsVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementPointParams),createGeometry:y,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.stride!==m.stride}},d)}function g(d,p,u,m,v){const{child:b}=p,{stride:P}=m,C=v?.hasBoundingSphere()?s.Sphere3D.clone(v.boundingSphere):void 0,{getSerialIndex:l}=p.serialMapping,S=p.elementCount,T=i.PointsBuilder.create(S,S/2,v),A=(0,c.Vec3)();let x=0;for(const V of p.units){const R=b?.unitMap.get(V.id);if(b&&!R)return n.Points.createEmpty(v);const{elements:E,conformation:I}=V,B=E.length,w=(0,c.Vec3)(),O=(0,o.makeElementIgnoreTest)(p,V,m);if(P&&P>1||O)for(let F=0;F<B;F++){const L=E[F];P&&F%P!==0||O&&O(L)||(I.position(L,w),T.add(w[0],w[1],w[2],l(V,L)),f(A,A,w),x+=1)}else{for(let F=0;F<B;F++){const L=E[F];I.position(L,w),T.add(w[0],w[1],w[2],l(V,L)),f(A,A,w)}x+=B}}const M=T.getPoints();if(x===0)return M;let D;return c.Vec3.scale(A,A,1/x),C&&c.Vec3.distance(A,C.center)/C.radius<1?D=C:D=s.Sphere3D.expand((0,s.Sphere3D)(),(b??p).boundary.sphere,1*m.sizeFactor),M.setBoundingSphere(D),M}e.StructureElementPointParams={...h.ComplexPointsParams,pointSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),stride:t.ParamDefinition.Numeric(1,{min:1,max:100,step:1})};function a(d){return(0,h.ComplexPointsVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementPointParams),createGeometry:g,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(p,u,m)=>{p.createGeometry=u.ignoreHydrogens!==m.ignoreHydrogens||u.ignoreHydrogensVariant!==m.ignoreHydrogensVariant||u.traceOnly!==m.traceOnly||u.stride!==m.stride}},d)}})(ZM)),ZM}var $W;function kue(){return $W||($W=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PointRepresentationProvider=e.PointParams=void 0,e.getPointParams=h,e.PointRepresentation=f;const t=MZ(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Tt(),s={"element-point":(y,_)=>(0,r.UnitsRepresentation)("Element points",y,_,t.ElementPointVisual),"structure-element-point":(y,_)=>(0,i.ComplexRepresentation)("Structure element points",y,_,t.StructureElementPointVisual)};e.PointParams={...t.ElementPointParams,density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},o.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["element-point"],n.ParamDefinition.objectToOptions(s))};function h(y,_){let g=e.PointParams;return _.unitSymmetryGroups.length>500&&(g=n.ParamDefinition.clone(g),g.visuals.defaultValue=["structure-element-point"]),g}function f(y,_){return c.Representation.createMulti("Point",y,_,i.StructureRepresentationStateBuilder,s)}e.PointRepresentationProvider=(0,i.StructureRepresentationProvider)({n
7637ame:"point",label:"Point",description:"Displays elements (atoms, coarse spheres) as points.",factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PointParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0})})(QM)),QM}var JM={},eD={},XW;function Fue(){return XW||(XW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerTubeParams=e.DefaultPolymerTubeMeshProps=e.PolymerTubeMeshParams=void 0,e.PolymerTubeVisual=u;const t=Ne(),r=Rt(),n=$t(),i=io(),c=dt(),o=Gw(),s=mr(),h=CZ(),f=PZ(),y=Ge(),_=Jn(),g=Tt(),a=rt();e.PolymerTubeMeshParams={sizeFactor:t.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},g.BaseGeometry.CustomQualityParamInfo),linearSegments:t.ParamDefinition.Numeric(8,{min:1,max:48,step:1},g.BaseGeometry.CustomQualityParamInfo),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},g.BaseGeometry.CustomQualityParamInfo)},e.DefaultPolymerTubeMeshProps=t.ParamDefinition.getDefaultValues(e.PolymerTubeMeshParams);const d=(0,y.Vec3)();function p(m,v,b,P,C,l){const S=v.polymerElements.length;if(!S)return r.Mesh.createEmpty(l);const{sizeFactor:T,detail:A,linearSegments:x,radialSegments:M}=C,D=x*M*S+(M+1)*S*2,V=n.MeshBuilder.createState(D,D/10,l),R=(0,i.createCurveSegmentState)(x),{curvePoints:E,normalVectors:I,binormalVectors:B,widthValues:w,heightValues:O}=R;let F=0;const L=(0,i.PolymerTraceIterator)(v,b,{ignoreSecondaryStructure:!0});for(;L.hasNext;){const N=L.move();V.currentGroup=F;const j=(0,c.isNucleic)(N.moleculeType)?i.NucleicShift:i.StandardShift;(0,i.interpolateCurveSegment)(R,N,i.StandardTension,j);const H=N.coarseBackboneFirst||N.first,G=N.coarseBackboneLast||N.last,z=P.size.size(N.centerPrev)*T,W=P.size.size(N.center)*T,X=P.size.size(N.centerNext)*T;(0,i.interpolateSizes)(R,z,W,X,z,W,X,j);let Y=x;if(N.initial){Y=Math.max(Math.round(x*j),1);const K=x-Y;E.copyWithin(0,K*3),B.copyWithin(0,K*3),I.copyWithin(0,K*3),w.copyWithin(0,K*3),O.copyWithin(0,K*3),y.Vec3.fromArray(d,E,3),y.Vec3.normalize(d,y.Vec3.sub(d,N.p2,d)),y.Vec3.scaleAndAdd(d,N.p2,d,W*i.OverhangFactor),y.Vec3.toArray(d,E,0)}else N.final&&(Y=Math.max(Math.round(x*(1-j)),1),y.Vec3.fromArray(d,E,Y*3-3),y.Vec3.normalize(d,y.Vec3.sub(d,N.p2,d)),y.Vec3.scaleAndAdd(d,N.p2,d,W*i.OverhangFactor),y.Vec3.toArray(d,E,Y*3));N.initial===!0&&N.final===!0?(0,_.addSphere)(V,N.p2,W*2,A):M===2?(0,f.addRibbon)(V,E,I,B,Y,w,O,0):M===4?(0,h.addSheet)(V,E,I,B,Y,w,O,0,H,G):(0,o.addTube)(V,E,I,B,Y,M,w,O,H,G,"elliptical"),++F}const U=n.MeshBuilder.getMesh(V),q=a.Sphere3D.expand((0,a.Sphere3D)(),v.boundary.sphere,1*C.sizeFactor);return U.setBoundingSphere(q),U}e.PolymerTubeParams={...s.UnitsMeshParams,...e.PolymerTubeMeshParams};function u(m){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerTubeParams),createGeometry:p,createLocationIterator:v=>i.PolymerLocationIterator.fromGroup(v,{asSecondary:!0}),getLoci:i.getPolymerElementLoci,eachLocation:i.eachPolymerElement,setUpdateState:(v,b,P)=>{v.createGeometry=b.sizeFactor!==P.sizeFactor||b.detail!==P.detail||b.linearSegments!==P.linearSegments||b.radialSegments!==P.radialSegments}},m)}})(eD)),eD}var KW;function Lue(){return KW||(KW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PuttyRepresentationProvider=e.PuttyParams=void 0,e.getPuttyParams=y,e.PuttyRepresentation=_;const t=Fue(),r=Yw(),n=Ne(),i=Sa(),c=Yr(),o=Lt(),s=Ke(),h=Tt(),f={"polymer-tube":(g,a)=>(0,i.UnitsRepresentation)("Polymer tube mesh",g,a,t.PolymerTubeVisual),"polymer-gap":(g,a)=>(0,i.UnitsRepresentation)("Polymer gap cylinder",g,a,r.PolymerGapVisual)};e.PuttyParams={...t.PolymerTubeParams,...r.PolymerGapParams,sizeFactor:n.ParamDefinition.Numeric(.2,{min:0,max:10,step:.01}),visuals:n.ParamDefinition.MultiSelect(["polymer-tube","polymer-gap"],n.ParamDefinition.objectToOptions(f)),bumpFrequency:n.ParamDefinition.Numeric(2,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},h.BaseGeometry.ShadingCategory)};function y(g,a){const d=n.ParamDefinition.clone(e.PuttyParams);let p=!1,u=!1;
7637return a.units.forEach(m=>{!p&&s.Unit.isAtomic(m)&&m.nucleotideElements.length&&(p=!0),!u&&m.gapElements.length&&(u=!0)}),d.visuals.defaultValue=["polymer-tube"],u&&d.visuals.defaultValue.push("polymer-gap"),d}function _(g,a){return o.Representation.createMulti("Putty",g,a,c.StructureRepresentationStateBuilder,f)}e.PuttyRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"putty",label:"Putty",description:"Displays a tube smoothly following the trace atoms of polymers.",factory:_,getParams:y,defaultValues:n.ParamDefinition.getDefaultValues(e.PuttyParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uncertainty"},isApplicable:g=>g.polymerResidueCount>0})})(JM)),JM}var tD={},YW;function Nue(){return YW||(YW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SpacefillRepresentationProvider=e.SpacefillParams=void 0,e.getSpacefillParams=f,e.SpacefillRepresentation=y;const t=_Z(),r=Sa(),n=Ne(),i=Yr(),c=Lt(),o=Tt(),s={"element-sphere":(_,g)=>(0,r.UnitsRepresentation)("Sphere mesh/impostor",_,g,t.ElementSphereVisual),"structure-element-sphere":(_,g)=>(0,i.ComplexRepresentation)("Structure sphere mesh/impostor",_,g,t.StructureElementSphereVisual)};e.SpacefillParams={...t.ElementSphereParams,bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},o.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},o.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["element-sphere"],n.ParamDefinition.objectToOptions(s))};let h;function f(_,g){let a=e.SpacefillParams;return g.isCoarseGrained&&(h||(h=n.ParamDefinition.clone(e.SpacefillParams),h.sizeFactor.defaultValue=2),a=h),g.unitSymmetryGroups.length>500&&(a=n.ParamDefinition.clone(a),a.visuals.defaultValue=["structure-element-sphere"]),a}function y(_,g){return c.Representation.createMulti("Spacefill",_,g,i.StructureRepresentationStateBuilder,s)}e.SpacefillRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"spacefill",label:"Spacefill",description:"Displays atomic/coarse elements as spheres.",factory:y,getParams:f,defaultValues:n.ParamDefinition.getDefaultValues(e.SpacefillParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:_=>_.elementCount>0})})(tD)),tD}var rD={},nD={},QW;function que(){return QW||(QW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureIntraUnitBondLineParams=e.IntraUnitBondLineParams=void 0,e.IntraUnitBondLineVisual=v,e.StructureIntraUnitBondLineVisual=C;const t=Ne(),r=Ke(),n=Ge(),i=et(),c=Ca(),o=mr(),s=dt(),h=rC(),f=rt(),y=kn(),_=is(),g=Vt(),a=Br(),d=zt(),p=s.BondType.is;function u(l,S,T,A){const x=r.StructureElement.Location.create(S,l),M=l.elements,D=l.bonds,{edgeCount:V,a:R,b:E,edgeProps:I,offset:B}=D,{order:w,flags:O}=I,{sizeFactor:F,aromaticBonds:L,includeTypes:U,excludeTypes:q,multipleBonds:N,metalCoordination:k}=A,j=N==="off",H=N==="symmetric",G=k==="dashed",z=s.BondType.fromNames(U),W=s.BondType.fromNames(q),X=(0,h.ignoreBondType)(z,W,s.BondType.Flag.Computed),Y=(0,n.Vec3)(),K=l.conformation,{elementRingIndices:Q,elementAromaticRingIndices:J}=l.rings,ae=L?l.resonance.delocalizedTriplets:void 0;return{linkCount:V*2,referencePosition:te=>{let ne=R[te],$=E[te];const ie=ae?.getThirdElement(ne,$);if(ie!==void 0)return K.invariantPosition(M[ie],Y);ne>$&&([ne,$]=[$,ne]),B[ne+1]-B[ne]===1&&([ne,$]=[$,ne]);const Z=J.get(ne)||Q.get(ne);let re=0;for(let oe=B[ne],ce=B[ne+1];oe<ce;++oe){const ue=E[oe];if(ue!==$&&ue!==ne)if(Z){const pe=J.get(ue)||Q.get(ue);if(!pe)continue;const he=(0,g.arrayIntersectionSize)(Z,pe);he>re&&(re=he,K.invariantPosition(M[ue],Y))}else return K.invariantPosition(M[ue],Y)}return re>0?Y:null},position:(te,ne,$,ie)=>{K.invariantPosition(M[R[$]],te),K.invariantPosition(M[E[$]],ne)},style:te=>{const ne=w[te],$=O[te];if(p($,s.BondType.Flag.MetallicCoordination))return G?c.LinkStyle.Dashed:c.LinkStyle.Solid;if(p($,s.BondType.Flag.HydrogenBond))return c.LinkStyle.Dashed;if(ne===3)return j?c.LinkStyle.Solid:H?c.LinkStyle.Triple:c.LinkStyle.OffsetTriple;if(L){const ie=R[te],Z=E[te],re=J.get(ie),oe=J.get(Z),ce=re&&oe?(0,g.arrayIntersectionSize)(re,oe):0;if(p($,s.BondType.Flag.Aromatic)||ce&&!X)return ce===2?c.LinkStyle.MirroredAromatic:c.LinkStyle.Aromatic}return ne!==2||j?c.LinkStyle.Solid:H?c.LinkStyle.Double:c.LinkStyle.OffsetDouble},radius:te=>{x.element=M[R[te]];const ne=T.size.size(x);x.element=M[E[te]];const $=T.size.size(x);return Math.min(ne,$)*F},ignore:(0,h.makeIntraBondIgnoreTest)(S,l,A)}}function m(l,S,T,A,x,M){if(!r.Unit.isAtomic(S)||!(0,h.hasUnitVisibleBonds)(S,x)||!S.bonds.edgeCount)return y.Lines.createEmpty(M);const{child:D}=T,V=D?.unitMap.get(S.id);if(D&&!V)return y.Lines.createEmpty(M);const R=u(S,T,A,x),{lines:E,boundingSphere:I}
7637=(0,c.createLinkLines)(l,R,x,M);if(I)E.setBoundingSphere(I);else if(E.lineCount>0){const B=f.Sphere3D.expand((0,f.Sphere3D)(),(V??S).boundary.sphere,1*x.sizeFactor);E.setBoundingSphere(B)}return E}e.IntraUnitBondLineParams={...o.UnitsLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function v(l){return(0,o.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IntraUnitBondLineParams),createGeometry:m,createLocationIterator:S=>h.BondIterator.fromGroup(S),getLoci:h.getIntraBondLoci,eachLocation:h.eachIntraBond,setUpdateState:(S,T,A,x,M,D,V)=>{S.createGeometry=T.sizeFactor!==A.sizeFactor||T.linkScale!==A.linkScale||T.linkSpacing!==A.linkSpacing||T.aromaticDashCount!==A.aromaticDashCount||T.dashCount!==A.dashCount||T.ignoreHydrogens!==A.ignoreHydrogens||T.ignoreHydrogensVariant!==A.ignoreHydrogensVariant||!(0,i.arrayEqual)(T.includeTypes,A.includeTypes)||!(0,i.arrayEqual)(T.excludeTypes,A.excludeTypes)||T.aromaticBonds!==A.aromaticBonds||T.multipleBonds!==A.multipleBonds||T.metalCoordination!==A.metalCoordination;const R=D.group.units[0],E=V.group.units[0];r.Unit.isAtomic(R)&&r.Unit.isAtomic(E)&&(_.IntAdjacencyGraph.areEqual(R.bonds,E.bonds)||(S.createGeometry=!0,S.updateTransform=!0,S.updateColor=!0,S.updateSize=!0))}},l)}function b(l,S,T){const A=[],{bondCount:x,unitIndex:M,unitEdgeIndex:D,unitGroupIndex:V}=l.intraUnitBondMapping,{child:R}=l;for(const E of l.unitSymmetryGroups){const I=E.units[0],B=R?.unitMap.get(I.id),w=r.Unit.isAtomic(I)&&!(R&&!B)?u(I,l,S,T):c.EmptyLinkBuilderProps;A.push({group:E,props:w})}return{linkCount:x,referencePosition:E=>{const{group:I,props:B}=A[M[E]];if(!B.referencePosition)return null;const w=B.referencePosition(D[E]);if(!w)return null;const O=I.units[V[E]];return n.Vec3.transformMat4(w,w,O.conformation.operator.matrix),w},position:(E,I,B,w)=>{const{group:O,props:F}=A[M[B]];F.position(E,I,D[B],w);const L=O.units[V[B]];n.Vec3.transformMat4(E,E,L.conformation.operator.matrix),n.Vec3.transformMat4(I,I,L.conformation.operator.matrix)},style:E=>{const{props:I}=A[M[E]];return I.style?I.style(D[E]):c.LinkStyle.Solid},radius:E=>{const{props:I}=A[M[E]];return I.radius(D[E])},ignore:E=>{const{props:I}=A[M[E]];return I.ignore?I.ignore(D[E]):!1},stub:E=>{const{props:I}=A[M[E]];return I.stub?I.stub(D[E]):!1}}}function P(l,S,T,A,x){if(!(0,h.hasStructureVisibleBonds)(S,A)||!S.intraUnitBondMapping.bondCount)return y.Lines.createEmpty(x);const M=b(S,T,A),{lines:D,boundingSphere:V}=(0,c.createLinkLines)(l,M,A,x);if(V)D.setBoundingSphere(V);else if(D.lineCount>0){const{child:R}=S,E=f.Sphere3D.expand((0,f.Sphere3D)(),(R??S).boundary.sphere,1*A.sizeFactor);D.setBoundingSphere(E)}return D}e.StructureIntraUnitBondLineParams={...a.ComplexLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function C(l){return(0,a.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureIntraUnitBondLineParams),createGeometry:P,createLocationIterator:(S,T)=>(0,h.hasStructureVisibleBonds)(S,T)?h.BondIterator.fromStructureGroups(S):d.EmptyLocationIterator,getLoci:h.getStructureGroupsBondLoci,eachLocation:h.eachStructureGroupsBond,setUpdateState:(S,T,A,x,M,D,V)=>{S.createGeometry=T.sizeFactor!==A.sizeFactor||T.linkScale!==A.linkScale||T.linkSpacing!==A.linkSpacing||T.aromaticDashCount!==A.aromaticDashCount||T.dashCount!==A.dashCount||T.ignoreHydrogens!==A.ignoreHydrogens||T.ignoreHydrogensVariant!==A.ignoreHydrogensVariant||!(0,i.arrayEqual)(T.includeTypes,A.includeTypes)||!(0,i.arrayEqual)(T.excludeTypes,A.excludeTypes)||T.multipleBonds!==A.multipleBonds||T.metalCoordination!==A.metalCoordination,(0,h.hasStructureVisibleBonds)(D,T)&&D.interUnitBonds!==V.interUnitBonds&&(S.createGeometry=!0,S.updateTransform=!0,S.updateColor=!0,S.updateSize=!0)}},l)}})(nD)),nD}var iD={},ZW;function Uue(){return ZW||(ZW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InterUnitBondLineParams=void 0,e.getInterUnitBondLineBuilderProps=d,e.InterUnitBondLineVisual=u;const t=Ne(),r=Ke(),n=Ge(),i=et(),c=Ca(),o=Br(),s=dt(),h=rC(),f=kn(),y=rt(),_=zt(),g=new r.Bond.ElementBondIterator;function a(m,v,b,P){for(g.setElement(v,b,P);g.hasNext;){const C=g.move();return C.otherUnit.conformation.position(C.otherUnit.elements[C.otherIndex],m),m}return null}function d(m,v,b){const P=m.interUnitBonds,{edgeCount:C,edges:l}=P,{sizeFactor:S,aromaticBonds:T,multipleBonds:A,metalCoordination:x}=b,M=A==="off",D=A==="symmetric",V=x==="dashed",R=(0,n.Vec3)(),E=r.StructureElement.Location.create();return{linkCount:C,referencePosition:I=>{const B=l[I];let w,O,F,L;if(B.unitA<B.unitB)w=m.unitMap.get(B.unitA),O=m.unitMap.get(B.unitB),F=B.indexA,L=B.indexB;else if(B.unitA>B.unitB)w=m.unitMap.get(B.unitB),O=m.unitMap.get(B.unitA),F=B.indexB,L=B.indexA;else throw new Error("same units in createInterUnitBondLines");return a(R,m,w,F)||a(R,m,O,L)},position:(I,B,w,O)=>{const F=l[w],L=m.unitMap.get(F.unitA),U=m.unitMap.get(F.unitB);L.conformation.position(L.elements[F.indexA],I),U.conformation.position(U.elements[F.indexB],B)},style:I=>{const B=l[I].props.order,w=i.BitFlags.create(l[I].props.flag);return s.BondType.is(w,s.BondType.Flag.MetallicCoordination)?V?c.LinkStyle.Dashed:c.LinkStyle.Solid:s.BondType.is(w,s.BondType.Flag.HydrogenBond)?c.LinkStyle.Dashed:B===3?M?c.LinkStyle.Solid:D?c.LinkStyle.Triple:c.LinkStyle.OffsetTriple:T&&s.BondType.is(w,s.BondType.Flag.Aromatic)?c.LinkStyle.Aromatic:B!==2||M?c.LinkStyle.Solid:D?c.LinkStyle.Double:c.LinkStyle.OffsetDouble},radius:I=>{const B=l[I];E.structure=m,E.unit=m.unitMap.get(B.unitA),E.element=E.unit.elements[B.indexA];const w=v.size.size(E);E.unit=m.unitMap.get(B.unitB),E.element=E.unit.elements[B.indexB];const O=v.size.size(E);return Math.min(w,O)*S},ignore:(0,h.makeInterBondIgnoreTest)(m,b)}}function p(m,v,b,P,C){if(!(0,h.hasStructureVisibleBonds)(v,P)||!v.interUnitBonds.edgeCount)return f.Lines.createEmpty(C);const l=d(v,b,P),{lines:S,boundingSphere:T}
7637=(0,c.createLinkLines)(m,l,P,C);if(T)S.setBoundingSphere(T);else if(S.lineCount>0){const{child:A}=v,x=y.Sphere3D.expand((0,y.Sphere3D)(),(A??v).boundary.sphere,1*P.sizeFactor);S.setBoundingSphere(x)}return S}e.InterUnitBondLineParams={...o.ComplexLinesParams,...h.BondLineParams,includeParent:t.ParamDefinition.Boolean(!1)};function u(m){return(0,o.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.InterUnitBondLineParams),createGeometry:p,createLocationIterator:(v,b)=>(0,h.hasStructureVisibleBonds)(v,b)?h.BondIterator.fromStructure(v):_.EmptyLocationIterator,getLoci:h.getInterBondLoci,eachLocation:h.eachInterBond,setUpdateState:(v,b,P,C,l,S,T)=>{v.createGeometry=b.sizeFactor!==P.sizeFactor||b.linkScale!==P.linkScale||b.linkSpacing!==P.linkSpacing||b.aromaticDashCount!==P.aromaticDashCount||b.dashCount!==P.dashCount||b.ignoreHydrogens!==P.ignoreHydrogens||b.ignoreHydrogensVariant!==P.ignoreHydrogensVariant||!(0,i.arrayEqual)(b.includeTypes,P.includeTypes)||!(0,i.arrayEqual)(b.excludeTypes,P.excludeTypes)||b.multipleBonds!==P.multipleBonds||b.metalCoordination!==P.metalCoordination,(0,h.hasStructureVisibleBonds)(S,b)&&S.interUnitBonds!==T.interUnitBonds&&(v.createGeometry=!0,v.updateTransform=!0,v.updateColor=!0,v.updateSize=!0)}},m)}})(iD)),iD}var aD={},JW;function jue(){return JW||(JW=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.StructureElementCrossParams=e.ElementCrossParams=void 0,e.createElementCross=m,e.ElementCrossVisual=v,e.createStructureElementCross=b,e.StructureElementCrossVisual=P;const t=Ne(),r=mr(),n=Ke(),i=Ge(),c=zi(),o=rt(),s=kn(),h=ac(),f=ra(),y=rC(),_=Br(),g=i.Vec3.add,a=i.Vec3.scaleAndAdd,d=i.Vec3.unitX,p=i.Vec3.unitY,u=i.Vec3.unitZ;e.ElementCrossParams={...r.UnitsLinesParams,lineSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),crosses:t.ParamDefinition.Select("lone",t.ParamDefinition.arrayToOptions(["lone","all"])),crossSize:t.ParamDefinition.Numeric(.35,{min:0,max:2,step:.01})};function m(C,l,S,T,A,x){const{child:M}=S;if(M&&!M.unitMap.get(l.id))return s.Lines.createEmpty(x);const D=x?.hasBoundingSphere()?o.Sphere3D.clone(x.boundingSphere):void 0,V=l.elements,R=V.length,E=h.LinesBuilder.create(R,R/10,x),I=(0,i.Vec3)(),B=(0,i.Vec3)(),w=(0,i.Vec3)(),O=l.conformation,F=(0,c.makeElementIgnoreTest)(S,l,A),L=A.crossSize/2,U=A.crosses==="lone",q=(0,i.Vec3)();let N=0;for(let H=0;H<R;++H)F&&F(V[H])||U&&n.Unit.isAtomic(l)&&(0,y.hasUnitVisibleBonds)(l,A)&&(0,f.bondCount)(S,l,H)!==0||(O.invariantPosition(V[H],I),g(q,q,I),N+=1,a(B,I,d,L),a(w,I,d,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H),a(B,I,p,L),a(w,I,p,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H),a(B,I,u,L),a(w,I,u,-L),E.add(B[0],B[1],B[2],w[0],w[1],w[2],H));const k=E.getLines();if(N===0)return k;let j;return i.Vec3.scale(q,q,1/N),D&&i.Vec3.distance(q,D.center)/D.radius<.1?j=D:j=o.Sphere3D.expand((0,o.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor),k.setBoundingSphere(j),k}function v(C){return(0,r.UnitsLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.ElementCrossParams),createGeometry:m,createLocationIterator:c.ElementIterator.fromGroup,getLoci:c.getElementLoci,eachLocation:c.eachElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.ignoreHydrogens!==T.ignoreHydrogens||S.ignoreHydrogensVariant!==T.ignoreHydrogensVariant||S.traceOnly!==T.traceOnly||S.crosses!==T.crosses||S.crossSize!==T.crossSize}},C)}function b(C,l,S,T,A){const{child:x}=l,M=A?.hasBoundingSphere()?o.Sphere3D.clone(A.boundingSphere):void 0,{getSerialIndex:D}=l.serialMapping,V=l.elementCount,R=h.LinesBuilder.create(V,V/2,A),E=(0,i.Vec3)(),I=(0,i.Vec3)(),B=(0,i.Vec3)(),w=T.crossSize/2,O=T.crosses==="lone",F=(0,i.Vec3)();let L=0;for(const N of l.units){const k=x?.unitMap.get(N.id);if(x&&!k)return s.Lines.createEmpty(A);const{elements:j,conformation:H}=N,G=j.length,z=(0,c.makeElementIgnoreTest)(l,N,T);for(let W=0;W<G;W++){if(z&&z(j[W])||O&&n.Unit.isAtomic(N)&&(0,y.hasUnitVisibleBonds)(N,T)&&(0,f.bondCount)(l,N,W)!==0)continue;H.position(j[W],E),g(F,F,E),L+=1;const X=D(N,j[W]);a(I,E,d,w),a(B,E,d,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X),a(I,E,p,w),a(B,E,p,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X),a(I,E,u,w),a(B,E,u,-w),R.add(I[0],I[1],I[2],B[0],B[1],B[2],X)}}const U=R.getLines();if(L===0)return U;let q;return i.Vec3.scale(F,F,1/L),M&&i.Vec3.distance(F,M.center)/M.radius<1?q=M:q=o.Sphere3D.expand((0,o.Sphere3D)(),(x??l).boundary.sphere,1*T.sizeFactor),U.setBoundingSphere(q),U}e.StructureElementCrossParams={..._.ComplexLinesParams,lineSizeAttenuation:t.ParamDefinition.Boolean(!1),ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),traceOnly:t.ParamDefinition.Boolean(!1),crosses:t.ParamDefinition.Select("lone",t.ParamDefinition.arrayToOptions(["lone","all"])),crossSize:t.ParamDefinition.Numeric(.35,{min:0,max:2,step:.01})};function P(C){return(0,_.ComplexLinesVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.StructureElementCrossParams),createGeometry:b,createLocationIterator:c.ElementIterator.fromStructure,getLoci:c.getSerialElementLoci,eachLocation:c.eachSerialElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.ignoreHydrogens!==T.ignoreHydrogens||S.ignoreHydrogensVariant!==T.ignoreHydrogensVariant||S.traceOnly!==T.traceOnly||S.crosses!==T.crosses||S.crossSize!==T.crossSize}},C)}})(aD)),aD}var e$;function Gue(){return e$||(e$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.LineRepresentationProvider=e.LineParams=void 0,e.getLineParams=p,e.LineRepresentation=u;const t=que(),r=Uue(),n=Ne(),i=Sa(),c=JS(),o=Yr(),s=Lt(),h=Ke(),f=Qf(),y=MZ(),_=jue(),g=ic(),a=Tt(),d={"intra-bond":(m,v)=>(0,i.UnitsRepresentation)("Intra-unit bond line",m,v,t.IntraUnitBondLineVisual),"inter-bond":(m,v)=>(0,c.ComplexRepresentation)("Inter-unit bond line",m,v,r.InterUnitBondLineVisual),"element-point":(m,v)=>(0,i.UnitsRepresentation)("Points",m,v,y.ElementPointVisual),"element-cross":(m,v)=>(0,i.UnitsRepresentation)("Crosses",m,v,_.ElementCrossVisual),"structure-intra-bond":(m,v)=>(0,c.ComplexRepresentation)("Structure intra-unit bond line",m,v,t.StructureIntraUnitBondLineVisual),"structure-element-point":(m,v)=>(0,c.ComplexRepresentation)("Structure element points",m,v,y.StructureElementPointVisual),"structure-element-cross":(m,v)=>(0,c.ComplexRepresentation)("Structure element crosses",m,v,_.StructureElementCrossVisual)};e.LineParams={...t.IntraUnitBondLineParams,...r.InterUnitBondLineParams,...y.ElementPointParams,..._.ElementCrossParams,pointStyle:n.ParamDefinition.Select("circle",n.ParamDefinition.objectToOptions(g.Points.StyleTypes)),multipleBonds:n.ParamDefinition.Select("offset",n.ParamDefinition.arrayToOptions(["off","symmetric","offset"])),includeParent:n.ParamDefinition.Boolean(!1),sizeFactor:n.ParamDefinition.Numeric(2,{min:.01,max:10,step:.01}),unitKinds:(0,f.getUnitKindsParam)(["atomic"]),visuals:n.ParamDefinition.MultiSelect(["intra-bond","inter-bond","element-point","element-cross"],n.ParamDefinition.objectToOptions(d)),density:n.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},a.BaseGeometry.ShadingCategory)};function p(m,v){let b=e.LineParams;return h.Structure.getSize(v)>=h.Structure.Size.Huge?(b=n.ParamDefinition.clone(b),b.visuals.defaultValue=["intra-bond","element-point","element-cross"]):v.unitSymmetryGroups.length>500&&(b=n.ParamDefinition.clone(b),b.visuals.defaultValue=["structure-intra-bond","structure-element-point","structure-element-cross"]),b}function u(m,v){return s.Representation.createMulti("Line",m,v,o.StructureRepresentationStateBuilder,d)}e.LineRepresentationProvider=(0,o.StructureRepresentationProvider)({name:"line",label:"Line",description:"Displays bonds as lines and atoms as points or croses.",factory:u,getParams:p,defaultValues:n.ParamDefinition.getDefaultValues(e.LineParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:m=>m.elementCount>0,getData:(m,v)=>v.includeParent?m.asParent():m,mustRecreate:(m,v)=>m.includeParent!==v.includeParent})})(rD)),rD}var oD={},sD={},t$;function zue(){return t$||(t$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.UnitsGaussianDensityVolumeParams=e.GaussianDensityVolumeParams=void 0,e.GaussianDensityVolumeVisual=y,e.UnitsGaussianDensityVolumeVisual=g;const t=Ne(),r=Qw(),n=Hf(),i=Br(),c=Ge(),o=zi(),s=rt(),h=mr();function f(a,d,p,u,m){const{webgl:v}=a;if(!v)throw new Error("GaussianDensityVolume requires `webgl`");const b=c.Vec3.create(0,1,2),P={min:0,max:1,mean:.04,sigma:.01},C=S=>{const T=S?S.gridTexture.ref.value:void 0,A=(0,r.computeStructureGaussianDensityTexture)(d,p.size,u,v,T),{transform:x,texture:M,bbox:D,gridDim:V}=A,R=c.Mat4.mul((0,c.Mat4)(),x,c.Mat4.fromScaling((0,c.Mat4)(),V)),E=c.Mat4.getScaling((0,c.Vec3)(),x),I=n.DirectVolume.create(D,V,x,R,E,M,P,!0,b,"byte",S),B=s.Sphere3D.expand((0,s.Sphere3D)(),d.boundary.sphere,A.maxRadius);return I.setBoundingSphere(B),I},l=C(m);return l.meta.reset=()=>{C(l)},l}e.GaussianDensityVolumeParams={...i.ComplexDirectVolumeParams,...r.GaussianDensityParams,ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:t.ParamDefinition.Boolean(!1,{isHidden:!0})};function y(a){return(0,i.ComplexDirectVolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.GaussianDensityVolumeParams),createGeometry:f,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(d,p,u)=>{p.resolution!==u.resolution&&(d.createGeometry=!0),p.radiusOffset!==u.radiusOffset&&(d.createGeometry=!0),p.smoothness!==u.smoothness&&(d.createGeometry=!0),p.ignoreHydrogens!==u.ignoreHydrogens&&(d.createGeometry=!0),p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant&&(d.createGeometry=!0),p.traceOnly!==u.traceOnly&&(d.createGeometry=!0),p.includeParent!==u.includeParent&&(d.createGeometry=!0)},dispose:d=>{d.gridTexture.ref.value.destroy()}},a)}function _(a,d,p,u,m,v){const{webgl:b}=a;if(!b)throw new Error("GaussianDensityVolume requires `webgl`");const P=c.Vec3.create(0,1,2),C={min:0,max:1,mean:.04,sigma:.01},l=T=>{const A=T?T.gridTexture.ref.value:void 0,x=(0,r.computeUnitGaussianDensityTexture)(p,d,u.size,m,b,A),{transform:M,texture:D,bbox:V,gridDim:R}=x,E=c.Mat4.mul((0,c.Mat4)(),M,c.Mat4.fromScaling((0,c.Mat4)(),R)),I=c.Mat4.getScaling((0,c.Vec3)(),M),B=n.DirectVolume.create(V,R,M,E,I,D,C,!0,P,"byte",T),w=s.Sphere3D.expand((0,s.Sphere3D)(),d.boundary.sphere,x.maxRadius);return B.setBoundingSphere(w),B},S=l(v);return S.meta.reset=()=>{l(S)},S}e.UnitsGaussianDensityVolumeParams={...h.UnitsDirectVolumeParams,...r.GaussianDensityParams,ignoreHydrogens:t.ParamDefinition.Boolean(!1),ignoreHydrogensVariant:t.ParamDefinition.Select("all",t.ParamDefinition.arrayToOptions(["all","non-polar"])),includeParent:t.ParamDefinition.Boolean(!1,{isHidden:!0})};
7637function g(a){return(0,h.UnitsDirectVolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.UnitsGaussianDensityVolumeParams),createGeometry:_,createLocationIterator:o.ElementIterator.fromGroup,getLoci:o.getElementLoci,eachLocation:o.eachElement,setUpdateState:(d,p,u)=>{p.resolution!==u.resolution&&(d.createGeometry=!0),p.radiusOffset!==u.radiusOffset&&(d.createGeometry=!0),p.smoothness!==u.smoothness&&(d.createGeometry=!0),p.ignoreHydrogens!==u.ignoreHydrogens&&(d.createGeometry=!0),p.ignoreHydrogensVariant!==u.ignoreHydrogensVariant&&(d.createGeometry=!0),p.traceOnly!==u.traceOnly&&(d.createGeometry=!0),p.includeParent!==u.includeParent&&(d.createGeometry=!0)},dispose:d=>{d.gridTexture.ref.value.destroy()}},a)}})(sD)),sD}var r$;function Hue(){return r$||(r$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.GaussianVolumeRepresentationProvider=e.GaussianVolumeParams=void 0,e.getGaussianVolumeParams=o,e.GaussianVolumeRepresentation=s;const t=Ne(),r=zue(),n=Yr(),i=Lt(),c={"gaussian-volume":(h,f)=>(0,n.ComplexRepresentation)("Gaussian volume",h,f,r.GaussianDensityVolumeVisual),"units-gaussian-volume":(h,f)=>(0,n.UnitsRepresentation)("Units-Gaussian volume",h,f,r.UnitsGaussianDensityVolumeVisual)};e.GaussianVolumeParams={...r.GaussianDensityVolumeParams,jumpLength:t.ParamDefinition.Numeric(4,{min:0,max:20,step:.1}),visuals:t.ParamDefinition.MultiSelect(["gaussian-volume"],t.ParamDefinition.objectToOptions(c))};function o(h,f){return e.GaussianVolumeParams}function s(h,f){return i.Representation.createMulti("Gaussian Volume",h,f,n.StructureRepresentationStateBuilder,c)}e.GaussianVolumeRepresentationProvider=(0,n.StructureRepresentationProvider)({name:"gaussian-volume",label:"Gaussian Volume",description:"Displays a gaussian molecular density using direct volume rendering.",factory:s,getParams:o,defaultValues:t.ParamDefinition.getDefaultValues(e.GaussianVolumeParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:h=>h.elementCount>0})})(oD)),oD}var cD={},uD={},n$;function Wue(){return n$||(n$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PolymerBackboneCylinderParams=void 0,e.PolymerBackboneCylinderVisual=b,e.PolymerBackboneCylinderImpostorVisual=C,e.PolymerBackboneCylinderMeshVisual=S;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=Ge(),o=io(),s=ba(),h=mr(),f=Tt(),y=rt(),_=dt(),g=no(),a=qw(),d=Kw(),p=Er(),u=c.Vec3.scale,m=c.Vec3.add,v=c.Vec3.sub;e.PolymerBackboneCylinderParams={...h.UnitsMeshParams,...h.UnitsCylindersParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:t.ParamDefinition.Numeric(16,{min:2,max:56,step:2},f.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function b(T,A,x,M){return x.tryUseImpostor&&(0,p.checkCylinderImpostorSupport)(M)?C(T):S(T)}function P(T,A,x,M,D,V){const R=A.polymerElements.length;if(!R)return g.Cylinders.createEmpty(V);const E=R*2,I=a.CylindersBuilder.create(E,E/4,V),B=A.conformation,w=(0,c.Vec3)(),O=(0,c.Vec3)(),F=(0,c.Vec3)(),L=function(N,k,j,H,G){B.invariantPosition(N,w),B.invariantPosition(k,O);const W=(0,_.isNucleic)(G)?o.NucleicShift:o.StandardShift;m(F,w,u(F,v(F,O,w),W)),I.add(w[0],w[1],w[2],F[0],F[1],F[2],1,!1,!1,2,j),I.add(F[0],F[1],F[2],O[0],O[1],O[2],1,!1,!1,2,H)};(0,d.eachPolymerBackboneLink)(A,L);const U=I.getCylinders(),q=y.Sphere3D.expand((0,y.Sphere3D)(),A.boundary.sphere,1*D.sizeFactor);return U.setBoundingSphere(q),U}function C(T){return(0,h.UnitsCylindersVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneCylinderParams),createGeometry:P,createLocationIterator:A=>o.PolymerLocationIterator.fromGroup(A),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(A,x,M)=>{},mustRecreate:(A,x,M)=>!x.tryUseImpostor||!M},T)}function l(T,A,x,M,D,V){const R=A.polymerElements.length;if(!R)return n.Mesh.createEmpty(V);const{radialSegments:E,sizeFactor:I}=D,B=E*2*R*2,w=i.MeshBuilder.createState(B,B/10,V),O=A.conformation,F=(0,c.Vec3)(),L=(0,c.Vec3)(),U={radiusTop:1,radiusBottom:1,radialSegments:E},q=r.StructureElement.Location.create(x,A),N=r.StructureElement.Location.create(x,A),k=function(G,z,W,X,Y){q.element=G,N.element=z,O.invariantPosition(q.element,F),O.invariantPosition(N.element,L);const Q=(0,_.isNucleic)(Y)?o.NucleicShift:o.StandardShift;U.radiusTop=U.radiusBottom=M.size.size(q)*I,w.currentGroup=W,(0,s.addCylinder)(w,F,L,Q,U),U.radiusTop=U.radiusBottom=M.size.size(N)*I,w.currentGroup=X,(0,s.addCylinder)(w,L,F,1-Q,U)};(0,d.eachPolymerBackboneLink)(A,k);const j=i.MeshBuilder.getMesh(w),H=y.Sphere3D.expand((0,y.Sphere3D)(),A.boundary.sphere,1*D.sizeFactor);return j.setBoundingSphere(H),j}function S(T){return(0,h.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneCylinderParams),createGeometry:l,createLocationIterator:A=>o.PolymerLocationIterator.fromGroup(A),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(A,x,M)=>{A.createGeometry=x.sizeFactor!==M.sizeFactor||x.radialSegments!==M.radialSegments},mustRecreate:(A,x,M)=>x.tryUseImpostor&&!!M},T)}})(uD)),uD}var lD={},i$;function $ue(){return i$||(i$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.PolymerBackboneSphereParams=void 0,e.PolymerBackboneSphereVisual=u,e.PolymerBackboneSphereImpostorVisual=v,e.PolymerBackboneSphereMeshVisual=P;const t=Ne(),r=Ke(),n=Rt(),i=$t(),c=Ge(),o=io(),s=mr(),h=Tt(),f=rt(),y=Jn(),_=Xf(),g=ro(),a=P2(),d=Kw(),p=Er();e.PolymerBackboneSphereParams={...s.UnitsMeshParams,...s.UnitsSpheresParams,sizeFactor:t.ParamDefinition.Numeric(.3,{min:0,max:10,step:.01}),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},h.BaseGeometry.CustomQualityParamInfo),tryUseImpostor:t.ParamDefinition.Boolean(!0)};function u(C,l,S,T){return S.tryUseImpostor&&(0,p.checkSphereImpostorSupport)(T)?v(C):P(C)}function m(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return g.Spheres.createEmpty(x);const D=a.SpheresBuilder.create(M,M/2,x),V=l.conformation,R=(0,c.Vec3)(),E=(w,O)=>{V.invariantPosition(w,R),D.add(R[0],R[1],R[2],O)};(0,d.eachPolymerBackboneElement)(l,E);const I=D.getSpheres(),B=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return I.setBoundingSphere(B),I}function v(C){return(0,s.UnitsSpheresVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneSphereParams),createGeometry:m,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{},mustRecreate:(l,S,T)=>!S.tryUseImpostor||!T},C)}function b(C,l,S,T,A,x){const M=l.polymerElements.length;if(!M)return n.Mesh.createEmpty(x);const{detail:D,sizeFactor:V}=A,R=M*(0,_.sphereVertexCount)(D),E=i.MeshBuilder.createState(R,R/2,x),I=l.conformation,B=(0,c.Vec3)(),w=r.StructureElement.Location.create(S,l),O=(U,q)=>{w.element=U,I.invariantPosition(w.element,B),E.currentGroup=q,(0,y.addSphere)(E,B,T.size.size(w)*V,D)};(0,d.eachPolymerBackboneElement)(l,O);const F=i.MeshBuilder.getMesh(E),L=f.Sphere3D.expand((0,f.Sphere3D)(),l.boundary.sphere,1*A.sizeFactor);return F.setBoundingSphere(L),F}function P(C){return(0,s.UnitsMeshVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PolymerBackboneSphereParams),createGeometry:b,createLocationIterator:l=>o.PolymerLocationIterator.fromGroup(l),getLoci:o.getPolymerElementLoci,eachLocation:o.eachPolymerElement,setUpdateState:(l,S,T)=>{l.createGeometry=S.sizeFactor!==T.sizeFactor||S.detail!==T.detail},mustRecreate:(l,S,T)=>S.tryUseImpostor&&!!T},C)}})(lD)),lD}var a$;function Xue(){return a$||(a$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BackboneRepresentationProvider=e.BackboneParams=void 0,e.getBackboneParams=y,e.BackboneRepresentation=_;const t=Wue(),r=Ne(),n=Sa(),i=Yr(),c=Lt(),o=$ue(),s=Yw(),h=Tt(),f={"polymer-backbone-cylinder":(g,a)=>(0,n.UnitsRepresentation)("Polymer backbone cylinder",g,a,t.PolymerBackboneCylinderVisual),"polymer-backbone-sphere":(g,a)=>(0,n.UnitsRepresentation)("Polymer backbone sphere",g,a,o.PolymerBackboneSphereVisual),"polymer-gap":(g,a)=>(0,n.UnitsRepresentation)("Polymer gap cylinder",g,a,s.PolymerGapVisual)};e.BackboneParams={...o.PolymerBackboneSphereParams,...t.PolymerBackboneCylinderParams,...s.PolymerGapParams,sizeAspectRatio:r.ParamDefinition.Numeric(1,{min:.1,max:3,step:.1}),visuals:r.ParamDefinition.MultiSelect(["polymer-backbone-cylinder","polymer-backbone-sphere","polymer-gap"],r.ParamDefinition.objectToOptions(f)),bumpFrequency:r.ParamDefinition.Numeric(0,{min:0,max:10,step:.1},h.BaseGeometry.ShadingCategory),density:r.ParamDefinition.Numeric(.1,{min:0,max:1,step:.01},h.BaseGeometry.ShadingCategory),colorMode:r.ParamDefinition.Select("default",r.ParamDefinition.arrayToOptions(["default","interpolate"]),{...h.BaseGeometry.ShadingCategory,isHidden:!0})};function y(g,a){const d=r.ParamDefinition.clone(e.BackboneParams);let p=!1;return a.units.forEach(u=>{!p&&u.gapElements.length&&(p=!0)}),d.visuals.defaultValue=["polymer-backbone-cylinder","polymer-backbone-sphere"],p&&d.visuals.defaultValue.push("polymer-gap"),d}function _(g,a){return c.Representation.createMulti("Backbone",g,a,i.StructureRepresentationStateBuilder,f)}e.BackboneRepresentationProvider=(0,i.StructureRepresentationProvider)({name:"backbone",label:"Backbone",description:"Displays polymer backbone with cylinders and spheres.",factory:_,getParams:y,defaultValues:r.ParamDefinition.getDefaultValues(e.BackboneParams),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:g=>g.polymerResidueCount>0})})(cD)),cD}var dD={},fD={},cT={},o$;function Kue(){if(o$)return cT;
7637o$=1,Object.defineProperty(cT,"__esModule",{value:!0}),cT.convexHull=o;const e=wt(),t=1e-8,r=(0,e.Vec3)(),n=(0,e.Vec3)(),i=(0,e.Vec3)(),c=(0,e.Vec3)();function o(f){const y=f.length;if(y<4)return{indices:[]};const _=h(f);if(!_)return{indices:[]};const[g,a,d,p]=_;e.Vec3.sub(r,f[a],f[g]),e.Vec3.sub(n,f[d],f[g]),e.Vec3.cross(i,r,n),e.Vec3.sub(c,f[p],f[g]);const u=e.Vec3.dot(i,c);let m;u>0?m=[[g,d,a],[g,a,p],[a,d,p],[g,p,d]]:m=[[g,a,d],[g,p,a],[a,p,d],[g,d,p]];for(let b=0;b<y;++b){if(b===g||b===a||b===d||b===p)continue;const P=f[b],C=[];let l=!1;for(let A=0;A<m.length;A++){const x=m[A];s(f,x,P)?(C.push(!0),l=!0):C.push(!1)}if(!l)continue;const S=[];for(let A=0;A<m.length;A++){if(!C[A])continue;const x=m[A];for(let M=0;M<3;M++){const D=x[M],V=x[(M+1)%3];let R=!1;for(let E=0;E<m.length;E++){if(C[E])continue;const I=m[E];for(let B=0;B<3;B++)if(I[B]===V&&I[(B+1)%3]===D){R=!0;break}if(R)break}R&&S.push([D,V])}}const T=[];for(let A=0;A<m.length;A++)C[A]||T.push(m[A]);for(const[A,x]of S)T.push([A,x,b]);m=T}const v=[];for(const b of m)v.push(b[0],b[1],b[2]);return{indices:v}}function s(f,y,_){const g=f[y[0]],a=f[y[1]],d=f[y[2]];return e.Vec3.sub(r,a,g),e.Vec3.sub(n,d,g),e.Vec3.cross(i,r,n),e.Vec3.sub(c,_,g),e.Vec3.dot(i,c)>t}function h(f){const y=f.length,_=0;let g=-1;for(let m=1;m<y;m++)if(e.Vec3.distance(f[_],f[m])>t){g=m;break}if(g<0)return null;let a=-1,d=0;for(let m=0;m<y;m++){if(m===_||m===g)continue;e.Vec3.sub(r,f[g],f[_]),e.Vec3.sub(n,f[m],f[_]),e.Vec3.cross(i,r,n);const v=e.Vec3.magnitude(i);v>d&&(d=v,a=m)}if(a<0||d<t)return null;let p=-1,u=0;e.Vec3.sub(r,f[g],f[_]),e.Vec3.sub(n,f[a],f[_]),e.Vec3.cross(i,r,n),e.Vec3.normalize(i,i);for(let m=0;m<y;m++){if(m===_||m===g||m===a)continue;e.Vec3.sub(c,f[m],f[_]);const v=Math.abs(e.Vec3.dot(i,c));v>u&&(u=v,p=m)}return p<0||u<t?null:[_,g,a,p]}return cT}var s$;function Yue(){return s$||(s$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CoordinationPolyhedronMeshParams=void 0,e.CoordinationPolyhedronMeshVisual=u;const t=Ge(),r=Ke(),n=$t(),i=Br(),c=Ne(),o=zt(),s=_n(),h=at(),f=gt(),y=Kue(),_=Na();e.CoordinationPolyhedronMeshParams={...i.ComplexMeshParams,includeParent:c.ParamDefinition.Boolean(!1),minCoordination:c.ParamDefinition.Numeric(4,{min:4,max:12,step:1},{description:"Minimum number of coordinating atoms to draw a polyhedron"}),maxCoordination:c.ParamDefinition.Numeric(12,{min:4,max:24,step:1},{description:"Maximum coordination number"})};function g(m,v,b,P,C){const{minCoordination:l,maxCoordination:S}=P,{child:T,coordination:{sites:A,eachLigand:x}}=v,M=A.count*4,D=n.MeshBuilder.createState(M,M/2,C);for(let V=0;V<A.count;V++){const R=A.numbers[V];if(R<l||R>S)continue;if(T){const B=v.unitMap.get(A.unitIds[V]),w=T.unitMap.get(B.id),O=B.elements[A.indices[V]];if(!w||!_.SortedArray.has(w.elements,O))continue}const E=[];x(V,B=>{const w=B.unit.conformation.position(B.element,(0,t.Vec3)());E.push(w)});const I=(0,y.convexHull)(E);if(I){D.currentGroup=V;for(let B=0;B<I.indices.length;B+=3){const w=E[I.indices[B]],O=E[I.indices[B+1]],F=E[I.indices[B+2]];n.MeshBuilder.addTriangle(D,w,O,F)}}}return n.MeshBuilder.getMesh(D)}function a(m,v){const{sites:b}=m.coordination,P=b.count,C=1,l=r.StructureElement.Location.create(m);function S(T){if(T<b.count){const A=m.unitMap.get(b.unitIds[T]);l.unit=A,l.element=A.elements[b.indices[T]]}return l}return(0,o.LocationIterator)(P,C,1,S,!0)}function d(m,v,b){const{objectId:P,groupId:C}=m;if(b===P){if(C===s.PickingId.Null)return r.Structure.Loci(v);const{sites:l}=v.coordination;return C<l.count?r.StructureElement.Loci(v,[{unit:v.unitMap.get(l.unitIds[C]),indices:h.OrderedSet.ofSingleton(l.indices[C])}]):r.Structure.Loci(v)}return f.EmptyLoci}function p(m,v,b){let P=!1;if(!r.StructureElement.Loci.is(m)||!r.Structure.areEquivalent(m.structure,v))return!1;const{getSiteIndex:C}=v.coordination;for(const{unit:l,indices:S}of m.elements)r.Unit.isAtomic(l)&&h.OrderedSet.forEach(S,T=>{const A=C(l,l.elements[T]);A>=0&&b(h.Interval.ofSingleton(A))&&(P=!0)});return P}function u(m){return(0,i.ComplexMeshVisual)({defaultProps:c.ParamDefinition.getDefaultValues(e.CoordinationPolyhedronMeshParams),createGeometry:g,createLocationIterator:a,getLoci:d,eachLocation:p,setUpdateState:(v,b,P)=>{v.createGeometry=b.minCoordination!==P.minCoordination||b.maxCoordination!==P.maxCoordination}},m)}})(fD)),fD}var c$;function Que(){return c$||(c$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.PolyhedronRepresentationProvider=e.PolyhedronParams=void 0,e.getPolyhedronParams=h,e.PolyhedronRepresentation=f;const t=Tt(),r=Lt(),n=Ne(),i=JS(),c=Yr(),o=Yue(),s={"coordination-polyhedron-mesh":(y,_)=>(0,i.ComplexRepresentation)("Coordination Polyhedron mesh",y,_,o.CoordinationPolyhedronMeshVisual)};e.PolyhedronParams={...o.CoordinationPolyhedronMeshParams,bumpFrequency:n.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},t.BaseGeometry.ShadingCategory),density:n.ParamDefinition.Numeric(.5,{min:0,max:1,step:.01},t.BaseGeometry.ShadingCategory),visuals:n.ParamDefinition.MultiSelect(["coordination-polyhedron-mesh"],n.ParamDefinition.objectToOptions(s))};function h(y,_){return e.PolyhedronParams}function f(y,_){return r.Representation.createMulti("Polyhedron",y,_,c.StructureRepresentationStateBuilder,s)}e.PolyhedronRepresentationProvider=(0,c.StructureRepresentationProvider)({name:"polyhedron",label:"Polyhedron",description:"Displays coordination polyhedra around atoms with enough bonds.",factory:f,getParams:h,defaultValues:n.ParamDefinition.getDefaultValues(e.PolyhedronParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:y=>y.elementCount>0,getData:(y,_)=>_.includeParent?y.asParent():y,mustRecreate:(y,_)=>y.includeParent!==_.includeParent})})(dD)),dD}var mD={},pD={},u$;function Zue(){return u$||(u$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PlaneImageParams=void 0,e.PlaneImageVisual=C,e.createPlaneImage=S;const t=Ne(),r=Ke(),n=Ge(),i=rt(),c=Br(),o=zi(),s=Wf(),h=us(),f=Tt(),y=zt(),_=wn(),g=ir(),a=ms(),d=nc(),p=ps(),u=DS(),m=er(),v=n.Vec3.set,b=n.Vec3.transformMat4,P=n.Vec3.squaredDistance;e.PlaneImageParams={...c.ComplexImageParams,interpolation:t.ParamDefinition.Select("nearest",t.ParamDefinition.objectToOptions(s.InterpolationTypes)),imageResolution:t.ParamDefinition.Numeric(.5,{min:.01,max:20,step:.01},{description:"Grid resolution/cell spacing.",...f.BaseGeometry.CustomQualityParamInfo}),mode:t.ParamDefinition.Select("frame",t.ParamDefinition.arrayToOptions(["frame","plane"]),{description:"Frame: slice through the structure along arbitrary axes in any step size. Plane: an arbitrary plane defined by point and normal."}),offset:t.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01},{isEssential:!0,immediateUpdate:!0,hideIf:T=>T.mode!=="frame",description:"Relative offset from center."}),axis:t.ParamDefinition.Select("c",t.ParamDefinition.arrayToOptions(["a","b","c"]),{isEssential:!0,hideIf:T=>T.mode!=="frame"}),rotation:t.ParamDefinition.Group({axis:t.ParamDefinition.Vec3(n.Vec3.create(1,0,0),{},{description:"Axis of rotation"}),angle:t.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{immediateUpdate:!0,description:"Axis rotation angle in Degrees"})},{isExpanded:!0,hideIf:T=>T.mode!=="frame"}),plane:t.ParamDefinition.Group({point:t.ParamDefinition.Vec3(n.Vec3.create(0,0,0),{},{description:"Plane point"}),normal:t.ParamDefinition.Vec3(n.Vec3.create(1,0,0),{},{description:"Plane normal"})},{isExpanded:!0,hideIf:T=>T.mode!=="plane"}),extent:t.ParamDefinition.Select("frame",t.ParamDefinition.arrayToOptions(["frame","sphere"]),{description:"Extent of the plane, either box (frame) or sphere."}),margin:t.ParamDefinition.Numeric(4,{min:0,max:50,step:1},{immediateUpdate:!0,description:"Margin around the structure in Angstrom"}),frame:t.ParamDefinition.Select("principalAxes",t.ParamDefinition.arrayToOptions(["principalAxes","boundingBox"])),antialias:t.ParamDefinition.Boolean(!0,{description:"Antialiasing of structure edges."}),cutout:t.ParamDefinition.Boolean(!1,{description:"Cutout the structure from the image."}),defaultColor:t.ParamDefinition.Color((0,_.Color)(13421772),{description:"Default color for parts of the image that are not covered by the color theme."}),includeParent:t.ParamDefinition.Boolean(!1,{description:"Show parent structure (but within extent of this structure)."})};function C(T){return(0,c.ComplexImageVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.PlaneImageParams),createGeometry:S,createLocationIterator:o.ElementIterator.fromStructure,getLoci:o.getSerialElementLoci,eachLocation:o.eachSerialElement,setUpdateState:(A,x,M,D,V)=>{A.createGeometry=x.imageResolution!==M.imageResolution||x.mode!==M.mode||x.margin!==M.margin||x.frame!==M.frame||x.extent!==M.extent||!n.Vec3.equals(x.rotation.axis,M.rotation.axis)||x.rotation.angle!==M.rotation.angle||x.offset!==M.offset||x.axis!==M.axis||!n.Vec3.equals(x.plane.point,M.plane.point)||!n.Vec3.equals(x.plane.normal,M.plane.normal)||x.antialias!==M.antialias||x.cutout!==M.cutout||x.defaultColor!==M.defaultColor||!
7637a.ColorTheme.areEqual(D.color,V.color)||!p.SizeTheme.areEqual(D.size,V.size)}},T)}function l(T,A){const{mode:x,axis:M,frame:D,extent:V,margin:R,rotation:E,plane:I,includeParent:B}=A;B&&T.child&&(T=T.child);const w=(0,n.Vec3)(),O=(0,n.Vec3)(),F=(0,n.Vec3)(),L=(0,n.Vec3)(),U=(0,n.Vec3)(),q=(0,n.Vec3)();let N=0,k=0,j=0,H,G,z;if(D==="principalAxes"){const Y=r.Structure.getPrincipalAxes(T).boxAxes;[N,k,j]=i.Axes3D.size((0,n.Vec3)(),Y),H=Y.dirA,G=Y.dirB,z=Y.dirC,n.Vec3.copy(q,Y.origin)}else[N,k,j]=i.Box3D.size((0,n.Vec3)(),T.boundary.box),H=n.Vec3.create(1,0,0),G=n.Vec3.create(0,1,0),z=n.Vec3.create(0,0,1),n.Vec3.copy(q,T.boundary.sphere.center);if(n.Vec3.set(O,N,k,j),M==="c"?(n.Vec3.set(w,N,k,j),n.Vec3.copy(F,H),n.Vec3.copy(L,G),n.Vec3.copy(U,z)):M==="b"?(n.Vec3.set(w,N,j,k),n.Vec3.copy(F,H),n.Vec3.copy(U,G),n.Vec3.copy(L,z)):(n.Vec3.set(w,k,j,N),n.Vec3.copy(U,H),n.Vec3.copy(F,G),n.Vec3.copy(L,z)),E.angle!==0){const Y=(0,n.Vec3)();n.Vec3.scaleAndAdd(Y,Y,H,E.axis[0]),n.Vec3.scaleAndAdd(Y,Y,G,E.axis[1]),n.Vec3.scaleAndAdd(Y,Y,z,E.axis[2]),n.Vec3.normalize(Y,Y);const K=n.Mat4.fromRotation((0,n.Mat4)(),(0,m.degToRad)(E.angle),Y);n.Vec3.transformDirection(F,F,K),n.Vec3.transformDirection(L,L,K),n.Vec3.transformDirection(U,U,K)}if(V==="sphere"||E.angle!==0){const Y=T.boundary.sphere.radius*2,K=n.Vec3.magnitude(i.Box3D.size((0,n.Vec3)(),i.Box3D.fromSphere3D((0,i.Box3D)(),T.boundary.sphere)));n.Vec3.set(w,K,K,Y),V==="sphere"&&n.Vec3.set(O,Y,Y,Y)}n.Vec3.addScalar(w,w,R*2),n.Vec3.addScalar(O,O,R*2);const W=n.Quat.identity();D==="principalAxes"&&n.Quat.fromBasis(W,n.Vec3.normalize((0,n.Vec3)(),H),n.Vec3.normalize((0,n.Vec3)(),G),n.Vec3.normalize((0,n.Vec3)(),z)),x==="plane"&&(n.Vec3.copy(q,I.point),n.Vec3.copy(U,I.normal),n.Vec3.cross(F,U,n.Vec3.unitX),n.Vec3.dot(F,F)<n.EPSILON&&n.Vec3.cross(F,U,n.Vec3.unitY),n.Vec3.normalize(F,F),n.Vec3.cross(L,U,F),n.Vec3.normalize(L,L));const X={type:V==="sphere"?2:3,center:q,scale:O,rotation:W,transform:n.Mat4.identity()};return{size:w,major:F,minor:L,normal:U,center:q,trim:X}}function S(T,A,x,M,D){const{imageResolution:V,offset:R,antialias:E,cutout:I,defaultColor:B}=M,w=1/V,O="color"in x.color&&x.color.color?x.color.color:()=>(0,_.Color)(16777215),{size:F,major:L,minor:U,normal:q,center:N,trim:k}=l(A,M),j=n.Vec3.create(F[0],F[1],1),H=n.Vec3.setMagnitude((0,n.Vec3)(),q,F[2]/2),G=Math.floor(F[1]*w),z=Math.floor(F[0]*w),W=n.Mat4.identity(),X=(0,n.Vec3)(),Y=(0,n.Vec3)();n.Vec3.add(X,N,L),n.Mat4.targetTo(W,N,X,U),n.Vec3.scaleAndAdd(Y,N,H,R),n.Mat4.setTranslation(W,Y),n.Mat4.mul(W,W,n.Mat4.rotY90),n.Mat4.scale(W,W,j);const{getSerialIndex:K}=A.serialMapping,Q=x.color.granularity.startsWith("vertex"),J=u.Plane3D.fromNormalAndCoplanarPoint((0,u.Plane3D)(),n.Vec3.normalize((0,n.Vec3)(),q),Y),ae=n.Mat4.invert((0,n.Mat4)(),W),te=(0,y.PositionLocation)((0,n.Vec3)(),(0,n.Vec3)()),ne=r.StructureElement.Location.create(A),{units:$}=A;let ie=0;for(let Ce=0,ve=$.length;Ce<ve;++Ce){const{elements:le}=$[Ce];ne.unit=$[Ce];for(let me=0,ee=le.length;me<ee;++me){ne.element=le[me];const se=x.size.size(ne);se>ie&&(ie=se)}}const Z=new Uint8Array(G*z*4),re=new Uint8Array(G*z*4),oe=new Float32Array(G*z);oe.fill(Number.MAX_VALUE);const ce=(0,n.Vec3)(),ue=(0,n.Vec3)(),pe=(0,n.Vec3)();if(Q){let Ce=0;for(let ve=0;ve<z;++ve)for(let le=0;le<G;++le){const me=(0,g.clamp)(le+.5,0,G-1)/G-.5,ee=(0,g.clamp)(ve+.5,0,z-1)/z-.5;n.Vec3.set(X,ee,-me,0),n.Vec3.transformMat4(X,X,W),n.Vec3.copy(te.position,X);const se=O(te,!1);_.Color.toArray(se,Z,Ce),Z[Ce+3]=I?0:255,Ce+=4}}else for(let Ce=0,ve=G*z*4;Ce<ve;Ce+=4)_.Color.toArray(B,Z,Ce),Z[Ce+3]=I?0:255;for(let Ce=0,ve=$.length;Ce<ve;++Ce){const le=$[Ce],{elements:me,conformation:ee}=le;ne.unit=$[Ce];for(let se=0,ye=me.length;se<ye;++se){const Se=me[se];ne.element=Se,ee.position(Se,ce);const Ae=u.Plane3D.distanceToPoint(J,ce);if(Math.abs(Ae)>ie)continue;const _e=x.size.size(ne);if(Math.abs(Ae)>_e)continue;const be=Math.cos(Math.abs(Ae)/_e),xe=E?V*be:0,we=_e+xe/2,Be=we*we;n.Vec3.scaleAndAdd(ue,ce,J.normal,-Ae),n.Vec3.transformMat4(pe,ue,ae),n.Vec3.addScalar(pe,pe,.5);const Me=Math.floor(pe[0]*z),Re=G-Math.ceil(pe[1]*G),Te=Math.ceil(_e*w),Ve=Math.max(0,Me-Te),qe=Math.max(0,Re-Te),ke=Math.min(z,Me+Te+2),ze=Math.min(G,Re+Te+2);n.Vec3.copy(te.position,ue);const We=Q?B:O(ne,!1),Je=K(ne.unit,ne.element);for(let De=Ve;De<ke;++De)for(let Oe=qe;Oe<ze;++Oe){const Fe=(0,g.clamp)(De+.5,0,z-1)/z-.5,Le=(0,g.clamp)(Oe+.5,0,G-1)/G-.5;v(X,Fe,-Le,0),b(X,X,W);const He=P(X,ce);
7637if(He>Be)continue;const Pe=De*G+Oe;if(He<oe[Pe]){const Ie=Pe*4,Ee=Math.sqrt(He)-_e+xe/2;let Ue=Ee>0?1-Ee/xe:1;Q?Ue===1?oe[Pe]=He:I&&(re[Ie]!==0||re[Ie+1]!==0||re[Ie+2]!==0)&&(Ue=1):Ue===1?(oe[Pe]=He,_.Color.toArray(We,Z,Ie)):I?(_.Color.toArray(We,Z,Ie),(re[Ie]!==0||re[Ie+1]!==0||re[Ie+2]!==0)&&(Ue=1)):_.Color.toArray(_.Color.interpolate(_.Color.fromArray(Z,Ie),We,Ue),Z,Ie),(0,d.packIntToRGBArray)(Je,re,Ie),re[Ie+3]=E?Math.round(255*Ue):255,I&&(Z[Pe*4+3]=E?Math.round(255*Ue):255)}}}}const he={width:G,height:z,array:Z,flipY:!0},fe={width:G,height:z,array:re,flipY:!0},de={width:1,height:1,array:new Float32Array(1),flipY:!0},ge=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);return(0,h.transformPositionArray)(W,ge,0,4),s.Image.create(he,ge,fe,de,k,-1,D)}})(pD)),pD}var l$;function Jue(){return l$||(l$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.PlaneRepresentationProvider=e.PlaneParams=void 0,e.getPlaneParams=o,e.PlaneRepresentation=s;const t=Ne(),r=Yr(),n=Lt(),i=Zue(),c={"plane-image":(h,f)=>(0,r.ComplexRepresentation)("Plane image",h,f,i.PlaneImageVisual)};e.PlaneParams={...i.PlaneImageParams,visuals:t.ParamDefinition.MultiSelect(["plane-image"],t.ParamDefinition.objectToOptions(c))};function o(h,f){return e.PlaneParams}function s(h,f){return n.Representation.createMulti("Plane",h,f,r.StructureRepresentationStateBuilder,c)}e.PlaneRepresentationProvider=(0,r.StructureRepresentationProvider)({name:"plane",label:"Plane",description:"Displays planes.",factory:s,getParams:o,defaultValues:t.ParamDefinition.getDefaultValues(e.PlaneParams),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:h=>h.elementCount>0,getData:(h,f)=>f.includeParent?h.asParent():h,mustRecreate:(h,f)=>h.includeParent!==f.includeParent})})(mD)),mD}var d$;function ele(){if(d$)return lf;d$=1,Object.defineProperty(lf,"__esModule",{value:!0}),lf.StructureRepresentationRegistry=void 0;const e=vr(),t=Lt(),r=zce(),n=Qce(),i=lue(),c=fue(),o=Mue(),s=Iue(),h=Bue(),f=Oue(),y=kue(),_=Lue(),g=Nue(),a=Gue(),d=Hue(),p=Xue(),u=Que(),m=Jue();class v extends t.RepresentationRegistry{constructor(){super(),(0,e.objectForEach)(v.BuiltIn,(P,C)=>{if(P.name!==C)throw new Error(`Fix BuiltInStructureRepresentations to have matching names. ${P.name} ${C}`);this.add(P)})}}return lf.StructureRepresentationRegistry=v,(function(b){b.BuiltIn={cartoon:i.CartoonRepresentationProvider,backbone:p.BackboneRepresentationProvider,"ball-and-stick":r.BallAndStickRepresentationProvider,carbohydrate:n.CarbohydrateRepresentationProvider,ellipsoid:c.EllipsoidRepresentationProvider,"gaussian-surface":o.GaussianSurfaceRepresentationProvider,"gaussian-volume":d.GaussianVolumeRepresentationProvider,label:s.LabelRepresentationProvider,line:a.LineRepresentationProvider,"molecular-surface":h.MolecularSurfaceRepresentationProvider,orientation:f.OrientationRepresentationProvider,plane:m.PlaneRepresentationProvider,point:y.PointRepresentationProvider,putty:_.PuttyRepresentationProvider,spacefill:g.SpacefillRepresentationProvider,polyhedron:u.PolyhedronRepresentationProvider}})(v||(lf.StructureRepresentationRegistry=v={})),lf}var mf={},hD={},f$;function tle(){return f$||(f$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.IsosurfaceRepresentationProvider=e.IsosurfaceParams=e.IsosurfaceWireframeParams=e.IsosurfaceMeshParams=e.VolumeIsosurfaceTextureParams=e.VolumeIsosurfaceParams=void 0,e.IsosurfaceVisual=A,e.eachIsosurface=D,e.createVolumeIsosurfaceMesh=V,e.IsosurfaceMeshVisual=R,e.IsosurfaceTextureMeshVisual=B,e.createVolumeIsosurfaceWireframe=w,e.IsosurfaceWireframeVisual=O,e.getIsosurfaceParams=L,e.IsosurfaceRepresentation=U;const t=Ne(),r=sn(),n=Rt(),i=em(),c=Zf(),o=kn(),s=Lt(),h=_n(),f=gt(),y=Ge(),_=Vt(),g=$f(),a=Fl(),d=Jw(),p=Pr(),u=Tt(),m=Kr(),v=In(),b=nn(),P=Jf();e.VolumeIsosurfaceParams={isoValue:r.Volume.IsoValueParam,wrap:t.ParamDefinition.Select("auto",t.ParamDefinition.arrayToOptions(["off","on","auto"])),floodfill:t.ParamDefinition.Select("off",t.ParamDefinition.arrayToOptions(["off","inside","outside"]),{description:"If and how to floodfill the volume. Note that this disables GPU support."})}
7637,e.VolumeIsosurfaceTextureParams={...e.VolumeIsosurfaceParams,tryUseGpu:t.ParamDefinition.Boolean(!0,{hideIf:q=>q.floodfill!=="off"}),gpuDataType:t.ParamDefinition.Select("byte",t.ParamDefinition.arrayToOptions(["byte","float","halfFloat"]),{hideIf:q=>!q.tryUseGpu||q.floodfill!=="off"})};function C(q){return q.extensions.colorBufferFloat&&q.extensions.textureFloat&&q.extensions.drawBuffers}function l(q,N){return N==="on"?!0:N==="off"?!1:r.Volume.isPeriodic(q)}const S=1;function T(q,N){if(q.grid.cells.data.length<Math.pow(10,3))return!1;const k=q.grid.cells.space.dimensions,{powerOfTwoSize:j}=(0,g.getVolumeTexture2dLayout)(k,S);return j<=N.maxTextureSize/2}function A(q,N,k,j,H){return j.floodfill==="off"&&j.tryUseGpu&&H&&C(H)&&T(N,H)?B(q):R(q)}function x(q,N){const k=v.Interval.ofLength(q.instances.length);return r.Volume.Isosurface.Loci(q,N.isoValue,k)}function M(q,N,k,j,H){const{objectId:G,groupId:z,instanceId:W}=q;if(H===G){const X=r.Volume.PickingGranularity.get(N),Y=b.OrderedSet.ofSingleton(W);if(X==="volume")return r.Volume.Loci(N,Y);if(X==="object"||z===h.PickingId.Null)return r.Volume.Isosurface.Loci(N,j.isoValue,Y);{const K=v.Interval.ofSingleton(z);return r.Volume.Cell.Loci(N,[{indices:K,instances:Y}])}}return f.EmptyLoci}function D(q,N,k,j,H){return(0,g.eachVolumeLoci)(q,N,{isoValue:j.isoValue},H)}async function V(q,N,k,j,H,G){q.runtime.update({message:"Marching cubes..."});const z=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue;let W=N.grid.cells;H.floodfill!=="off"&&(W=y.Tensor.createFloodfilled(W,z,H.floodfill)),l(N,H.wrap)&&(W=(0,g.createWrappedTensor)(W));const X=(0,_.fillSerial)(new Int32Array(N.grid.cells.data.length)),Y=await(0,i.computeMarchingCubesMesh)({isoLevel:z,scalarField:W,idField:y.Tensor.create(W.space,y.Tensor.Data1(X))},G).runAsChild(q.runtime),K=r.Grid.getGridToCartesianTransform(N.grid);return n.Mesh.transform(Y,K),q.webgl&&!q.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(Y,!1),m.ValueCell.updateIfChanged(Y.varyingGroup,!1)):m.ValueCell.updateIfChanged(Y.varyingGroup,!0),Y.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(N.grid,r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue)),Y}e.IsosurfaceMeshParams={...n.Mesh.Params,...a.TextureMesh.Params,...e.VolumeIsosurfaceParams,...e.VolumeIsosurfaceTextureParams,quality:{...n.Mesh.Params.quality,isEssential:!1}};function R(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceMeshParams),createGeometry:V,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.wrap!==G.wrap||H.floodfill!==G.floodfill},geometryUtils:n.Mesh.Utils,mustRecreate:(N,k,j)=>k.tryUseGpu&&!!j&&T(N.volume,j)},q)}var E;(function(q){const N="volume-isosurface-texture";q.descriptor=(0,p.CustomPropertyDescriptor)({name:N});function k(H){delete H._propertyData[N]}q.clear=k;function j(H,G,z){var W,X;const{gpuDataType:Y}=z,K=l(H,z.wrap),Q=r.Grid.getGridToCartesianTransform(H.grid),J=y.Vec3.clone(H.grid.cells.space.dimensions),{width:ae,height:te,powerOfTwoSize:ne}=(0,g.getVolumeTexture2dLayout)(J,S),$=y.Vec3.create(ae,te,0),ie=y.Vec3.subScalar((0,y.Vec3)(),J,K?1:0),Z=y.Vec2.create(ae/ne,te/ne);if(ne>G.maxTextureSize/2)throw new Error("volume too large for gpu isosurface extraction");const re=Y==="halfFloat"&&!G.extensions.textureHalfFloat?"float":Y;if(((W=H._propertyData[N])===null||W===void 0?void 0:W.dataType)!==re||((X=H._propertyData[N])===null||X===void 0?void 0:X.wrap)!==K){const oe=re==="byte"?G.resources.texture("image-uint8","alpha","ubyte","linear"):re==="halfFloat"?G.resources.texture("image-float16","alpha","fp16","linear"):G.resources.texture("image-float32","alpha","float","linear");H._propertyData[N]={texture:oe,dataType:re,wrap:K},oe.define(ne,ne),oe.load((0,g.createVolumeTexture2d)(H,"data",S,re),!0),H.customProperties.add(q.descriptor),H.customProperties.assets(q.descriptor,[{dispose:()=>oe.destroy()}])}return J[0]+=S,J[1]+=S,{texture:H._propertyData[N].texture,transform:Q,gridDimension:J,gridTexDim:$,gridDataDim:ie,gridTexScale:Z}}q.get=j})(E||(E={}));function I(q,N,k,j,H,G){const{webgl:z}=q;if(!z)throw new Error("webgl context required to create volume isosurface texture-mesh");if(N.grid.cells.data.length<=1)return a.TextureMesh.createEmpty(G);l(N,H.wrap)&&(N=(0,g.createWrappedVolume)(N));const{max:W,min:X}=N.grid.stats,Y=W-X,K=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue,Q=(K-X)/Y,J=N.grid.cells.space.axisOrderSlowToFast,ae=N.grid.cells.data.length,te=r.Grid.getBoundingSphere(N.grid),ne=ie=>{const{texture:Z,gridDimension:re,gridTexDim:oe,gridDataDim:ce,gridTexScale:ue,transform:pe}=E.get(N,z,H),he=ie?.doubleBuffer.get(),fe=(0,d.extractIsosurface)(z,Z,re,oe,ce,ue,pe,Q,K<0,!1,J,!0,he?.vertex,he?.group,he?.
7637normal);return a.TextureMesh.create(fe.vertexCount,ae,fe.vertexTexture,fe.groupTexture,fe.normalTexture,te,ie)},$=ne(G);return $.meta.webgl=z,$.meta.reset=()=>{E.clear(N),ne($)},$}function B(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceMeshParams),createGeometry:I,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.gpuDataType!==G.gpuDataType||H.wrap!==G.wrap},geometryUtils:a.TextureMesh.Utils,mustRecreate:(N,k,j)=>k.floodfill!=="off"||!k.tryUseGpu||!j||!T(N.volume,j),dispose:N=>{N.vertexTexture.ref.value.destroy(),N.groupTexture.ref.value.destroy(),N.normalTexture.ref.value.destroy(),N.doubleBuffer.destroy()}},q)}async function w(q,N,k,j,H,G){q.runtime.update({message:"Marching cubes..."});const z=r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue;let W=N.grid.cells;H.floodfill!=="off"&&(W=y.Tensor.createFloodfilled(W,z,H.floodfill)),l(N,H.wrap)&&(W=(0,g.createWrappedTensor)(W));const X=(0,_.fillSerial)(new Int32Array(N.grid.cells.data.length)),Y=await(0,i.computeMarchingCubesLines)({isoLevel:z,scalarField:W,idField:y.Tensor.create(W.space,y.Tensor.Data1(X))},G).runAsChild(q.runtime),K=r.Grid.getGridToCartesianTransform(N.grid);return o.Lines.transform(Y,K),Y.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(N.grid,r.Volume.IsoValue.toAbsolute(H.isoValue,N.grid.stats).absoluteValue)),Y}e.IsosurfaceWireframeParams={...o.Lines.Params,...e.VolumeIsosurfaceParams,quality:{...o.Lines.Params.quality,isEssential:!1},sizeFactor:t.ParamDefinition.Numeric(3,{min:0,max:10,step:.1})};function O(q){return(0,P.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.IsosurfaceWireframeParams),createGeometry:w,createLocationIterator:g.createVolumeCellLocationIterator,getLoci:M,eachLocation:D,setUpdateState:(N,k,j,H,G)=>{N.createGeometry=!r.Volume.IsoValue.areSame(H.isoValue,G.isoValue,k.grid.stats)||H.wrap!==G.wrap||H.floodfill!==G.floodfill},geometryUtils:o.Lines.Utils},q)}const F={solid:(q,N)=>(0,c.VolumeRepresentation)("Isosurface mesh",q,N,A,x),wireframe:(q,N)=>(0,c.VolumeRepresentation)("Isosurface wireframe",q,N,O,x)};e.IsosurfaceParams={...e.IsosurfaceMeshParams,...e.IsosurfaceWireframeParams,visuals:t.ParamDefinition.MultiSelect(["solid"],t.ParamDefinition.objectToOptions(F)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},u.BaseGeometry.ShadingCategory)};function L(q,N){const k=t.ParamDefinition.clone(e.IsosurfaceParams);return k.isoValue=r.Volume.createIsoValueParam(r.Volume.IsoValue.relative(2),N.grid.stats),k}function U(q,N){return s.Representation.createMulti("Isosurface",q,N,s.Representation.StateBuilder,F)}e.IsosurfaceRepresentationProvider=(0,c.VolumeRepresentationProvider)({name:"isosurface",label:"Isosurface",description:"Displays a triangulated isosurface of volumetric data.",factory:U,getParams:L,defaultValues:t.ParamDefinition.getDefaultValues(e.IsosurfaceParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:q=>!r.Volume.isEmpty(q)&&!r.Volume.Segmentation.get(q)})})(hD)),hD}var gD={},m$;function rle(){return m$||(m$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SliceRepresentationProvider=e.SliceParams=void 0,e.getSliceParams=S,e.createImage=T,e.applySliceObjectLoci=O,e.applySliceGroupIntervals=F,e.SliceVisual=U,e.SliceRepresentation=q;const t=Ne(),r=Wf(),n=sn(),i=Zf(),c=zt(),o=_n(),s=gt(),h=us(),f=vt(),y=ms(),_=nc(),g=$f(),a=wt(),d=rs(),p=er(),u=Xr(),m=ir(),v=Gt(),b=nn(),P=In(),C=Jf(),l=Dn();e.SliceParams={...r.Image.Params,quality:{...r.Image.Params.quality,isEssential:!1},dimension:t.ParamDefinition.MappedStatic("x",{x:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),y:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),z:t.ParamDefinition.Numeric(0,{min:0,max:0,step:1},{immediateUpdate:!0}),relativeX:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}
7637),relativeY:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeZ:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0})},{isEssential:!0,hideIf:N=>N.mode!=="grid",description:"Slice position in grid coordinates."}),isoValue:n.Volume.IsoValueParam,mode:t.ParamDefinition.Select("grid",t.ParamDefinition.arrayToOptions(["grid","frame","plane"]),{description:"Grid: slice through the volume along the grid axes in integer steps. Frame: slice through the volume along arbitrary axes in any step size. Plane: an arbitrary plane defined by point and normal."}),offset:t.ParamDefinition.Numeric(0,{min:-1,max:1,step:.01},{isEssential:!0,immediateUpdate:!0,hideIf:N=>N.mode!=="frame",description:"Relative offset from center."}),axis:t.ParamDefinition.Select("a",t.ParamDefinition.arrayToOptions(["a","b","c"]),{isEssential:!0,hideIf:N=>N.mode!=="frame",description:"Axis of the frame."}),rotation:t.ParamDefinition.Group({axis:t.ParamDefinition.Vec3(a.Vec3.create(1,0,0),{},{description:"Axis of rotation"}),angle:t.ParamDefinition.Numeric(0,{min:-180,max:180,step:1},{immediateUpdate:!0,description:"Axis rotation angle in Degrees"})},{isExpanded:!0,hideIf:N=>N.mode!=="frame"}),plane:t.ParamDefinition.Group({point:t.ParamDefinition.Vec3(a.Vec3.create(0,0,0),{},{description:"Plane point"}),normal:t.ParamDefinition.Vec3(a.Vec3.create(1,0,0),{},{description:"Plane normal"})},{isExpanded:!0,hideIf:N=>N.mode!=="plane"})};function S(N,k){const j=n.Volume.getPeriodicRange(k);if(j){const{min:z,max:W}=j;k=(0,g.createPeriodicVolume)(k,z,W)}const H=t.ParamDefinition.clone(e.SliceParams),G=k.grid.cells.space.dimensions;return H.dimension=t.ParamDefinition.MappedStatic("x",{x:t.ParamDefinition.Numeric(0,{min:0,max:G[0]-1,step:1},{immediateUpdate:!0}),y:t.ParamDefinition.Numeric(0,{min:0,max:G[1]-1,step:1},{immediateUpdate:!0}),z:t.ParamDefinition.Numeric(0,{min:0,max:G[2]-1,step:1},{immediateUpdate:!0}),relativeX:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeY:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0}),relativeZ:t.ParamDefinition.Numeric(0,{min:0,max:1,step:.01},{immediateUpdate:!0})},{isEssential:!0,hideIf:z=>z.mode!=="grid"}),H.isoValue=n.Volume.createIsoValueParam(n.Volume.IsoValue.absolute(k.grid.stats.min),k.grid.stats),H}async function T(N,k,j,H,G,z){const W=n.Volume.getPeriodicRange(k);if(W){const{min:X,max:Y}=W;k=(0,g.createPeriodicVolume)(k,X,Y)}switch(G.mode){case"frame":return M(N,k,j,H,G,z);case"grid":return V(N,k,j,H,G,z);case"plane":return D(N,k,j,H,G,z);default:(0,v.assertUnreachable)(G.mode)}}function A(N,k){const{axis:j,rotation:H,mode:G}=k,z=n.Grid.getGridToCartesianTransform(N.grid),W=u.Mat4.invert((0,u.Mat4)(),z),[X,Y,K]=N.grid.cells.space.dimensions,Q=X,J=Y,ae=K,te=a.Vec3.create(Q,0,0),ne=a.Vec3.create(0,J,0),$=a.Vec3.create(0,0,ae),ie=Math.max(Q,J,ae)/Math.max(X,Y,K),Z=a.Vec3.create(0,0,0),re=a.Vec3.create(Q,J,ae);a.Vec3.transformMat4(Z,Z,z),a.Vec3.transformMat4(re,re,z);const oe=a.Vec3.center((0,a.Vec3)(),re,Z),ce=(0,a.Vec3)(),ue=(0,a.Vec3)(),pe=(0,a.Vec3)(),he=(0,a.Vec3)();if(j==="c"?(a.Vec3.set(ce,Q,J,ae),a.Vec3.copy(ue,te),a.Vec3.copy(pe,ne),a.Vec3.copy(he,$)):j==="b"?(a.Vec3.set(ce,Q,ae,J),a.Vec3.copy(ue,te),a.Vec3.copy(he,ne),a.Vec3.copy(pe,$)):(a.Vec3.set(ce,J,ae,Q),a.Vec3.copy(he,te),a.Vec3.copy(ue,ne),a.Vec3.copy(pe,$)),H.angle!==0){const de=(0,a.Vec3)();a.Vec3.scaleAndAdd(de,de,te,H.axis[0]),a.Vec3.scaleAndAdd(de,de,ne,H.axis[1]),a.Vec3.scaleAndAdd(de,de,$,H.axis[2]),a.Vec3.normalize(de,de);const ge=u.Mat4.fromRotation((0,u.Mat4)(),(0,p.degToRad)(H.angle),de);a.Vec3.transformDirection(ue,ue,ge),a.Vec3.transformDirection(pe,pe,ge),a.Vec3.transformDirection(he,he,ge)}if(G==="frame"){const de=a.Vec3.distance(Z,re),ge=a.Vec3.distance(Z,re);a.Vec3.set(ce,ge,ge,de)}a.Vec3.transformDirection(ue,ue,z),a.Vec3.transformDirection(pe,pe,z),a.Vec3.transformDirection(he,he,z);const fe={type:3,center:a.Vec3.create(Q/2,J/2,ae/2),scale:a.Vec3.create(Q,J,ae),rotation:d.Quat.identity(),transform:W};return{size:ce,major:ue,minor:pe,normal:he,center:oe,trim:fe,resolution:ie}}function x(N,k,j,H,G,z){const{m:W,width:X,height:Y}=j,{cells:{space:K},stats:Q}=N.grid,{min:J,max:ae}=Q,te=k.color.granularity==="uniform",ne="color"in k.color&&k.color.color?k.color.color:()=>(0,f.Color)(16777215),$=(0,a.Vec3)(),ie=n.Grid.getGridToCartesianTransform(N.grid),Z=u.Mat4.invert((0,u.Mat4)(),ie),[re,oe,ce]=K.dimensions,ue=new Uint8Array(X*Y*4),pe=new
7637Uint8Array(X*Y*4),he=new Float32Array(X*Y),fe={instance:new Int16Array(X*Y),cell:new Uint32Array(X*Y),index:new Map},de=(0,a.Vec3)(),ge=(0,c.PositionLocation)((0,a.Vec3)(),(0,a.Vec3)()),Ce=n.Grid.makeGetTrilinearlyInterpolated(N.grid,"none"),ve=n.Volume.getPeriodicMapping(N);let le=0;for(let _e=0;_e<Y;++_e)for(let be=0;be<X;++be){const xe=le*4,we=(0,m.clamp)(be+.5,0,X-1)/X-.5,Be=(0,m.clamp)(_e+.5,0,Y-1)/Y-.5;a.Vec3.set($,Be,-we,0),a.Vec3.transformMat4($,$,W),a.Vec3.copy(de,$),a.Vec3.transformMat4(de,de,Z);const Me=Math.trunc(de[0]),Re=Math.trunc(de[1]),Te=Math.trunc(de[2]);a.Vec3.copy(ge.position,$);const Ve=ne(ge,!1);f.Color.toArray(Ve,ue,xe);const qe=(0,m.normalize)(Ce($),J,ae);if(te&&(ue[xe]*=qe,ue[xe+1]*=qe,ue[xe+2]*=qe),he[le]=qe,Me>=0&&Me<re&&Re>=0&&Re<oe&&Te>=0&&Te<ce)if((0,_.packIntToRGBArray)(le,pe,xe),ve){const ke=ve.get(Me,Re,Te);if(ke){fe.instance[le]=ke.instance,fe.cell[le]=ke.cell;const ze=(0,l.cantorPairing)(ke.instance,ke.cell);fe.index.has(ze)?fe.index.get(ze).push(le):fe.index.set(ze,[le])}else ue[xe]=0,ue[xe+1]=0,ue[xe+2]=0,ue[xe+3]=0,he[le]=NaN}else{const ke=K.dataOffset(Me,Re,Te);fe.instance[le]=-1,fe.cell[le]=ke,fe.index.has(ke)?fe.index.get(ke).push(le):fe.index.set(ke,[le])}le+=1}const me={width:X,height:Y,array:ue,flipY:!0},ee={width:X,height:Y,array:pe,flipY:!0},se={width:X,height:Y,array:he,flipY:!0},ye=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);(0,h.transformPositionArray)(W,ye,0,4);const Se=(0,m.clamp)((0,m.normalize)(n.Volume.IsoValue.toAbsolute(H,Q).absoluteValue,J,ae),0,1),Ae=r.Image.create(me,ye,ee,se,G,Se,z);return Ae.setBoundingSphere(n.Volume.isPeriodic(N)?n.Volume.getBoundingSphere(N,P.Interval.ofLength(N.instances.length)):n.Grid.getBoundingSphere(N.grid)),Ae.meta.mapping=fe,Ae}async function M(N,k,j,H,G,z){const{offset:W,isoValue:X}=G,{size:Y,major:K,minor:Q,normal:J,center:ae,trim:te,resolution:ne}=A(k,G),$=1/ne,ie=a.Vec3.create(Y[0],Y[1],1),Z=a.Vec3.setMagnitude((0,a.Vec3)(),J,Y[2]/2),re=Math.floor(Y[1]*$),oe=Math.floor(Y[0]*$),ce=u.Mat4.identity(),ue=(0,a.Vec3)(),pe=(0,a.Vec3)();return a.Vec3.add(ue,ae,K),u.Mat4.targetTo(ce,ae,ue,Q),a.Vec3.scaleAndAdd(pe,ae,Z,W),u.Mat4.setTranslation(ce,pe),u.Mat4.mul(ce,ce,u.Mat4.rotY90),u.Mat4.scale(ce,ce,ie),x(k,H,{m:ce,width:re,height:oe},X,te,z)}async function D(N,k,j,H,G,z){const{plane:{point:W,normal:X},isoValue:Y}=G,K=a.Vec3.normalize((0,a.Vec3)(),X),Q=n.Grid.getGridToCartesianTransform(k.grid),J=u.Mat4.invert((0,u.Mat4)(),Q),[ae,te,ne]=k.grid.cells.space.dimensions,$=ae,ie=te,Z=ne,oe=1/(Math.max($,ie,Z)/Math.max(ae,te,ne)),ce=a.Vec3.distance(a.Vec3.create(0,0,0),a.Vec3.create($,ie,Z)),ue=a.Vec3.create($/2,ie/2,Z/2);a.Vec3.transformMat4(ue,ue,Q);const pe=a.Vec3.sub((0,a.Vec3)(),ue,W),he=a.Vec3.dot(pe,K),fe=a.Vec3.scaleAndAdd((0,a.Vec3)(),ue,K,-he),de=u.Mat4.fromPlane((0,u.Mat4)(),K,fe),ge=a.Vec3.set((0,a.Vec3)(),ce,ce,ce);u.Mat4.scale(de,de,ge);const Ce=Math.floor(ce*oe),ve=Math.floor(ce*oe),le={type:3,center:a.Vec3.create($/2,ie/2,Z/2),scale:a.Vec3.create($,ie,Z),rotation:d.Quat.identity(),transform:J};return x(k,H,{m:de,width:Ce,height:ve},Y,le,z)}async function V(N,k,j,H,G,z){const{dimension:{name:W},isoValue:X}=G,{cells:{space:Y,data:K},stats:Q}=k.grid,{min:J,max:ae}=Q,te=H.color.granularity==="uniform",ne="color"in H.color&&H.color.color?H.color.color:()=>(0,f.Color)(16777215),{width:$,height:ie,x:Z,y:re,z:oe,x0:ce,y0:ue,z0:pe,nx:he,ny:fe,nz:de}=E(k.grid,G),ge=new Float32Array(W==="x"||W==="relativeX"?[Z,0,0,Z,re,0,Z,0,oe,Z,re,oe]:W==="y"||W==="relativeY"?[0,re,0,Z,re,0,0,re,oe,Z,re,oe]:[0,0,oe,0,re,oe,Z,0,oe,Z,re,oe]),Ce=new Uint8Array($*ie*4),ve=new Uint8Array($*ie*4),le=new Float32Array($*ie),me={instance:new Int16Array($*ie),cell:new Uint32Array($*ie),index:new Map},ee=n.Grid.getGridToCartesianTransform(k.grid),se=(0,c.PositionLocation)((0,a.Vec3)(),(0,a.Vec3)()),ye=n.Volume.getPeriodicMapping(k);let Se=0;for(let Re=ue;Re<fe;++Re)for(let Te=ce;Te<he;++Te)for(let Ve=pe;Ve<de;++Ve){const qe=Se*4;a.Vec3.set(se.position,Te,Re,Ve),a.Vec3.transformMat4(se.position,se.position,ee),f.Color.toArray(ne(se,!1),Ce,qe);const ke=(0,m.normalize)(Y.get(K,Te,Re,Ve),J,ae);if(te&&(Ce[qe]*=ke,Ce[qe+1]*=ke,Ce[qe+2]*=ke),le[Se]=ke,(0,_.packIntToRGBArray)(Se,ve,qe),ye){const ze=ye.get(Te,Re,Ve);ze?(me.instance[Se]=ze.instance,me.cell[Se]=ze.cell,me.index.set((0,l.cantorPairing)(ze.
7637instance,ze.cell),[Se])):(Ce[qe]=0,Ce[qe+1]=0,Ce[qe+2]=0,Ce[qe+3]=0,le[Se]=NaN)}else{const ze=Y.dataOffset(Te,Re,Ve);me.instance[Se]=-1,me.cell[Se]=ze,me.index.set(ze,[Se])}Se+=1}const Ae={width:$,height:ie,array:Ce,flipY:!0},_e={width:$,height:ie,array:ve,flipY:!0},be={width:$,height:ie,array:le,flipY:!0},xe=n.Grid.getGridToCartesianTransform(k.grid);(0,h.transformPositionArray)(xe,ge,0,4);const we=r.Image.createEmptyTrim(),Be=(0,m.clamp)((0,m.normalize)(n.Volume.IsoValue.toAbsolute(X,Q).absoluteValue,J,ae),0,1),Me=r.Image.create(Ae,ge,_e,be,we,Be,z);return Me.setBoundingSphere(n.Volume.isPeriodic(k)?n.Volume.getBoundingSphere(k,P.Interval.ofLength(k.instances.length)):n.Grid.getBoundingSphere(k.grid)),Me.meta.mapping=me,Me}function R(N,k){return(0,m.clamp)(Math.round((N-1)*k),0,N-1)}function E(N,k){const{dimension:{name:j,params:H}}=k,{space:G}=N.cells;let z,W,X,Y,K,Q=0,J=0,ae=0,[te,ne,$]=G.dimensions;return j==="x"?(X=H,Y=ne,K=$,z=$,W=ne,Q=X,te=Q+1):j==="y"?(X=te,Y=H,K=$,z=$,W=te,J=Y,ne=J+1):j==="z"?(X=te,Y=ne,K=H,z=te,W=ne,ae=K,$=ae+1):j==="relativeX"?(X=R(te,H),Y=ne,K=$,z=$,W=ne,Q=X,te=Q+1):j==="relativeY"?(X=te,Y=R(ne,H),K=$,z=$,W=te,J=Y,ne=J+1):(X=te,Y=ne,K=R($,H),z=te,W=ne,ae=K,$=ae+1),{width:z,height:W,x:X,y:Y,z:K,x0:Q,y0:J,z0:ae,nx:te,ny:ne,nz:$}}function I(N,k,j){return n.Volume.Loci(N,k)}function B(N,k){const j=P.Interval.ofLength(N.instances.length);return I(N,j)}function w(N,k,j,H,G,z){let{objectId:W,groupId:X,instanceId:Y}=N;if(G===W){const K=z.meta.mapping;if(K){const ae=K.instance[X];ae>=0&&(Y=ae),X=K.cell[X]}const Q=n.Volume.PickingGranularity.get(k),J=b.OrderedSet.ofSingleton(Y);if(Q==="volume")return n.Volume.Loci(k,J);if(Q==="object"||X===o.PickingId.Null)return I(k,J);{const ae=P.Interval.ofSingleton(X);return n.Volume.Cell.Loci(k,[{indices:ae,instances:J}])}}return s.EmptyLoci}function O(N,k,j,H){if(n.Volume.isLociEmpty(N)||!n.Volume.areEquivalent(N.volume,k))return!1;if(n.Volume.isPeriodic(k))return H(P.Interval.ofBounds(0,j));let G=!1;if(P.Interval.is(N.instances)){const z=P.Interval.start(N.instances)*j,W=P.Interval.end(N.instances)*j;H(P.Interval.ofBounds(z,W))&&(G=!0)}else b.OrderedSet.forEach(N.instances,z=>{const W=z*j;H(P.Interval.ofBounds(W,W+j))&&(G=!0)});return G}function F(N,k,j){if(!N||N.length===0)return!1;let H=!1,G=N[0]+k,z=G;for(let W=1,X=N.length;W<X;++W){const Y=N[W]+k;if(Y===z+1){z=Y;continue}j(P.Interval.ofBounds(G,z+1))&&(H=!0),G=Y,z=Y}return j(P.Interval.ofBounds(G,z+1))&&(H=!0),H}function L(N,k,j,H,G,z){const W=z.meta.mapping;if(W){const X=W.cell.length,Y=k.grid.cells.data.length,K=n.Volume.isPeriodic(k);return n.Volume.isLoci(N)?O(N,k,X,G):(0,g.eachVolumeLoci)(N,k,void 0,Q=>{let J=!1;for(let ae=P.Interval.start(Q),te=P.Interval.end(Q);ae<te;++ae){const ne=Math.floor(ae/Y),$=ae%Y;if(K)F(W.index.get((0,l.cantorPairing)(ne,$)),0,G)&&(J=!0);else{const ie=ne*X;F(W.index.get($),ie,G)&&(J=!0)}}return J})}else return(0,g.eachVolumeLoci)(N,k,void 0,G)}function U(N,k,j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SliceParams),createGeometry:T,createLocationIterator:g.createVolumeSliceCellLocationIterator,getLoci:w,eachLocation:L,setUpdateState:(H,G,z,W,X,Y,K)=>{H.createGeometry=W.dimension.name!==X.dimension.name||W.dimension.params!==X.dimension.params||W.mode!==X.mode||!a.Vec3.equals(W.rotation.axis,X.rotation.axis)||W.rotation.angle!==X.rotation.angle||W.offset!==X.offset||W.axis!==X.axis||!a.Vec3.equals(W.plane.point,X.plane.point)||!a.Vec3.equals(W.plane.normal,X.plane.normal)||!n.Volume.IsoValue.areSame(W.isoValue,X.isoValue,G.grid.stats)||!y.ColorTheme.areEqual(Y.color,K.color)||!n.Volume.areInstanceTransformsEqual(G,z)},geometryUtils:r.Image.Utils},N)}function q(N,k){return(0,i.VolumeRepresentation)("Slice",N,k,U,B)}e.SliceRepresentationProvider=(0,i.VolumeRepresentationProvider)({name:"slice",label:"Slice",description:"Slice of volume rendered as image with interpolation.",factory:q,getParams:S,defaultValues:t.ParamDefinition.getDefaultValues(e.SliceParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:N=>!n.Volume.isEmpty(N)&&!n.Volume.Segmentation.get(N)})})(gD)),gD}var yD={},p$;function nle(){return p$||(p$=1,(function(e){Object.defineProperty(e,"__esMo
7637dule",{value:!0}),e.DirectVolumeRepresentationProvider=e.DirectVolumeParams=void 0,e.createDirectVolume2d=d,e.createDirectVolume3d=u,e.createDirectVolume=m,e.getDirectVolumeLoci=b,e.eachDirectVolume=P,e.getDirectVolumeParams=C,e.DirectVolumeVisual=l,e.DirectVolumeRepresentation=S;const t=Ne(),r=Ge(),n=rt(),i=sn(),c=Hf(),o=Zf(),s=gt(),h=$f(),f=In(),y=nn(),_=Jf(),g=ir();function a(N,k){const j=(0,n.Box3D)();return n.Box3D.add(j,N),n.Box3D.transform(j,j,k),j}function d(N,k,j,H,G){const z=j.grid.cells.space.dimensions,{width:W,height:X}=(0,h.getVolumeTexture2dLayout)(z);if(Math.max(W,X)>k.maxTextureSize/2)throw new Error("volume too large for direct-volume rendering");const Y=H.dataType==="halfFloat"&&!k.extensions.textureHalfFloat?"float":H.dataType,K=(0,h.createVolumeTexture2d)(j,"normals",0,Y),Q=i.Grid.getGridToCartesianTransform(j.grid),J=a(z,Q);let ae;G&&G.dataType.ref.value===Y?ae=G.gridTexture.ref.value:ae=Y==="byte"?k.resources.texture("image-uint8","rgba","ubyte","linear"):Y==="halfFloat"?k.resources.texture("image-float16","rgba","fp16","linear"):k.resources.texture("image-float32","rgba","float","linear"),ae.load(K);const{unitToCartn:te,cellDim:ne}=p(j.grid),$=j.grid.cells.space.axisOrderSlowToFast;return c.DirectVolume.create(J,z,Q,te,ne,ae,j.grid.stats,!1,$,Y,G)}function p(N){if(N.transform.kind==="matrix")return{unitToCartn:r.Mat4.mul((0,r.Mat4)(),N.transform.matrix,r.Mat4.fromScaling((0,r.Mat4)(),N.cells.space.dimensions)),cellDim:r.Mat4.getScaling((0,r.Vec3)(),N.transform.matrix)};const k=N.transform.fractionalBox,j=n.Box3D.size((0,r.Vec3)(),k);return{unitToCartn:r.Mat4.mul3((0,r.Mat4)(),N.transform.cell.fromFractional,r.Mat4.fromTranslation((0,r.Mat4)(),k.min),r.Mat4.fromScaling((0,r.Mat4)(),j)),cellDim:r.Vec3.div((0,r.Vec3)(),N.transform.cell.size,N.cells.space.dimensions)}}function u(N,k,j,H,G){const z=j.grid.cells.space.dimensions;if(Math.max(...z)>k.max3dTextureSize/2)throw new Error("volume too large for direct-volume rendering");const W=H.dataType==="halfFloat"&&!k.extensions.textureHalfFloat?"float":H.dataType,X=(0,h.createVolumeTexture3d)(j,W),Y=i.Grid.getGridToCartesianTransform(j.grid),K=a(z,Y);let Q;G&&G.dataType.ref.value===W?Q=G.gridTexture.ref.value:Q=W==="byte"?k.resources.texture("volume-uint8","rgba","ubyte","linear"):W==="halfFloat"?k.resources.texture("volume-float16","rgba","fp16","linear"):k.resources.texture("volume-float32","rgba","float","linear"),Q.load(X);const{unitToCartn:J,cellDim:ae}=p(j.grid),te=j.grid.cells.space.axisOrderSlowToFast;return c.DirectVolume.create(K,z,Y,J,ae,Q,j.grid.stats,!1,te,W,G)}async function m(N,k,j,H,G,z){const{runtime:W,webgl:X}=N;if(X===void 0)throw new Error("DirectVolumeVisual requires `webgl` in VisualContext");return X.isWebGL2?u(W,X,k,G,z):d(W,X,k,G,z)}function v(N,k){const j=f.Interval.ofLength(N.instances.length);return i.Volume.Loci(N,j)}function b(N,k,j,H,G){const{objectId:z,groupId:W,instanceId:X}=N;if(G===z){const Y=y.OrderedSet.ofSingleton(X),K=f.Interval.ofSingleton(W);return i.Volume.Cell.Loci(k,[{indices:K,instances:Y}])}return s.EmptyLoci}function P(N,k,j,H,G){return(0,h.eachVolumeLoci)(N,k,void 0,G)}e.DirectVolumeParams={...c.DirectVolume.Params,quality:{...c.DirectVolume.Params.quality,isEssential:!1},dataType:t.ParamDefinition.Select("byte",t.ParamDefinition.arrayToOptions(["byte","float","halfFloat"]))};function C(N,k){const j=t.ParamDefinition.clone(e.DirectVolumeParams);return j.controlPoints.getVolume=()=>k,j.controlPoints.defaultValue=D(k.grid),j.controlPoints.getPresets=()=>q(k.grid),j}function l(N){return(0,_.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.DirectVolumeParams),createGeometry:m,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:b,eachLocation:P,setUpdateState:(k,j,H,G,z)=>{k.createGeometry=G.dataType!==z.dataType},geometryUtils:c.DirectVolume.Utils,dispose:k=>{k.gridTexture.ref.value.destroy()}},N)}function S(N,k){return(0,o.VolumeRepresentation)("Direct Volume",N,k,l,v)}e.DirectVolumeRepresentationProvider=(0,o.VolumeRepresentationProvider)({name:"direct-volume",label:"Direct Volume",description:"Direct rendering of volumetric data.",factory:S,getParams:C,defaultValues:t.ParamDefinition.getDefaultValues(e.DirectVolumeParams),defaultColorTheme:{name:"volume-value"},defaultSizeTheme:{name:"uniform"},locationKinds:["position-location","direct-location"],isApplicable:N=>!i.Volume.isEmpty(N)&&!i.Volume.Segmentation.get(N)});const T=.05,A=.005,x=.05,M=.95;function D(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p99:X}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const Y=te=>(0,g.clamp)((te-k)/H,.001,.999);
7637if(k<0){const te=[],ne=Y(Math.min(z-3*W,-W)),$=Y(-W),ie=Y(0),Z=Y(W),re=Y(Math.max(z+3*W,W)),oe=[ne,$,ie,Z,re].sort((ce,ue)=>ce-ue);return te.push(r.Vec2.create(oe[0],T)),te.push(r.Vec2.create(oe[1],T*.5)),te.push(r.Vec2.create(oe[2],0)),te.push(r.Vec2.create(oe[3],T*.5)),te.push(r.Vec2.create(oe[4],T)),te}const K=Y(z),Q=Y(z+W),J=Y(Math.min(z+3*W,X));return V(K,Q,J,T)}function V(N,k,j,H){const z=(0,g.clamp)(N,.001,.997);let W=(0,g.clamp)(k,z+.002,.998),X=(0,g.clamp)(j,W+.002,.999);X-z<3*.002&&(W=z+.002,X=z+2*.002);const Y=[];Y.push(r.Vec2.create(z,0)),Y.push(r.Vec2.create(W,H*.5)),Y.push(r.Vec2.create(X,H));const K=(0,g.clamp)(X+.002,X+1e-4,.9995);return Y.push(r.Vec2.create(K,H)),Y}function R(){return[r.Vec2.create(.19,0),r.Vec2.create(.2,T),r.Vec2.create(.25,T),r.Vec2.create(.26,0),r.Vec2.create(.79,0),r.Vec2.create(.8,T),r.Vec2.create(.85,T),r.Vec2.create(.86,0)]}function E(N,k,j,H){const{min:G,max:z}=N.stats,W=z-G;if(W<=0||!isFinite(W))return R();const X=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:Y,sigma:K}=X;if(!isFinite(K)||K<=0||X.count===0)return R();const Q=(0,g.clamp)((Y+k*K-G)/W,x,M),J=(0,g.clamp)(j,A+.001,.2),ae=(0,g.clamp)(Q-J,.001,.999),te=(0,g.clamp)(Q-J+A,.001,.999),ne=(0,g.clamp)(Q+J-A,.001,.999),$=(0,g.clamp)(Q+J,.001,.999);return ae<te&&te<ne&&ne<$?[r.Vec2.create(ae,0),r.Vec2.create(te,H),r.Vec2.create(ne,H),r.Vec2.create($,0)]:R()}function I(N){return E(N,2,.012,T)}function B(N){return E(N,3,.015,.08)}function w(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const X=J=>(0,g.clamp)((J-k)/H,.001,.999),Y=X(z-.5*W),K=X(z+.5*W),Q=X(z+1.5*W);return V(Y,K,Q,T)}function O(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p1:X}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const Y=$=>(0,g.clamp)(($-k)/H,.001,.999),K=Y(Math.max(z-3*W,X)),Q=Y(z-W),J=Y(z),ae=(0,g.clamp)(K,.001,.997),te=(0,g.clamp)(Q,ae+.002,.998),ne=(0,g.clamp)(J,te+.002,.999);return[r.Vec2.create(ae,T),r.Vec2.create(te,T*.5),r.Vec2.create(ne,0)]}function F(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H)||k>=0)return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W}=G;if(!isFinite(W)||W<=0||G.count===0)return R();const X=J=>(0,g.clamp)((J-k)/H,x,M),Y=[X(z-3*W),X(z+3*W)];Y.sort((J,ae)=>J-ae);const K=[];let Q=.012;Y[1]-Y[0]<2*(Q+A)&&(Q=Math.max(A+.001,(Y[1]-Y[0])/2-A));for(const J of Y){const ae=(0,g.clamp)(J,x,M),te=(0,g.clamp)(ae-Q,.001,.999),ne=(0,g.clamp)(ae-Q+A,.001,.999),$=(0,g.clamp)(ae+Q-A,.001,.999),ie=(0,g.clamp)(ae+Q,.001,.999);K.push(r.Vec2.create(te,0)),K.push(r.Vec2.create(ne,T)),K.push(r.Vec2.create($,T)),K.push(r.Vec2.create(ie,0))}return K}function L(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{p1:z,p99:W}=G;if(!isFinite(W-z)||W<=z)return R();const X=ae=>(0,g.clamp)((ae-k)/H,.001,.999),Y=X(z),K=X(W),Q=(0,g.clamp)((Y+K)*.5,Y+.002,K-.002),J=[r.Vec2.create(Y,0),r.Vec2.create(Q,T*.5),r.Vec2.create(K,T)];return K<.997&&J.push(r.Vec2.create(.999,T)),J}function U(N){const{min:k,max:j}=N.stats,H=j-k;if(H<=0||!isFinite(H))return R();const G=i.Grid.getRobustStats(N,{ignoreZero:!0}),{mean:z,sigma:W,p99:X}=G;if(!isFinite(W)||W<=0)return R();const Y=ae=>(0,g.clamp)((ae-k)/H,.001,.999),K=Y(Math.max(z-W,k)),Q=Y(z+W),J=Y(X);return V(K,Q,J,.02)}function q(N){const k=N._directVolumeControlPointsPresets;if(k)return k;const{min:j,max:H}=N.stats,G=j<0,z=[[D(N),"Ramp (auto)"],[I(N),"Sharp surface (~+2Ï)"],[B(N),"High contour (~+3Ï)"],[w(N),"Low contour (~+1Ï)"]];return(G||isFinite(H-j)&&N.stats.mean-j>H-N.stats.mean)&&z.push([O(N),"Tomogram (inverted)"]),G&&z.push([F(N),"Difference map (±3Ï)"]),z.push([L(N),"Occupancy / probability"]),z.push([U(N),"Wide volumetric"]),N._directVolumeControlPointsPresets=z,z}})(yD)),yD}var vD={},h$;function ile(){return h$||(h$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}
7637),e.SegmentRepresentationProvider=e.SegmentParams=e.SegmentMeshParams=e.VolumeSegmentParams=void 0,e.SegmentVisual=M,e.eachSegment=R,e.createVolumeSegmentMesh=I,e.SegmentMeshVisual=B,e.SegmentTextureMeshVisual=L,e.getSegmentParams=N,e.SegmentRepresentation=k;const t=Ne(),r=sn(),n=Rt(),i=em(),c=Zf(),o=zt(),s=Lt(),h=_n(),f=gt(),y=Ge(),_=Vt(),g=$f(),a=Fl(),d=Tt(),p=Kr(),u=Jw(),m=os(),v=Na(),b=In(),P=nn(),C=Jf();e.VolumeSegmentParams={segments:t.ParamDefinition.Converted(j=>j.map(H=>`${H}`),j=>j.map(H=>parseInt(H)),t.ParamDefinition.MultiSelect(["0"],t.ParamDefinition.arrayToOptions(["0"]),{isEssential:!0}))};function l(j){return j.extensions.colorBufferFloat&&j.extensions.textureFloat&&j.extensions.drawBuffers}const S=1;function T(j,H){if(j.grid.cells.data.length<Math.pow(10,3))return!1;const G=j.grid.cells.space.dimensions,{powerOfTwoSize:z}=(0,g.getVolumeTexture2dLayout)(G,S);return z<=H.maxTextureSize/2}const A=(0,y.Mat4)();function x(j,H){const G=r.Grid.getGridToCartesianTransform(j),z=y.Mat4.fromTranslation(A,H.min);return y.Mat4.mul((0,y.Mat4)(),G,z)}function M(j,H,G,z,W){return z.tryUseGpu&&W&&l(W)&&T(H,W)?L(j):B(j)}function D(j,H){const G=v.SortedArray.ofUnsortedArray(H.segments),z=b.Interval.ofLength(j.instances.length);return r.Volume.Segment.Loci(j,[{segments:G,instances:z}])}function V(j,H,G,z,W){const{objectId:X,groupId:Y,instanceId:K}=j;if(W===X){const Q=r.Volume.PickingGranularity.get(H),J=P.OrderedSet.ofSingleton(K);if(Q==="volume")return r.Volume.Loci(H,J);if(Q==="object"||Y===h.PickingId.Null){const ae=P.OrderedSet.ofSingleton(G);return r.Volume.Segment.Loci(H,[{segments:ae,instances:J}])}else{const ae=b.Interval.ofSingleton(Y);return r.Volume.Cell.Loci(H,[{indices:ae,instances:J}])}}return f.EmptyLoci}function R(j,H,G,z,W){const X=v.SortedArray.ofSingleton(G);return(0,g.eachVolumeLoci)(j,H,{segments:X},W)}function E(j,H,G){const z=G.data,W=G.space.dataOffset,X=m.Box3D.size((0,y.Vec3)(),H),[Y,K,Q]=X,J=Y-1,ae=K-1,te=Q-1,[ne,$,ie]=H.min,[Z,re,oe]=H.max,ce=[...G.space.axisOrderSlowToFast],ue=y.Tensor.Space(X,ce,Uint8Array),pe=y.Tensor.create(ue,ue.create()),he=pe.data,fe=ue.set;for(let de=0;de<Q;++de)for(let ge=0;ge<K;++ge)for(let Ce=0;Ce<Y;++Ce){const ve=j.includes(z[W(Ce+ne,ge+$,de+ie)])?255:0,le=j.includes(z[W(Math.min(J+Z,Ce+1+ne),ge+$,de+ie)])?255:0,me=j.includes(z[W(Math.max(0,Ce-1+ne),ge+$,de+ie)])?255:0,ee=j.includes(z[W(Ce+ne,Math.min(ae+re,ge+1+$),de+ie)])?255:0,se=j.includes(z[W(Ce+ne,Math.max(0,ge-1+$),de+ie)])?255:0,ye=j.includes(z[W(Ce+ne,ge+$,Math.min(te+oe,de+1+ie))])?255:0,Se=j.includes(z[W(Ce+ne,ge+$,Math.max(0,de-1+ie))])?255:0;fe(he,Ce,ge,de,Math.round((ve+ve+le+me+ee+se+ye+Se)/8))}return pe}async function I(j,H,G,z,W,X){const Y=r.Volume.Segmentation.get(H);if(!Y)throw new Error("missing volume segmentation");j.runtime.update({message:"Marching cubes..."});const K=m.Box3D.clone(Y.bounds[G]);m.Box3D.expand(K,K,y.Vec3.create(2,2,2));const Q=Array.from(Y.segments.get(G).values()),J=E(Q,K,H.grid.cells),ae=(0,_.fillSerial)(new Int32Array(J.data.length)),te=await(0,i.computeMarchingCubesMesh)({isoLevel:128,scalarField:J,idField:y.Tensor.create(J.space,y.Tensor.Data1(ae))},X).runAsChild(j.runtime),ne=x(H.grid,K);n.Mesh.transform(te,ne),j.webgl&&!j.webgl.isWebGL2?(n.Mesh.uniformTriangleGroup(te,!1),p.ValueCell.updateIfChanged(te.varyingGroup,!1)):p.ValueCell.updateIfChanged(te.varyingGroup,!0);const $=b.Interval.ofLength(H.instances.length),ie=P.OrderedSet.ofSingleton(G);return te.setBoundingSphere(r.Volume.Segment.getBoundingSphere(H,[{segments:ie,instances:$}])),te}e.SegmentMeshParams={...n.Mesh.Params,...a.TextureMesh.Params,...e.VolumeSegmentParams,quality:{...n.Mesh.Params.quality,isEssential:!1},tryUseGpu:t.ParamDefinition.Boolean(!0)};function B(j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SegmentMeshParams),createGeometry:I,createLocationIterator:(H,G)=>{const z=r.Volume.Segment.Location(H,G);return(0,o.LocationIterator)(H.grid.cells.data.length,H.instances?H.instances.length:1,1,()=>z)},getLoci:V,eachLocation:R,setUpdateState:(H,G,z,W,X)=>{},geometryUtils:n.Mesh.Utils,mustRecreate:(H,G,z)=>G.tryUseGpu&&!!z&&T(H.volume,z)},j)}const w="segment-texture";function O(j,H,G){const z=r.Volume.Segmentation.get(j);if(!z)throw new Error("missing volume segmentation");const{resources:W}
7637=G,X=m.Box3D.clone(z.bounds[H]);m.Box3D.expand(X,X,y.Vec3.create(2,2,2));const Y=x(j.grid,X),K=m.Box3D.size((0,y.Vec3)(),X),{width:Q,height:J,powerOfTwoSize:ae}=(0,g.getVolumeTexture2dLayout)(K,S),te=y.Vec3.create(Q,J,0),ne=y.Vec3.clone(K),$=y.Vec2.create(Q/ae,J/ae);if(ae>G.maxTextureSize/2)throw new Error("volume too large for gpu segment extraction");G.namedTextures[w]||(G.namedTextures[w]=W.texture("image-uint8","alpha","ubyte","linear"));const ie=G.namedTextures[w];ie.define(ae,ae);const Z=Array.from(z.segments.get(H).values());return ie.load((0,g.createSegmentTexture2d)(j,Z,X,S),!0),K[0]+=S,K[1]+=S,{texture:ie,transform:Y,gridDimension:K,gridTexDim:te,gridDataDim:ne,gridTexScale:$}}async function F(j,H,G,z,W,X){if(!j.webgl)throw new Error("webgl context required to create volume segment texture-mesh");if(H.grid.cells.data.length<=1)return a.TextureMesh.createEmpty(X);const{texture:Y,gridDimension:K,gridTexDim:Q,gridDataDim:J,gridTexScale:ae,transform:te}=O(H,G,j.webgl),ne=H.grid.cells.space.axisOrderSlowToFast,$=X?.doubleBuffer.get(),ie=(0,u.extractIsosurface)(j.webgl,Y,K,Q,J,ae,te,.5,!1,!1,ne,!0,$?.vertex,$?.group,$?.normal),Z=H.grid.cells.data.length,re=b.Interval.ofLength(H.instances.length),oe=P.OrderedSet.ofSingleton(G),ce=r.Volume.Segment.getBoundingSphere(H,[{segments:oe,instances:re}]);return a.TextureMesh.create(ie.vertexCount,Z,ie.vertexTexture,ie.groupTexture,ie.normalTexture,ce,X)}function L(j){return(0,C.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.SegmentMeshParams),createGeometry:F,createLocationIterator:(H,G)=>{const z=r.Volume.Segment.Location(H,G);return(0,o.LocationIterator)(H.grid.cells.data.length,H.instances?H.instances.length:1,1,()=>z)},getLoci:V,eachLocation:R,setUpdateState:(H,G,z,W,X)=>{},geometryUtils:a.TextureMesh.Utils,mustRecreate:(H,G,z)=>!G.tryUseGpu||!z||!T(H.volume,z),dispose:H=>{H.vertexTexture.ref.value.destroy(),H.groupTexture.ref.value.destroy(),H.normalTexture.ref.value.destroy(),H.doubleBuffer.destroy()}},j)}function U(j,H){return v.SortedArray.ofUnsortedArray(j.segments)}const q={segment:(j,H)=>(0,c.VolumeRepresentation)("Segment mesh",j,H,M,D,U)};e.SegmentParams={...e.SegmentMeshParams,visuals:t.ParamDefinition.MultiSelect(["segment"],t.ParamDefinition.objectToOptions(q)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},d.BaseGeometry.ShadingCategory)};function N(j,H){const G=t.ParamDefinition.clone(e.SegmentParams),z=r.Volume.Segmentation.get(H);if(z){const W=Array.from(z.segments.keys());G.segments=t.ParamDefinition.Converted(X=>X.map(Y=>`${Y}`),X=>X.map(Y=>parseInt(Y)),t.ParamDefinition.MultiSelect(W.map(X=>`${X}`),t.ParamDefinition.arrayToOptions(W.map(X=>`${X}`)),{isEssential:!0}))}return G}function k(j,H){return s.Representation.createMulti("Segment",j,H,s.Representation.StateBuilder,q)}e.SegmentRepresentationProvider=(0,c.VolumeRepresentationProvider)({name:"segment",label:"Segment",description:"Displays a triangulated segment of volumetric data.",factory:k,getParams:N,defaultValues:t.ParamDefinition.getDefaultValues(e.SegmentParams),defaultColorTheme:{name:"volume-segment"},defaultSizeTheme:{name:"uniform"},isApplicable:j=>!r.Volume.isEmpty(j)&&!!r.Volume.Segmentation.get(j)})})(vD)),vD}var bD={},g$;function ale(){return g$||(g$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DotRepresentationProvider=e.DotParams=e.VolumePointParams=e.VolumeSphereParams=e.VolumeDotParams=void 0,e.VolumeSphereVisual=S,e.VolumeSphereImpostorVisual=T,e.VolumeSphereMeshVisual=A,e.createVolumeSphereImpostor=R,e.createVolumeSphereMesh=E,e.VolumePointVisual=I,e.createVolumePoint=B,e.getDotParams=U,e.DotRepresentation=q;const t=Ne(),r=sn(),n=Rt(),i=Zf(),c=Lt(),o=_n(),s=gt(),h=$f(),f=Tt(),y=ro(),_=$t(),g=P2(),a=wt(),d=Jn(),p=Xf(),u=ic(),m=AZ(),v=Ge(),b=In(),P=nn(),C=Dn(),l=Jf();e.VolumeDotParams={isoValue:r.Volume.IsoValueParam,perturbPositions:t.ParamDefinition.Boolean(!1)},e.VolumeSphereParams={...y.Spheres.Params,...n.Mesh.Params,...e.VolumeDotParams,tryUseImpostor:t.ParamDefinition.Boolean(!0),detail:t.ParamDefinition.Numeric(0,{min:0,max:3,step:1},f.BaseGeometry.CustomQualityParamInfo)};function S(N,k,j,H,G){return H.tryUseImpostor&&G&&G.extensions.fragDepth&&G.extensions.textureFloat?T(N):A(N)}function T(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumeSphereParams),createGeometry:R,createLocationIterator:h.createV
7637olumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions||G.lodLevels.length>0&&z.lodLevels.length===0},geometryUtils:y.Spheres.Utils,mustRecreate:(k,j,H)=>!j.tryUseImpostor||!H},N)}function A(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumeSphereParams),createGeometry:E,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions||G.sizeFactor!==z.sizeFactor||G.detail!==z.detail},geometryUtils:n.Mesh.Utils,mustRecreate:(k,j,H)=>j.tryUseImpostor&&!!H},N)}function x(N){return{...v.Mat4.extractBasis(N),maxScale:v.Mat4.getMaxScaleOnAxis(N)}}const M=new C.PCG,D=(0,a.Vec3)();function V({x:N,y:k,z:j,maxScale:H}){const G=(M.float()-.5)*H,z=(M.float()-.5)*H,W=(M.float()-.5)*H;return a.Vec3.scale(D,N,G),a.Vec3.scaleAndAdd(D,D,k,z),a.Vec3.scaleAndAdd(D,D,j,W),D}function R(N,k,j,H,G,z){const{cells:{space:W,data:X},stats:Y}=k.grid,K=r.Grid.getGridToCartesianTransform(k.grid),Q=r.Volume.IsoValue.toAbsolute(G.isoValue,Y).absoluteValue,J=(0,a.Vec3)(),[ae,te,ne]=W.dimensions,$=Q<0,ie=G.perturbPositions?x(K):void 0,Z=Math.ceil(ae*te*ne/10),re=g.SpheresBuilder.create(Z,Math.ceil(Z/2),z),oe=(pe,he,fe)=>{const de=W.get(X,pe,he,fe);if(!$&&de<Q||$&&de>Q)return;const ge=W.dataOffset(pe,he,fe);a.Vec3.set(J,pe,he,fe),a.Vec3.transformMat4(J,J,K),ie&&a.Vec3.add(J,J,V(ie)),re.add(J[0],J[1],J[2],ge)};if(G.lodLevels.length>0){let pe=1;for(;pe<ae||pe<te||pe<ne;)pe<<=1;const he=(fe,de,ge,Ce)=>{if(fe>=ae||de>=te||ge>=ne)return;if(Ce===1){oe(fe,de,ge);return}const ve=Ce>>1;he(fe,de,ge,ve),he(fe,de,ge+ve,ve),he(fe,de+ve,ge,ve),he(fe,de+ve,ge+ve,ve),he(fe+ve,de,ge,ve),he(fe+ve,de,ge+ve,ve),he(fe+ve,de+ve,ge,ve),he(fe+ve,de+ve,ge+ve,ve)};he(0,0,0,pe)}else for(let pe=0;pe<ne;++pe)for(let he=0;he<te;++he)for(let fe=0;fe<ae;++fe)oe(fe,he,pe);const ue=re.getSpheres();return ue.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),ue}function E(N,k,j,H,G,z){const{detail:W,sizeFactor:X}=G,{cells:{space:Y,data:K},stats:Q}=k.grid,J=r.Grid.getGridToCartesianTransform(k.grid),ae=r.Volume.IsoValue.toAbsolute(G.isoValue,Q).absoluteValue,te=(0,a.Vec3)(),[ne,$,ie]=Y.dimensions,re=Math.ceil(ne*$*ie/10)*(0,p.sphereVertexCount)(W),oe=_.MeshBuilder.createState(re,Math.ceil(re/2),z),ce=r.Volume.Cell.Location(k),ue=H.size.size,pe=ae<0,he=G.perturbPositions?x(J):void 0;for(let de=0;de<ie;++de)for(let ge=0;ge<$;++ge)for(let Ce=0;Ce<ne;++Ce){const ve=Y.get(K,Ce,ge,de);if(!pe&&ve<ae||pe&&ve>ae)continue;const le=Y.dataOffset(Ce,ge,de);ce.cell=le;const me=ue(ce)*X;if(he){a.Vec3.set(te,Ce,ge,de),a.Vec3.transformMat4(te,te,J);const ee=V(he);a.Vec3.add(te,te,ee)}else a.Vec3.set(te,Ce,ge,de),a.Vec3.transformMat4(te,te,J);oe.currentGroup=le,(0,d.addSphere)(oe,te,me,W)}const fe=_.MeshBuilder.getMesh(oe);return fe.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),fe}e.VolumePointParams={...u.Points.Params,...e.VolumeDotParams};function I(N){return(0,l.VolumeVisual)({defaultProps:t.ParamDefinition.getDefaultValues(e.VolumePointParams),createGeometry:B,createLocationIterator:h.createVolumeCellLocationIterator,getLoci:O,eachLocation:F,setUpdateState:(k,j,H,G,z,W,X)=>{k.createGeometry=!r.Volume.IsoValue.areSame(G.isoValue,z.isoValue,j.grid.stats)||G.perturbPositions!==z.perturbPositions},geometryUtils:u.Points.Utils},N)}function B(N,k,j,H,G,z){const{cells:{space:W,data:X},stats:Y}=k.grid,K=r.Grid.getGridToCartesianTransform(k.grid),Q=r.Volume.IsoValue.toAbsolute(G.isoValue,Y).absoluteValue,J=(0,a.Vec3)(),[ae,te,ne]=W.dimensions,$=Math.ceil(ae*te*ne/10),ie=m.PointsBuilder.create($,Math.ceil($/2),z),Z=Q<0,re=G.perturbPositions?x(K):void 0;for(let ce=0;ce<ne;++ce)for(let ue=0;ue<te;++ue)for(let pe=0;pe<ae;++pe){const he=W.get(X,pe,ue,ce);if(!Z&&he<Q||Z&&he>Q)continue;const fe=W.dataOffset(pe,ue,ce);if(re){a.Vec3.set(J,pe,ue,ce),a.Vec3.transformMat4(J,J,K);const de=V(re);a.Vec3.add(J,J,de)}else a.Vec3.set(J,pe,ue,ce),a.Vec3.transformMat4(J,J,K);ie.add(J[0],J[1],J[2],fe)}const oe=ie.getPoints();return oe.setBoundingSphere(r.Grid.getIsosurfaceBoundingSphere(k.grid,r.Volume.IsoValue.toAbsolute(G.isoValue,k.grid.stats).absoluteValue)),oe}function w(N,k){const j=b.Interval.ofLength(N.instances.length);return r.Volume.Isosurface.Loci(N,k.isoValue,j)}function O(N,k,j,H,G){const{objectId:z,groupId:W,instanceId:X}=N;if(G===z){const Y=r.Volume.PickingGranularity.get(k),K=P.OrderedSet.ofSingleton(X);if(Y==="volume")return r.Volume.Loci(k,K);if(Y==="object"||W===o.PickingId.Null)return r.Volume.Isosurface.Loci(k,H.isoValue,K);{const Q=b.Interval.ofSingleton(W);return r.Volume.Cell.Loci(k,[{indices:Q,instances:K}])}}return s.EmptyLoci}function F(N,k,j,H,G){return(0,h.eachVolumeLoci)(N,k,{isoValue:H.isoValue},G)}
7637const L={sphere:(N,k)=>(0,i.VolumeRepresentation)("Dot sphere",N,k,S,w),point:(N,k)=>(0,i.VolumeRepresentation)("Dot point",N,k,I,w)};e.DotParams={...e.VolumeSphereParams,...e.VolumePointParams,sizeFactor:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1}),visuals:t.ParamDefinition.MultiSelect(["sphere"],t.ParamDefinition.objectToOptions(L)),bumpFrequency:t.ParamDefinition.Numeric(1,{min:0,max:10,step:.1},f.BaseGeometry.ShadingCategory)};function U(N,k){const j=t.ParamDefinition.clone(e.DotParams);return j.isoValue=r.Volume.createIsoValueParam(r.Volume.IsoValue.relative(2),k.grid.stats),j}function q(N,k){return c.Representation.createMulti("Dot",N,k,c.Representation.StateBuilder,L)}e.DotRepresentationProvider=(0,i.VolumeRepresentationProvider)({name:"dot",label:"Dot",description:"Displays dots of volumetric data.",factory:q,getParams:U,defaultValues:t.ParamDefinition.getDefaultValues(e.DotParams),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},locationKinds:["cell-location","position-location"],isApplicable:N=>!r.Volume.isEmpty(N)&&!r.Volume.Segmentation.get(N)})})(bD)),bD}var y$;function DZ(){if(y$)return mf;y$=1,Object.defineProperty(mf,"__esModule",{value:!0}),mf.VolumeRepresentationRegistry=void 0;const e=Lt(),t=tle(),r=vr(),n=rle(),i=nle(),c=ile(),o=ale();class s extends e.RepresentationRegistry{constructor(){super(),(0,r.objectForEach)(s.BuiltIn,(f,y)=>{if(f.name!==y)throw new Error(`Fix BuiltInVolumeRepresentations to have matching names. ${f.name} ${y}`);this.add(f)})}}return mf.VolumeRepresentationRegistry=s,(function(h){h.BuiltIn={"direct-volume":i.DirectVolumeRepresentationProvider,dot:o.DotRepresentationProvider,isosurface:t.IsosurfaceRepresentationProvider,segment:c.SegmentRepresentationProvider,slice:n.SliceRepresentationProvider}})(s||(mf.VolumeRepresentationRegistry=s={})),mf}var C_={},v$;function ole(){if(v$)return C_;v$=1,Object.defineProperty(C_,"__esModule",{value:!0}),C_.PluginAnimationLoop=void 0;const e=ci(),t=Ct(),r=Cw(),n=1e3/30;class i{get isAnimating(){return this._isAnimating}async tick(o,s){var h,f;if(await this.plugin.managers.animation.tick(o,s?.isSynchronous,s?.animation),(h=this.plugin.canvas3d)===null||h===void 0||h.tick(o,s),t.isTimingMode){const y=(f=this.plugin.canvas3d)===null||f===void 0?void 0:f.webgl.timer.resolve();if(y)for(const _ of y)(0,r.printTimerResults)([_])}}resetTime(o){var s;(s=this.plugin.canvas3d)===null||s===void 0||s.resetTime(o)}start(o){var s,h;(s=this.plugin.canvas3d)===null||s===void 0||s.resume(),this._isAnimating=!0,this.resetTime(0),this.properTimeT=0,this.lastTickT=(0,e.now)(),o?.immediate?this.frame():this.currentFrame=(h=this.plugin.canvas3d)===null||h===void 0?void 0:h.requestAnimationFrame(this.frame)}stop(o){var s,h;this._isAnimating=!1,this.currentFrame!==void 0&&((s=this.plugin.canvas3d)===null||s===void 0||s.cancelAnimationFrame(this.currentFrame),this.currentFrame=void 0),o?.noDraw&&((h=this.plugin.canvas3d)===null||h===void 0||h.pause(o?.noDraw))}constructor(o){this.plugin=o,this.lastTickT=0,this.properTimeT=0,this.currentFrame=void 0,this._isAnimating=!1,this.frame=(s,h)=>{var f;const y=(0,e.now)(),_=y-this.lastTickT;this.lastTickT=y,this.properTimeT+=Math.min(_,n),this.tick(this.properTimeT,{xrFrame:h}),this._isAnimating&&(this.currentFrame=(f=this.plugin.canvas3d)===null||f===void 0?void 0:f.requestAnimationFrame(this.frame))}}}return C_.PluginAnimationLoop=i,C_}var P_={},b$;function sle(){if(b$)return P_;b$=1,Object.defineProperty(P_,"__esModule",{value:!0}),P_.SubstructureParentHelper=void 0;const e=jt(),t=Et(),r=Nl();class n{getDecorator(c){const o=this.plugin.state.data.tree,s=o.children.get(c);if(s.size!==1)return c;const h=s.first();return h&&o.transforms.get(h).transformer.definition.isDecorator?this.getDecorator(h):c}get(c,o=!1){const s=this.root.get(c);if(s)return o?this.plugin.state.data.cells.get(s.ref):this.plugin.state.data.cells.get(this.getDecorator(s.ref))}addMapping(c,o,s){if(!e.PluginStateObject.Molecule.Structure.is(s))return!1;if(this.tracked.set(o,s.data),this.root.has(s.data)){const h=this.root.get(s.data);h.count++}else{const h=c.select(t.StateSelection.Generators.byRef(o).rootOfType([e.PluginStateObject.Molecule.Structure]))[0];h?this.root.set(s.data,{ref:h.transform.ref,count:1}):this.root.set(s.data,{ref:o,count:1})}return!0}removeMapping(c){if(!this.tracked.has(c))return!1;const o=this.tracked.get(c);this.tracked.delete(c);const s=this.root.get(o);return s.count>1?s.count--:this.root.delete(o),!0}updateMapping(c,o,s,h){return e.PluginStateObject.Molecule.Structure.is(h)?(this.removeMapping(o),this.addMapping(c,o,h),!0):!1}dispose(){this.ev.dispose()}constructor(c){this.plugin=c,this.ev=r.RxEventHelper.create(),this.events={updated:this.ev(),removed:this.ev()},this.root=new Map,this.tracked=new Map,c.state.data.events.object.created.subscribe(o=>{this.addMapping(o.state,o.ref,o.obj)}),c.state.data.events.object.removed.subscribe(o=>{this.removeMapping(o.ref)&&this.events.removed.next({ref:o.ref,obj:o.obj})}),c.state.data.events.object.updated.subscribe(o=>{this.updateMapping(o.state,o.ref,o.oldObj,o.obj)&&this.events.updated.next({ref:o.ref,oldObj:o.oldObj,obj:o.obj})})}}return P_.SubstructureParentHelper=n,P_}var pf={},_$;function cle(){if(_$)return pf;
7637_$=1,Object.defineProperty(pf,"__esModule",{value:!0}),pf.TaskManager=void 0;const e=nt(),t=Nl(),r=ci(),n=$$(),i=Vt();class c{constructor(){this.ev=t.RxEventHelper.create(),this.id=0,this.runningTasks=new Set,this.abortRequests=new Map,this.options=new Map,this.currentContext=[],this.events={progress:this.ev(),finished:this.ev()}}tryGetAbortTaskId(s){if(this.abortRequests.has(s.progress.taskId))return s.progress.taskId;for(const h of s.children){const f=this.tryGetAbortTaskId(h);if(f!==void 0)return f}}track(s,h){return f=>{var y;if(f.canAbort&&f.requestAbort){const g=this.tryGetAbortTaskId(f.root);g!==void 0&&f.requestAbort(this.abortRequests.get(g))}const _=(0,r.now)()-f.root.progress.startedTime;this.events.progress.next({id:s,useOverlay:(y=this.options.get(h))===null||y===void 0?void 0:y.useOverlay,level:_<250?"none":"background",progress:f})}}async run(s,h){const f=this.id++;let y;h?.createNewContext||this.currentContext.length===0?y={ctx:(0,n.CreateObservableCtx)(s,this.track(f,s.id),100),refCount:1}:(y=this.currentContext[this.currentContext.length-1],y.refCount++);try{return this.options.set(s.id,{useOverlay:!!h?.useOverlay}),this.runningTasks.add(s.id),await(0,n.ExecuteInContext)(y.ctx,s)}finally{this.options.delete(s.id),this.runningTasks.delete(s.id),this.events.finished.next({id:f}),this.abortRequests.delete(s.id),y.refCount--,y.refCount===0&&(0,i.arrayRemoveInPlace)(this.currentContext,y)}}requestAbortAll(s){this.runningTasks.forEach(h=>this.abortRequests.set(h,s))}requestAbort(s,h){const f=typeof s=="number"?s:s.root.progress.taskId;this.abortRequests.set(f,h)}dispose(){this.ev.dispose()}}return pf.TaskManager=c,(function(o){function s(f){return new Promise(y=>setTimeout(y,f))}function h(f){return e.Task.create("Test",async y=>{let _=0;for(;_<f;)await s(100+Math.random()*200),y.shouldUpdate&&await y.update({message:"Step "+_,current:_,max:f,isIndeterminate:!1}),_++})}o.testTask=h})(c||(pf.TaskManager=c={})),pf}var T_={},S$;function ule(){if(S$)return T_;S$=1,Object.defineProperty(T_,"__esModule",{value:!0}),T_.PluginToastManager=void 0;const e=Vi(),t=Ff,r=Sn();class n extends e.StatefulPluginComponent{findByKey(c){return this.state.entries.find(o=>!!o&&o.key===c)}show(c){let o=this.state.entries,s;const h=++this.serialId;let f;c.key&&(s=this.findByKey(c.key))?(s.timeout!==void 0&&clearTimeout(s.timeout),f=s.serialNumber,o=o.remove(s.id)):f=++this.serialNumber,s={id:h,serialNumber:f,key:c.key,title:c.title,message:c.message,timeout:this.timeout(h,c.timeoutMs),hide:()=>this.hideId(h)},this.updateState({entries:o.set(h,s)})&&this.events.changed.next(void 0)}timeout(c,o){if(o!==void 0)return o<0&&(o=500),setTimeout(()=>{const s=this.state.entries.get(c);s.timeout=void 0,this.hide(s)},o)}hideId(c){this.hide(this.state.entries.get(c))}hide(c){c&&(c.timeout!==void 0&&clearTimeout(c.timeout),c.hide=void 0,this.updateState({entries:this.state.entries.delete(c.id)})&&this.events.changed.next(void 0))}constructor(c){super({entries:(0,t.OrderedMap)()}),this.events={changed:this.ev()},this.serialNumber=0,this.serialId=0,r.PluginCommands.Toast.Show.subscribe(c,o=>this.show(o)),r.PluginCommands.Toast.Hide.subscribe(c,o=>this.hide(this.findByKey(o.key)))}}return T_.PluginToastManager=n,T_}var x_={},C$;function lle(){if(C$)return x_;C$=1,Object.defineProperty(x_,"__esModule",{value:!0}),x_.ViewportScreenshotHelper=void 0;const e=YS(),t=Hw(),r=rn(),n=Vi(),i=jt(),c=Et(),o=nt(),s=vt(),h=uZ(),f=Ne(),y=Hi();function _(){const a=document.createElement("canvas");return a.getContext&&a.getContext("2d")?a.toDataURL("image/webp").indexOf("data:image/webp")===0:!1}class g extends n.PluginComponent{createParams(){let d=8192;if(this.plugin.canvas3d){const{webgl:p}=this.plugin.canvas3d;d=Math.floor(Math.min(p.maxRenderbufferSize,p.maxTextureSize)/2)}return{resolution:f.ParamDefinition.MappedStatic("viewport",{viewport:f.ParamDefinition.Group({}),hd:f.ParamDefinition.Group({}),"full-hd":f.ParamDefinition.Group({}),"ultra-hd":f.ParamDefinition.Group({}),"8k-ultra-hd":f.ParamDefinition.Group({}),custom:f.ParamDefinition.Group({width:f.ParamDefinition.Numeric(1920,{min:128,max:d,step:1}),height:f.ParamDefinition.Numeric(1080,{min:128,max:d,step:1})},{isFlat:!0})},{options:[["viewport","Viewport"],["hd","HD (1280 x 720)"],["full-hd","Full HD (1920 x 1080)"],["ultra-hd","Ultra HD (3840 x 2160)"],["8k-ultra-hd","8K Ultra HD (7680 x 4320)"],["custom","Custom"]]}),format:f.ParamDefinition.MappedStatic("png",{png:f.ParamDefinition.Group({}),webp:f.ParamDefinition.Group({quality:f.ParamDefinition.Numeric(.9,{min:0,max:1,step:.
763701})}),jpeg:f.ParamDefinition.Group({quality:f.ParamDefinition.Numeric(.9,{min:0,max:1,step:.01})})},{options:[["png","PNG"],["jpeg","JPEG"],..._()?[["webp","WebP"]]:[]]}),transparent:f.ParamDefinition.Boolean(!1),axes:e.CameraHelperParams.axes,illumination:f.ParamDefinition.Group({extraIterations:f.ParamDefinition.Numeric(1,{min:0,max:5,step:1}),targetIterationTimeMs:f.ParamDefinition.Numeric(300,{min:100,max:3e3,step:10})})}}get params(){return this._params?this._params:this._params=this.createParams()}get values(){return this.behaviors.values.value}get cropParams(){return this.behaviors.cropParams.value}get relativeCrop(){return this.behaviors.relativeCrop.value}getCanvasSize(){var d,p;return{width:((d=this.plugin.canvas3d)===null||d===void 0?void 0:d.webgl.gl.drawingBufferWidth)||0,height:((p=this.plugin.canvas3d)===null||p===void 0?void 0:p.webgl.gl.drawingBufferHeight)||0}}getSize(){const d=this.values;switch(d.resolution.name){case"viewport":return this.getCanvasSize();case"hd":return{width:1280,height:720};case"full-hd":return{width:1920,height:1080};case"ultra-hd":return{width:3840,height:2160};case"8k-ultra-hd":return{width:7680,height:4320};default:return{width:d.resolution.params.width,height:d.resolution.params.height}}}getPostprocessingProps(){const d=this.plugin.canvas3d,p=d.props.postprocessing.occlusion;return{...d.props.postprocessing,occlusion:p.name==="on"?{name:"on",params:{...p.params,samples:128,resolutionScale:d.webgl.pixelRatio,transparentThreshold:1}}:p}}getIlluminationProps(d){const u=this.plugin.canvas3d.props.illumination,{extraIterations:m,targetIterationTimeMs:v}=this.values.illumination;return{...u,enabled:d?!1:u.enabled,maxIterations:Math.ceil(Math.log2(Math.pow(2,u.maxIterations+m)*u.rendersPerFrame[1])),targetFps:1e3/v,denoiseThreshold:[u.denoiseThreshold[0],u.denoiseThreshold[0]],rendersPerFrame:[1,1]}}createPass(d){const p=this.plugin.canvas3d,{colorBufferFloat:u,textureFloat:m}=p.webgl.extensions;return p.getImagePass({transparentBackground:this.values.transparent,cameraHelper:{axes:this.values.axes},multiSample:{...p.props.multiSample,mode:d?"off":"on",sampleLevel:u&&m?4:2,reuseOcclusion:!1},postprocessing:this.getPostprocessingProps(),marking:{...p.props.marking},illumination:this.getIlluminationProps(d)})}get previewPass(){return this._previewPass||(this._previewPass=this.createPass(!0))}get imagePass(){if(this._imagePass){const d=this.plugin.canvas3d;return this._imagePass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:this.getPostprocessingProps(),marking:{...d.props.marking},illumination:this.getIlluminationProps(!1)}),this._imagePass}return this._imagePass=this.createPass(!1)}getFilename(d){typeof d!="string"&&(d=this.extension);const p=this.plugin.state.data.select(c.StateSelection.Generators.rootsOfType(i.PluginStateObject.Molecule.Model)).map(v=>v.obj.data),u=new Set;return p.forEach(v=>u.add(v.entryId.toUpperCase())),`${y.SetUtils.toArray(u).join("-")||"molstar-image"}${d}`}resetCrop(){this.behaviors.relativeCrop.next({x:0,y:0,width:1,height:1})}toggleAutocrop(){this.cropParams.auto?(this.behaviors.cropParams.next({...this.cropParams,auto:!1}),this.resetCrop()):this.behaviors.cropParams.next({...this.cropParams,auto:!0})}get isFullFrame(){const d=this.relativeCrop;return(0,r.equalEps)(d.x,0,1e-5)&&(0,r.equalEps)(d.y,0,1e-5)&&(0,r.equalEps)(d.width,1,1e-5)&&(0,r.equalEps)(d.height,1,1e-5)}autocrop(d=this.cropParams.relativePadding){const{data:p,width:u,height:m}=this.previewData.image,v=this.previewData.transparent,b=v?this.previewData.background:4278190080|this.previewData.background;let P=u,C=0,l=m,S=0;for(let M=0;M<m;M++){const D=M*u;for(let V=0;V<u;V++){const R=4*(D+V);if(v){if(p[R+3]===0)continue}else if((p[R]<<16|p[R+1]<<8|p[R+2]|p[R+3]<<24)===b)continue;V<P&&(P=V),V>C&&(C=V),M<l&&(l=M),M>S&&(S=M)}}if(P>C){const M=P;P=C,C=M}if(l>S){const M=l;l=S,S=M}const T=C-P+1,A=S-l+1;P-=d*T,C+=d*T,l-=d*A,S+=d*A;const x={x:Math.max(0,P/u),y:Math.max(0,l/m),width:Math.min(1,(C-P+1)/u),height:Math.min(1,(S-l+1)/m)};this.behaviors.relativeCrop.next(x)}async getPreview(d,p=320){const{width:u,height:m}=this.getSize();if(u<=0||m<=0)return;const v=u/m;let b=0,P=0;v>1?(b=p,P=Math.round(p/v)):(P=p,b=Math.round(p*v));const C=this.plugin.canvas3d.props;this.previewPass.setProps({cameraHelper:{axes:this.values.axes}
7637,transparentBackground:this.values.transparent,postprocessing:C.postprocessing,marking:C.marking});const l=await this.previewPass.getImageData(d,b,P),S=this.previewCanvas;S.width=l.width,S.height=l.height,this.previewData.image=l,this.previewData.background=C.renderer.backgroundColor,this.previewData.transparent=this.values.transparent;const T=S.getContext("2d");if(!T)throw new Error("Could not create canvas 2d context");return T.putImageData(l,0,0),this.cropParams.auto&&this.autocrop(),this.events.previewed.next(void 0),{canvas:S,width:b,height:P}}getSizeAndViewport(){const{width:d,height:p}=this.getSize(),u=this.relativeCrop,m={x:Math.floor(u.x*d),y:Math.floor(u.y*p),width:Math.ceil(u.width*d),height:Math.ceil(u.height*p)};return m.width+m.x>d&&(m.width=d-m.x),m.height+m.y>p&&(m.height=p-m.y),{width:d,height:p,viewport:m}}async draw(d){const{width:p,height:u,viewport:m}=this.getSizeAndViewport();if(!(p<=0||u<=0)){this.plugin.animationLoop.stop({noDraw:!0});try{await d.update("Rendering image...");const v=this.imagePass;
7637await v.updateBackground();const b=await v.getImageData(d,p,u,m);await d.update("Encoding image...");const P=this.canvas;P.width=b.width,P.height=b.height;const C=P.getContext("2d");if(!C)throw new Error("Could not create canvas 2d context");C.putImageData(b,0,0)}finally{this.plugin.animationLoop.start({immediate:!0})}}}copyToClipboardTask(){const d=navigator.clipboard;if(!d?.write){this.plugin.log.error("clipboard.write not supported!");return}return o.Task.create("Copy Image",async p=>{await this.draw(p),await p.update("Converting image...");const u=this.mimeType,m=await(0,t.canvasToBlob)(this.canvas,u,this.quality),v=new ClipboardItem({[u]:m});await d.write([v]),this.plugin.log.message("Image copied to clipboard.")})}get mimeType(){var d,p;return`image/${(p=(d=this.values.format)===null||d===void 0?void 0:d.name)!==null&&p!==void 0?p:"png"}`}get extension(){var d,p,u;return((d=this.values.format)===null||d===void 0?void 0:d.name)==="jpeg"?".jpg":`.${(u=(p=this.values.format)===null||p===void 0?void 0:p.name)!==null&&u!==void 0?u:"png"}`}get quality(){var d,p,u,m;switch((d=this.values.format)===null||d===void 0?void 0:d.name){case"webp":case"jpeg":return(m=(u=(p=this.values.format)===null||p===void 0?void 0:p.params)===null||u===void 0?void 0:u.quality)!==null&&m!==void 0?m:.9;default:return}}getImageDataUri(){return this.plugin.runTask(o.Task.create("Generate Image",async d=>(await this.draw(d),await d.update("Converting image..."),this.canvas.toDataURL(this.mimeType))))}copyToClipboard(){const d=this.copyToClipboardTask();if(d)return this.plugin.runTask(d)}downloadTask(d){return o.Task.create("Download Image",async p=>{await this.draw(p),await p.update("Downloading image...");const u=await(0,t.canvasToBlob)(this.canvas,this.mimeType,this.quality);(0,h.download)(u,d??this.getFilename(this.extension))})}download(d){return this.plugin.runTask(this.downloadTask(d),{useOverlay:!0})}constructor(d){super(),this.plugin=d,this._params=void 0,this.behaviors={values:this.ev.behavior({transparent:this.params.transparent.defaultValue,format:{name:"png",params:{}},axes:{name:"off",params:{}},resolution:this.params.resolution.defaultValue,illumination:this.params.illumination.defaultValue}),cropParams:this.ev.behavior({auto:!0,relativePadding:.1}),relativeCrop:this.ev.behavior({x:0,y:0,width:1,height:1})},this.events={previewed:this.ev()},this.canvas=(function(){return document.createElement("canvas")})(),this.previewCanvas=(function(){return document.createElement("canvas")})(),this.previewData={image:{data:new Uint8ClampedArray(1),width:1,height:0},background:(0,s.Color)(0),transparent:!1}}}return x_.ViewportScreenshotHelper=g,x_}var A_={},ml={},P$;function IZ(){if(P$)return ml;P$=1,Object.defineProperty(ml,"__esModule",{value:!0}),ml.DownloadFile=ml.OpenFiles=void 0;const e=Et(),t=nt(),r=Ha(),n=S2(),i=Ne(),c=iS(),o=jt();async function s(h,f,y,_){var g,a,d,p;const u=(0,n.getFileNameInfo)((a=(g=h.file)===null||g===void 0?void 0:g.name)!==null&&a!==void 0?a:""),m=f.dataFormats.binaryExtensions.has(u.ext),{data:v}=await f.builders.data.readFile({file:h,isBinary:m}),b=y==="auto"?f.dataFormats.auto(u,(d=v.cell)===null||d===void 0?void 0:d.obj):f.dataFormats.get(y);if(!b){f.log.warn(`OpenFiles: could not find data provider for '${u.ext}'`),await f.state.data.build().delete(v).commit();return}const P=await b.parse(f,v);_&&await((p=b.visuals)===null||p===void 0?void 0:p.call(b,f,P))}return ml.OpenFiles=e.StateAction.build({display:{name:"Open Files",description:"Load one or more files and optionally create default visuals"},from:o.PluginStateObject.Root,params:(h,f)=>{const{extensions:y,options:_}=f.dataFormats;return{files:i.ParamDefinition.FileList({accept:Array.from(y.values()).map(g=>`.${g}`).join(",")+",.gz,.zip",multiple:!0}),format:i.ParamDefinition.MappedStatic("auto",{auto:i.ParamDefinition.EmptyGroup(),specific:i.ParamDefinition.Select(_[0][0],_)}),visuals:i.ParamDefinition.Boolean(!0,{description:"Add default visuals"})}}})(({params:h,state:f},y)=>t.Task.create("Open Files",async _=>{y.behaviors.layout.leftPanelTabName.next("data"),await f.transaction(async()=>
7637{if(h.files===null){y.log.error("No file(s) selected");return}for(const g of h.files)try{if(g.file&&g.name.toLowerCase().endsWith(".zip")){const a=await(0,c.unzip)(_,await g.file.arrayBuffer());for(const[d,p]of Object.entries(a)){if(!(p instanceof Uint8Array)||p.length===0)continue;const u=r.Asset.File(new File([p],d));await s(u,y,"auto",h.visuals)}}else{const a=h.format.name==="auto"?"auto":h.format.params;await s(g,y,a,h.visuals)}}catch(a){console.error(a),y.log.error(`Error opening file '${g.name}'`)}}).runInContext(_)})),ml.DownloadFile=e.StateAction.build({display:{name:"Download File",description:"Load one or more file from an URL"},from:o.PluginStateObject.Root,params:(h,f)=>{const y=[...f.dataFormats.options,["zip","Zip"],["gzip","Gzip"]];return{url:i.ParamDefinition.Url(""),format:i.ParamDefinition.Select(y[0][0],y),isBinary:i.ParamDefinition.Boolean(!1),visuals:i.ParamDefinition.Boolean(!0,{description:"Add default visuals"})}}})(({params:h,state:f},y)=>t.Task.create("Open Files",async _=>{y.behaviors.layout.leftPanelTabName.next("data"),await f.transaction(async()=>{var g,a,d;try{if(h.format==="zip"||h.format==="gzip"){const p=await y.builders.data.download({url:h.url,isBinary:!0});if(h.format==="zip"){const u=await(0,c.unzip)(_,((g=p.obj)===null||g===void 0?void 0:g.data).buffer);for(const[m,v]of Object.entries(u)){if(!(v instanceof Uint8Array)||v.length===0)continue;const b=r.Asset.File(new File([v],m));await s(b,y,"auto",h.visuals)}}else{const u=r.Asset.getUrl(h.url),m=(0,n.getFileNameInfo)(u).name;await s(r.Asset.File(new File([(a=p.obj)===null||a===void 0?void 0:a.data],m)),y,"auto",h.visuals)}}else{const p=y.dataFormats.get(h.format);if(!p){y.log.warn(`DownloadFile: could not find data provider for '${h.format}'`);return}const u=await y.builders.data.download({url:h.url,isBinary:h.isBinary}),m=await p.parse(y,u);h.visuals&&await((d=p.visuals)===null||d===void 0?void 0:d.call(p,y,m))}}catch(p){console.error(p),y.log.error(`Error downloading '${typeof h.url=="string"?h.url:h.url.url}'`)}}).runInContext(_)})),ml}var T$;function dle(){if(T$)return A_;T$=1,Object.defineProperty(A_,"__esModule",{value:!0}),A_.DragAndDropManager=void 0;const e=IZ(),t=Ha(),r=Sn();class n{addHandler(o,s){const h=this.handlers.findIndex(f=>f[0]===o);h<0?this.handlers.push([o,s]):this.handlers[h][1]=s}removeHandler(o){const s=this.handlers.findIndex(h=>h[0]===o);s>=0&&this.handlers.splice(s,1)}async handle(o){for(let s=this.handlers.length-1;s>=0;s--){const h=this.handlers[s][1];if(await h(o,this.plugin))return}i(this.plugin,o)}dispose(){this.handlers.length=0}constructor(o){this.plugin=o,this.handlers=[]}}A_.DragAndDropManager=n;function i(c,o){const s=o.filter(h=>{const f=h.name.toLowerCase();return f.endsWith(".molx")||f.endsWith(".molj")});s.length>0?r.PluginCommands.State.Snapshots.OpenFile(c,{file:s[0]}):c.runTask(c.state.data.applyAction(e.OpenFiles,{files:o.map(h=>t.Asset.File(h)),format:{name:"auto",params:{}},visuals:!0}))}return A_}var M_={},x$;function fle(){if(x$)return M_;x$=1,Object.defineProperty(M_,"__esModule",{value:!0}),M_.ErrorContext=void 0;class e{constructor(){this.errors=Object.create(null)}get(r){var n;return(n=this.errors[r])!==null&&n!==void 0?n:[]}add(r,n){r in this.errors&&Array.isArray(this.errors[r])?this.errors[r].push(n):this.errors[r]=[n]}clear(r){delete this.errors[r]}}return M_.ErrorContext=e,M_}var D_={},A$;function mle(){if(A$)return D_;A$=1,Object.defineProperty(D_,"__esModule",{value:!0}),D_.PluginContainer=void 0;class e{mount(r){var n;this.parent.parentElement!==r&&((n=this.parent.parentElement)===null||n===void 0||n.removeChild(this.parent)),r.appendChild(this.parent)}unmount(){var r;(r=this.parent.parentElement)===null||r===void 0||r.removeChild(this.parent)}constructor(r){this.options=r;const n=document.createElement("div");Object.assign(n.style,{position:"absolute",left:0,top:0,right:0,bottom:0,"-webkit-user-select":"none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none","touch-action":"manipulation"});let i=r?.canvas;i||(i=document.createElement("canvas"),n.appendChild(i)),this.canvas=i,this.parent=n}}return D_.PluginContainer=e,D_}var M$;function ple(){if(M$)return jb;
7637M$=1,Object.defineProperty(jb,"__esModule",{value:!0}),jb.PluginContext=void 0;const e=Lf(),t=Ff,r=Rn(),n=cce(),i=y2(),c=Hw(),o=Ge(),s=uce(),h=lce(),f=pce(),y=vce(),_=jl(),g=bce(),a=Tce(),d=xce(),p=Ace(),u=cZ(),m=Bce(),v=Rce(),b=Lce(),P=Nce(),C=gZ(),l=Uce(),S=jce(),T=_2(),A=Gce(),x=Lt(),M=ele(),D=DZ(),V=Et(),R=nt(),E=ms(),I=ps(),B=Ha(),w=vt(),O=ET(),F=Ct(),L=cs(),U=wQ(),q=vr(),N=Nl(),k=ole(),j=b2(),H=di(),G=ZQ(),z=Sn(),W=gs(),X=zw(),Y=sle(),K=cle(),Q=ule(),J=lle(),ae=sZ,te=xf(),ne=dle(),$=fle(),ie=mle();class Z{get isInitialized(){return this._isInitialized}build(){return this.state.data.build()}async initViewerAsync(oe,ce,ue){return this._initViewer(oe,ce,ue)}async initContainerAsync(oe){return this._initContainer(oe)}async mountAsync(oe,ce){return this._mount(oe,ce)}_initContainer(oe){var ce,ue;if(this.container)return!0;const pe=new ie.PluginContainer({checkeredCanvasBackground:oe?.checkeredCanvasBackground,canvas:(ce=oe?.canvas3dContext)===null||ce===void 0?void 0:ce.canvas});return this._initViewer(pe.canvas,pe.parent,oe?.canvas3dContext)?(oe?.checkeredCanvasBackground&&((ue=this.canvas3d)===null||ue===void 0||ue.setProps({checkeredTransparentBackground:!0})),this.container=pe,!0):!1}_mount(oe,ce){var ue;if(this.disposed)throw new Error("Cannot mount a disposed context");return this._initContainer(ce)?((ue=this.container)===null||ue===void 0||ue.mount(oe),this.handleResize(),!0):!1}unmount(){var oe;(oe=this.container)===null||oe===void 0||oe.unmount()}_initViewer(oe,ce,ue){var pe,he,fe,de,ge,Ce;try{this.layout.setRoot(ce),this.spec.layout&&this.spec.layout.initial&&this.layout.setProps(this.spec.layout.initial),ue||(ue=i.Canvas3DContext.fromCanvas(oe,this.managers.asset,{antialias:!((pe=this.config.get(W.PluginConfig.General.DisableAntialiasing))!==null&&pe!==void 0&&pe),preserveDrawingBuffer:!((he=this.config.get(W.PluginConfig.General.DisablePreserveDrawingBuffer))!==null&&he!==void 0&&he),preferWebGl1:this.config.get(W.PluginConfig.General.PreferWebGl1)||!1,failIfMajorPerformanceCaveat:!((fe=this.config.get(W.PluginConfig.General.AllowMajorPerformanceCaveat))!==null&&fe!==void 0&&fe),powerPreference:this.config.get(W.PluginConfig.General.PowerPreference)||"high-performance",handleResize:this.handleResize},{pixelScale:this.config.get(W.PluginConfig.General.PixelScale)||1,pickScale:this.config.get(W.PluginConfig.General.PickScale)||.25,transparency:this.config.get(W.PluginConfig.General.Transparency)||"wboit",resolutionMode:this.config.get(W.PluginConfig.General.ResolutionMode)||"auto"})),this.canvas3dContext=ue,this.canvas3d=i.Canvas3D.create(this.canvas3dContext),this.canvas3dInit.next(!0);let ve=this.spec.canvas3d;const le=(0,w.Color)(16579577);return ve?(((ge=ve.renderer)===null||ge===void 0?void 0:ge.backgroundColor)===void 0&&(ve=(0,e.produce)(ve,me=>{me.renderer?me.renderer.backgroundColor=le:me.renderer={backgroundColor:le}})),(Ce=this.canvas3d)===null||Ce===void 0||Ce.setProps(ve)):(de=this.canvas3d)===null||de===void 0||de.setProps({renderer:{backgroundColor:le}}),this.animationLoop.start(),this.helpers.viewportScreenshot=new J.ViewportScreenshotHelper(this),this.subs.push(this.canvas3d.interaction.click.subscribe(me=>this.behaviors.interaction.click.next(me))),this.subs.push(this.canvas3d.interaction.drag.subscribe(me=>this.behaviors.interaction.drag.next(me))),this.subs.push(this.canvas3d.interaction.hover.subscribe(me=>this.behaviors.interaction.hover.next(me))),this.subs.push(this.canvas3d.input.resize.pipe((0,n.debounceTime)(50),(0,n.throttleTime)(100,void 0,{leading:!1,trailing:!0})).subscribe(()=>this.handleResize())),this.subs.push(this.canvas3d.input.keyDown.subscribe(me=>this.behaviors.interaction.key.next(me))),this.subs.push(this.canvas3d.input.keyUp.subscribe(me=>this.behaviors.interaction.keyReleased.next(me))),this.subs.push(this.canvas3d.xr.isPresenting.subscribe(me=>this.log.info(`WebXR ${me?"enabled":"disabled"}`))),this.subs.push(this.canvas3d.xr.requestFailed.subscribe(me=>this.log.error(`WebXR request failed: ${me}`))),this.subs.push(this.layout.events.updated.subscribe(()=>requestAnimationFrame(()=>this.handleResize()))),this.handleResize(),R.Scheduler.setImmediate(()=>this.initCanvas3dPromiseCallbacks[0]()),!0}catch(ve){return this.log.error(""+ve),console.error(ve),R.Scheduler.setImmediate(()=>this.initCanvas3dPromiseCallbacks[1](ve)),!1}}get isBusy(){return this.behaviors.state.isAnimating.value||this.behaviors.state.isUpdating.value}get selectionMode(){return this.behaviors.interaction.selectionMode.value}set selectionMode(oe){this.behaviors.interaction.selectionMode.next(oe)}dataTransaction(oe,ce){return this.runTask(this.state.data.transaction(oe,ce))}clear(oe=!1){var ce;return oe&&((ce=this.canvas3d)===null||ce===void 0||ce.setProps(i.DefaultCanvas3DParams)),z.PluginCommands.State.RemoveObject(this,{state:this.state.data,ref:V.StateTransform.RootRef})}dispose(oe){var ce,ue;if(!this.disposed){for(const pe of this.subs)pe.unsubscribe();this.subs=[],this.layout.dispose(),this.managers.markdownExtensions.audio.dispose(),this.animationLoop.stop(),this.commands.dispose(),(ce=this.canvas3d)===null||ce===void 0||ce.dispose(),oe?.doNotDisposeCanvas3DContext||(ue=this.canvas3dContext)===null||ue===void 0||ue.dispose(oe),this.ev.dispose(),this.state.dispose(),this.helpers.substructureParent.dispose(),(0,q.objectForEach)(this.managers,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),(0,q.objectForEach)(this.managers.structure,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),(0,q.objectForEach)(this.managers.volume,pe=>{var he;return(he=pe?.dispose)===null||he===void 0?void 0:he.call(pe)}),this.unmount(),this.container=void 0,this.customState={},this.disposed=!0}}initBehaviorEvents(){this.subs.push((0,r.merge)(this.state.data.behaviors.isUpdating,this.state.behaviors.behaviors.isUpdating).subscribe(fe=>{this.behaviors.state.isUpdating.value!==fe&&this.behaviors.state.isUpdating.next(fe)}));const oe=this.config.get(W.PluginConfig.General.IsBusyTimeoutMs)||750,ce=this.behaviors.state.isBusy;let ue;const pe=()=>{ce.value||ce.next(!0)},he=()=>{ue!==void 0&&clearTimeout(ue),ue=void 0};this.subs.push((0,r.merge)(this.behaviors.state.isUpdating,this.behaviors.state.isAnimating).subscribe(fe=>{const de=this.behaviors.state.isUpdating.value,ge=this.behaviors.state.isAnimating.value;de||ge?ce.value||(he(),ue=setTimeout(pe,oe)):(he(),ce.next(!1))})),this.subs.push(this.behaviors.interaction.selectionMode.subscribe(fe=>{var de;fe||(de=this.managers.interactivity)===null||de===void 0||de.lociSelects.deselectAll()}))}initBuiltInBehavior(){j.BuiltInPluginBehaviors.State.registerDefault(this),j.BuiltInPluginBehaviors.Representation.registerDefault(this),j.BuiltInPluginBehaviors.Camera.registerDefault(this),j.BuiltInPluginBehaviors.Misc.registerDefault(this),this.subs.push((0,r.merge)(this.state.data.events.log,this.state.behaviors.events.log).subscribe(oe=>this.events.log.next(oe)))}async initBehaviors(){let oe=this.state.behaviors.build();for(const ce of Object.keys(H.PluginBehavior.Categories))oe.toRoot().apply(H.PluginBehavior.CreateCategory,{label:H.PluginBehavior.Categories[ce]},{ref:ce,state:{isLocked:!0}});for(const ce of this.spec.behaviors)H.PluginBehavior.getCategoryId(ce.transformer)==="custom-props"&&oe.to(H.PluginBehavior.getCategoryId(ce.transformer)).apply(ce.transformer,ce.defaultParams,{ref:ce.transformer.id});await this.runTask(this.state.behaviors.updateTree(oe,{doNotUpdate
7637Current:!0,doNotLogTiming:!0})),oe=this.state.behaviors.build();for(const ce of this.spec.behaviors)H.PluginBehavior.getCategoryId(ce.transformer)!=="custom-props"&&oe.to(H.PluginBehavior.getCategoryId(ce.transformer)).apply(ce.transformer,ce.defaultParams,{ref:ce.transformer.id});await this.runTask(this.state.behaviors.updateTree(oe,{doNotUpdateCurrent:!0,doNotLogTiming:!0}))}initCustomFormats(){if(this.spec.customFormats)for(const oe of this.spec.customFormats)this.dataFormats.add(oe[0],oe[1])}initAnimations(){var oe;if(!(!((oe=this.spec.animations)===null||oe===void 0)&&oe.length)){this.managers.animation.register(T.AnimateStateSnapshotTransition);return}for(const ce of this.spec.animations)this.managers.animation.register(ce)}initDataActions(){if(this.spec.actions)for(const oe of this.spec.actions)this.state.data.actions.add(oe.action)}async init(){try{this.subs.push(this.events.log.subscribe(oe=>this.log.entries=this.log.entries.push(oe))),this.initCustomFormats(),this.initBehaviorEvents(),this.initBuiltInBehavior(),this.managers.interactivity=new d.InteractivityManager(this),this.managers.lociLabels=new p.LociLabelManager(this),this.builders.structure=new f.StructureBuilder(this),this.initAnimations(),this.initDataActions(),await this.initBehaviors(),this.log.message(`Mol* Plugin ${ae.PLUGIN_VERSION} [${ae.PLUGIN_VERSION_DATE.toLocaleString()}]`),F.isProductionMode||this.log.message("Development mode enabled"),F.isDebugMode&&this.log.message("Debug mode enabled"),this._isInitialized=!0,this.initializedPromiseCallbacks[0]()}catch(oe){throw this.initializedPromiseCallbacks[1](oe),oe}}constructor(oe){var ce;this.spec=oe,this.runTask=(ue,pe)=>this.managers.task.run(ue,pe),this.resolveTask=ue=>{if(ue)return R.Task.is(ue)?this.runTask(ue):ue},this.subs=[],this.initCanvas3dPromiseCallbacks=[()=>{},()=>{}],this._isInitialized=!1,this.initializedPromiseCallbacks=[()=>{},()=>{}],this.disposed=!1,this.container=void 0,this.ev=N.RxEventHelper.create(),this.config=new W.PluginConfigManager(this.spec.config),this.state=new X.PluginState(this),this.commands=new G.PluginCommandManager,this.canvas3dInit=this.ev.behavior(!1),this.behaviors={state:{isAnimating:this.ev.behavior(!1),isUpdating:this.ev.behavior(!1),isBusy:this.ev.behavior(!1)},interaction:{hover:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0}),click:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0}),drag:this.ev.behavior({current:x.Representation.Loci.Empty,modifiers:L.ModifiersKeys.None,buttons:0,button:0,pageStart:(0,o.Vec2)(),pageEnd:(0,o.Vec2)()}),key:this.ev.behavior(L.EmptyKeyInput),keyReleased:this.ev.behavior(L.EmptyKeyInput),selectionMode:this.ev.behavior(!1)},labels:{highlight:this.ev.behavior({labels:[]})},layout:{leftPanelTabName:this.ev.behavior("root")},canvas3d:{initialized:this.canvas3dInit.pipe((0,n.filter)(ue=>!!ue),(0,n.take)(1))}},this.canvas3dInitialized=new Promise((ue,pe)=>{this.initCanvas3dPromiseCallbacks=[ue,pe]}),this.initialized=new Promise((ue,pe)=>{this.initializedPromiseCallbacks=[ue,pe]}),this.layout=new A.PluginLayout(this),this.animationLoop=new k.PluginAnimationLoop(this),this.representation={structure:{registry:new M.StructureRepresentationRegistry,themes:{colorThemeRegistry:E.ColorTheme.createRegistry(),sizeThemeRegistry:I.SizeTheme.createRegistry()}},volume:{registry:new D.VolumeRepresentationRegistry,themes:{colorThemeRegistry:E.ColorTheme.createRegistry(),sizeThemeRegistry:I.SizeTheme.createRegistry()}}},this.query={structure:{registry:new _.StructureSelectionQueryRegistry}},this.dataFormats=new y.DataFormatRegistry,this.builders={data:new h.DataBuilder(this),structure:void 0},this.helpers={substructureParent:new Y.SubstructureParentHelper(this),viewportScreenshot:void 0},this.managers={structure:{hierarchy:new b.StructureHierarchyManager(this),component:new m.StructureComponentManager(this),measurement:new P.StructureMeasurementManager(this),selection:new C.StructureSelectionManager(this),focus:new v.StructureFocusManager(this)},volume:{hierarchy:new l.VolumeHierarchyManager(this)},interactivity:void 0,camera:new a.CameraManager(this),animation:new g.PluginAnimationManager(this),snapshot:new u.PluginStateSnapshotManager(this),lociLabels:void 0,toast:new Q.PluginToastManager(this),asset:new B.AssetManager,task:new K.TaskManager,markdownExtensions:new S.MarkdownExtensionManager(this),dragAndDrop:new ne.DragAndDropManager(this)},this.events={log:this.ev(),task:this.managers.task.events,canvas3d:{settingsUpdated:this.ev()}},this.customModelProperties=new s.CustomProperty.Registry,this.customStructureProperties=new s.CustomProperty.Registry,this.customVolumeProperties=new s.CustomProperty.Registry,this.customStructureControls=new Map,this.customImportControls=new Map,this.genericRepresentationControls=new Map,this.errorContext=new $.ErrorContext,this.customState=Object.create(null),this.handleResize=()=>{var ue,pe;const he=(ue=this.canvas3dContext)===null||ue===void 0?void 0:ue.canvas,fe=this.layout.root;fe&&he&&((0,c.resizeCanvas)(he,fe,this.canvas3dContext.pixelScale),this.canvas3dContext.syncPixelScale(),(pe=this.canvas3d)===null||pe===void 0||pe.requestResize())},this.log={entries:(0,t.List)(),entry:ue=>this.events.log.next(ue),error:ue=>this.events.log.next(U.LogEntry.error(ue)),message:ue=>this.events.log.next(U.LogEntry.message(ue)),info:ue=>this.events.log.next(U.LogEntry.info(ue)),warn:ue=>this.events.log.next(U.LogEntry.warning(ue))},this.fetch=O.ajaxGet,(0,te.setSaccharideCompIdMapType)((ce=this.config.get(W.PluginConfig.Structure.SaccharideCompIdMapType))!==null&&ce!==void 0?ce:"default")}}return jb.PluginContext=Z,jb}var hle=ple(),pl={},I_={},D$;function gle(){if(D$)return I_;
7637D$=1,Object.defineProperty(I_,"__esModule",{value:!0}),I_.AnimateAssemblyUnwind=void 0;const e=dc(),t=jt(),r=Dr(),n=Et(),i=Sn(),c=Ne();return I_.AnimateAssemblyUnwind=e.PluginStateAnimation.create({name:"built-in.animate-assembly-unwind",display:{name:"Unwind Assembly"},isExportable:!0,params:o=>{const s=[["all","All"]],h=o.state.data.select(n.StateSelection.Generators.rootsOfType(t.PluginStateObject.Molecule.Structure));for(const f of h)s.push([f.transform.ref,f.obj.data.models[0].label]);return{durationInMs:c.ParamDefinition.Numeric(3e3,{min:100,max:1e4,step:100}),playOnce:c.ParamDefinition.Boolean(!1),target:c.ParamDefinition.Select(s[0][0],s)}},canApply(o){const s=o.state.data,h=n.StateTransform.RootRef;return{canApply:s.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3D,h)).length>0}},getDuration:o=>({kind:"fixed",durationMs:o.durationInMs}),initialState:()=>({t:0}),setup(o,s,h){const f=h.state.data,y=!o.target||o.target==="all"?n.StateTransform.RootRef:o.target,_=f.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3D,y)),g=f.build();let a=!1;for(const d of _)f.select(n.StateSelection.Generators.ofTransformer(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,d.transform.ref)).length>0||(a=!0,g.to(d).apply(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,{t:0},{tags:"animate-assembly-unwind"}));if(a)return g.commit({doNotUpdateCurrent:!0})},teardown(o,s,h){const f=h.state.data,y=f.select(n.StateSelection.Generators.ofType(t.PluginStateObject.Molecule.Structure.Representation3DState).withTag("animate-assembly-unwind"));if(y.length===0)return;const _=f.build();for(const g of y)_.delete(g.transform.ref);return _.commit()},async apply(o,s,h){const f=h.plugin.state.data,y=!h.params.target||h.params.target==="all"?n.StateTransform.RootRef:h.params.target,_=f.select(n.StateSelection.Generators.ofTransformer(r.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D,y));if(_.length===0)return{kind:"finished"};const g=f.build(),a=(s.current-s.lastApplied)/h.params.durationInMs;let d=o.t+a,p=!1;h.params.playOnce&&d>=1?(p=!0,d=1):d=d%1;for(const u of _)g.to(u).update({t:d});return await i.PluginCommands.State.Update(h.plugin,{state:f,tree:g,options:{doNotLogTiming:!0}}),p?{kind:"finished"}:{kind:"next",state:{t:d}}}}),I_}var w_={},I$;function yle(){if(I$)return w_;I$=1,Object.defineProperty(w_,"__esModule",{value:!0}),w_.AnimateCameraSpin=void 0;const e=ir(),t=rs(),r=wt(),n=Ne(),i=dc(),c=(0,r.Vec3)(),o=(0,r.Vec3)(),s=(0,t.Quat)(),h=(0,r.Vec3)(),f=(0,r.Vec3)();return w_.AnimateCameraSpin=i.PluginStateAnimation.create({name:"built-in.animate-camera-spin",display:{name:"Camera Spin",description:"Spin the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:n.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100}),speed:n.ParamDefinition.Numeric(1,{min:1,max:10,step:1},{description:"How many times to spin in the specified duration."}),axis:n.ParamDefinition.Vec3(r.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})}),initialState:(y,_)=>{var g;return{snapshot:(g=_.canvas3d)===null||g===void 0?void 0:g.camera.getSnapshot()}},getDuration:y=>({kind:"fixed",durationMs:y.durationInMs}),teardown:(y,_,g)=>{var a;(a=g.canvas3d)===null||a===void 0||a.requestCameraReset({snapshot:_.snapshot,durationMs:0})},async apply(y,_,g){var a,d,p;if(_.current===0)return{kind:"next",state:y};const u=y.snapshot;if(u.radiusMax<1e-4)return{kind:"finished"};const m=_.animation?((a=_.animation)===null||a===void 0?void 0:a.currentFrame)/(_.animation.frameCount+1):(0,e.clamp)(_.current/g.params.durationInMs,0,1),v=2*Math.PI*m*g.params.speed;r.Vec3.sub(c,u.position,u.target),r.Vec3.normalize(o,c),r.Vec3.normalize(h,u.up),r.Vec3.cross(f,h,o),r.Vec3.normalize(f,f);const b=(d=g.params.axis)!==null&&d!==void 0?d:r.Vec3.create(0,-1,0);r.Vec3.set(o,b[0]*f[0]+b[1]*h[0]+b[2]*o[0],b[0]*f[1]+b[1]*h[1]+b[2]*o[1],b[0]*f[2]+b[1]*h[2]+b[2]*o[2]),r.Vec3.normalize(o,o),t.Quat.setAxisAngle(s,o,v),r.Vec3.transformQuat(c,c,s),r.Vec3.transformQuat(h,u.up,s);const P=r.Vec3.add((0,r.Vec3)(),u.target,c);return(p=g.plugin.canvas3d)===null||p===void 0||p.requestCameraReset({snapshot:{...u,position:P,up:h},durationMs:0}),m>=.99999?{kind:"finished"}:{kind:"next",state:y}}}),w_}var V_={},w$;function vle(){if(w$)return V_;
7637w$=1,Object.defineProperty(V_,"__esModule",{value:!0}),V_.AnimateModelIndex=void 0;const e=Sn(),t=Et(),r=Ne(),n=jt(),i=Dr(),c=dc();return V_.AnimateModelIndex=c.PluginStateAnimation.create({name:"built-in.animate-model-index",display:{name:"Animate Trajectory"},isExportable:!0,params:()=>({mode:r.ParamDefinition.MappedStatic("loop",{palindrome:r.ParamDefinition.Group({}),loop:r.ParamDefinition.Group({direction:r.ParamDefinition.Select("forward",[["forward","Forward"],["backward","Backward"]])}),once:r.ParamDefinition.Group({direction:r.ParamDefinition.Select("forward",[["forward","Forward"],["backward","Backward"]])},{isFlat:!0})},{options:[["palindrome","Palindrome"],["loop","Loop"],["once","Once"]]}),duration:r.ParamDefinition.MappedStatic("fixed",{fixed:r.ParamDefinition.Group({durationInS:r.ParamDefinition.Numeric(5,{min:1,max:120,step:.1},{description:"Duration in seconds"})},{isFlat:!0}),computed:r.ParamDefinition.Group({targetFps:r.ParamDefinition.Numeric(30,{min:5,max:250,step:1},{label:"Target FPS"})},{isFlat:!0}),sequential:r.ParamDefinition.Group({maxFps:r.ParamDefinition.Numeric(30,{min:5,max:60,step:1})},{isFlat:!0})})}),canApply(o){const s=o.state.data,h=s.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));for(const f of h){const y=t.StateSelection.findAncestorOfType(s.tree,s.cells,f.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(y&&y.obj&&y.obj.data.frameCount>1)return{canApply:!0}}return{canApply:!1,reason:"No trajectory to animate"}},getDuration:(o,s)=>{var h;if(((h=o.duration)===null||h===void 0?void 0:h.name)==="fixed")return{kind:"fixed",durationMs:o.duration.params.durationInS*1e3};if(o.duration.name==="computed"){const f=s.state.data,y=f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));let _=0;for(const g of y){const a=t.StateSelection.findAncestorOfType(f.tree,f.cells,g.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(!a||!a.obj)continue;const d=a.obj;_=Math.max(Math.ceil(1e3*d.data.frameCount/o.duration.params.targetFps),_)}return{kind:"fixed",durationMs:_}}return{kind:"unknown"}},initialState:()=>({}),async apply(o,s,h){if(h.params.duration.name==="sequential"&&s.current>0&&s.current-s.lastApplied<1e3/h.params.duration.params.maxFps)return{kind:"skip"};const f=h.plugin.state.data,y=f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Model.ModelFromTrajectory));if(y.length===0)return{kind:"finished"};const _=f.build(),g=h.params,a=o.palindromeDirections||{};let d=!1,p=!0;for(const u of y){const m=t.StateSelection.findAncestorOfType(f.tree,f.cells,u.transform.ref,n.PluginStateObject.Molecule.Trajectory);if(!m||!m.obj)continue;const v=m.obj;v.data.frameCount<=1||_.to(u).update(b=>{const P=v.data.frameCount;if(P!==1)p=!1;else return b;if(g.duration.name==="sequential"){let C=1;if(g.mode.name==="once"){if(C=g.mode.params.direction==="backward"?-1:1,C===-1&&b.modelIndex===0||C===1&&b.modelIndex===P-1)return d=!0,b}else g.mode.name==="palindrome"&&(b.modelIndex===0?C=1:b.modelIndex===P-1?C=-1:C=a[u.transform.ref]||1);a[u.transform.ref]=C;let l=(b.modelIndex+C)%P;return l<0&&(l+=P),d=d||C===-1&&l===0||C===1&&l===P-1,{modelIndex:l}}else{const C=g.duration.name==="fixed"?g.duration.params.durationInS*1e3:Math.ceil(1e3*v.data.frameCount/g.duration.params.targetFps);if(g.mode.name==="once"&&s.current>=C)return d=!0,{modelIndex:v.data.frameCount-1};let l=s.current%C/C;return g.mode.name==="loop"&&g.mode.params.direction==="backward"&&(l=1-l),g.mode.name==="palindrome"&&(l=2*l,l>1&&(l=2-l)),{modelIndex:Math.min(Math.floor(v.data.frameCount*l),v.data.frameCount-1)}}})}return p||await e.PluginCommands.State.Update(h.plugin,{state:f,tree:_,options:{doNotLogTiming:!0}}),p||g.mode.name==="once"&&d?{kind:"finished"}:g.mode.name==="palindrome"?{kind:"next",state:{palindromeDirections:a}}:{kind:"next",state:{}}}}),V_}var E_={},_D={},V$;function ble(){return V$||(V$=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LoadTrajectory=e.AddTrajectory=e.EnableStructureCustomProps=e.EnableModelCustomProps=e.Upd
7637ateTrajectory=e.DownloadStructure=e.PdbDownloadProvider=void 0;const t=Et(),r=nt(),n=Ne(),i=Xw(),c=lZ(),o=Dw(),s=jt(),h=Dr(),f=NQ(),y=Ha(),_=gs(),g=S2(),a=Gt(),d=mZ(),p=pZ(),u=l=>{const S=l.config.get(_.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id;return n.ParamDefinition.Group({type:o.RootStructureDefinition.getParams(void 0,"auto").type,representation:n.ParamDefinition.Select(S,l.builders.structure.representation.getPresets().map(T=>[T.id,T.display.name,T.display.group]),{description:"Which representation preset to use."}),representationParams:n.ParamDefinition.Group(i.StructureRepresentationPresetProvider.CommonParams,{isHidden:!0}),asTrajectory:n.ParamDefinition.Optional(n.ParamDefinition.Boolean(!1,{description:"Load all entries into a single trajectory."}))},{isExpanded:!1})};e.PdbDownloadProvider={rcsb:n.ParamDefinition.Group({encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{label:"RCSB PDB",isFlat:!0}),pdbe:n.ParamDefinition.Group({variant:n.ParamDefinition.Select("updated-bcif",[["updated-bcif","Updated (bcif)"],["updated","Updated"],["archival","Archival"]])},{label:"PDBe",isFlat:!0}),pdbj:n.ParamDefinition.EmptyGroup({label:"PDBj"})};const m=t.StateAction.build({from:s.PluginStateObject.Root,display:{name:"Download Structure",description:"Load a structure from the provided source and create its representation."},params:(l,S)=>{const T=u(S),A=S.config.get(_.PluginConfig.Download.DefaultPdbProvider)||"pdbe";return{source:n.ParamDefinition.MappedStatic("pdb",{pdb:n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"PDB Id(s)",description:"One or more comma/space separated PDB ids."}),server:n.ParamDefinition.MappedStatic(A,e.PdbDownloadProvider)},{pivot:"id"}),options:T},{isFlat:!0,label:"PDB"}),"pdb-ihm":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("8zzc",{label:"PDB-IHM Id(s)",description:"One or more comma/space separated ids."}),encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:T},{isFlat:!0,label:"PDB-IHM"}),swissmodel:n.ParamDefinition.Group({id:n.ParamDefinition.Text("Q9Y2I8",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:T},{isFlat:!0,label:"SWISS-MODEL",description:"Loads the best homology model or experimental structure"}),alphafolddb:n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("Q8W3K0",{label:"ID(s)",description:"One or more comma/space separated IDs. Each ID can be either UniProt accession (e.g. Q14676, Q14676-2) or AlphaFoldDB model entity ID (e.g. AF-Q14676-F1, AF-Q14676-2-F1, AF-0000000066074510). Version suffixes (e.g. -v1) will be ignored and the newest model version will be downloaded."}),encoding:n.ParamDefinition.Select("bcif",n.ParamDefinition.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:T},{isFlat:!0,label:"AlphaFold DB",description:"Loads the predicted model if available"}),modelarchive:n.ParamDefinition.Group({id:n.ParamDefinition.Text("ma-bak-cepc-0003",{label:"Accession Code(s)",description:"One or more comma/space separated ACs."}),options:T},{isFlat:!0,label:"Model Archive"}),pubchem:n.ParamDefinition.Group({id:n.ParamDefinition.Text("2244,2245",{label:"PubChem ID",description:"One or more comma/space separated IDs."}),options:T},{isFlat:!0,label:"PubChem",description:"Loads 3D conformer from PubChem."}),url:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select("mmcif",n.ParamDefinition.arrayToOptions(c.BuiltInTrajectoryFormats.map(x=>x[0]),x=>x)),isBinary:n.ParamDefinition.Boolean(!1),label:n.ParamDefinition.Optional(n.ParamDefinition.Text("")),options:T},{isFlat:!0,label:"URL"})})}}})(({params:l,state:S},T)=>r.Task.create("Download Structure",async A=>{T.behaviors.layout.leftPanelTabName.next("data");const x=l.source;let M,D=!1,V="mmcif";
7637switch(x.name){case"url":M=[{url:x.params.url,isBinary:x.params.isBinary,label:x.params.label||void 0}],V=x.params.format;break;case"pdb":M=await(x.params.provider.server.name==="pdbe"?b(x):x.params.provider.server.name==="pdbj"?P(x):x.params.provider.server.name==="rcsb"?C(x):(0,a.assertUnreachable)(x)),D=!!x.params.options.asTrajectory;break;case"pdb-ihm":const B=w=>w.startsWith("PDBDEV_")?w:`PDBDEV_${w.padStart(8,"0")}`;M=await v(x.params.provider.id,w=>{if(w.match(/^[1-9][A-Z0-9]{3}$/i)!==null)return x.params.provider.encoding==="bcif"?`https://pdb-ihm.org/bcif/${w.toLowerCase()}.bcif`:`https://pdb-ihm.org/cif/${w.toLowerCase()}.cif`;const O=B(w.toUpperCase());return x.params.provider.encoding==="bcif"?`https://pdb-ihm.org/bcif/${O}.bcif`:`https://pdb-ihm.org/cif/${O}.cif`},w=>{const O=w.toUpperCase();return O.match(/^[1-9][A-Z0-9]{3}$/)?`PDB-IHM: ${O}`:B(O)},x.params.provider.encoding==="bcif"),D=!!x.params.options.asTrajectory;break;case"swissmodel":M=await v(x.params.id,w=>`https://swissmodel.expasy.org/repository/uniprot/${w.toUpperCase()}.pdb`,w=>`SWISS-MODEL: ${w}`,!1),D=!!x.params.options.asTrajectory,V="pdb";break;case"alphafolddb":M=await v(x.params.provider.id,async w=>{const F=`https://www.alphafold.ebi.ac.uk/api/prediction/${w.replace(/-v\d+$/i,"").toUpperCase()}`,L=await T.runTask(T.fetch({url:F,type:"json"}));if(Array.isArray(L)&&L.length>0){const U=x.params.provider.encoding==="bcif"?"bcifUrl":"cifUrl";return L[0][U]}throw new Error(`No AlphaFold DB entry for '${w}'`)},w=>`AlphaFold DB: ${w}`,x.params.provider.encoding==="bcif"),D=!!x.params.options.asTrajectory,V="mmcif";break;case"modelarchive":M=await v(x.params.id,w=>`https://www.modelarchive.org/doi/10.5452/${w.toLowerCase()}.cif`,w=>`Model Archive: ${w}`,!1),D=!!x.params.options.asTrajectory,V="mmcif";break;case"pubchem":M=await v(x.params.id,w=>`https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${w.trim()}/record/SDF/?record_type=3d`,w=>`PubChem: ${w}`,!1),D=!!x.params.options.asTrajectory,V="mol";break;default:(0,a.assertUnreachable)(x)}const R=l.source.params.options.representation||T.config.get(_.PluginConfig.Structure.DefaultRepresentationPreset)||i.PresetStructureRepresentations.auto.id,E=R!==i.PresetStructureRepresentations.empty.id,I=x.params.options.type.name==="auto"?void 0:x.params.options.type;await S.transaction(async()=>{if(M.length>0&&D){const B=await T.builders.data.downloadBlob({sources:M.map((O,F)=>({id:""+F,url:O.url,isBinary:O.isBinary})),maxConcurrency:6},{state:{isGhost:!0}}),w=await T.builders.structure.parseTrajectory(B,{formats:M.map((O,F)=>({id:""+F,format:"cif"}))});await T.builders.structure.hierarchy.applyPreset(w,"default",{structure:I,showUnitcell:E,representationPreset:R,representationPresetParams:l.source.params.options.representationParams})}else for(const B of M){const w=await T.builders.data.download(B,{state:{isGhost:!0}}),O=T.dataFormats.get(V);if(!O)throw new Error("unknown file format");const F=await T.builders.structure.parseTrajectory(w,O);await T.builders.structure.hierarchy.applyPreset(F,"default",{structure:I,showUnitcell:E,representationPreset:R,representationPresetParams:l.source.params.options.representationParams})}}).runInContext(A)}));e.DownloadStructure=m;async function v(l,S,T,A){const x=l.split(/[,\s]/).map(D=>D.trim()).filter(D=>!!D&&(D.length>=4||/^[1-9][0-9]*$/.test(D))),M=[];for(const D of x)M.push({url:y.Asset.Url(await S(D)),isBinary:A,label:T(D)});return M}async function b(l){if(l.name!=="pdb"||l.params.provider.server.name!=="pdbe")throw new Error("expected pdbe");return l.params.provider.server.params.variant==="updated"?v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/static/entry/${S.toLowerCase()}_updated.cif`,S=>`PDBe: ${S} (updated cif)`,!1):l.params.provider.server.params.variant==="updated-bcif"?v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/entry-files/download/${S.toLowerCase()}.bcif`,S=>`PDBe: ${S} (updated cif)`,!0):v(l.params.provider.id,S=>`https://www.ebi.ac.uk/pdbe/static/entry/${S.toLowerCase()}.cif`,S=>`PDBe: ${S} (cif)`,!1)}async function P(l){if(l.name!=="pdb"||l.params.provider.server.name!=="pdbj")throw new Error("expected pdbj");return v(l.params.provider.id,S=>`https://data.pdbjlc1.pdbj.org/pub/pdb/data/structures/divided/mmCIF/${S.toLowerCase().substring(1,3)}/${S.toLowerCase()}.cif`,S=>`PDBj: ${S} (cif)`,!1)}async function C(l){if(l.name!=="pdb"||l.params.provider.server.name!=="rcsb")throw new Error("expected rcsb");return l.params.provider.server.params.encoding==="cif"?v(l.params.provider.id,S=>`https://files.rcsb.org/download/${S.toUpperCase()}.cif`,S=>`RCSB PDB: ${S} (cif)`,!1):v(l.params.provider.id,S=>`https://models.rcsb.org/${S.toUpperCase()}.bcif`,S=>`RCSB PDB: ${S} (bcif)`,!0)}e.UpdateTrajectory=t.StateAction.build({display:{name:"Update Trajectory"},params:{action:n.ParamDefinition.Select("advance",n.ParamDefinition.arrayToOptions(["advance","reset"])),by:n.ParamDefinition.Optional(n.ParamDefinition.Numeric(1,{min:-1,max:1,step:1}))}})(({params:l,state:S})=>{const T=S.selectQ(x=>x.ofTransformer(h.StateTransforms.Model.ModelFromTrajectory)),A=S.build();if(l.action==="reset")for(const x of T)A.to(x).update({modelIndex:0});
7637else for(const x of T){const M=t.StateSelection.findAncestorOfType(S.tree,S.cells,x.transform.ref,s.PluginStateObject.Molecule.Trajectory);if(!M||!M.obj)continue;const D=M.obj;A.to(x).update(V=>{let R=(V.modelIndex+l.by)%D.data.frameCount;return R<0&&(R+=D.data.frameCount),{modelIndex:R}})}return S.updateTree(A)}),e.EnableModelCustomProps=t.StateAction.build({display:{name:"Custom Model Properties",description:"Enable parameters for custom properties of the model."},from:s.PluginStateObject.Molecule.Model,params(l,S){return S.customModelProperties.getParams(l?.data)},isApplicable(l,S,T){return S.transformer!==f.CustomModelProperties}})(({ref:l,params:S},T)=>T.builders.structure.insertModelProperties(l,S)),e.EnableStructureCustomProps=t.StateAction.build({display:{name:"Custom Structure Properties",description:"Enable parameters for custom properties of the structure."},from:s.PluginStateObject.Molecule.Structure,params(l,S){return S.customStructureProperties.getParams(l?.data)},isApplicable(l,S,T){return S.transformer!==f.CustomStructureProperties}})(({ref:l,params:S},T)=>T.builders.structure.insertStructureProperties(l,S)),e.AddTrajectory=t.StateAction.build({display:{name:"Add Trajectory",description:"Add trajectory from existing model/topology and coordinates."},from:s.PluginStateObject.Root,params(l,S){const T=S.state.data,x=[...T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Model)),...T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Topology))].map(V=>[V.transform.ref,V.obj.label]),D=T.selectQ(V=>V.rootsOfType(s.PluginStateObject.Molecule.Coordinates)).map(V=>[V.transform.ref,V.obj.label]);return{model:n.ParamDefinition.Select(x.length?x[0][0]:"",x),coordinates:n.ParamDefinition.Select(D.length?D[0][0]:"",D)}}})(({params:l,state:S},T)=>r.Task.create("Add Trajectory",A=>S.transaction(async()=>{const x=[l.model,l.coordinates],M=S.build().toRoot().apply(f.TrajectoryFromModelAndCoordinates,{modelRef:l.model,coordinatesRef:l.coordinates},{dependsOn:x}).apply(h.StateTransforms.Model.ModelFromTrajectory,{modelIndex:0});await S.updateTree(M).runInContext(A);const D=await T.builders.structure.createStructure(M.selector);await T.builders.structure.representation.applyPreset(D,"auto")}).runInContext(A))),e.LoadTrajectory=t.StateAction.build({display:{name:"Load Trajectory",description:"Load trajectory of model/topology and coordinates from URL or file."},from:s.PluginStateObject.Root,params(l,S){const{options:T}=S.dataFormats,A=T.filter(V=>V[2]===c.TrajectoryFormatCategory||V[2]===d.TopologyFormatCategory),x=T.filter(V=>V[2]===p.CoordinatesFormatCategory),M=[],D=[];for(const{provider:V}of S.dataFormats.list)V.category===c.TrajectoryFormatCategory||V.category===d.TopologyFormatCategory?(V.binaryExtensions&&M.push(...V.binaryExtensions),V.stringExtensions&&M.push(...V.stringExtensions)):V.category===p.CoordinatesFormatCategory&&(V.binaryExtensions&&D.push(...V.binaryExtensions),V.stringExtensions&&D.push(...V.stringExtensions));return{source:n.ParamDefinition.MappedStatic("file",{url:n.ParamDefinition.Group({model:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select(A[0][0],A),isBinary:n.ParamDefinition.Boolean(!1)},{isExpanded:!0}),coordinates:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),format:n.ParamDefinition.Select(x[0][0],x)},{isExpanded:!0})},{isFlat:!0}),file:n.ParamDefinition.Group({model:n.ParamDefinition.File({accept:M.map(V=>`.${V}`).join(","),label:"Model"}),coordinates:n.ParamDefinition.File({accept:D.map(V=>`.${V}`).join(","),label:"Coordinates"})},{isFlat:!0})},{options:[["url","URL"],["file","File"]]})}}})(({params:l,state:S},T)=>r.Task.create("Load Trajectory",A=>S.transaction(async()=>{const x=l.source;if(x.name==="file"&&(x.params.model===null||x.params.coordinates===null)){T.log.error("No file(s) selected");return}if(x.name==="url"&&(!x.params.model||!x.params.coordinates)){T.log.error("No URL(s) given");return}const M=async(V,R,E)=>{const I=await T.builders.data.download({url:V,isBinary:E}),B=T.dataFormats.get(R);if(!B){T.log.warn(`LoadTrajectory: could not find data provider for '${R}'`);return}return B.parse(T,I)},D=async V=>{var R,E,I;if(!V)throw new Error("No file selected");const B=(0,g.getFileNameInfo)((E=(R=V.file)===null||R===void 0?void 0:R.name)!==null&&E!==void 0?E:""),w=T.dataFormats.binaryExtensions.has(B.ext),{data:O}=await T.builders.data.readFile({file:V,isBinary:w}),F=T.dataFormats.auto(B,(I=O.cell)===null||I===void 0?void 0:I.obj);if(!F){T.log.warn(`LoadTrajectory: could not find data provider for '${B.ext}'`),await T.state.data.build().delete(O).commit();return}return F.parse(T,O)};try{const V=x.name==="url"?await M(x.params.model.url,x.params.model.format,x.params.model.isBinary):await D(x.params.model);let R;"trajectory"in V?R=await S.build().to(V.trajectory).apply(f.ModelFromTrajectory,{modelIndex:0}).commit():R=V.topology;const E=x.name==="url"?await M(x.params.coordinates.url,x.params.coordinates.format,!0):await D(x.params.coordinates),I=S.build().toRoot().apply(f.TrajectoryFromModelAndCoordinates,{modelRef:R.ref,coordinatesRef:E.ref}).apply(h.StateTransforms.Model.ModelFromTrajectory,{modelIndex:0});await S.updateTree(I).runInContext(A);const B=await T.builders.structure.createStructure(I.selector);await T.builders.structure.representation.applyPreset(B,"auto")}catch(V){console.error(V),T.log.error("Error loading trajectory")}}).runInContext(A)))})(_D)),_D}var hl={},E$;function wZ(){if(E$)return hl;
7637E$=1,Object.defineProperty(hl,"__esModule",{value:!0}),hl.AssignColorVolume=hl.DownloadDensity=void 0;const e=Et(),t=nt(),r=S2(),n=Ne(),i=jt(),c=Ha(),o=Dr(),s=Gt(),h=e.StateAction.build({from:i.PluginStateObject.Root,display:{name:"Download Density",description:"Load a density from the provided source and create its default visual."},params:(f,y)=>{const{options:_}=y.dataFormats;return{source:n.ParamDefinition.MappedStatic("pdb-xray",{"pdb-xray":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"]])},{pivot:"id"}),type:n.ParamDefinition.Select("2fofc",[["2fofc","2Fo-Fc"],["fofc","Fo-Fc"]])},{isFlat:!0}),"pdb-xray-ds":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("1tqn",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:n.ParamDefinition.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),"pdb-emd-ds":n.ParamDefinition.Group({provider:n.ParamDefinition.Group({id:n.ParamDefinition.Text("emd-8004",{label:"Id"}),server:n.ParamDefinition.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:n.ParamDefinition.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),url:n.ParamDefinition.Group({url:n.ParamDefinition.Url(""),isBinary:n.ParamDefinition.Boolean(!1),format:n.ParamDefinition.Select("auto",_)},{isFlat:!0})},{options:[["pdb-xray","PDB X-ray maps"],["pdb-emd-ds","PDB EMD Density Server"],["pdb-xray-ds","PDB X-ray Density Server"],["url","URL"]]})}}})(({params:f},y)=>t.Task.create("Download Density",async _=>{var g,a;const d=f.source;let p,u;switch(d.name){case"url":p=d.params;break;case"pdb-xray":p={url:c.Asset.Url(d.params.type==="2fofc"?`https://www.ebi.ac.uk/pdbe/coordinates/files/${d.params.provider.id.toLowerCase()}.ccp4`:`https://www.ebi.ac.uk/pdbe/coordinates/files/${d.params.provider.id.toLowerCase()}_diff.ccp4`),isBinary:!0,label:`PDBe X-ray map: ${d.params.provider.id}`};break;case"pdb-emd-ds":p=d.params.provider.server==="pdbe"?{url:c.Asset.Url(`https://www.ebi.ac.uk/pdbe/densities/emd/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`PDBe EMD Density Server: ${d.params.provider.id}`}:{url:c.Asset.Url(`https://maps.rcsb.org/em/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`RCSB PDB EMD Density Server: ${d.params.provider.id}`};break;case"pdb-xray-ds":p=d.params.provider.server==="pdbe"?{url:c.Asset.Url(`https://www.ebi.ac.uk/pdbe/densities/x-ray/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`PDBe X-ray Density Server: ${d.params.provider.id}`}:{url:c.Asset.Url(`https://maps.rcsb.org/x-ray/${d.params.provider.id.toLowerCase()}/cell?detail=${d.params.detail}`),isBinary:!0,label:`RCSB PDB X-ray Density Server: ${d.params.provider.id}`};break;default:(0,s.assertUnreachable)(d)}const m=await y.builders.data.download(p);let v;switch(d.name){case"url":p=d.params,u=d.params.format==="auto"?y.dataFormats.auto((0,r.getFileNameInfo)(c.Asset.getUrl(p.url)),(g=m.cell)===null||g===void 0?void 0:g.obj):y.dataFormats.get(d.params.format);break;case"pdb-xray":v=d.params.provider.id,u=y.dataFormats.get("ccp4");break;case"pdb-emd-ds":case"pdb-xray-ds":v=d.params.provider.id,u=y.dataFormats.get("dscif");break;default:(0,s.assertUnreachable)(d)}if(!u){y.log.warn("DownloadDensity: Format provider not found.");return}const b=await u.parse(y,m,{entryId:v});await((a=u.visuals)===null||a===void 0?void 0:a.call(u,y,b))}));return hl.DownloadDensity=h,hl.AssignColorVolume=e.StateAction.build({display:{name:"Assign Volume Colors",description:"Assigns another volume to be available for coloring."},from:i.PluginStateObject.Volume.Data,isApplicable(f){return!f.data.colorVolume},params(f,y){const _=y.state.data.select(e.StateSelection.Generators.root.subtree().ofType(i.PluginStateObject.Volume.Data).filter(g=>{var a;return!!g.obj&&!(!((a=g.obj)===null||a===void 0)&&a.data.colorVolume)&&g.obj!==f}));return _.length===0?{ref:n.ParamDefinition.Text("",{isHidden:!0,label:"Volume"})}:{ref:n.ParamDefinition.Select(_[0].transform.ref,_.map(g=>[g.transform.ref,g.obj.label]),{label:"Volume"})}}})(({ref:f,params:y,state:_},g)=>g.build().to(f).apply(o.StateTransforms.Volume.AssignColorVolume,{ref:y.ref},{dependsOn:[y.ref]}).commit()),hl}var B$;function _le(){if(B$)return E_;
7637B$=1,Object.defineProperty(E_,"__esModule",{value:!0}),E_.StateActions=void 0;const e=At,t=e.__importStar(ble()),r=e.__importStar(wZ()),n=e.__importStar(IZ());return E_.StateActions={Structure:t,Volume:r,DataFormat:n},E_}var bi={},gl={},R$;function Sle(){if(R$)return gl;R$=1,Object.defineProperty(gl,"__esModule",{value:!0}),gl.VolumeServerHeader=gl.VolumeServerInfo=void 0;const e=jt();class t extends e.PluginStateObject.Create({name:"Volume Streaming",typeClass:"Object"}){}gl.VolumeServerInfo=t;var r;return(function(n){(function(i){i.Float32="float32",i.Int8="int8"})(n.ValueType||(n.ValueType={}))})(r||(gl.VolumeServerHeader=r={})),gl}var O$;function Cle(){if(O$)return bi;O$=1,Object.defineProperty(bi,"__esModule",{value:!0}),bi.VolumeStreamingVisual=bi.CreateVolumeStreamingBehavior=bi.CreateVolumeStreamingInfo=bi.BoxifyVolumeStreaming=bi.InitVolumeStreaming=void 0;const e=rt(),t=Ge(),r=Ke(),n=cI(),i=sn(),c=jt(),o=$S(),s=DZ(),h=Et(),f=nt(),y=ea(),_=et(),g=Ne(),a=Ww(),d=gs(),p=yZ(),u=Sle(),m=fZ();function v(A,x,M){return{dataId:x,source:A==="em"?{name:"em",params:{isoValue:i.Volume.IsoValue.absolute(M||0)}}:{name:"x-ray",params:{}}}}async function b(A,x,M,D,V){const R=[];for(const E of A){const I=E.toLowerCase();if(x==="em"){let B;I.startsWith("emd")?B=[I]:(await V.update("Getting EMDB info..."),B=await(0,m.getEmdbIds)(D,V,I));for(const w of B){let O;try{O=await(0,m.getContourLevel)(M,D,V,w)}catch(F){console.info(`Could not get map info for ${w}: ${F}`);continue}R.push(v(x,w,O||0))}}else R.push(v(x,I,0))}return R}bi.InitVolumeStreaming=h.StateAction.build({display:{name:"Volume Streaming"},from:c.PluginStateObject.Molecule.Structure,params(A,x){const M=(0,m.getStreamingMethod)(A&&A.data),D=(0,m.getIds)(M,A&&A.data);return{method:g.ParamDefinition.Select(M,[["em","EM"],["x-ray","X-Ray"]]),entries:g.ParamDefinition.ObjectList({id:g.ParamDefinition.Text(D[0]||"")},({id:V})=>V,{defaultValue:D.map(V=>({id:V}))}),defaultView:g.ParamDefinition.Select(M==="em"?"auto":"selection-box",p.VolumeStreaming.ViewTypeOptions),options:g.ParamDefinition.Group({serverUrl:g.ParamDefinition.Text(x.config.get(d.PluginConfig.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),behaviorRef:g.ParamDefinition.Text("",{isHidden:!0}),emContourProvider:g.ParamDefinition.Select("emdb",[["emdb","EMDB"],["pdbe","PDBe"]],{isHidden:!0}),channelParams:g.ParamDefinition.Value({},{isHidden:!0})})}},isApplicable:(A,x,M)=>{const D=M.config.get(d.PluginConfig.VolumeStreaming.CanStream);return D?D(A.data,M):A.data.models.length===1&&r.Model.probablyHasDensityMap(A.data.models[0])}})(({ref:A,state:x,params:M},D)=>f.Task.create("Volume Streaming",async V=>{const R=await b(M.entries.map(F=>F.id),M.method,M.options.emContourProvider,D,V),E=x.build().to(A).applyOrUpdateTagged(p.VolumeStreaming.RootTag,C,{serverUrl:M.options.serverUrl,entries:R});await E.commit();const I=E.selector;if(!I.isOk)return;const B=x.tree.children.get(I.ref);B?.size>0&&await D.managers.structure.hierarchy.remove(B?.toArray());const w=I.cell.obj,O=x.build().to(E.ref).apply(l,g.ParamDefinition.getDefaultValues(p.VolumeStreaming.createParams({data:w.data,defaultView:M.defaultView,channelParams:M.options.channelParams})),{ref:M.options.behaviorRef?M.options.behaviorRef:void 0});M.method==="em"?O.apply(S,{channel:"em"},{state:{isGhost:!0},tags:"em"}):(O.apply(S,{channel:"2fo-fc"},{state:{isGhost:!0},tags:"2fo-fc"}),O.apply(S,{channel:"fo-fc(+ve)"},{state:{isGhost:!0},tags:"fo-fc(+ve)"}),O.apply(S,{channel:"fo-fc(-ve)"},{state:{isGhost:!0},tags:"fo-fc(-ve)"})),await x.updateTree(O).runInContext(V)})),bi.BoxifyVolumeStreaming=h.StateAction.build({display:{name:"Boxify Volume Streaming",description:"Make the current box permanent."},from:p.VolumeStreaming,isApplicable:A=>A.data.params.entry.params.view.name==="selection-box"})(({a:A,ref:x,state:M},D)=>{const V=A.data.params;if(V.entry.params.view.name!=="selection-box")return;const R=e.Box3D.create(t.Vec3.clone(V.entry.params.view.params.bottomLeft),t.Vec3.clone(V.entry.params.view.params.topRight)),E=V.entry.params.view.params.radius;e.Box3D.expand(R,R,t.Vec3.create(E,E,E));const I={...V,entry:{name:V.entry.name,params:{...V.entry.params,view:{name:"box",params:{bottomLeft:R.min,top
7637Right:R.max}}}}};return M.updateTree(M.build().to(x).update(I))});const P={dataId:g.ParamDefinition.Text(""),source:g.ParamDefinition.MappedStatic("x-ray",{em:g.ParamDefinition.Group({isoValue:i.Volume.createIsoValueParam(i.Volume.IsoValue.relative(1))}),"x-ray":g.ParamDefinition.Group({})})},C=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-info",display:{name:"Volume Streaming Info"},from:c.PluginStateObject.Molecule.Structure,to:u.VolumeServerInfo,params(A,x){return{serverUrl:g.ParamDefinition.Text(x.config.get(d.PluginConfig.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),autoEntries:g.ParamDefinition.Boolean(!1,{description:'Create "entries" list automatically based on the input structure'}),entries:g.ParamDefinition.ObjectList(P,({dataId:M})=>M,{defaultValue:[{dataId:"",source:{name:"x-ray",params:{}}}],hideIf:M=>M.autoEntries}),defaultView:g.ParamDefinition.Select((0,m.getStreamingMethod)(A?.data)==="em"?"auto":"selection-box",p.VolumeStreaming.ViewTypeOptions,{isHidden:!0}),defaultChannelParams:g.ParamDefinition.Value({},{isHidden:!0})}}})({apply:({a:A,params:x},M)=>f.Task.create("",async D=>{let V;if(x.autoEntries){await D.update("Creating entry list...");const I=(0,m.getStreamingMethod)(A?.data),B=(0,m.getIds)(I,A?.data);V=await b(B,I,"emdb",M,D)}else V=x.entries;const R=[];for(const I of V){const B=I.dataId,w=I.source.name==="em"?I.source.params.isoValue:i.Volume.IsoValue.relative(1);await D.update("Getting server header...");const O=await M.fetch({url:(0,a.urlCombine)(x.serverUrl,`${I.source.name}/${B.toLocaleLowerCase()}`),type:"json"}).runInContext(D);R.push({dataId:B,kind:I.source.name,header:O,emDefaultContourLevel:w})}const E={serverUrl:x.serverUrl,entries:R,structure:A.data,defaultView:x.defaultView,defaultChannelParams:x.defaultChannelParams};return new u.VolumeServerInfo(E,{label:"Volume Server",description:`${R.map(I=>I.dataId).join(", ")}`})}),update({a:A,b:x,oldParams:M,newParams:D}){return A.data===x.data.structure&&(0,_.deepEqual)(M,D)?h.StateTransformer.UpdateResult.Unchanged:h.StateTransformer.UpdateResult.Recreate}});bi.CreateVolumeStreamingInfo=C;const l=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-behavior",display:{name:"Volume Streaming Behavior"},from:u.VolumeServerInfo,to:p.VolumeStreaming,params(A){return p.VolumeStreaming.createParams({data:A?.data,defaultView:A?.data.defaultView,channelParams:A?.data.defaultChannelParams})}})({canAutoUpdate:({oldParams:A,newParams:x})=>A.entry.params.view===x.entry.params.view||x.entry.params.view.name==="selection-box"||x.entry.params.view.name==="camera-target"||x.entry.params.view.name==="off",apply:({a:A,params:x},M)=>f.Task.create("Volume streaming",async D=>{const V=new p.VolumeStreaming.Behavior(M,A.data);return await V.update(x),new p.VolumeStreaming(V,{label:"Volume Streaming",description:V.getDescription()})}),update({a:A,b:x,oldParams:M,newParams:D}){return f.Task.create("Update Volume Streaming",async V=>{if(M.entry.name!==D.entry.name&&"em"in D.entry.params.channels){const{emDefaultContourLevel:E}=x.data.infoMap.get(D.entry.name);E&&(D.entry.params.channels.em.isoValue=E)}const R=await x.data.update(D)?h.StateTransformer.UpdateResult.Updated:h.StateTransformer.UpdateResult.Unchanged;return x.description=x.data.getDescription(),R})}});bi.CreateVolumeStreamingBehavior=l;const S=c.PluginStateTransform.BuiltIn({name:"create-volume-streaming-visual",display:{name:"Volume Streaming Visual"},from:p.VolumeStreaming,to:c.PluginStateObject.Volume.Representation3D,params:{channel:g.ParamDefinition.Select("em",p.VolumeStreaming.ChannelTypeOptions,{isHidden:!0})}})({apply:({a:A,params:x,spine:M},D)=>f.Task.create("Volume Representation",async V=>{var R,E;const I=A.data.channels[x.channel];if(!I)return h.StateObject.Null;const B=T(A.data,x.channel),w=s.VolumeRepresentationRegistry.BuiltIn.isosurface,O=B.type.params||{},F=w.factory({webgl:(R=D.canvas3d)===null||R===void 0?void 0:R.webgl,...D.representation.volume.themes},w.getParams);F.setTheme(y.Theme.create(D.representation.volume.themes,{volume:I.data},B));const L=(E=M.getAncestorOfType(c.PluginStateObject.Molecule.Structure))===null||E===void 0?void 0:E.data,U=L?.models.length===0?void 0:n.GlobalModelTransformInfo.get(L?.models[0]);return await F.createOrUpdate(O,I.data).runInContext(V),U&&F.setState({transform:U}),new c.PluginStateObject.Volume.Representation3D({repr:F,sourceData:I.data},{label:`${Math.round(I.isoValue.relativeValue*100)/100} Ï [${x.channel}]`})}),update:({a:A,b:x,newParams:M,spine:D},V)=>f.Task.create("Volume Representation",async R=>{const E=A.data.channels[M.channel];
7637if(!E)return h.StateTransformer.UpdateResult.Unchanged;const I=x.data.repr.state.visible,B=T(A.data,M.channel),w={...x.data.repr.props,...B.type.params};return x.data.repr.setTheme(y.Theme.create(V.representation.volume.themes,{volume:E.data},B)),await x.data.repr.createOrUpdate(w,E.data).runInContext(R),x.data.repr.setState({visible:I}),x.data.sourceData=E.data,h.StateTransformer.UpdateResult.Updated})});bi.VolumeStreamingVisual=S;function T(A,x){const M=A.channels[x];return o.VolumeRepresentation3DHelpers.getDefaultParamsStatic(A.plugin,"isosurface",{isoValue:M.isoValue,alpha:M.opacity,visuals:M.wireframe?["wireframe"]:["solid"]},"uniform",{value:M.color})}return bi}var B_={},k$;function Ple(){if(k$)return B_;k$=1,Object.defineProperty(B_,"__esModule",{value:!0}),B_.AnimateStateInterpolation=void 0;const e=Sn(),t=Et(),r=et(),n=Ne(),i=dc();return B_.AnimateStateInterpolation=i.PluginStateAnimation.create({name:"built-in.animate-state-interpolation",display:{name:"Animate State (experimental)"},params:()=>({transtionDurationInMs:n.ParamDefinition.Numeric(2e3,{min:100,max:3e4,step:10})}),canApply(c){return{canApply:c.managers.snapshot.state.entries.size>1}},initialState:()=>({}),async apply(c,o,s){const h=s.plugin.managers.snapshot.state.entries;if(h.size<2)return{kind:"finished"};const f=o.current%s.params.transtionDurationInMs/s.params.transtionDurationInMs,y=Math.floor(o.current/s.params.transtionDurationInMs)%h.size;let _=Math.ceil(o.current/s.params.transtionDurationInMs);_===y&&_++,_=_%h.size;const g=h.get(y).snapshot,a=h.get(_).snapshot;if(!g.data||!a.data)return{kind:"skip"};const d=g.data.tree.transforms,p=a.data.tree.transforms,u=s.plugin.state.data,m=u.build();for(const v of d)for(const b of p){if(b.ref!==v.ref||b.version===v.version)continue;const P=t.StateTransform.fromJSON(v),C=t.StateTransform.fromJSON(b),l=u.cells.get(v.ref);if(!l)continue;let S;P.transformer.definition.interpolate?S=P.transformer.definition.interpolate(P.params,C.params,f,s.plugin):S=f<=.5?P.params:C.params,(0,r.shallowEqual)(l,S)||m.to(v.ref).update(S)}return await e.PluginCommands.State.Update(s.plugin,{state:u,tree:m,options:{doNotLogTiming:!0}}),{kind:"next",state:{}}}}),B_}var R_={},F$;function Tle(){if(F$)return R_;F$=1,Object.defineProperty(R_,"__esModule",{value:!0}),R_.AnimateStructureSpin=void 0;const e=Sn(),t=Et(),r=Ne(),n=jt(),i=Dr(),c=dc();return R_.AnimateStructureSpin=c.PluginStateAnimation.create({name:"built-in.animate-structure-spin",display:{name:"Spin Structure"},isExportable:!0,params:()=>({durationInMs:r.ParamDefinition.Numeric(3e3,{min:100,max:1e4,step:100})}),initialState:()=>({t:0}),getDuration:o=>({kind:"fixed",durationMs:o.durationInMs}),async setup(o,s,h){const f=h.state.data,y=f.select(t.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure.Representation3D)),_=f.build();let g=!1;for(const a of y)f.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Representation.SpinStructureRepresentation3D,a.transform.ref)).length>0||(g=!0,_.to(a.transform.ref).apply(i.StateTransforms.Representation.SpinStructureRepresentation3D,{t:0},{tags:"animate-structure-spin"}));if(g)return _.commit({doNotUpdateCurrent:!0})},teardown(o,s,h){const f=h.state.data,y=f.select(t.StateSelection.Generators.ofType(n.PluginStateObject.Molecule.Structure.Representation3DState).withTag("animate-structure-spin"));if(y.length===0)return;const _=f.build();for(const g of y)_.delete(g.transform.ref);return _.commit()},async apply(o,s,h){var f;const y=h.plugin.state.data,_=y.select(t.StateSelection.Generators.ofTransformer(i.StateTransforms.Representation.SpinStructureRepresentation3D));if(_.length===0)return{kind:"finished"};const g=y.build(),a=(s.current-s.lastApplied)/h.params.durationInMs,d=(o.t+a)%1;for(const p of _)g.to(p).update({...(f=p.params)===null||f===void 0?void 0:f.values,t:d});return await e.PluginCommands.State.Update(h.plugin,{state:y,tree:g,options:{doNotLogTiming:!0}}),{kind:"next",state:{t:d}}}}),R_}var O_={},L$;function xle(){if(L$)return O_;L$=1,Object.defineProperty(O_,"__esModule",{value:!0}),O_.AnimateCameraRock=void 0;const e=ir(),t=rs(),r=wt(),n=er(),i=Ne(),c=dc(),o=(0,r.Vec3)(),s=(0,r.Vec3)(),h=(0,t.Quat)(),f=(0,r.Vec3)(),y=(0,r.Vec3)();return O_.AnimateCameraRock=c.PluginStateAnimation.create({name:"built-in.animate-camera-rock",display:{name:"Camera Rock",description:"Rock the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:i.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100}),speed:i.ParamDefinition.Numeric(1,{min:1,max:10,step:1},{description:"How many times to rock from side to side."}),angle:i.ParamDefinition.Numeric(10,{min:0,max:180,step:1},{description:"How many degrees to rotate in each direction."}),axis:i.ParamDefinition.Vec3(r.Vec3.create(0,-1,0),{},{description:"Axis of rotation in camera space"})}),initialState:(_,g)=>({snapshot:g.canvas3d.camera.getSnapshot()}),getDuration:_=>({kind:"fixed",durationMs:_.durationInMs}),teardown:(_,g,a)=>{var d;(d=a.canvas3d)===null||d===void 0||d.requestCameraReset({snapshot:g.snapshot,durationMs:0})},async apply(_,g,a){var d,p,u;if(g.current===0)return{kind:"next",state:_};const m=_.snapshot;
7637if(m.radiusMax<1e-4)return{kind:"finished"};const v=g.animation?((d=g.animation)===null||d===void 0?void 0:d.currentFrame)/(g.animation.frameCount+1):(0,e.clamp)(g.current/a.params.durationInMs,0,1),b=Math.sin(v*a.params.speed*Math.PI*2)*(0,n.degToRad)(a.params.angle);r.Vec3.sub(o,m.position,m.target),r.Vec3.normalize(s,o),r.Vec3.normalize(f,m.up),r.Vec3.cross(y,f,s),r.Vec3.normalize(y,y);const P=(p=a.params.axis)!==null&&p!==void 0?p:r.Vec3.create(0,-1,0);r.Vec3.set(s,P[0]*y[0]+P[1]*f[0]+P[2]*s[0],P[0]*y[1]+P[1]*f[1]+P[2]*s[1],P[0]*y[2]+P[1]*f[2]+P[2]*s[2]),r.Vec3.normalize(s,s),t.Quat.setAxisAngle(h,s,b),r.Vec3.transformQuat(o,o,h),r.Vec3.transformQuat(f,m.up,h);const C=r.Vec3.add((0,r.Vec3)(),m.target,o);return(u=a.plugin.canvas3d)===null||u===void 0||u.requestCameraReset({snapshot:{...m,position:C,up:f},durationMs:0}),v>=.99999?{kind:"finished"}:{kind:"next",state:_}}}),O_}var k_={},N$;function Ale(){if(N$)return k_;N$=1,Object.defineProperty(k_,"__esModule",{value:!0}),k_.AnimateTime=void 0;const e=Ne(),t=dc();return k_.AnimateTime=t.PluginStateAnimation.create({name:"built-in.animate-time",display:{name:"Animate Time",description:"Animate the passage of time in the 3D scene"},isExportable:!0,params:()=>({durationInMs:e.ParamDefinition.Numeric(4e3,{min:100,max:2e4,step:100})}),initialState:()=>({}),getDuration:r=>({kind:"fixed",durationMs:r.durationInMs}),async apply(r,n,i){return n.current<i.params.durationInMs?{kind:"next",state:r}:{kind:"finished"}}}),k_}var q$;function Mle(){if(q$)return pl;q$=1,Object.defineProperty(pl,"__esModule",{value:!0}),pl.DefaultPluginSpec=pl.PluginSpec=void 0;const e=gle(),t=yle(),r=vle(),n=_2(),i=b2(),c=$w(),o=_le(),s=wZ(),h=Dr(),f=Cle(),y=Ple(),_=Tle(),g=xle(),a=Ale();var d;(function(u){function m(b,P){return{action:b,customControl:P&&P.customControl,autoUpdate:P&&P.autoUpdate}}u.Action=m;function v(b,P={}){return{transformer:b,defaultParams:P}}u.Behavior=v})(d||(pl.PluginSpec=d={}));const p=()=>({actions:[d.Action(o.StateActions.Structure.DownloadStructure),d.Action(o.StateActions.Volume.DownloadDensity),d.Action(o.StateActions.DataFormat.DownloadFile),d.Action(o.StateActions.DataFormat.OpenFiles),d.Action(o.StateActions.Structure.LoadTrajectory),d.Action(o.StateActions.Structure.EnableModelCustomProps),d.Action(o.StateActions.Structure.EnableStructureCustomProps),d.Action(f.InitVolumeStreaming),d.Action(f.BoxifyVolumeStreaming),d.Action(f.CreateVolumeStreamingBehavior),d.Action(h.StateTransforms.Data.Download),d.Action(h.StateTransforms.Data.ParseCif),d.Action(h.StateTransforms.Data.ParseCcp4),d.Action(h.StateTransforms.Data.ParseDsn6),d.Action(h.StateTransforms.Model.TrajectoryFromMmCif),d.Action(h.StateTransforms.Model.TrajectoryFromCifCore),d.Action(h.StateTransforms.Model.TrajectoryFromPDB),d.Action(h.StateTransforms.Model.TransformStructureConformation),d.Action(h.StateTransforms.Model.StructureInstances),d.Action(h.StateTransforms.Model.StructureFromModel),d.Action(h.StateTransforms.Model.StructureFromTrajectory),d.Action(h.StateTransforms.Model.ModelFromTrajectory),d.Action(h.StateTransforms.Model.StructureSelectionFromScript),d.Action(h.StateTransforms.Representation.StructureRepresentation3D),d.Action(h.StateTransforms.Representation.StructureSelectionsDistance3D),d.Action(h.StateTransforms.Representation.StructureSelectionsAngle3D),d.Action(h.StateTransforms.Representation.StructureSelectionsDihedral3D),d.Action(h.StateTransforms.Representation.StructureSelectionsLabel3D),d.Action(h.StateTransforms.Representation.StructureSelectionsOrientation3D),d.Action(h.StateTransforms.Representation.ModelUnitcell3D),d.Action(h.StateTransforms.Representation.StructureBoundingBox3D),d.Action(h.StateTransforms.Representation.ExplodeStructureRepresentation3D),d.Action(h.StateTransforms.Representation.SpinStructureRepresentation3D),d.Action(h.StateTransforms.Representation.UnwindStructureAssemblyRepresentation3D),d.Action(h.StateTransforms.Representation.OverpaintStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.TransparencyStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.ClippingStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.SubstanceStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.WiggleStructureRepresentation3DFromScript),d.Action(h.StateTransforms.Representation.ThemeStrengthRepresentation3D),d.Action(s.AssignColorVolume),d.Action(h.StateTransforms.Volume.VolumeFromCcp4),d.Action(h.StateTransforms.Volume.VolumeFromDsn6),d.Action(h.StateTransforms.Volume.VolumeFromCube),d.Action(h.StateTransforms.Volume.VolumeFromDx),d.Action(h.StateTransforms.Representation.VolumeRepresentation3D),d.Action(h.StateTransforms.Volume.VolumeTransform),d.Action(h.StateTransforms.Volume.VolumeInstances)],behaviors:[d.Behavior(i.PluginBehaviors.Representation.HighlightLoci),d.Behavior(i.PluginBehaviors.Representation.SelectLoci),d.Behavior(i.PluginBehaviors.Representation.DefaultLociLabelProvider),d.Behavior(i.PluginBehaviors.Representation.FocusLoci),d.Behavior(i.PluginBehaviors.Camera.FocusLoci),d.Behavior(i.PluginBehaviors.Camera.CameraAxisHelper),d.Behavior(i.PluginBehaviors.Camera.CameraControls),d.Behavior(i.PluginBehaviors.State.SnapshotControls),d.Behavior(c.StructureFocusRepresentation),d.Behavior(i.PluginBehaviors.CustomProps.StructureInfo),d.Behavior(i.PluginBehaviors.CustomProps.AccessibleSurfaceArea),d.Behavior(i.PluginBehaviors.CustomProps.BestDatabaseSequenceMapping),d.Behavior(i.PluginBehaviors.CustomProps.Interactions),d.Behavior(i.PluginBehaviors.CustomProps.SecondaryStructure),d.Behavior(i.PluginBehaviors.CustomProps.ValenceModel),d.Behavior(i.PluginBehaviors.CustomProps.CrossLinkRestraint),d.Behavior(i.PluginBehaviors.CustomProps.Streamlines)],animations:[r.AnimateModelIndex,t.AnimateCameraSpin,g.AnimateCameraRock,n.AnimateStateSnapshots,n.AnimateStateSnapshotTransition,e.AnimateAssemblyUnwind,_.AnimateStructureSpin,y.AnimateStateInterpolation,a.AnimateTime]});return pl.DefaultPluginSpec=p,pl}var Dle=Mle(),G_=vt(),wD=ta();function U$(e){const{width:t,height:r}=e.viewport;if(t<=0||r<=0)return;const n=r/t>1.4?.15*r:0;e.viewOffset.enabled=n>
76370,wD.Camera.setViewOffset(e.viewOffset,t,r,0,n,t,r),e.update()}function Ile(e,t,r){if(e.state.radius<=0||t.width<=0||t.height<=0||r.width<=0||r.height<=0)return;const{mode:n,fov:i,position:c,target:o}=e.state,s=wD.Camera.targetDistance(1,n,i,t.width,t.height),f=wD.Camera.targetDistance(1,n,i,r.width,r.height)/s;if(!Number.isFinite(f)||Math.abs(f-1)<1e-4)return;const y=F_.Vec3.sub(F_.Vec3(),c,o);e.setState({position:F_.Vec3.scaleAndAdd(F_.Vec3(),o,y,f)},0)}var j$=Ke();const wle={asymId:"auth",palette:{name:"colors",params:{list:{kind:"set",colors:[5467575,9608415,3493260,8295623,6846627,11582946,6716883,9210301].map(G_.Color)}}}};function Vle(e,t){const r=new Map;return j$.Structure.eachAtomicHierarchyElement(e,{chain:n=>{const i=j$.StructureProperties.chain.auth_asym_id(n);r.has(i)||r.set(i,G_.Color.toHexStyle(t.color(n,!1)))}}),Array.from(r,([n,i])=>({chain:n,color:i}))}var Ele=Qn(),hf=dr();function Ble(e){return hf.MolScriptBuilder.struct.generator.atomGroups({"chain-test":hf.MolScriptBuilder.core.set.has([hf.MolScriptBuilder.set(...e),hf.MolScriptBuilder.struct.atomProperty.macromolecular.auth_asym_id()]),"entity-test":hf.MolScriptBuilder.core.rel.eq([hf.MolScriptBuilder.struct.atomProperty.macromolecular.entityType(),"polymer"])})}function Rle(e,t){const r=Ele.ModelSymmetry.Provider.get(e)?.assemblies??[];if(!t.length)return r[0];const n=new Set;return e.properties.structAsymMap.forEach(i=>{t.includes(i.auth_id)&&n.add(i.id)}),r.find(i=>i.operatorGroups.some(c=>c.asymIds?.some(o=>n.has(o))))}function Ole(e,t){function r(o){const s=new Map;let h="";const f=t.split(/\r?\n/).filter(y=>y.startsWith(o)).map(y=>y.slice(10,80).trim()).join(" ");for(const y of f.split(";")){const _=y.indexOf(":");if(_<0)continue;const g=y.slice(0,_).trim(),a=y.slice(_+1).trim();if(g==="MOL_ID"&&(h=a),!h)continue;const d=s.get(h)??{};d[g]=a,s.set(h,d)}return s}const n=r("COMPND"),i=r("SOURCE"),c=new Map;for(const o of e){const s=[...n.entries()].find(([,_])=>{const g=(_.CHAIN??"").split(",").map(a=>a.trim());return o.chains.length>0&&o.chains.every(a=>g.includes(a))}),h=s?`molecule_${s[0]}`:o.id,f=s?i.get(s[0]):void 0,y=c.get(h);y?(y.chains=[...new Set([...y.chains,...o.chains])],(o.sequence?.length??0)>(y.sequence?.length??0)&&(y.sequence=o.sequence)):c.set(h,{...o,name:s?.[1].MOLECULE||o.name,organism:f?.ORGANISM_SCIENTIFIC,genes:f?.GENE?f.GENE.split(",").map(_=>_.trim()).filter(Boolean):[]})}return[...c.values()]}async function Lle(e,t,r,n,i){const c=new hle.PluginContext({...Dle.DefaultPluginSpec(),animations:[],canvas3d:{transparentBackground:!0,renderer:{backgroundColor:G_.Color(16777215),ambientIntensity:.6},camera:{mode:"orthographic",helper:{axes:{name:"off",params:{}}}},cameraFog:{name:"off",params:{}},multiSample:{mode:"off"},cameraResetDurationMs:0,postprocessing:{outline:{name:"on",params:{scale:1,threshold:.33,color:G_.Color(2439e3),includeTransparent:!1}},occlusion:{name:"off",params:{}},shadow:{name:"off",params:{}}}}});let o=!1,s;const h=()=>{o||(o=!0,s?.disconnect(),c.dispose({doNotForceWebGLContextLoss:!0}))},f=()=>{if(n.aborted||o)throw new DOMException("Aborted","AbortError")};try{await c.init(),f();const y=await c.builders.data.rawData({data:typeof r.data=="string"?r.data:new Uint8Array(r.data)}),_=await c.builders.structure.parseTrajectory(y,r.pdbId?"mmcif":"pdb"),g=await c.builders.structure.createModel(_),a=g.obj?.data;if(!a?.atomicHierarchy.atoms._rowCount)throw new Error("No atomic coordinates were found. Upload a PDB containing protein coordinates, not only a sequence.");f();const d=[],p=a.entities.data,u=a.atomicHierarchy.chains;for(let M=0;M<p._rowCount;M++){if(p.type.value(M)!=="polymer"||!a.entities.subtype.value(M).includes("peptide"))continue;const D=p.id.value(M),V=[];for(let R=0;R<u._rowCount;R++)u.label_entity_id.value(R)===D&&V.push(u.auth_asym_id.value(R));d.push({id:`${r.pdbId??"uploaded"}_${D}`,name:p.pdbx_description.value(M).join(", ")||`Protein ${d.length+1}`,chains:[...new Set(V)],accessions:[],genes:[],sequence:a.sequence.byEntityKey[M]?Array.from(a.sequence.byEntityKey[M].sequence.code.toArray()).join(""):void 0})}if(!d.length)throw new Error("No protein coordinates were found in this structure.");
7637const m=!r.pdbId&&typeof r.data=="string"?Ole(d,r.data):d;if(i(m),!await c.initViewerAsync(t,e))throw new Error("The 3D preview needs WebGL. You can still use the protein details on the left.");f();let v,b="",P,C="surface",l=[];async function S(M){f();const D=r.pdbId&&a?Rle(a,M):void 0,V=`${D?.id??"model"}:${[...M].sort().join(",")}`;if(V===b)return l;P=void 0,v&&await c.state.data.build().delete(v.ref).commit(),v=await c.builders.structure.createStructure(g,D?{name:"assembly",params:{id:D.id}}:{name:"model",params:{}}),f();const R=await c.builders.structure.tryCreateComponentFromExpression(v,Ble(M.length?M:m.flatMap(w=>w.chains)),"protein",{label:"Protein"});if(!R)throw new Error("The selected protein is not present in this structure.");const E=await c.builders.structure.representation.addRepresentation(R,{type:"cartoon",typeParams:{quality:"medium",celShaded:!1,metalness:0,roughness:1},color:"chain-id",colorParams:wle});f();const I=E.obj?.data.repr.theme.color;l=R.obj&&I&&"color"in I?Vle(R.obj.data,I):[];const B=await c.builders.structure.representation.addRepresentation(R,{type:"molecular-surface",typeParams:{quality:"medium",alpha:.14,metalness:0,roughness:1},color:"uniform",colorParams:{value:G_.Color(16185599)}},{initialState:{isHidden:C==="ribbon"}});return f(),P=B.ref,k9.setSubtreeVisibility(c.state.data,P,C==="ribbon"),b=V,c.canvas3d&&U$(c.canvas3d.camera),c.canvas3d?.requestCameraReset({durationMs:0}),l}let T=Promise.resolve();const A=M=>{const D=T.then(()=>S(M));return T=D.then(()=>{},()=>{}),D};let x={width:e.clientWidth,height:e.clientHeight};return s=new ResizeObserver(()=>{const M={width:e.clientWidth,height:e.clientHeight};c.canvas3d&&Ile(c.canvas3d.camera,x,M),c.handleResize(),c.canvas3d&&U$(c.canvas3d.camera),x=M}),s.observe(e),n.addEventListener("abort",h,{once:!0}),f(),{dispose:h,showProtein:A,setRepresentation:M=>{C=M,!o&&P&&k9.setSubtreeVisibility(c.state.data,P,M==="ribbon")},setRotation:M=>{o||c.canvas3d?.setProps({trackball:{animate:M?{name:"spin",params:{speed:.025,axis:F_.Vec3.create(0,1,0)}}:{name:"off",params:{}}}})},reset:()=>c.canvas3d?.requestCameraReset({durationMs:0}),zoom:M=>{const D=c.canvas3d?.camera;D&&c.canvas3d?.requestCameraReset({snapshot:D.getFocus(D.state.target,D.state.radius*M),durationMs:0})}}}catch(y){throw h(),y}}export{Lle as createMolecule};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.