UNPKG

@rcsb/rcsb-saguaro-3d

Version:
2 lines 8.47 MB
/*! For license information please see app.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("RcsbFv3D",[],t):"object"==typeof exports?exports.RcsbFv3D=t():e.RcsbFv3D=t()}(self,(()=>(()=>{var e,t,n={20:(e,t,n)=>{"use strict";var r=n(92861).Buffer,o=n(47108),i=n(46737),a=n(56698),A=n(35359),s=n(74847),c=n(62951);function l(e){i.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=o(t.hash),this._tag=t.id,this._signType=t.sign}function u(e){i.Writable.call(this);var t=c[e];if(!t)throw new Error("Unknown message digest");this._hash=o(t.hash),this._tag=t.id,this._signType=t.sign}function d(e){return new l(e)}function g(e){return new u(e)}Object.keys(c).forEach((function(e){c[e].id=r.from(c[e].id,"hex"),c[e.toLowerCase()]=c[e]})),a(l,i.Writable),l.prototype._write=function(e,t,n){this._hash.update(e),n()},l.prototype.update=function(e,t){return this._hash.update("string"==typeof e?r.from(e,t):e),this},l.prototype.sign=function(e,t){this.end();var n=this._hash.digest(),r=A(n,e,this._hashType,this._signType,this._tag);return t?r.toString(t):r},a(u,i.Writable),u.prototype._write=function(e,t,n){this._hash.update(e),n()},u.prototype.update=function(e,t){return this._hash.update("string"==typeof e?r.from(e,t):e),this},u.prototype.verify=function(e,t,n){var o="string"==typeof t?r.from(t,n):t;this.end();var i=this._hash.digest();return s(o,i,e,this._signType,this._tag)},e.exports={Sign:d,Verify:g,createSign:d,createVerify:g}},160:(e,t,n)=>{"use strict";n.d(t,{Km:()=>s,Xl:()=>A});var r=n(21087),o=n(73868),i=n(33101);const a=new Uint8Array(772);function A(e,t){if(0===t)return 0;const n=new Uint32Array(e.buffer,0,e.buffer.byteLength>>2),r=t-4>>2,o=4*r;let i=0;if(r<0)for(let n=0;n<t;++n)i+=e[n]&&1;else{for(let e=0;e<r;++e){const t=n[e];i+=a[65535&t]+a[t>>16]}for(let n=o;n<t;++n)i+=e[n]&&1}return i/t}function s(e,t,n){const a=(0,i.xg)(Math.max(1,e),1,Uint8Array,n&&n.tMarker.ref.value.array),s=A(a.array,e),c=0===s?0:-1;return n?(r.IQ.updateIfChanged(n.uMarker,0),r.IQ.update(n.tMarker,a),r.IQ.update(n.uMarkerTexDim,o.Vec2.create(a.width,a.height)),r.IQ.updateIfChanged(n.markerAverage,s),r.IQ.updateIfChanged(n.markerStatus,c),r.IQ.updateIfChanged(n.dMarkerType,t),n):{uMarker:r.IQ.create(0),tMarker:r.IQ.create(a),uMarkerTexDim:r.IQ.create(o.Vec2.create(a.width,a.height)),markerAverage:r.IQ.create(s),markerStatus:r.IQ.create(c),dMarkerType:r.IQ.create(t)}}a[1]=1,a[2]=1,a[3]=1,a[256]=1,a[512]=1,a[768]=1,a[257]=2,a[513]=2,a[769]=2,a[258]=2,a[514]=2,a[770]=2,a[259]=2,a[515]=2,a[771]=2,new Uint8Array(1)},251:(e,t)=>{t.read=function(e,t,n,r,o){var i,a,A=8*o-r-1,s=(1<<A)-1,c=s>>1,l=-7,u=n?o-1:0,d=n?-1:1,g=e[t+u];for(u+=d,i=g&(1<<-l)-1,g>>=-l,l+=A;l>0;i=256*i+e[t+u],u+=d,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+e[t+u],u+=d,l-=8);if(0===i)i=1-c;else{if(i===s)return a?NaN:1/0*(g?-1:1);a+=Math.pow(2,r),i-=c}return(g?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,A,s,c=8*i-o-1,l=(1<<c)-1,u=l>>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,g=r?0:i-1,p=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(A=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),(t+=a+u>=1?d/s:d*Math.pow(2,1-u))*s>=2&&(a++,s/=2),a+u>=l?(A=0,a=l):a+u>=1?(A=(t*s-1)*Math.pow(2,o),a+=u):(A=t*Math.pow(2,u-1)*Math.pow(2,o),a=0));o>=8;e[n+g]=255&A,g+=p,A/=256,o-=8);for(a=a<<o|A,c+=o;c>0;e[n+g]=255&a,g+=p,a/=256,c-=8);e[n+g-p]|=128*h}},312:(e,t,n)=>{"use strict";n.d(t,{K:()=>r});var r,o=n(51142),i=n(9422);!function(e){function t(e){const t={create:e=>({action:t,params:e}),id:o.kk.create22(),definition:e,createDefaultParams:(t,n)=>e.params?i.ParamDefinition.getDefaultValues(e.params(t,n)):{}};return t}let n;e.create=t,e.fromTransformer=function(e){const n=e.definition;return t({from:n.from,display:n.display,params:n.params,isApplicable:e.definition.isApplicable?(t,n,r)=>e.definition.isApplicable(t,r):void 0,run({cell:t,state:n,params:r}){const o=n.build().to(t.transform.ref).apply(e,r);return n.updateTree(o)}})},function(e){e.build=e=>function(e){return n=>t({from:e.from instanceof Array?e.from:e.from?[e.from]:[],display:"string"==typeof e.display?{name:e.display}:e.display?e.display:{name:"Unnamed State Action"},params:"object"==typeof e.params?()=>e.params:e.params?e.params:void 0,isApplicable:e.isApplicable,..."function"==typeof n?{run:n}:n})}(e)}(n=e.Builder||(e.Builder={})),e.build=n.build}(r||(r={}))},330:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var r=n(9422);function o(e){return{...o.Zero,...e}}!function(e){e.Zero={metalness:0,roughness:0,bumpiness:0},e.toArray=function(e,t,n){return t[n]=255*e.metalness,t[n+1]=255*e.roughness,t[n+2]=255*e.bumpiness,t},e.toString=function({metalness:e,roughness:t,bumpiness:n}){return`M ${e.toFixed(2)} | R ${t.toFixed(2)} | B ${n.toFixed(2)}`},e.getParam=function(e){return r.ParamDefinition.Group({metalness:r.ParamDefinition.Numeric(0,{min:0,max:1,step:.01}),roughness:r.ParamDefinition.Numeric(1,{min:0,max:1,step:.01}),bumpiness:r.ParamDefinition.Numeric(0,{min:0,max:1,step:.01})},{...e,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"]]})}}(o||(o={}))},459:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BoxifyVolumeStreaming:()=>b,CreateVolumeStreamingBehavior:()=>w,CreateVolumeStreamingInfo:()=>v,InitVolumeStreaming:()=>E,VolumeStreamingVisual:()=>S});var r,o=n(12720);class i extends(o.PluginStateObject.Create({name:"Volume Streaming",typeClass:"Object"})){}!function(e){let t;!function(e){e.Float32="float32",e.Int8="int8"}(t=e.ValueType||(e.ValueType={}))}(r||(r={}));var a=n(9422),A=n(24832),s=n(44090),c=n(46124),l=n(66139),u=n(2469),d=n(31511),g=n(48311),p=n(68130),h=n(84465),m=n(46031),f=n(73868),B=n(81100),C=n(28243),I=n(40728);function y(e,t,n,r){e.push({source:"em"===t?{name:"em",params:{isoValue:c.f.IsoValue.absolute(r||0)}}:{name:"x-ray",params:{}},dataId:n})}const E=l.StateAction.build({display:{name:"Volume Streaming"},from:o.PluginStateObject.Molecule.Structure,params(e,t){const n=(0,u.AR)(e&&e.data),r=(0,u.rO)(n,e&&e.data);return{method:a.ParamDefinition.Select(n,[["em","EM"],["x-ray","X-Ray"]]),entries:a.ParamDefinition.ObjectList({id:a.ParamDefinition.Text(r[0]||"")},(({id:e})=>e),{defaultValue:r.map((e=>({id:e})))}),defaultView:a.ParamDefinition.Select("em"===n?"auto":"selection-box",d.VolumeStreaming.ViewTypeOptions),options:a.ParamDefinition.Group({serverUrl:a.ParamDefinition.Text(t.config.get(B.PluginConfig.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),behaviorRef:a.ParamDefinition.Text("",{isHidden:!0}),emContourProvider:a.ParamDefinition.Select("emdb",[["emdb","EMDB"],["pdbe","PDBe"]],{isHidden:!0}),channelParams:a.ParamDefinition.Value({},{isHidden:!0})})}},isApplicable:(e,t,n)=>{const r=n.config.get(B.PluginConfig.VolumeStreaming.CanStream);return r?r(e.data,n):1===e.data.models.length&&C.Model.probablyHasDensityMap(e.data.models[0])}})((({ref:e,state:t,params:n},r)=>A.Task.create("Volume Streaming",(async o=>{const i=[];for(let e=0,t=n.entries.length;e<t;++e){const t=n.entries[e].id.toLowerCase();let a;if("em"===n.method){if(!t.toUpperCase().startsWith("EMD")){await o.update("Getting EMDB info...");const e=await(0,u.t9)(r,o,t);for(let t=0,a=e.length;t<a;++t){const a=e[t];let A;try{A=await(0,u.lL)(n.options.emContourProvider,r,o,a)}catch(e){console.info(`Could not get map info for ${a}: ${e}`);continue}y(i,n.method,a,A||0)}continue}try{a=await(0,u.lL)(n.options.emContourProvider,r,o,t)}catch(e){console.info(`Could not get map info for ${t}: ${e}`);continue}}y(i,n.method,t,a||0)}const A=t.build().to(e).applyOrUpdateTagged(d.VolumeStreaming.RootTag,v,{serverUrl:n.options.serverUrl,entries:i});await A.commit();const s=A.selector;if(!s.isOk)return;const c=t.tree.children.get(s.ref);(null==c?void 0:c.size)>0&&await r.managers.structure.hierarchy.remove(null==c?void 0:c.toArray());const l=s.cell.obj,g=t.build().to(A.ref).apply(w,a.ParamDefinition.getDefaultValues(d.VolumeStreaming.createParams({data:l.data,defaultView:n.defaultView,channelParams:n.options.channelParams})),{ref:n.options.behaviorRef?n.options.behaviorRef:void 0});"em"===n.method?g.apply(S,{channel:"em"},{state:{isGhost:!0},tags:"em"}):(g.apply(S,{channel:"2fo-fc"},{state:{isGhost:!0},tags:"2fo-fc"}),g.apply(S,{channel:"fo-fc(+ve)"},{state:{isGhost:!0},tags:"fo-fc(+ve)"}),g.apply(S,{channel:"fo-fc(-ve)"},{state:{isGhost:!0},tags:"fo-fc(-ve)"})),await t.updateTree(g).runInContext(o)})))),b=l.StateAction.build({display:{name:"Boxify Volume Streaming",description:"Make the current box permanent."},from:d.VolumeStreaming,isApplicable:e=>"selection-box"===e.data.params.entry.params.view.name})((({a:e,ref:t,state:n},r)=>{const o=e.data.params;if("selection-box"!==o.entry.params.view.name)return;const i=m.DJ.create(f.Vec3.clone(o.entry.params.view.params.bottomLeft),f.Vec3.clone(o.entry.params.view.params.topRight)),a=o.entry.params.view.params.radius;m.DJ.expand(i,i,f.Vec3.create(a,a,a));const A={...o,entry:{name:o.entry.name,params:{...o.entry.params,view:{name:"box",params:{bottomLeft:i.min,topRight:i.max}}}}};return n.updateTree(n.build().to(t).update(A))})),Q={dataId:a.ParamDefinition.Text(""),source:a.ParamDefinition.MappedStatic("x-ray",{em:a.ParamDefinition.Group({isoValue:c.f.createIsoValueParam(c.f.IsoValue.relative(1))}),"x-ray":a.ParamDefinition.Group({})})},v=o.PluginStateTransform.BuiltIn({name:"create-volume-streaming-info",display:{name:"Volume Streaming Info"},from:o.PluginStateObject.Molecule.Structure,to:i,params:e=>({serverUrl:a.ParamDefinition.Text("https://ds.litemol.org"),entries:a.ParamDefinition.ObjectList(Q,(({dataId:e})=>e),{defaultValue:[{dataId:"",source:{name:"x-ray",params:{}}}]})})})({apply:({a:e,params:t},n)=>A.Task.create("",(async r=>{const o=[];for(let e=0,i=t.entries.length;e<i;++e){const i=t.entries[e],a=i.dataId,A="em"===i.source.name?i.source.params.isoValue:c.f.IsoValue.relative(1);await r.update("Getting server header...");const l=await n.fetch({url:(0,s.r)(t.serverUrl,`${i.source.name}/${a.toLocaleLowerCase()}`),type:"json"}).runInContext(r);o.push({dataId:a,kind:i.source.name,header:l,emDefaultContourLevel:A})}const a={serverUrl:t.serverUrl,entries:o,structure:e.data};return new i(a,{label:"Volume Server",description:`${o.map((e=>e.dataId)).join(", ")}`})}))}),w=o.PluginStateTransform.BuiltIn({name:"create-volume-streaming-behavior",display:{name:"Volume Streaming Behavior"},from:i,to:d.VolumeStreaming,params:e=>d.VolumeStreaming.createParams({data:e&&e.data})})({canAutoUpdate:({oldParams:e,newParams:t})=>e.entry.params.view===t.entry.params.view||"selection-box"===t.entry.params.view.name||"camera-target"===t.entry.params.view.name||"off"===t.entry.params.view.name,apply:({a:e,params:t},n)=>A.Task.create("Volume streaming",(async r=>{const o=new d.VolumeStreaming.Behavior(n,e.data);return await o.update(t),new d.VolumeStreaming(o,{label:"Volume Streaming",description:o.getDescription()})})),update:({a:e,b:t,oldParams:n,newParams:r})=>A.Task.create("Update Volume Streaming",(async e=>{if(n.entry.name!==r.entry.name&&"em"in r.entry.params.channels){const{emDefaultContourLevel:e}=t.data.infoMap.get(r.entry.name);e&&(r.entry.params.channels.em.isoValue=e)}const o=await t.data.update(r)?l.StateTransformer.UpdateResult.Updated:l.StateTransformer.UpdateResult.Unchanged;return t.description=t.data.getDescription(),o}))}),S=o.PluginStateTransform.BuiltIn({name:"create-volume-streaming-visual",display:{name:"Volume Streaming Visual"},from:d.VolumeStreaming,to:o.PluginStateObject.Volume.Representation3D,params:{channel:a.ParamDefinition.Select("em",d.VolumeStreaming.ChannelTypeOptions,{isHidden:!0})}})({apply:({a:e,params:t,spine:n},r)=>A.Task.create("Volume Representation",(async i=>{var a,A;const s=e.data.channels[t.channel];if(!s)return l.StateObject.Null;const c=x(e.data,t.channel),u=p.H.BuiltIn.isosurface,d=c.type.params||{},g=u.factory({webgl:null===(a=r.canvas3d)||void 0===a?void 0:a.webgl,...r.representation.volume.themes},u.getParams);g.setTheme(h.S.create(r.representation.volume.themes,{volume:s.data},c));const m=null===(A=n.getAncestorOfType(o.PluginStateObject.Molecule.Structure))||void 0===A?void 0:A.data,f=0===(null==m?void 0:m.models.length)?void 0:I.T.get(null==m?void 0:m.models[0]);return await g.createOrUpdate(d,s.data).runInContext(i),f&&g.setState({transform:f}),new o.PluginStateObject.Volume.Representation3D({repr:g,sourceData:s.data},{label:`${Math.round(100*s.isoValue.relativeValue)/100} σ [${t.channel}]`})})),update:({a:e,b:t,newParams:n,spine:r},o)=>A.Task.create("Volume Representation",(async r=>{const i=e.data.channels[n.channel];if(!i)return l.StateTransformer.UpdateResult.Unchanged;const a=t.data.repr.state.visible,A=x(e.data,n.channel),s={...t.data.repr.props,...A.type.params};return t.data.repr.setTheme(h.S.create(o.representation.volume.themes,{volume:i.data},A)),await t.data.repr.createOrUpdate(s,i.data).runInContext(r),t.data.repr.setState({visible:a}),t.data.sourceData=i.data,l.StateTransformer.UpdateResult.Updated}))});function x(e,t){const n=e.channels[t];return g.VolumeRepresentation3DHelpers.getDefaultParamsStatic(e.plugin,"isosurface",{isoValue:n.isoValue,alpha:n.opacity,visuals:n.wireframe?["wireframe"]:["solid"]},"uniform",{value:n.color})}},528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Box3D=a;const r=n(9309),o=n(8266),i=n(6192);function a(){return a.zero()}!function(e){function t(){return{min:(0,i.Vec3)(),max:(0,i.Vec3)()}}function n(e,t){return i.Vec3.copy(e.min,t.min),i.Vec3.copy(e.max,t.max),e}e.create=function(e,t){return{min:e,max:t}},e.zero=t,e.copy=n,e.set=function(e,t,n){return i.Vec3.copy(e.min,t),i.Vec3.copy(e.max,n),e},e.clone=function(e){return n(t(),e)};const a=(0,i.Vec3)();function A(e,t){for(let n=0,r=t.length;n<r;n++)d(e,t[n]);return e}function s(e,t){return u(e),A(e,t),e}function c(e,t){return i.Vec3.sub(e,t.max,t.min)}e.fromSphere3D=function(e,t){return o.Sphere3D.hasExtrema(t)&&t.extrema.length>=14?s(e,t.extrema):(i.Vec3.set(a,t.radius,t.radius,t.radius),i.Vec3.sub(e.min,t.center,a),i.Vec3.add(e.max,t.center,a),e)},e.addVec3Array=A,e.fromVec3Array=s,e.addSphere3D=function(e,t){return o.Sphere3D.hasExtrema(t)&&t.extrema.length>=14?A(e,t.extrema):(d(e,i.Vec3.subScalar(a,t.center,t.radius)),d(e,i.Vec3.addScalar(a,t.center,t.radius)),e)},e.intersectsSphere3D=function(e,t){return i.Vec3.clamp(a,t.center,e.min,e.max),i.Vec3.squaredDistance(a,t.center)<=t.radius*t.radius},e.computeBounding=function(e){const t=i.Vec3.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),n=i.Vec3.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),{x:o,y:a,z:A,indices:s}=e;for(let e=0,i=r.OrderedSet.size(s);e<i;e++){const i=r.OrderedSet.getAt(s,e);t[0]=Math.min(o[i],t[0]),t[1]=Math.min(a[i],t[1]),t[2]=Math.min(A[i],t[2]),n[0]=Math.max(o[i],n[0]),n[1]=Math.max(a[i],n[1]),n[2]=Math.max(A[i],n[2])}return{min:t,max:n}},e.size=c;const l=(0,i.Vec3)();function u(e){return i.Vec3.set(e.min,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),i.Vec3.set(e.max,-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),e}function d(e,t){return i.Vec3.min(e.min,e.min,t),i.Vec3.max(e.max,e.max,t),e}e.volume=function(e){return c(l,e),l[0]*l[1]*l[2]},e.setEmpty=u,e.add=d,e.expand=function(e,t,n){return i.Vec3.sub(e.min,t.min,n),i.Vec3.add(e.max,t.max,n),e},e.expandUniformly=function(e,t,n){return i.Vec3.subScalar(e.min,t.min,n),i.Vec3.addScalar(e.max,t.max,n),e},e.scale=function(e,t,n){return i.Vec3.scale(e.min,t.min,n),i.Vec3.scale(e.max,t.max,n),e};const g=(0,i.Vec3)();e.transform=function(e,t,n){const[r,o,a]=t.min,[A,s,c]=t.max;return u(e),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,r,o,a),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,r,o,c),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,r,s,a),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,r,s,c),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,A,o,a),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,A,o,c),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,A,s,a),n)),d(e,i.Vec3.transformMat4(g,i.Vec3.set(g,A,s,c),n)),e},e.containsVec3=function(e,t){return!(t[0]<e.min[0]||t[0]>e.max[0]||t[1]<e.min[1]||t[1]>e.max[1]||t[2]<e.min[2]||t[2]>e.max[2])},e.overlaps=function(e,t){return!(e.max[0]<t.min[0]||e.min[0]>t.max[0]||e.max[1]<t.min[1]||e.min[1]>t.max[1]||e.max[2]<t.min[2]||e.min[2]>t.max[2])},e.containsSphere3D=function(e,t){const n=t.center,r=t.radius;return!(n[0]-r<e.min[0]||n[0]+r>e.max[0]||n[1]-r<e.min[1]||n[1]+r>e.max[1]||n[2]-r<e.min[2]||n[2]+r>e.max[2])},e.nearestIntersectionWithRay=function(e,t,n,r){const[o,a,A]=t.min,[s,c,l]=t.max,[u,d,g]=n,p=1/r[0],h=1/r[1],m=1/r[2];let f,B,C,I,y,E;return p>=0?(f=(o-u)*p,B=(s-u)*p):(f=(s-u)*p,B=(o-u)*p),h>=0?(C=(a-d)*h,I=(c-d)*h):(C=(c-d)*h,I=(a-d)*h),m>=0?(y=(A-g)*m,E=(l-g)*m):(y=(l-g)*m,E=(A-g)*m),C>f&&(f=C),I<B&&(B=I),y>f&&(f=y),E<B&&(B=E),i.Vec3.scale(e,r,f),i.Vec3.set(e,e[0]+u,e[1]+d,e[2]+g)},e.center=function(e,t){return i.Vec3.center(e,t.max,t.min)},e.exactEquals=function(e,t){return i.Vec3.exactEquals(e.min,t.min)&&i.Vec3.exactEquals(e.max,t.max)},e.equals=function(e,t){return i.Vec3.equals(e.min,t.min)&&i.Vec3.equals(e.max,t.max)}}(a||(t.Box3D=a={}))},530:(e,t,n)=>{var r={ECB:n(52632),CBC:n(92884),CFB:n(46383),CFB8:n(86975),CFB1:n(55264),OFB:n(46843),CTR:n(63053),GCM:n(63053)},o=n(3219);for(var i in o)o[i].module=r[o[i].mode];e.exports=o},672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setFocusFromRange=function(e,t){const n=a(e.managers.structure.hierarchy.current.structures,t);if(!n)return;const r=(0,i.targetToLoci)(t,n);r&&e.managers.structure.focus.setFromLoci(r)},t.getStructureRefWithModelId=A,t.select=function(e,t,n,r){"set"===r&&s(e,n),(Array.isArray(t)?t:[t]).forEach(((t,r)=>{const o=a(e.managers.structure.hierarchy.current.structures,t);if(!o)return;const A=(0,i.targetToLoci)(t,o);A&&("hover"===n?e.managers.interactivity.lociHighlights.highlight({loci:A}):"select"===n&&e.managers.structure.selection.fromLoci("add",A))}))},t.clearSelection=s,t.createComponent=async function(e,t,n,a){for(const s of Array.isArray(n)?n:[n]){const n=A(e.managers.structure.hierarchy.current.structures,s);if(!n)throw Error("createComponent error: model not found");const l=c(s),u=(0,o.StructureSelectionQuery)("innerQuery_"+Math.random().toString(36).substring(2),r.MolScriptBuilder.struct.generator.atomGroups((0,i.rangeToTest)(s.labelAsymId,l,s.operatorName)));await e.managers.structure.component.add({selection:u,options:{checkExisting:!1,label:t},representation:a},[n])}},t.removeComponent=async function(e,t){const n=[];e.managers.structure.hierarchy.currentComponentGroups.forEach((r=>{var o;for(const i of r)if((null===(o=i.cell.obj)||void 0===o?void 0:o.label)===t){const t=e.managers.structure.hierarchy.remove(r);t&&n.push(t);break}})),await Promise.all(n)};const r=n(13636),o=n(11485),i=n(18730);function a(e,t){var n,r;const o=A(e,t);if(o)return null===(r=null===(n=o.cell)||void 0===n?void 0:n.obj)||void 0===r?void 0:r.data}function A(e,t){var n,r,o;for(const i of e)if((null===(o=null===(r=null===(n=i.cell)||void 0===n?void 0:n.obj)||void 0===r?void 0:r.data)||void 0===o?void 0:o.units)&&i.cell.obj.data.units[0].model.id===t.modelId)return i}function s(e,t,n){if("hover"===t)return void e.managers.interactivity.lociHighlights.clearHighlights();if(!n)return void e.managers.interactivity.lociSelects.deselectAll();const r=a(e.managers.structure.hierarchy.current.structures,n);if(!r)return;const o=(0,i.targetToLoci)(n,r);e.managers.interactivity.lociSelects.deselect({loci:o})}function c(e){return"labelSeqRange"in e?(0,i.toRange)(e.labelSeqRange.beg,e.labelSeqRange.end):"labelSeqId"in e?[e.labelSeqId]:[]}},761:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchMapTo=void 0;var r=n(90680),o=n(10281);t.switchMapTo=function(e,t){return o.isFunction(t)?r.switchMap((function(){return e}),t):r.switchMap((function(){return e}))}},784:(e,t,n)=>{"use strict";n.d(t,{r:()=>g});var r=n(27125).VP.Schema;const o=r.str,i=r.int,a=r.float,A=r.coord,s=r.Aliased,c=r.Matrix,l=r.Vector,u=r.lstr,d=r.List,g={atom_site:{auth_asym_id:o,auth_atom_id:o,auth_comp_id:o,auth_seq_id:i,B_iso_or_equiv:a,Cartn_x:A,Cartn_y:A,Cartn_z:A,group_PDB:s(o),id:i,label_alt_id:o,label_asym_id:o,label_atom_id:o,label_comp_id:o,label_entity_id:o,label_seq_id:i,occupancy:a,type_symbol:o,pdbx_PDB_ins_code:o,pdbx_PDB_model_num:i,pdbx_formal_charge:i,pdbx_label_index:i,pdbx_sifts_xref_db_name:o,pdbx_sifts_xref_db_acc:o,pdbx_sifts_xref_db_num:o,pdbx_sifts_xref_db_res:o,ihm_model_id:i},atom_site_anisotrop:{id:i,type_symbol:o,U:c(3,3),U_esd:c(3,3),pdbx_auth_seq_id:i,pdbx_auth_asym_id:o,pdbx_auth_atom_id:o,pdbx_auth_comp_id:o,pdbx_label_seq_id:i,pdbx_label_alt_id:o,pdbx_label_asym_id:o,pdbx_label_atom_id:o,pdbx_label_comp_id:o,pdbx_PDB_ins_code:o},atom_sites:{entry_id:o,fract_transf_matrix:c(3,3),fract_transf_vector:l(3)},audit_author:{name:o,pdbx_ordinal:i,identifier_ORCID:o},audit_conform:{dict_location:o,dict_name:o,dict_version:o},cell:{angle_alpha:a,angle_beta:a,angle_gamma:a,entry_id:o,length_a:a,length_b:a,length_c:a,Z_PDB:i,pdbx_unique_axis:o},chem_comp:{formula:o,formula_weight:a,id:o,mon_nstd_flag:s(u),name:o,type:s(u),pdbx_synonyms:d(";",(e=>e))},chem_comp_bond:{atom_id_1:o,atom_id_2:o,comp_id:o,value_order:s(u),pdbx_ordinal:i,pdbx_stereo_config:s(u),pdbx_aromatic_flag:s(u)},citation:{book_publisher:o,country:o,id:o,journal_abbrev:o,journal_id_ASTM:o,journal_id_CSD:o,journal_id_ISSN:o,journal_volume:o,page_first:o,page_last:o,title:o,year:i,pdbx_database_id_DOI:o,pdbx_database_id_PubMed:i},citation_author:{citation_id:o,name:o,ordinal:i},database_2:{database_id:s(u),database_code:o},entity:{details:o,formula_weight:a,id:o,src_method:s(u),type:s(u),pdbx_description:d(",",(e=>e)),pdbx_number_of_molecules:i,pdbx_parent_entity_id:o,pdbx_mutation:o,pdbx_fragment:o,pdbx_ec:d(",",(e=>e))},entity_poly:{entity_id:o,nstd_linkage:s(u),nstd_monomer:s(u),type:s(o),pdbx_strand_id:d(",",(e=>e)),pdbx_seq_one_letter_code:o,pdbx_seq_one_letter_code_can:o,pdbx_target_identifier:o},entity_poly_seq:{entity_id:o,hetero:s(u),mon_id:o,num:i},entry:{id:o},exptl:{entry_id:o,method:s(o)},software:{classification:o,date:o,description:o,name:o,type:s(u),version:o,pdbx_ordinal:i},struct:{entry_id:o,title:o,pdbx_structure_determination_methodology:s(o),pdbx_descriptor:o},struct_asym:{details:o,entity_id:o,id:o,pdbx_modified:o,pdbx_blank_PDB_chainid_flag:s(o)},struct_conf:{beg_label_asym_id:o,beg_label_comp_id:o,beg_label_seq_id:i,beg_auth_asym_id:o,beg_auth_comp_id:o,beg_auth_seq_id:i,conf_type_id:s(u),details:o,end_label_asym_id:o,end_label_comp_id:o,end_label_seq_id:i,end_auth_asym_id:o,end_auth_comp_id:o,end_auth_seq_id:i,id:o,pdbx_beg_PDB_ins_code:o,pdbx_end_PDB_ins_code:o,pdbx_PDB_helix_class:o,pdbx_PDB_helix_length:i,pdbx_PDB_helix_id:o},struct_conn:{conn_type_id:s(u),details:o,id:o,ptnr1_label_asym_id:o,ptnr1_label_atom_id:o,ptnr1_label_comp_id:o,ptnr1_label_seq_id:i,ptnr1_auth_asym_id:o,ptnr1_auth_comp_id:o,ptnr1_auth_seq_id:i,ptnr1_symmetry:o,ptnr2_label_asym_id:o,ptnr2_label_atom_id:o,ptnr2_label_comp_id:o,ptnr2_label_seq_id:i,ptnr2_auth_asym_id:o,ptnr2_auth_comp_id:o,ptnr2_auth_seq_id:i,ptnr2_symmetry:o,pdbx_ptnr1_PDB_ins_code:o,pdbx_ptnr1_label_alt_id:o,pdbx_ptnr1_standard_comp_id:o,pdbx_ptnr2_PDB_ins_code:o,pdbx_ptnr2_label_alt_id:o,pdbx_ptnr3_PDB_ins_code:o,pdbx_ptnr3_label_alt_id:o,pdbx_ptnr3_label_asym_id:o,pdbx_ptnr3_label_atom_id:o,pdbx_ptnr3_label_comp_id:o,pdbx_ptnr3_label_seq_id:i,pdbx_PDB_id:o,pdbx_dist_value:a,pdbx_value_order:s(u)},struct_conn_type:{criteria:o,id:s(u),reference:o},struct_keywords:{entry_id:o,text:d(",",(e=>e)),pdbx_keywords:o},struct_mon_prot_cis:{label_alt_id:o,label_asym_id:o,label_comp_id:o,label_seq_id:i,auth_asym_id:o,auth_comp_id:o,auth_seq_id:i,pdbx_auth_asym_id_2:o,pdbx_auth_comp_id_2:o,pdbx_auth_seq_id_2:i,pdbx_label_asym_id_2:o,pdbx_label_comp_id_2:o,pdbx_label_seq_id_2:i,pdbx_PDB_ins_code:o,pdbx_PDB_ins_code_2:o,pdbx_PDB_model_num:i,pdbx_omega_angle:o,pdbx_id:o,pdbx_auth_ins_code:o,pdbx_auth_ins_code_2:o},struct_ncs_oper:{code:s(o),details:o,id:i,matrix:c(3,3),vector:l(3)},struct_sheet_range:{beg_label_asym_id:o,beg_label_comp_id:o,beg_label_seq_id:i,end_label_asym_id:o,end_label_comp_id:o,end_label_seq_id:i,beg_auth_asym_id:o,beg_auth_comp_id:o,beg_auth_seq_id:i,end_auth_asym_id:o,end_auth_comp_id:o,end_auth_seq_id:i,id:o,sheet_id:o,pdbx_beg_PDB_ins_code:o,pdbx_end_PDB_ins_code:o},struct_site:{details:o,id:o,pdbx_num_residues:i,pdbx_evidence_code:o,pdbx_auth_asym_id:o,pdbx_auth_comp_id:o,pdbx_auth_seq_id:i,pdbx_auth_ins_code:o},struct_site_gen:{details:o,id:o,label_alt_id:o,label_asym_id:o,label_atom_id:o,label_comp_id:o,label_seq_id:i,auth_asym_id:o,auth_atom_id:o,auth_comp_id:o,auth_seq_id:i,site_id:o,symmetry:o,pdbx_auth_ins_code:o,pdbx_num_res:i},struct_site_keywords:{site_id:o,text:o},symmetry:{entry_id:o,cell_setting:s(u),Int_Tables_number:i,space_group_name_Hall:o,"space_group_name_H-M":o},pdbx_database_status:{status_code:s(o),status_code_sf:s(o),status_code_mr:s(o),entry_id:o,recvd_initial_deposition_date:o,SG_entry:s(u),deposit_site:s(o),process_site:s(o),status_code_cs:s(o),methods_development_category:s(o),pdb_format_compatible:s(u)},pdbx_nonpoly_scheme:{asym_id:o,entity_id:o,mon_id:o,pdb_strand_id:o,ndb_seq_num:o,pdb_seq_num:o,auth_seq_num:o,pdb_mon_id:o,auth_mon_id:o,pdb_ins_code:o},pdbx_database_related:{db_name:s(o),details:o,db_id:o,content_type:s(o)},pdbx_entity_nonpoly:{entity_id:o,comp_id:o,name:o},pdbx_chem_comp_synonyms:{name:o,comp_id:o,provenance:s(o)},pdbx_chem_comp_identifier:{comp_id:o,identifier:o,type:s(o),program:o,program_version:o},pdbx_unobs_or_zero_occ_residues:{id:i,polymer_flag:s(u),occupancy_flag:s(i),PDB_model_num:i,auth_asym_id:o,auth_comp_id:o,auth_seq_id:i,PDB_ins_code:o,label_asym_id:o,label_comp_id:o,label_seq_id:i},pdbx_struct_mod_residue:{id:i,auth_asym_id:o,auth_comp_id:o,auth_seq_id:i,PDB_ins_code:o,label_asym_id:o,label_comp_id:o,label_seq_id:i,parent_comp_id:o,details:o},pdbx_struct_oper_list:{id:o,type:s(o),name:o,symmetry_operation:o,matrix:c(3,3),vector:l(3)},pdbx_struct_assembly:{method_details:o,oligomeric_details:o,oligomeric_count:i,details:o,id:o},pdbx_struct_assembly_gen:{asym_id_list:d(",",(e=>e)),assembly_id:o,oper_expression:o},pdbx_reference_entity_list:{prd_id:o,ref_entity_id:o,type:s(u),details:o,component_id:i},pdbx_reference_entity_link:{link_id:i,prd_id:o,details:o,ref_entity_id_1:o,ref_entity_id_2:o,entity_seq_num_1:i,entity_seq_num_2:i,comp_id_1:o,comp_id_2:o,atom_id_1:o,atom_id_2:o,value_order:s(u),component_1:i,component_2:i,link_class:s(o)},pdbx_reference_entity_poly_link:{link_id:i,prd_id:o,ref_entity_id:o,component_id:i,entity_seq_num_1:i,entity_seq_num_2:i,comp_id_1:o,comp_id_2:o,atom_id_1:o,atom_id_2:o,value_order:s(u)},pdbx_molecule:{prd_id:o,instance_id:i,asym_id:o},pdbx_molecule_features:{prd_id:o,class:s(u),type:s(u),name:o,details:o},entity_src_nat:{entity_id:o,pdbx_organism_scientific:o,pdbx_plasmid_name:o,pdbx_src_id:i,pdbx_beg_seq_num:i,pdbx_end_seq_num:i},entity_src_gen:{entity_id:o,pdbx_gene_src_gene:d(",",(e=>e)),pdbx_gene_src_scientific_name:o,plasmid_name:o,pdbx_src_id:i,pdbx_beg_seq_num:i,pdbx_end_seq_num:i},pdbx_entity_src_syn:{organism_scientific:o,entity_id:o,pdbx_src_id:i,pdbx_beg_seq_num:i,pdbx_end_seq_num:i},pdbx_entity_branch_descriptor:{entity_id:o,descriptor:o,type:s(u),program:o,program_version:o,ordinal:i},pdbx_entity_instance_feature:{details:o,feature_type:s(o),auth_asym_id:o,asym_id:o,auth_seq_num:o,seq_num:i,comp_id:o,auth_comp_id:o,ordinal:i},pdbx_entity_branch_list:{entity_id:o,hetero:s(u),comp_id:o,num:i},pdbx_entity_branch_link:{link_id:i,details:o,entity_id:o,entity_branch_list_num_1:i,entity_branch_list_num_2:i,comp_id_1:o,comp_id_2:o,atom_id_1:o,leaving_atom_id_1:o,atom_stereo_config_1:s(u),atom_id_2:o,leaving_atom_id_2:o,atom_stereo_config_2:s(u),value_order:s(u)},pdbx_entity_branch:{entity_id:o,type:s(o)},pdbx_branch_scheme:{entity_id:o,hetero:s(u),asym_id:o,mon_id:o,num:i,pdb_asym_id:o,pdb_seq_num:o,pdb_mon_id:o,auth_asym_id:o,auth_seq_num:o,auth_mon_id:o},pdbx_chem_comp_related:{comp_id:o,related_comp_id:o,relationship_type:s(o),details:o},ihm_starting_model_details:{starting_model_id:o,entity_id:o,entity_description:o,asym_id:o,entity_poly_segment_id:i,starting_model_source:s(o),starting_model_auth_asym_id:o,starting_model_sequence_offset:i,dataset_list_id:i},ihm_starting_comparative_models:{id:i,starting_model_id:o,starting_model_auth_asym_id:o,starting_model_seq_id_begin:i,starting_model_seq_id_end:i,template_auth_asym_id:o,template_seq_id_begin:i,template_seq_id_end:i,template_sequence_identity:a,template_sequence_identity_denominator:s(i),template_dataset_list_id:i,alignment_file_id:i},ihm_starting_model_seq_dif:{id:i,entity_id:o,asym_id:o,seq_id:i,comp_id:o,starting_model_id:o,db_asym_id:o,db_seq_id:i,db_comp_id:o,details:o},ihm_model_representation:{id:i,name:o,details:o},ihm_model_representation_details:{id:i,representation_id:i,entity_poly_segment_id:i,entity_id:o,entity_description:o,entity_asym_id:o,model_object_primitive:s(o),starting_model_id:o,model_mode:s(o),model_granularity:s(o),model_object_count:i},ihm_struct_assembly_details:{id:i,assembly_id:i,parent_assembly_id:i,entity_description:o,entity_id:o,asym_id:o,entity_poly_segment_id:i},ihm_struct_assembly:{id:i,name:o,description:o},ihm_modeling_protocol:{id:i,num_steps:i,protocol_name:o},ihm_modeling_protocol_details:{id:i,protocol_id:i,step_id:i,struct_assembly_id:i,dataset_group_id:i,struct_assembly_description:o,step_name:o,step_method:o,num_models_begin:i,num_models_end:i,multi_scale_flag:s(u),multi_state_flag:s(u),ordered_flag:s(u),script_file_id:i,software_id:i},ihm_multi_state_modeling:{state_id:i,state_group_id:i,population_fraction:a,population_fraction_sd:a,state_type:o,state_name:o,experiment_type:s(o),details:o},ihm_modeling_post_process:{id:i,protocol_id:i,analysis_id:i,step_id:i,type:s(o),feature:s(o),num_models_begin:i,num_models_end:i},ihm_ensemble_info:{ensemble_id:i,ensemble_name:o,post_process_id:i,model_group_id:i,ensemble_clustering_method:s(o),ensemble_clustering_feature:s(o),num_ensemble_models:i,num_ensemble_models_deposited:i,ensemble_precision_value:a,ensemble_file_id:i},ihm_model_list:{model_id:i,model_name:o,assembly_id:i,protocol_id:i,representation_id:i},ihm_model_group:{id:i,name:o,details:o},ihm_model_group_link:{model_id:i,group_id:i},ihm_model_representative:{id:i,model_group_id:i,model_id:i,selection_criteria:s(o)},ihm_dataset_list:{id:i,data_type:s(o),database_hosted:s(u)},ihm_dataset_group:{id:i,name:o,application:s(o),details:o},ihm_dataset_group_link:{dataset_list_id:i,group_id:i},ihm_related_datasets:{dataset_list_id_derived:i,dataset_list_id_primary:i},ihm_dataset_related_db_reference:{id:i,dataset_list_id:i,db_name:s(o),accession_code:o,version:o,details:o},ihm_external_reference_info:{reference_id:i,reference_provider:o,reference_type:s(o),reference:o,refers_to:s(o),associated_url:o},ihm_external_files:{id:i,reference_id:i,file_path:o,content_type:s(o),file_size_bytes:a,details:o},ihm_dataset_external_reference:{id:i,dataset_list_id:i,file_id:i},ihm_localization_density_files:{id:i,file_id:i,ensemble_id:i,entity_id:o,entity_poly_segment_id:i,asym_id:o},ihm_predicted_contact_restraint:{id:i,group_id:i,entity_id_1:o,entity_id_2:o,asym_id_1:o,asym_id_2:o,comp_id_1:o,comp_id_2:o,seq_id_1:i,seq_id_2:i,rep_atom_1:s(o),rep_atom_2:s(o),distance_lower_limit:a,distance_upper_limit:a,probability:a,restraint_type:s(o),model_granularity:s(o),dataset_list_id:i,software_id:i},ihm_cross_link_list:{id:i,group_id:i,entity_description_1:o,entity_description_2:o,entity_id_1:o,entity_id_2:o,comp_id_1:o,comp_id_2:o,seq_id_1:i,seq_id_2:i,linker_type:s(o),dataset_list_id:i},ihm_cross_link_restraint:{id:i,group_id:i,entity_id_1:o,entity_id_2:o,asym_id_1:o,asym_id_2:o,comp_id_1:o,comp_id_2:o,seq_id_1:i,seq_id_2:i,atom_id_1:o,atom_id_2:o,restraint_type:s(o),conditional_crosslink_flag:s(o),model_granularity:s(o),distance_threshold:a,psi:a,sigma_1:a,sigma_2:a},ihm_cross_link_result_parameters:{id:i,restraint_id:i,model_id:i,psi:a,sigma_1:a,sigma_2:a},ihm_2dem_class_average_restraint:{id:i,dataset_list_id:i,number_raw_micrographs:i,pixel_size_width:a,pixel_size_height:a,image_resolution:a,image_segment_flag:s(u),number_of_projections:i,struct_assembly_id:i,details:o},ihm_2dem_class_average_fitting:{id:i,restraint_id:i,model_id:i,cross_correlation_coefficient:a,rot_matrix:c(3,3),tr_vector:l(3)},ihm_3dem_restraint:{id:i,dataset_list_id:i,model_id:i,struct_assembly_id:i,fitting_method:o,number_of_gaussians:i,cross_correlation_coefficient:a},ihm_sas_restraint:{id:i,dataset_list_id:i,model_id:i,struct_assembly_id:i,profile_segment_flag:s(u),fitting_atom_type:o,fitting_method:o,fitting_state:s(o),radius_of_gyration:a,chi_value:a,details:o},ihm_starting_model_coord:{ordinal_id:i,starting_model_id:o,group_PDB:s(o),id:i,type_symbol:o,entity_id:o,atom_id:o,comp_id:o,seq_id:i,asym_id:o,Cartn_x:a,Cartn_y:a,Cartn_z:a,B_iso_or_equiv:a},ihm_sphere_obj_site:{id:i,entity_id:o,seq_id_begin:i,seq_id_end:i,asym_id:o,Cartn_x:a,Cartn_y:a,Cartn_z:a,object_radius:a,rmsf:a,model_id:i},ihm_gaussian_obj_site:{id:i,entity_id:o,seq_id_begin:i,seq_id_end:i,asym_id:o,mean_Cartn_x:a,mean_Cartn_y:a,mean_Cartn_z:a,weight:a,covariance_matrix:c(3,3),model_id:i},ihm_gaussian_obj_ensemble:{id:i,entity_id:o,seq_id_begin:i,seq_id_end:i,asym_id:o,mean_Cartn_x:a,mean_Cartn_y:a,mean_Cartn_z:a,weight:a,covariance_matrix:c(3,3),ensemble_id:i},ihm_feature_list:{feature_id:i,feature_type:s(o),entity_type:s(o)},ihm_poly_residue_feature:{ordinal_id:i,feature_id:i,entity_id:o,asym_id:o,comp_id_begin:o,comp_id_end:o,seq_id_begin:i,seq_id_end:i},ihm_derived_distance_restraint:{id:i,group_id:i,feature_id_1:i,feature_id_2:i,group_conditionality:s(o),random_exclusion_fraction:a,distance_upper_limit:a,restraint_type:s(o),dataset_list_id:i},ma_model_list:{ordinal_id:i,model_id:i,model_group_id:i,model_name:o,model_group_name:o,model_type:s(o),data_id:i},ma_target_entity:{entity_id:o,data_id:i,origin:s(o)},ma_target_entity_instance:{asym_id:o,entity_id:o,details:o},ma_target_ref_db_details:{target_entity_id:o,db_name:s(o),db_code:o,db_accession:o,seq_db_isoform:o,seq_db_align_begin:o,seq_db_align_end:o,ncbi_taxonomy_id:o,organism_scientific:o},ma_data:{id:i,content_type:s(o),content_type_other_details:o,name:o},ma_software_group:{ordinal_id:i,group_id:i,software_id:i},ma_qa_metric:{id:i,name:o,type:s(o),mode:s(o),software_group_id:i},ma_qa_metric_global:{ordinal_id:i,model_id:i,metric_id:i,metric_value:a},ma_qa_metric_local:{ordinal_id:i,model_id:i,label_asym_id:o,label_seq_id:i,label_comp_id:o,metric_id:i,metric_value:a},ma_qa_metric_local_pairwise:{ordinal_id:i,model_id:i,label_asym_id_1:o,label_seq_id_1:i,label_comp_id_1:o,label_asym_id_2:o,label_seq_id_2:i,label_comp_id_2:o,metric_id:i,metric_value:a}}},894:(e,t,n)=>{"use strict";var r=t;r.base=n(36677),r.short=n(39188),r.mont=n(30370),r.edwards=n(31298)},1071:(e,t,n)=>{"use strict";n.d(t,{OT:()=>A,mQ:()=>s});var r=n(77936),o=n(65533),i=n(62769),a=n(27125);function A(e){const t=function(e){const t=new Set,n=[];for(const i of e.structures){const e=r.StructureElement.Location.create(i);for(const a of i.units){const i=a.conformation.operator;if(!i.suffix||0!==a.kind)continue;e.unit=a;const{elements:A}=a,s=o.Segmentation.transientSegments(a.model.atomicHierarchy.chainAtomSegments,A);for(;s.hasNext;){const o=s.move();e.element=A[o.start];const a=r.StructureProperties.chain.label_asym_id(e),c=`${a}${i.suffix}`;if(t.has(c))continue;t.add(c);const l=r.StructureProperties.chain.label_asym_id(e);n.push({label_asym_id:a,auth_asym_id:l,operator:i})}}}return n}(e);if(0!==t.length)return[d,t,{ignoreFilter:!0}]}const s={molstar_atom_site_operator_mapping:{label_asym_id:a.VP.Schema.Str(),auth_asym_id:a.VP.Schema.Str(),operator_name:a.VP.Schema.Str(),suffix:a.VP.Schema.Str(),assembly_id:a.VP.Schema.Str(),assembly_operator_id:a.VP.Schema.Int(),symmetry_operator_index:a.VP.Schema.Int(),symmetry_hkl:a.VP.Schema.Vector(3),ncs_id:a.VP.Schema.Int()}},c=(e,t)=>void 0===t[e].operator.assembly?1:0,l=(e,t)=>-1===t[e].operator.spgrOp?1:0,u=i.c.fields().str("label_asym_id",((e,t)=>t[e].label_asym_id)).str("auth_asym_id",((e,t)=>t[e].auth_asym_id)).str("operator_name",((e,t)=>t[e].operator.name)).str("suffix",((e,t)=>t[e].operator.suffix)).str("assembly_id",((e,t)=>{var n;return(null===(n=t[e].operator.assembly)||void 0===n?void 0:n.id)||""}),{valueKind:c}).int("assembly_operator_id",((e,t)=>{var n;return(null===(n=t[e].operator.assembly)||void 0===n?void 0:n.operId)||0}),{valueKind:c}).int("symmetry_operator_index",((e,t)=>t[e].operator.spgrOp),{valueKind:l}).vec("symmetry_hkl",[(e,t)=>t[e].operator.hkl[0],(e,t)=>t[e].operator.hkl[1],(e,t)=>t[e].operator.hkl[2]],{valueKind:l}).int("ncs_id",((e,t)=>t[e].operator.ncsId),{valueKind:l}).getFields(),d={name:"molstar_atom_site_operator_mapping",instance:e=>({fields:u,source:[{data:e,rowCount:e.length}]})}},1103:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IsNativeEndianLittle=void 0,t.flipByteOrder=function(e,t){const n=new ArrayBuffer(e.length),r=new Uint8Array(n);for(let n=0,o=e.length;n<o;n+=t)for(let o=0;o<t;o++)r[n+t-o-1]=e[n+o];return n},t.uint8ToString=function(e){if(e.length>n){const t=[];for(let r=0;r<e.length;r+=n)t.push(String.fromCharCode.apply(null,e.subarray(r,r+n)));return t.join("")}return String.fromCharCode.apply(null,e)},t.IsNativeEndianLittle=13330===new Uint16Array(new Uint8Array([18,52]).buffer)[0];const n=28672},1241:(e,t,n)=>{var r=n(25799),o=n(36171),i=n(3219);t.createCipher=t.Cipher=r.createCipher,t.createCipheriv=t.Cipheriv=r.createCipheriv,t.createDecipher=t.Decipher=o.createDecipher,t.createDecipheriv=t.Decipheriv=o.createDecipheriv,t.listCiphers=t.getCiphers=function(){return Object.keys(i)}},1342:(e,t,n)=>{"use strict";n.d(t,{Q:()=>h});var r=n(54135),o=n(65533),i=n(73868),a=n(13636),A=n(31960),s=n(69926),c=n(38530),l=n(78012),u=n(75847),d=n(64059),g=n(51195);const p=n(4543).U.diff;function h(e,t){return{kind:"element-loci",structure:e,elements:t}}!function(e){function t(e){for(const t of e.elements)if(o.OrderedSet.size(t.indices)>0)return!1;return!0}function n(e){let t=0;for(const{indices:n}of e.elements)t+="number"==typeof n?p(n):n.length;return t}function h(n){return t(n)?n:e(n.structure,[{unit:n.elements[0].unit,indices:o.OrderedSet.ofSingleton(o.OrderedSet.start(n.elements[0].indices))}])}function m(e){return e.length>3&&o.SortedArray.isRange(e)?o.Interval.ofRange(e[0],e[e.length-1]):o.SortedArray.ofSortedArray(e)}function f(t,n){const r=[],i=new Set;for(const e of t.elements)if(C(e))r[r.length]=e;else if(0===e.unit.kind){const t=e.unit.elements,a=e.unit.model.atomicHierarchy,{label_alt_id:A}=e.unit.model.atomicHierarchy.atoms,{index:s,offsets:c}=a.residueAtomSegments,l=[],u=e.indices,d=o.OrderedSet.size(u);let g=0;for(;g<d;){i.clear();const e=t[o.OrderedSet.getAt(u,g)],r=s[e];for(i.add(A.value(e)),g++;g<d;){const e=t[o.OrderedSet.getAt(u,g)];if(s[e]!==r)break;i.add(A.value(e)),g++}const a=i.has("");for(let e=c[r],s=c[r+1];e<s;e++){const r=o.OrderedSet.indexOf(t,e);if(r>=0){const t=A.value(e);n&&!a&&t&&!i.has(t)||(l[l.length]=r)}}}r[r.length]={unit:e.unit,indices:m(l)}}else r[r.length]=e;return e(t.structure,r)}function B(e){switch(e.kind){case 0:return e.model.atomicHierarchy.chainAtomSegments;case 1:return e.model.coarseHierarchy.spheres.chainElementSegments;case 2:return e.model.coarseHierarchy.gaussians.chainElementSegments}}function C(e){return e.unit.elements.length===o.OrderedSet.size(e.indices)}function I(e,t,n){const{index:r}=B(e),i=e.elements;let a=0;for(let e=0,n=i.length;e<n;e++){const n=r[i[e]];t.has(n)&&a++}if(a===e.elements.length)return void(n[n.length]={unit:e,indices:o.Interval.ofBounds(0,a)});const A=new Int32Array(a);a=0;for(let e=0,n=i.length;e<n;e++){const n=r[i[e]];t.has(n)&&(A[a++]=e)}A.length>0&&(n[n.length]={unit:e,indices:m(A)})}function y(e,t,n,r,i){const{index:a}=B(e.elements[0].unit),A=new Set;for(let r=t;r<n;r++){const t=e.elements[r],n=t.indices,i=t.unit.elements;for(let e=0,t=o.OrderedSet.size(n);e<t;e++)A.add(a[i[o.OrderedSet.getAt(n,e)]])}if(r){const t=e.elements[0].unit;for(const n of e.structure.units)s.Unit.areSameChainOperatorGroup(n,t)&&I(n,A,i)}else for(let r=t;r<n;r++)I(e.elements[r].unit,A,i)}function E(t){const n=[];for(let e=0,r=t.elements.length;e<r;e++){const o=t.elements[e];if(s.Unit.Traits.is(o.unit.traits,s.Unit.Trait.Partitioned)){const i=e;for(;e<r&&s.Unit.areSameChainOperatorGroup(t.elements[e].unit,o.unit);)e++;const a=e;e--,y(t,i,a,!0,n)}else C(o)?n[n.length]=o:y(t,e,e+1,!1,n)}return e(t.structure,n)}function b(e){return`${e.unit.model.id}|${d.Z.entity.id(e)}`}function Q(e,t){const n=[];for(let r=0,i=o.OrderedSet.size(t);r<i;++r)n.push(e[o.OrderedSet.getAt(t,r)]);return o.SortedArray.ofSortedArray(n)}function v(e,t){return o.SortedArray.isRange(e)&&o.SortedArray.areEqual(e,t)?o.Interval.ofLength(e.length):m(o.SortedArray.indicesOf(e,t))}e.is=function(e){return!!e&&"element-loci"===e.kind},e.areEqual=function(e,t){if(e.structure!==t.structure)return!1;if(e.elements.length!==t.elements.length)return!1;for(let n=0,r=e.elements.length;n<r;++n){const r=e.elements[n],i=t.elements[n];if(r.unit.id!==i.unit.id)return!1;if(!o.OrderedSet.areEqual(r.indices,i.indices))return!1}return!0},e.isEmpty=t,e.isWholeStructure=function(e){return n(e)===e.structure.elementCount},e.size=n,e.all=function(t){return e(t,t.units.map((e=>({unit:e,indices:o.OrderedSet.ofBounds(0,e.elements.length)}))))},e.none=function(t){return e(t,[])},e.getFirstLocation=function(e,n){if(t(e))return;const r=e.elements[0].unit,i=r.elements[o.OrderedSet.getAt(e.elements[0].indices,0)];return n?(n.structure=e.structure,n.unit=e.elements[0].unit,n.element=i,n):l.a.create(e.structure,r,i)},e.firstElement=h,e.firstResidue=function(e){return t(e)?e:f(h(e))},e.firstChain=function(e){return t(e)?e:E(h(e))},e.toStructure=function(e){const t=[];for(const n of e.elements){const{unit:e,indices:r}=n,i=new Int32Array(o.OrderedSet.size(r));o.OrderedSet.forEach(r,((t,n)=>i[n]=e.elements[t])),t.push(e.getChild(o.SortedArray.ofSortedArray(i)))}return A.o.create(t,{parent:e.structure.parent})},e.forEachLocation=function(t,n){if(e.isEmpty(t))return;const r=l.a.create(t.structure);for(const e of t.elements){const{unit:t,indices:i}=e;r.unit=t;const{elements:a}=e.unit;for(let e=0,t=o.OrderedSet.size(i);e<t;e++)r.element=a[o.OrderedSet.getAt(i,e)],n(r)}},e.remap=function(t,n){if(n===t.structure)return t;const r=[];return t.elements.forEach((e=>{if(!n.unitMap.has(e.unit.id))return;const t=n.unitMap.get(e.unit.id),i=o.OrderedSet.indexedIntersect(e.indices,e.unit.elements,t.elements);o.OrderedSet.size(i)>0&&r.push({unit:t,indices:i})})),e(n,r)},e.union=function t(n,r){if(n.elements.length>r.elements.length)return t(r,n);if(e.isEmpty(n))return r;const i=new Map;for(const e of n.elements)i.set(e.unit.id,e.indices);const a=[];for(const e of r.elements)i.has(e.unit.id)?(a[a.length]={unit:e.unit,indices:o.OrderedSet.union(i.get(e.unit.id),e.indices)},i.delete(e.unit.id)):a[a.length]=e;return i.forEach(((e,t)=>{a[a.length]={unit:n.structure.unitMap.get(t),indices:e}})),e(n.structure,a)},e.subtract=function(t,n){const r=new Map;for(const e of n.elements)r.set(e.unit.id,e.indices);const i=[];for(const e of t.elements)if(r.has(e.unit.id)){const t=o.OrderedSet.subtract(e.indices,r.get(e.unit.id));if(0===o.OrderedSet.size(t))continue;i[i.length]={unit:e.unit,indices:t}}else i[i.length]=e;return e(t.structure,i)},e.intersect=function(t,n){const r=new Map;for(const e of t.elements)r.set(e.unit.id,e.indices);const i=[];for(const e of n.elements){if(!r.has(e.unit.id))continue;const t=o.OrderedSet.intersect(r.get(e.unit.id),e.indices);0!==o.OrderedSet.size(t)&&(i[i.length]={unit:e.unit,indices:t})}return e(t.structure,i)},e.areIntersecting=function t(n,r){if(n.elements.length>r.elements.length)return t(r,n);if(e.isEmpty(n))return e.isEmpty(r);const i=new Map;for(const e of n.elements)i.set(e.unit.id,e.indices);for(const e of r.elements)if(i.has(e.unit.id)&&o.OrderedSet.areIntersecting(i.get(e.unit.id),e.indices))return!0;return!1},e.isSubset=function(t,n){if(e.isEmpty(t))return e.isEmpty(n);const r=new Map;for(const e of t.elements)r.set(e.unit.id,e.indices);let i=!1;for(const e of n.elements){if(!r.has(e.unit.id))return!1;if(!o.OrderedSet.isSubset(r.get(e.unit.id),e.indices))return!1;i=!0}return i},e.extendToWholeResidues=f,e.extendToWholeChains=E,e.extendToWholeEntities=function(t){const n=[],r=l.a.create(t.structure),i=new Set,{units:a}=t.structure;for(let e=0,n=t.elements.length;e<n;e++){const n=t.elements[e];r.unit=n.unit,r.element=n.unit.elements[0],i.add(b(r))}for(let e=0,t=a.length;e<t;++e){const t=a[e];if(r.unit=t,r.element=t.elements[0],i.has(b(r))){const e=o.OrderedSet.ofBounds(0,t.elements.length);n[n.length]={unit:t,indices:e}}}return e(t.structure,n)},e.extendToWholeModels=function(t){const n=[],r=new Set,{units:i}=t.structure;for(let e=0,n=t.elements.length;e<n;e++){const n=t.elements[e];r.add(n.unit.model.id)}for(let e=0,t=i.length;e<t;++e){const t=i[e];if(r.has(t.model.id)){const e=o.OrderedSet.ofBounds(0,t.elements.length);n[n.length]={unit:t,indices:e}}}return e(t.structure,n)},e.extendToAllInstances=function(t){const n=[],r=new Map;for(let e=0,n=t.elements.length;e<n;e++){const n=t.elements[e],{model:i}=n.unit,a=Q(n.unit.elements,n.indices);r.has(i)?r.set(i,o.SortedArray.union(a,r.get(i))):r.set(i,a)}for(let e=0,i=t.structure.units.length;e<i;++e){const i=t.structure.units[e],a=r.get(i.model);if(!a)continue;const A=v(i.elements,a);o.OrderedSet.size(A)&&(n[n.length]={unit:i,indices:A})}return e(t.structure,n)},e.extendToWholeOperators=function(t){const n=[],r=new Set,{units:i}=t.structure;for(let e=0,n=t.elements.length;e<n;e++){const n=t.elements[e];r.add(n.unit.conformation.operator.name)}for(let e=0,t=i.length;e<t;++e){const t=i[e];if(r.has(t.conformation.operator.name)){const e=o.OrderedSet.ofBounds(0,t.elements.length);n[n.length]={unit:t,indices:e}}}return e(t.structure,n)};const w=new g.Z("98"),S=(0,i.Vec3)();e.getBoundary=function(e,t){w.reset();for(const n of e.elements){const{indices:e}=n,{elements:r,conformation:a}=n.unit;for(let n=0,A=o.OrderedSet.size(e);n<A;n++){const A=r[o.OrderedSet.getAt(e,n)];a.position(A,S),t&&i.Vec3.transformMat4(S,S,t),w.includePositionRadius(S,a.r(A))}}w.finishedIncludeStep();for(const n of e.elements){const{indices:e}=n,{elements:r,conformation:a}=n.unit;for(let n=0,A=o.OrderedSet.size(e);n<A;n++){const A=r[o.OrderedSet.getAt(e,n)];a.position(A,S),t&&i.Vec3.transformMat4(S,S,t),w.radiusPositionRadius(S,a.r(A))}}return{box:w.getBox(),sphere:w.getSphere()}};const x=(0,i.Vec3)();function D(e,t,n=0){let r=n;for(const n of e.elements){const{indices:e}=n,{elements:a,conformation:A}=n.unit,s=o.OrderedSet.size(e);for(let n=0;n<s;n++){const s=a[o.OrderedSet.getAt(e,n)];A.position(s,x),i.Vec3.toArray(x,t,r+3*n)}r+=3*s}return t}function F(e,t,n,r,o){(0,c.eh)(t);const i=[],a=[];let A=0;const s=t.length;for(;A<s;){const e=A;for(A++;A<s&&t[A-1]+1===t[A];)A++;const n=A;if(n-e>12)i[i.length]=t[e],i[i.length]=t[n-1];else for(let r=e;r<n;r++)a[a.length]=t[r]}return n?{atom:{set:a,ranges:i},chain:{opName:[e]},entity:{modelLabel:r,modelIndex:o}}:{atom:{set:a,ranges:i},chain:{opName:[e]}}}e.toPositionsArray=D,e.getPrincipalAxes=function(e){const t=n(e),r=D(e,new Float32Array(3*t));return u.c.ofPositions(r)},e.getPrincipalAxesMany=function(e){let t=0;e.forEach((e=>{t+=n(e)}));const r=new Float32Array(3*t);let o=0;return e.forEach((e=>{D(e,r,o),o+=3*n(e)})),u.c.ofPositions(r)},e.toExpression=function(t){if(e.isEmpty(t))return a.MolScriptBuilder.struct.generator.empty();const n=t.structure.models,i=new Map;for(const e of t.elements){const{indices:t}=e,{elements:n}=e.unit,a=e.unit.conformation.operator.name;let c;i.has(a)?c=i.get(a).xs:(c=r.th.create(),i.set(a,{modelLabel:e.unit.model.label,modelIndex:e.unit.model.modelNum,xs:c}));for(let i=0,a=o.OrderedSet.size(t);i<a;i++){const a=(A=e.unit,l=n[o.OrderedSet.getAt(t,i)],s.Unit.isAtomic(A)?A.model.atomicHierarchy.atomSourceIndex.value(l):l);r.th.add(c,a,a)}}var A,l;const u=[],d=i.keys();for(;;){const e=d.next();if(e.done)break;const t=i.get(e.value);u.push(F(e.value,t.xs.array,n.length>1,t.modelLabel,t.modelIndex))}const g=new Map;for(let e=0,t=u.length;e<t;++e){const t=u[e],n=`${(0,c.vb)((0,c.TI)(t.atom.ranges),(0,c.TI)(t.atom.set))}|${t.entity?t.entity.modelLabel+t.entity.modelIndex:""}`;g.has(n)?g.get(n).chain.opName.push(...t.chain.opName):g.set(n,t)}const p=[];return g.forEach((e=>{const{ranges:t,set:n}=e.atom,{opName:r}=e.chain,o=a.MolScriptBuilder.struct.atomProperty.core.operatorName(),i=a.MolScriptBuilder.struct.atomProperty.core.sourceIndex(),A=[];n.length>0&&(A[A.length]=a.MolScriptBuilder.core.set.has([a.MolScriptBuilder.core.type.set(n),i]));for(let e=0,n=t.length/2;e<n;e++)A[A.length]=a.MolScriptBuilder.core.rel.inRange([i,t[2*e],t[2*e+1]]);if(e.entity){const{modelLabel:t,modelIndex:n}=e.entity;p.push(a.MolScriptBuilder.struct.generator.atomGroups({"atom-test":A.length>1?a.MolScriptBuilder.core.logic.or(A):A[0],"chain-test":r.length>1?a.MolScriptBuilder.core.set.has([a.MolScriptBuilder.core.type.set(r),o]):a.MolScriptBuilder.core.rel.eq([o,r[0]]),"entity-test":a.MolScriptBuilder.core.logic.and([a.MolScriptBuilder.core.rel.eq([a.MolScriptBuilder.struct.atomProperty.core.modelLabel(),t]),a.MolScriptBuilder.core.rel.eq([a.MolScriptBuilder.struct.atomProperty.core.modelIndex(),n])])}))}else p.push(a.MolScriptBuilder.struct.generator.atomGroups({"atom-test":A.length>1?a.MolScriptBuilder.core.logic.or(A):A[0],"chain-test":r.length>1?a.MolScriptBuilder.core.set.has([a.MolScriptBuilder.co