-
Notifications
You must be signed in to change notification settings - Fork 191
/
3Dmol-nojquery-min.js
520 lines (520 loc) · 253 KB
/
3Dmol-nojquery-min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
!function(y,v){"object"==typeof exports&&"undefined"!=typeof module?v(exports):"function"==typeof define&&define.amd?define(["exports"],v):v(y.MMTF=y.MMTF||{})}(this,function(y){function v(b){function g(a){for(var b={},c=0;a>c;c++){var d=f();b[d]=f()}return b}function c(c){var d=b.subarray(a,a+c);return a+=c,d}function k(c){var d=b.subarray(a,a+c);a+=c;if(65535<c){c=[];for(var e=0;e<d.length;e+=65535)c.push(String.fromCharCode.apply(null,d.subarray(e,e+65535)));return c.join("")}return String.fromCharCode.apply(null,
d)}function d(a){for(var b=Array(a),c=0;a>c;c++)b[c]=f();return b}function f(){var f,h,l,m=b[a];if(0===(128&m))return a++,m;if(128===(240&m))return h=15&m,a++,g(h);if(144===(240&m))return h=15&m,a++,d(h);if(160===(224&m))return h=31&m,a++,k(h);if(224===(224&m))return f=e.getInt8(a),a++,f;switch(m){case 192:return a++,null;case 194:return a++,!1;case 195:return a++,!0;case 196:return h=e.getUint8(a+1),a+=2,c(h);case 197:return h=e.getUint16(a+1),a+=3,c(h);case 198:return h=e.getUint32(a+1),a+=5,c(h);
case 199:return h=e.getUint8(a+1),l=e.getUint8(a+2),a+=3,[l,c(h)];case 200:return h=e.getUint16(a+1),l=e.getUint8(a+3),a+=4,[l,c(h)];case 201:return h=e.getUint32(a+1),l=e.getUint8(a+5),a+=6,[l,c(h)];case 202:return f=e.getFloat32(a+1),a+=5,f;case 203:return f=e.getFloat64(a+1),a+=9,f;case 204:return f=b[a+1],a+=2,f;case 205:return f=e.getUint16(a+1),a+=3,f;case 206:return f=e.getUint32(a+1),a+=5,f;case 207:return a+=9,0;case 208:return f=e.getInt8(a+1),a+=2,f;case 209:return f=e.getInt16(a+1),a+=
3,f;case 210:return f=e.getInt32(a+1),a+=5,f;case 211:return a+=9,0;case 212:return l=e.getUint8(a+1),a+=2,[l,c(1)];case 213:return l=e.getUint8(a+1),a+=2,[l,c(2)];case 214:return l=e.getUint8(a+1),a+=2,[l,c(4)];case 215:return l=e.getUint8(a+1),a+=2,[l,c(8)];case 216:return l=e.getUint8(a+1),a+=2,[l,c(16)];case 217:return h=e.getUint8(a+1),a+=2,k(h);case 218:return h=e.getUint16(a+1),a+=3,k(h);case 219:return h=e.getUint32(a+1),a+=5,k(h);case 220:return h=e.getUint16(a+1),a+=3,d(h);case 221:return h=
e.getUint32(a+1),a+=5,d(h);case 222:return h=e.getUint16(a+1),a+=3,g(h);case 223:return h=e.getUint32(a+1),a+=5,g(h)}throw Error("Unknown type 0x"+m.toString(16));}var a=0,e=new DataView(b.buffer);return f()}function A(b){return new Uint8Array(b.buffer,b.byteOffset,b.byteLength)}function H(b){return new Int8Array(b.buffer,b.byteOffset,b.byteLength)}function n(b,g){var c,k,d;d=(b.byteOffset,b.byteLength);g||(g=new Int32Array(d/4));k=c=0;for(d/=4;d>c;++c,k+=4)g[c]=b[k]<<24^b[k+1]<<16^b[k+2]<<8^b[k+
3]<<0;return g}function w(b,g,c){var k=b.length;g=1/g;c||(c=new Float32Array(k));for(var d=0;k>d;++d)c[d]=b[d]*g;return c}function u(b,g){var c,k;if(!g){var d=0;c=0;for(k=b.length;k>c;c+=2)d+=b[c+1];g=new b.constructor(d)}c=d=0;for(k=b.length;k>c;c+=2)for(var f=b[c],a=b[c+1],e=0;a>e;++e)g[d]=f,d+=1;return g}function B(b){for(var g=1,c=b.length;c>g;++g)b[g]+=b[g-1];return b}function z(b,g,c,k){var d=b.length/4/2+g.length/2;k||(k=new Float32Array(d));d=new Int32Array(k.buffer,k.byteOffset,k.byteLength/
4);b=n(b);var f=void 0,a,e,r;r=(g.byteOffset,g.byteLength);f||(f=new Int16Array(r/2));e=a=0;for(r/=2;r>a;++a,e+=2)f[a]=g[e]<<8^g[e+1]<<0;g=f;f=b.length/2+g.length;d||(d=new Int32Array(f));e=a=f=0;for(r=b.length;r>e;e+=2){var h=b[e+1];d[f]=b[e];0!==e&&(d[f]+=d[f-1]);for(var f=f+1,l=0;h>l;++l)d[f]=d[f-1]+g[a],f+=1,a+=1}return w(d,c,k)}function I(b,g,c){var k=c?new Int32Array(c.buffer,c.byteOffset,c.byteLength/4):void 0;b=u(n(b),k);return w(b,g,c)}function J(b,g){function c(a){return k?-1===k.indexOf(a):
!0}g=g||{};var k=g.ignoreFields,d=(b.numBonds||0,b.numAtoms||0),f=b.groupTypeList.length/4,a={numGroups:f,numChains:b.chainIdList.length/4,numModels:b.chainsPerModel.length};"mmtfVersion mmtfProducer unitCell spaceGroup structureId title depositionDate releaseDate experimentalMethods resolution rFree rWork bioAssemblyList entityList groupList numBonds numAtoms groupsPerChain chainsPerModel".split(" ").forEach(function(c){void 0!==b[c]&&(a[c]=b[c])});b.bondAtomList&&c("bondAtomList")&&(a.bondAtomList=
n(b.bondAtomList));b.bondOrderList&&c("bondOrderList")&&(a.bondOrderList=A(b.bondOrderList));a.xCoordList=z(b.xCoordBig,b.xCoordSmall,1E3);a.yCoordList=z(b.yCoordBig,b.yCoordSmall,1E3);a.zCoordList=z(b.zCoordBig,b.zCoordSmall,1E3);b.bFactorBig&&b.bFactorSmall&&c("bFactorList")&&(a.bFactorList=z(b.bFactorBig,b.bFactorSmall,100));b.atomIdList&&c("atomIdList")&&(a.atomIdList=B(u(n(b.atomIdList))));b.altLocList&&c("altLocList")&&(a.altLocList=u(n(b.altLocList),new Uint8Array(d)));b.occupancyList&&c("occupancyList")&&
(a.occupancyList=I(b.occupancyList,100));a.groupIdList=B(u(n(b.groupIdList)));a.groupTypeList=n(b.groupTypeList);b.secStructList&&c("secStructList")&&(a.secStructList=H(b.secStructList));b.insCodeList&&c("insCodeList")&&(a.insCodeList=u(n(b.insCodeList),new Uint8Array(f)));b.sequenceIndexList&&c("sequenceIndexList")&&(a.sequenceIndexList=B(u(n(b.sequenceIndexList))));a.chainIdList=A(b.chainIdList);return b.chainNameList&&c("chainNameList")&&(a.chainNameList=A(b.chainNameList)),a}function G(b){return String.fromCharCode.apply(null,
b).replace(/\0/g,"")}y.decode=function(b,g){b instanceof ArrayBuffer&&(b=new Uint8Array(b));var c;return c=b instanceof Uint8Array?v(b):b,J(c,g)};y.traverse=function(b,g){var c,k,d,f,a=g.onModel,e=g.onChain,r=g.onGroup,h=g.onAtom,l=g.onBond,m=0,s=0,t=0,p=0,n=b.chainNameList,u=b.secStructList,y=b.insCodeList,v=b.sequenceIndexList,z=b.bFactorList,A=b.altLocList,B=b.occupancyList,F=b.bondAtomList,w=b.bondOrderList;if(b.chainsPerModel.forEach(function(g){a&&a({chainCount:g,modelIndex:m});for(c=0;g>c;++c){var w=
b.groupsPerChain[s];if(e){var q=G(b.chainIdList.subarray(4*s,4*s+4)),C=null;n&&(C=G(n.subarray(4*s,4*s+4)));e({groupCount:w,chainIndex:s,modelIndex:m,chainId:q,chainName:C})}for(k=0;w>k;++k){q=b.groupList[b.groupTypeList[t]];C=q.atomNameList.length;if(r){var x=null;u&&(x=u[t]);var D=null;b.insCodeList&&(D=String.fromCharCode(y[t]));var E=null;v&&(E=v[t]);r({atomCount:C,groupIndex:t,chainIndex:s,modelIndex:m,groupId:b.groupIdList[t],groupType:b.groupTypeList[t],groupName:q.groupName,singleLetterCode:q.singleLetterCode,
chemCompType:q.chemCompType,secStruct:x,insCode:D,sequenceIndex:E})}if(l)for(x=q.bondAtomList,d=0,f=q.bondOrderList.length;f>d;++d)l({atomIndex1:p+x[2*d],atomIndex2:p+x[2*d+1],bondOrder:q.bondOrderList[d]});for(d=0;C>d;++d)h&&(x=null,z&&(x=z[p]),D=null,A&&(D=String.fromCharCode(A[p])),E=null,B&&(E=B[p]),h({atomIndex:p,groupIndex:t,chainIndex:s,modelIndex:m,atomId:b.atomIdList[p],element:q.elementList[d],atomName:q.atomNameList[d],atomCharge:q.atomChargeList[d],xCoord:b.xCoordList[p],yCoord:b.yCoordList[p],
zCoord:b.zCoordList[p],bFactor:x,altLoc:D,occupancy:E})),p+=1;t+=1}s+=1}m+=1}),l&&F)for(d=0,f=F.length;f>d;d+=2)l({atomIndex1:F[d],atomIndex2:F[d+1],bondOrder:w?w[d/2]:null})}});
(function(P){"object"===typeof exports&&"undefined"!==typeof module?module.exports=P():"function"===typeof define&&define.amd?define([],P):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).pako=P()})(function(){return function p(u,c,F){function x(g,m){if(!c[g]){if(!u[g]){var h="function"==typeof require&&require;if(!m&&h)return h(g,!0);if(f)return f(g,!0);h=Error("Cannot find module '"+g+"'");throw h.code="MODULE_NOT_FOUND",h;}h=c[g]={exports:{}};
u[g][0].call(h.exports,function(h){var f=u[g][1][h];return x(f?f:h)},h,h.exports,p,u,c,F)}return c[g].exports}for(var f="function"==typeof require&&require,h=0;h<F.length;h++)x(F[h]);return x}({1:[function(p,u,c){p="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;c.assign=function(f){for(var h=Array.prototype.slice.call(arguments,1);h.length;){var g=h.shift();if(g){if("object"!==typeof g)throw new TypeError(g+"must be non-object");for(var m in g)g.hasOwnProperty(m)&&
(f[m]=g[m])}}return f};c.shrinkBuf=function(f,h){if(f.length===h)return f;if(f.subarray)return f.subarray(0,h);f.length=h;return f};var F={arraySet:function(f,h,g,m,c){if(h.subarray&&f.subarray)f.set(h.subarray(g,g+m),c);else for(var B=0;B<m;B++)f[c+B]=h[g+B]},flattenChunks:function(f){var h,g,m,c,B;h=m=0;for(g=f.length;h<g;h++)m+=f[h].length;B=new Uint8Array(m);h=m=0;for(g=f.length;h<g;h++)c=f[h],B.set(c,m),m+=c.length;return B}},x={arraySet:function(f,h,g,m,c){for(var B=0;B<m;B++)f[c+B]=h[g+B]},
flattenChunks:function(f){return[].concat.apply([],f)}};c.setTyped=function(f){f?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,F)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,x))};c.setTyped(p)},{}],2:[function(p,u,c){function F(g,m){if(65537>m&&(g.subarray&&h||!g.subarray&&f))return String.fromCharCode.apply(null,x.shrinkBuf(g,m));for(var E="",c=0;c<m;c++)E+=String.fromCharCode(g[c]);return E}var x=p("./common"),f=!0,h=!0;try{String.fromCharCode.apply(null,[0])}catch(g){f=
!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(m){h=!1}var y=new x.Buf8(256);for(p=0;256>p;p++)y[p]=252<=p?6:248<=p?5:240<=p?4:224<=p?3:192<=p?2:1;y[254]=y[254]=1;c.string2buf=function(h){var g,f,m,t,C,c=h.length,b=0;for(t=0;t<c;t++)f=h.charCodeAt(t),55296===(f&64512)&&t+1<c&&(m=h.charCodeAt(t+1),56320===(m&64512)&&(f=65536+(f-55296<<10)+(m-56320),t++)),b+=128>f?1:2048>f?2:65536>f?3:4;g=new x.Buf8(b);for(t=C=0;C<b;t++)f=h.charCodeAt(t),55296===(f&64512)&&t+1<c&&(m=h.charCodeAt(t+1),
56320===(m&64512)&&(f=65536+(f-55296<<10)+(m-56320),t++)),128>f?g[C++]=f:(2048>f?g[C++]=192|f>>>6:(65536>f?g[C++]=224|f>>>12:(g[C++]=240|f>>>18,g[C++]=128|f>>>12&63),g[C++]=128|f>>>6&63),g[C++]=128|f&63);return g};c.buf2binstring=function(f){return F(f,f.length)};c.binstring2buf=function(f){for(var g=new x.Buf8(f.length),h=0,m=g.length;h<m;h++)g[h]=f.charCodeAt(h);return g};c.buf2string=function(f,g){var h,m,t,c,s=g||f.length,b=Array(2*s);for(h=m=0;h<s;)if(t=f[h++],128>t)b[m++]=t;else if(c=y[t],4<
c)b[m++]=65533,h+=c-1;else{for(t&=2===c?31:3===c?15:7;1<c&&h<s;)t=t<<6|f[h++]&63,c--;1<c?b[m++]=65533:65536>t?b[m++]=t:(t-=65536,b[m++]=55296|t>>10&1023,b[m++]=56320|t&1023)}return F(b,m)};c.utf8border=function(f,h){var g;h=h||f.length;h>f.length&&(h=f.length);for(g=h-1;0<=g&&128===(f[g]&192);)g--;return 0>g||0===g?h:g+y[f[g]]>h?g:h}},{"./common":1}],3:[function(p,u,c){u.exports=function(c,p,f,h){var g=c&65535|0;c=c>>>16&65535|0;for(var m=0;0!==f;){m=2E3<f?2E3:f;f-=m;do g=g+p[h++]|0,c=c+g|0;while(--m);
g%=65521;c%=65521}return g|c<<16|0}},{}],4:[function(p,u,c){u.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(p,u,c){var F=function(){for(var c,
f=[],h=0;256>h;h++){c=h;for(var g=0;8>g;g++)c=c&1?3988292384^c>>>1:c>>>1;f[h]=c}return f}();u.exports=function(c,f,h,g){h=g+h;for(c^=-1;g<h;g++)c=c>>>8^F[(c^f[g])&255];return c^-1}},{}],6:[function(p,u,c){u.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],7:[function(p,u,c){u.exports=function(c,p){var f,h,g,m,y,B,u,E,M,t,C,s,b,D,a,K,L,v,q,k,n,d,e,A;f=c.state;h=c.next_in;e=c.input;g=h+(c.avail_in-
5);m=c.next_out;A=c.output;y=m-(p-c.avail_out);B=m+(c.avail_out-257);u=f.dmax;E=f.wsize;M=f.whave;t=f.wnext;C=f.window;s=f.hold;b=f.bits;D=f.lencode;a=f.distcode;K=(1<<f.lenbits)-1;L=(1<<f.distbits)-1;a:do b:for(15>b&&(s+=e[h++]<<b,b+=8,s+=e[h++]<<b,b+=8),v=D[s&K];;){q=v>>>24;s>>>=q;b-=q;q=v>>>16&255;if(0===q)A[m++]=v&65535;else if(q&16){k=v&65535;if(q&=15)b<q&&(s+=e[h++]<<b,b+=8),k+=s&(1<<q)-1,s>>>=q,b-=q;15>b&&(s+=e[h++]<<b,b+=8,s+=e[h++]<<b,b+=8);v=a[s&L];c:for(;;){q=v>>>24;s>>>=q;b-=q;q=v>>>16&
255;if(q&16){v&=65535;q&=15;b<q&&(s+=e[h++]<<b,b+=8,b<q&&(s+=e[h++]<<b,b+=8));v+=s&(1<<q)-1;if(v>u){c.msg="invalid distance too far back";f.mode=30;break a}s>>>=q;b-=q;q=m-y;if(v>q){q=v-q;if(q>M&&f.sane){c.msg="invalid distance too far back";f.mode=30;break a}n=0;d=C;if(0===t){if(n+=E-q,q<k){k-=q;do A[m++]=C[n++];while(--q);n=m-v;d=A}}else if(t<q){if(n+=E+t-q,q-=t,q<k){k-=q;do A[m++]=C[n++];while(--q);n=0;if(t<k){q=t;k-=q;do A[m++]=C[n++];while(--q);n=m-v;d=A}}}else if(n+=t-q,q<k){k-=q;do A[m++]=
C[n++];while(--q);n=m-v;d=A}for(;2<k;)A[m++]=d[n++],A[m++]=d[n++],A[m++]=d[n++],k-=3;k&&(A[m++]=d[n++],1<k&&(A[m++]=d[n++]))}else{n=m-v;do A[m++]=A[n++],A[m++]=A[n++],A[m++]=A[n++],k-=3;while(2<k);k&&(A[m++]=A[n++],1<k&&(A[m++]=A[n++]))}}else if(0===(q&64)){v=a[(v&65535)+(s&(1<<q)-1)];continue c}else{c.msg="invalid distance code";f.mode=30;break a}break}}else if(0===(q&64)){v=D[(v&65535)+(s&(1<<q)-1)];continue b}else{q&32?f.mode=12:(c.msg="invalid literal/length code",f.mode=30);break a}break}while(h<
g&&m<B);k=b>>3;h-=k;b-=k<<3;c.next_in=h;c.next_out=m;c.avail_in=h<g?5+(g-h):5-(h-g);c.avail_out=m<B?257+(B-m):257-(m-B);f.hold=s&(1<<b)-1;f.bits=b}},{}],8:[function(p,u,c){function F(b){return(b>>>24&255)+(b>>>8&65280)+((b&65280)<<8)+((b&255)<<24)}function x(){this.mode=0;this.last=!1;this.wrap=0;this.havedict=!1;this.total=this.check=this.dmax=this.flags=0;this.head=null;this.wnext=this.whave=this.wsize=this.wbits=0;this.window=null;this.extra=this.offset=this.length=this.bits=this.hold=0;this.distcode=
this.lencode=null;this.have=this.ndist=this.nlen=this.ncode=this.distbits=this.lenbits=0;this.next=null;this.lens=new y.Buf16(320);this.work=new y.Buf16(288);this.distdyn=this.lendyn=null;this.was=this.back=this.sane=0}function f(b){var c;if(!b||!b.state)return-2;c=b.state;b.total_in=b.total_out=c.total=0;b.msg="";c.wrap&&(b.adler=c.wrap&1);c.mode=1;c.last=0;c.havedict=0;c.dmax=32768;c.head=null;c.hold=0;c.bits=0;c.lencode=c.lendyn=new y.Buf32(852);c.distcode=c.distdyn=new y.Buf32(592);c.sane=1;c.back=
-1;return 0}function h(b){var c;if(!b||!b.state)return-2;c=b.state;c.wsize=0;c.whave=0;c.wnext=0;return f(b)}function g(b,c){var a,f;if(!b||!b.state)return-2;f=b.state;0>c?(a=0,c=-c):(a=(c>>4)+1,48>c&&(c&=15));if(c&&(8>c||15<c))return-2;null!==f.window&&f.wbits!==c&&(f.window=null);f.wrap=a;f.wbits=c;return h(b)}function m(b,c){var a;if(!b)return-2;a=new x;b.state=a;a.window=null;a=g(b,c);0!==a&&(b.state=null);return a}var y=p("../utils/common"),B=p("./adler32"),I=p("./crc32"),E=p("./inffast"),M=
p("./inftrees"),t=!0,C,s;c.inflateReset=h;c.inflateReset2=g;c.inflateResetKeep=f;c.inflateInit=function(b){return m(b,15)};c.inflateInit2=m;c.inflate=function(b,c){var a,f,h,g,m,k,n,d,e,p,z,l,r,u;l=0;var w,G,x,N,J,H=new y.Buf8(4),R=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state||!b.output||!b.input&&0!==b.avail_in)return-2;a=b.state;12===a.mode&&(a.mode=13);m=b.next_out;h=b.output;n=b.avail_out;g=b.next_in;f=b.input;k=b.avail_in;d=a.hold;e=a.bits;p=k;z=n;J=0;a:for(;;)switch(a.mode){case 1:if(0===
a.wrap){a.mode=13;break}for(;16>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(a.wrap&2&&35615===d){a.check=0;H[0]=d&255;H[1]=d>>>8&255;a.check=I(a.check,H,2,0);e=d=0;a.mode=2;break}a.flags=0;a.head&&(a.head.done=!1);if(!(a.wrap&1)||(((d&255)<<8)+(d>>8))%31){b.msg="incorrect header check";a.mode=30;break}if(8!==(d&15)){b.msg="unknown compression method";a.mode=30;break}d>>>=4;e-=4;r=(d&15)+8;if(0===a.wbits)a.wbits=r;else if(r>a.wbits){b.msg="invalid window size";a.mode=30;break}a.dmax=1<<r;b.adler=
a.check=1;a.mode=d&512?10:12;e=d=0;break;case 2:for(;16>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.flags=d;if(8!==(a.flags&255)){b.msg="unknown compression method";a.mode=30;break}if(a.flags&57344){b.msg="unknown header flags set";a.mode=30;break}a.head&&(a.head.text=d>>8&1);a.flags&512&&(H[0]=d&255,H[1]=d>>>8&255,a.check=I(a.check,H,2,0));e=d=0;a.mode=3;case 3:for(;32>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.head&&(a.head.time=d);a.flags&512&&(H[0]=d&255,H[1]=d>>>8&255,H[2]=d>>>16&255,H[3]=
d>>>24&255,a.check=I(a.check,H,4,0));e=d=0;a.mode=4;case 4:for(;16>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.head&&(a.head.xflags=d&255,a.head.os=d>>8);a.flags&512&&(H[0]=d&255,H[1]=d>>>8&255,a.check=I(a.check,H,2,0));e=d=0;a.mode=5;case 5:if(a.flags&1024){for(;16>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.length=d;a.head&&(a.head.extra_len=d);a.flags&512&&(H[0]=d&255,H[1]=d>>>8&255,a.check=I(a.check,H,2,0));e=d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(a.flags&1024&&(l=a.length,
l>k&&(l=k),l&&(a.head&&(r=a.head.extra_len-a.length,a.head.extra||(a.head.extra=Array(a.head.extra_len)),y.arraySet(a.head.extra,f,g,l,r)),a.flags&512&&(a.check=I(a.check,f,l,g)),k-=l,g+=l,a.length-=l),a.length))break a;a.length=0;a.mode=7;case 7:if(a.flags&2048){if(0===k)break a;l=0;do r=f[g+l++],a.head&&r&&65536>a.length&&(a.head.name+=String.fromCharCode(r));while(r&&l<k);a.flags&512&&(a.check=I(a.check,f,l,g));k-=l;g+=l;if(r)break a}else a.head&&(a.head.name=null);a.length=0;a.mode=8;case 8:if(a.flags&
4096){if(0===k)break a;l=0;do r=f[g+l++],a.head&&r&&65536>a.length&&(a.head.comment+=String.fromCharCode(r));while(r&&l<k);a.flags&512&&(a.check=I(a.check,f,l,g));k-=l;g+=l;if(r)break a}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(a.flags&512){for(;16>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(d!==(a.check&65535)){b.msg="header crc mismatch";a.mode=30;break}e=d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0);b.adler=a.check=0;a.mode=12;break;case 10:for(;32>e;){if(0===k)break a;k--;
d+=f[g++]<<e;e+=8}b.adler=a.check=F(d);e=d=0;a.mode=11;case 11:if(0===a.havedict)return b.next_out=m,b.avail_out=n,b.next_in=g,b.avail_in=k,a.hold=d,a.bits=e,2;b.adler=a.check=1;a.mode=12;case 12:if(5===c||6===c)break a;case 13:if(a.last){d>>>=e&7;e-=e&7;a.mode=27;break}for(;3>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.last=d&1;d>>>=1;e-=1;switch(d&3){case 0:a.mode=14;break;case 1:l=a;if(t){r=void 0;C=new y.Buf32(512);s=new y.Buf32(32);for(r=0;144>r;)l.lens[r++]=8;for(;256>r;)l.lens[r++]=9;for(;280>
r;)l.lens[r++]=7;for(;288>r;)l.lens[r++]=8;M(1,l.lens,0,288,C,0,l.work,{bits:9});for(r=0;32>r;)l.lens[r++]=5;M(2,l.lens,0,32,s,0,l.work,{bits:5});t=!1}l.lencode=C;l.lenbits=9;l.distcode=s;l.distbits=5;a.mode=20;if(6===c){d>>>=2;e-=2;break a}break;case 2:a.mode=17;break;case 3:b.msg="invalid block type",a.mode=30}d>>>=2;e-=2;break;case 14:d>>>=e&7;for(e-=e&7;32>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if((d&65535)!==(d>>>16^65535)){b.msg="invalid stored block lengths";a.mode=30;break}a.length=d&
65535;e=d=0;a.mode=15;if(6===c)break a;case 15:a.mode=16;case 16:if(l=a.length){l>k&&(l=k);l>n&&(l=n);if(0===l)break a;y.arraySet(h,f,g,l,m);k-=l;g+=l;n-=l;m+=l;a.length-=l;break}a.mode=12;break;case 17:for(;14>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.nlen=(d&31)+257;d>>>=5;e-=5;a.ndist=(d&31)+1;d>>>=5;e-=5;a.ncode=(d&15)+4;d>>>=4;e-=4;if(286<a.nlen||30<a.ndist){b.msg="too many length or distance symbols";a.mode=30;break}a.have=0;a.mode=18;case 18:for(;a.have<a.ncode;){for(;3>e;){if(0===k)break a;
k--;d+=f[g++]<<e;e+=8}a.lens[R[a.have++]]=d&7;d>>>=3;e-=3}for(;19>a.have;)a.lens[R[a.have++]]=0;a.lencode=a.lendyn;a.lenbits=7;l={bits:a.lenbits};J=M(0,a.lens,0,19,a.lencode,0,a.work,l);a.lenbits=l.bits;if(J){b.msg="invalid code lengths set";a.mode=30;break}a.have=0;a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;;){l=a.lencode[d&(1<<a.lenbits)-1];w=l>>>24;G=l>>>16&255;x=l&65535;if(w<=e)break;if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(16>x)d>>>=w,e-=w,a.lens[a.have++]=x;else{if(16===x){for(l=w+
2;e<l;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}d>>>=w;e-=w;if(0===a.have){b.msg="invalid bit length repeat";a.mode=30;break}r=a.lens[a.have-1];l=3+(d&3);d>>>=2;e-=2}else if(17===x){for(l=w+3;e<l;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}d>>>=w;e-=w;r=0;l=3+(d&7);d>>>=3;e-=3}else{for(l=w+7;e<l;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}d>>>=w;e-=w;r=0;l=11+(d&127);d>>>=7;e-=7}if(a.have+l>a.nlen+a.ndist){b.msg="invalid bit length repeat";a.mode=30;break}for(;l--;)a.lens[a.have++]=r}}if(30===a.mode)break;
if(0===a.lens[256]){b.msg="invalid code -- missing end-of-block";a.mode=30;break}a.lenbits=9;l={bits:a.lenbits};J=M(1,a.lens,0,a.nlen,a.lencode,0,a.work,l);a.lenbits=l.bits;if(J){b.msg="invalid literal/lengths set";a.mode=30;break}a.distbits=6;a.distcode=a.distdyn;l={bits:a.distbits};J=M(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,l);a.distbits=l.bits;if(J){b.msg="invalid distances set";a.mode=30;break}a.mode=20;if(6===c)break a;case 20:a.mode=21;case 21:if(6<=k&&258<=n){b.next_out=m;b.avail_out=
n;b.next_in=g;b.avail_in=k;a.hold=d;a.bits=e;E(b,z);m=b.next_out;h=b.output;n=b.avail_out;g=b.next_in;f=b.input;k=b.avail_in;d=a.hold;e=a.bits;12===a.mode&&(a.back=-1);break}for(a.back=0;;){l=a.lencode[d&(1<<a.lenbits)-1];w=l>>>24;G=l>>>16&255;x=l&65535;if(w<=e)break;if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(G&&0===(G&240)){r=w;u=G;for(N=x;;){l=a.lencode[N+((d&(1<<r+u)-1)>>r)];w=l>>>24;G=l>>>16&255;x=l&65535;if(r+w<=e)break;if(0===k)break a;k--;d+=f[g++]<<e;e+=8}d>>>=r;e-=r;a.back+=r}d>>>=w;e-=w;
a.back+=w;a.length=x;if(0===G){a.mode=26;break}if(G&32){a.back=-1;a.mode=12;break}if(G&64){b.msg="invalid literal/length code";a.mode=30;break}a.extra=G&15;a.mode=22;case 22:if(a.extra){for(l=a.extra;e<l;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.length+=d&(1<<a.extra)-1;d>>>=a.extra;e-=a.extra;a.back+=a.extra}a.was=a.length;a.mode=23;case 23:for(;;){l=a.distcode[d&(1<<a.distbits)-1];w=l>>>24;G=l>>>16&255;x=l&65535;if(w<=e)break;if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(0===(G&240)){r=w;u=G;for(N=
x;;){l=a.distcode[N+((d&(1<<r+u)-1)>>r)];w=l>>>24;G=l>>>16&255;x=l&65535;if(r+w<=e)break;if(0===k)break a;k--;d+=f[g++]<<e;e+=8}d>>>=r;e-=r;a.back+=r}d>>>=w;e-=w;a.back+=w;if(G&64){b.msg="invalid distance code";a.mode=30;break}a.offset=x;a.extra=G&15;a.mode=24;case 24:if(a.extra){for(l=a.extra;e<l;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}a.offset+=d&(1<<a.extra)-1;d>>>=a.extra;e-=a.extra;a.back+=a.extra}if(a.offset>a.dmax){b.msg="invalid distance too far back";a.mode=30;break}a.mode=25;case 25:if(0===
n)break a;l=z-n;if(a.offset>l){l=a.offset-l;if(l>a.whave&&a.sane){b.msg="invalid distance too far back";a.mode=30;break}l>a.wnext?(l-=a.wnext,r=a.wsize-l):r=a.wnext-l;l>a.length&&(l=a.length);u=a.window}else u=h,r=m-a.offset,l=a.length;l>n&&(l=n);n-=l;a.length-=l;do h[m++]=u[r++];while(--l);0===a.length&&(a.mode=21);break;case 26:if(0===n)break a;h[m++]=a.length;n--;a.mode=21;break;case 27:if(a.wrap){for(;32>e;){if(0===k)break a;k--;d|=f[g++]<<e;e+=8}z-=n;b.total_out+=z;a.total+=z;z&&(b.adler=a.check=
a.flags?I(a.check,h,z,m-z):B(a.check,h,z,m-z));z=n;if((a.flags?d:F(d))!==a.check){b.msg="incorrect data check";a.mode=30;break}e=d=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;32>e;){if(0===k)break a;k--;d+=f[g++]<<e;e+=8}if(d!==(a.total&4294967295)){b.msg="incorrect length check";a.mode=30;break}e=d=0}a.mode=29;case 29:J=1;break a;case 30:J=-3;break a;case 31:return-4;default:return-2}b.next_out=m;b.avail_out=n;b.next_in=g;b.avail_in=k;a.hold=d;a.bits=e;if(a.wsize||z!==b.avail_out&&30>a.mode&&(27>
a.mode||4!==c))f=b.output,g=b.next_out,m=z-b.avail_out,n=b.state,null===n.window&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new y.Buf8(n.wsize)),m>=n.wsize?(y.arraySet(n.window,f,g-n.wsize,n.wsize,0),n.wnext=0,n.whave=n.wsize):(k=n.wsize-n.wnext,k>m&&(k=m),y.arraySet(n.window,f,g-m,k,n.wnext),(m-=k)?(y.arraySet(n.window,f,g-m,m,0),n.wnext=m,n.whave=n.wsize):(n.wnext+=k,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=k)));p-=b.avail_in;z-=b.avail_out;b.total_in+=p;b.total_out+=z;a.total+=
z;a.wrap&&z&&(b.adler=a.check=a.flags?I(a.check,h,z,b.next_out-z):B(a.check,h,z,b.next_out-z));b.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0);(0===p&&0===z||4===c)&&0===J&&(J=-5);return J};c.inflateEnd=function(b){if(!b||!b.state)return-2;var c=b.state;c.window&&(c.window=null);b.state=null;return 0};c.inflateGetHeader=function(b,c){var a;if(!b||!b.state)return-2;a=b.state;if(0===(a.wrap&2))return-2;a.head=c;c.done=!1;return 0};c.inflateInfo="pako inflate (from Nodeca project)"},
{"../utils/common":1,"./adler32":3,"./crc32":5,"./inffast":7,"./inftrees":9}],9:[function(p,u,c){var F=p("../utils/common"),x=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],f=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],h=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],g=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,
25,26,26,27,27,28,28,29,29,64,64];u.exports=function(c,p,u,I,E,M,t,C){for(var s=C.bits,b=0,D=0,a=0,K=0,L=0,v=0,q=0,k=0,n=0,d=0,e,A,z=null,l=0,r,O=new F.Buf16(16),v=new F.Buf16(16),w=null,G=0,Q,N,J,b=0;15>=b;b++)O[b]=0;for(D=0;D<I;D++)O[p[u+D]]++;L=s;for(K=15;1<=K&&0===O[K];K--);L>K&&(L=K);if(0===K)return E[M++]=20971520,E[M++]=20971520,C.bits=1,0;for(a=1;a<K&&0===O[a];a++);L<a&&(L=a);for(b=k=1;15>=b;b++)if(k<<=1,k-=O[b],0>k)return-1;if(0<k&&(0===c||1!==K))return-1;v[1]=0;for(b=1;15>b;b++)v[b+1]=v[b]+
O[b];for(D=0;D<I;D++)0!==p[u+D]&&(t[v[p[u+D]]++]=D);0===c?(z=w=t,r=19):1===c?(z=x,l-=257,w=f,G-=257,r=256):(z=h,w=g,r=-1);D=d=0;b=a;s=M;v=L;q=0;A=-1;n=1<<L;I=n-1;if(1===c&&852<n||2===c&&592<n)return 1;for(var H=0;;){H++;Q=b-q;t[D]<r?(N=0,J=t[D]):t[D]>r?(N=w[G+t[D]],J=z[l+t[D]]):(N=96,J=0);k=1<<b-q;a=e=1<<v;do e-=k,E[s+(d>>q)+e]=Q<<24|N<<16|J|0;while(0!==e);for(k=1<<b-1;d&k;)k>>=1;0!==k?(d&=k-1,d+=k):d=0;D++;if(0===--O[b]){if(b===K)break;b=p[u+t[D]]}if(b>L&&(d&I)!==A){0===q&&(q=L);s+=a;v=b-q;for(k=
1<<v;v+q<K;){k-=O[v+q];if(0>=k)break;v++;k<<=1}n+=1<<v;if(1===c&&852<n||2===c&&592<n)return 1;A=d&I;E[A]=L<<24|v<<16|s-M|0}}0!==d&&(E[s+d]=b-q<<24|4194304);C.bits=L;return 0}},{"../utils/common":1}],10:[function(p,u,c){u.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(p,u,c){u.exports=function(){this.input=null;this.total_in=this.avail_in=this.next_in=
0;this.output=null;this.total_out=this.avail_out=this.next_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}},{}],"/lib/inflate.js":[function(p,u,c){function F(c,f){var g=new E(f);g.push(c,!0);if(g.err)throw g.msg;return g.result}var x=p("./zlib/inflate.js"),f=p("./utils/common"),h=p("./utils/strings"),g=p("./zlib/constants"),m=p("./zlib/messages"),y=p("./zlib/zstream"),B=p("./zlib/gzheader"),I=Object.prototype.toString,E=function(c){var h=this.options=f.assign({chunkSize:16384,windowBits:0,
to:""},c||{});h.raw&&0<=h.windowBits&&16>h.windowBits&&(h.windowBits=-h.windowBits,0===h.windowBits&&(h.windowBits=-15));!(0<=h.windowBits&&16>h.windowBits)||c&&c.windowBits||(h.windowBits+=32);15<h.windowBits&&48>h.windowBits&&0===(h.windowBits&15)&&(h.windowBits|=15);this.err=0;this.msg="";this.ended=!1;this.chunks=[];this.strm=new y;this.strm.avail_out=0;c=x.inflateInit2(this.strm,h.windowBits);if(c!==g.Z_OK)throw Error(m[c]);this.header=new B;x.inflateGetHeader(this.strm,this.header)};E.prototype.push=
function(c,m){var p=this.strm,s=this.options.chunkSize,b,u,a,y,B;if(this.ended)return!1;u=m===~~m?m:!0===m?g.Z_FINISH:g.Z_NO_FLUSH;"string"===typeof c?p.input=h.binstring2buf(c):"[object ArrayBuffer]"===I.call(c)?p.input=new Uint8Array(c):p.input=c;p.next_in=0;p.avail_in=p.input.length;do{0===p.avail_out&&(p.output=new f.Buf8(s),p.next_out=0,p.avail_out=s);b=x.inflate(p,g.Z_NO_FLUSH);if(b!==g.Z_STREAM_END&&b!==g.Z_OK)return this.onEnd(b),this.ended=!0,!1;if(p.next_out&&(0===p.avail_out||b===g.Z_STREAM_END||
0===p.avail_in&&(u===g.Z_FINISH||u===g.Z_SYNC_FLUSH)))if("string"===this.options.to)a=h.utf8border(p.output,p.next_out),y=p.next_out-a,B=h.buf2string(p.output,a),p.next_out=y,p.avail_out=s-y,y&&f.arraySet(p.output,p.output,a,y,0),this.onData(B);else this.onData(f.shrinkBuf(p.output,p.next_out))}while(0<p.avail_in&&b!==g.Z_STREAM_END);b===g.Z_STREAM_END&&(u=g.Z_FINISH);if(u===g.Z_FINISH)return b=x.inflateEnd(this.strm),this.onEnd(b),this.ended=!0,b===g.Z_OK;u===g.Z_SYNC_FLUSH&&(this.onEnd(g.Z_OK),
p.avail_out=0);return!0};E.prototype.onData=function(c){this.chunks.push(c)};E.prototype.onEnd=function(c){c===g.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):f.flattenChunks(this.chunks));this.chunks=[];this.err=c;this.msg=this.strm.msg};c.Inflate=E;c.inflate=F;c.inflateRaw=function(c,f){f=f||{};f.raw=!0;return F(c,f)};c.ungzip=F},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate.js":8,"./zlib/messages":10,"./zlib/zstream":11}]},
{},[])("/lib/inflate.js")});
$3Dmol=function(b){return b.$3Dmol||{}}(window);"https:"!=document.location.protocol&&$.get("http://3dmol.csb.pitt.edu/track/report.cgi");String.prototype.startsWith||(String.prototype.startsWith=function(b){return 0===this.lastIndexOf(b,0)});String.prototype.endsWith||(String.prototype.endsWith=function(b){return-1!==this.indexOf(b,this.length-b.length)});
$.ajaxTransport("+binary",function(b,c,d){if(window.FormData&&(b.dataType&&"binary"==b.dataType||b.data&&(window.ArrayBuffer&&b.data instanceof ArrayBuffer||window.Blob&&b.data instanceof Blob)))return{send:function(c,d){var A=new XMLHttpRequest,y=b.url,z=b.type,f=b.async||!0,h=b.responseType||"blob",l=b.data||null,m=b.username||null,w=b.password||null;A.addEventListener("load",function(){var c={};c[b.dataType]=A.response;d(A.status,A.statusText,c,A.getAllResponseHeaders())});A.open(z,y,f,m,w);for(var e in c)A.setRequestHeader(e,
c[e]);A.responseType=h;A.send(l)},abort:function(){d.abort()}}});$3Dmol.createViewer=function(b,c){"string"===$.type(b)&&(b=$("#"+b));if(b){c=c||{};try{return new $3Dmol.GLViewer(b,c)}catch(d){throw"error creating viewer: "+d;}}};$3Dmol.viewers={};
$3Dmol.download=function(b,c,d,p){var t="",A="",y=c.addModel();if("mmtf:"===b.substr(0,5)){A=d&&d.pdbUri?d.pdbUri:"http://mmtf.rcsb.org/full/";b=b.substr(5).toUpperCase();var z;$.ajax({url:A+b+".mmtf",type:"GET",dataType:"binary",responseType:"arraybuffer",processData:!1}).done(function(b,h,l){y.addMolData(b,"mmtf");c.zoomTo();c.render();p&&p(y)}).fail(function(b,c){console.log(c)})}else{if("pdb:"===b.substr(0,4)){A=d&&d.pdbUri?d.pdbUri:"http://www.rcsb.org/pdb/files/";t=d&&d.format?d.format:"pdb";
b=b.substr(4).toUpperCase();if(!b.match(/^[1-9][A-Za-z0-9]{3}$/)){alert("Wrong PDB ID");return}z=d&&d.format?A+b+"."+d.format:A+b+".pdb"}else if("cid:"==b.substr(0,4)){t="sdf";b=b.substr(4);if(!b.match(/^[0-9]+$/)){alert("Wrong Compound ID");return}z="http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+b+"/SDF?record_type=3d"}$.get(z,function(b){y.addMolData(b,t,d);c.zoomTo();c.render();p&&p(y)})}return y};$3Dmol.SurfaceType={VDW:1,MS:2,SAS:3,SES:4};
$3Dmol.mergeGeos=function(b,c){var d=c.geometry;void 0!==d&&b.geometryGroups.push(d.geometryGroups[0])};$3Dmol.multiLineString=function(b){return b.toString().replace(/^[^\/]+\/\*!?/,"").replace(/\*\/[^\/]+$/,"")};$3Dmol.syncSurface=!1;if(0<=window.navigator.userAgent.indexOf("MSIE ")||0<=window.navigator.userAgent.indexOf("Trident/"))$3Dmol.syncSurface=!0;
$3Dmol.specStringToObject=function(b){if("object"===typeof b||"undefined"===typeof b||null==b)return b;b=b.replace(/%7E/,"~");var c=function(b){return $.isNumeric(b)?Math.floor(parseFloat(b))==parseInt(b)?parseFloat(b):0<=b.indexOf(".")?parseFloat(b):parseInt(b):"true"===b?!0:"false"===b?!1:b},d={};if("all"===b)return d;b=b.split(";");for(var p=0;p<b.length;p++){var t=b[p].split(":"),A=t[0],y={};if(t=t[1])if(t=t.replace(/~/g,"="),-1!==t.indexOf("="))for(var t=t.split(","),z=0;z<t.length;z++){var f=
t[z].split("=",2);y[f[0]]=c(f[1])}else y=-1!==t.indexOf(",")?t.split(","):c(t);d[A]=y}return d};
$3Dmol.getExtent=function(b,c){var d,p,t,A,y,z,f,h,l,m,w=!c;d=p=t=9999;A=y=z=-9999;f=h=l=m=0;if(0===b.length)return[[0,0,0],[0,0,0],[0,0,0]];for(var e=0;e<b.length;e++){var G=b[e];if("undefined"!==typeof G&&isFinite(G.x)&&isFinite(G.y)&&isFinite(G.z)&&(m++,f+=G.x,h+=G.y,l+=G.z,d=d<G.x?d:G.x,p=p<G.y?p:G.y,t=t<G.z?t:G.z,A=A>G.x?A:G.x,y=y>G.y?y:G.y,z=z>G.z?z:G.z,G.symmetries&&w))for(var g=0;g<G.symmetries.length;g++)m++,f+=G.symmetries[g].x,h+=G.symmetries[g].y,l+=G.symmetries[g].z,d=d<G.symmetries[g].x?
d:G.symmetries[g].x,p=p<G.symmetries[g].y?p:G.symmetries[g].y,t=t<G.symmetries[g].z?t:G.symmetries[g].z,A=A>G.symmetries[g].x?A:G.symmetries[g].x,y=y>G.symmetries[g].y?y:G.symmetries[g].y,z=z>G.symmetries[g].z?z:G.symmetries[g].z}return[[d,p,t],[A,y,z],[f/m,h/m,l/m]]};$3Dmol.getAtomProperty=function(b,c){var d=null;b.properties&&"undefined"!=typeof b.properties[c]?d=b.properties[c]:"undefined"!=typeof b[c]&&(d=b[c]);return d};
$3Dmol.getPropertyRange=function(b,c){for(var d=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,t=0,A=b.length;t<A;t++){var y=$3Dmol.getAtomProperty(b[t],c);null!=y&&(y<d&&(d=y),y>p&&(p=y))}isFinite(d)||isFinite(p)?isFinite(d)?isFinite(p)||(p=d):d=p:d=p=0;return[d,p]};"function"===typeof define&&define.amd&&define("$3Dmol",$3Dmol);var $3Dmol=$3Dmol||{};$3Dmol.Math={clamp:function(b,c,d){return Math.min(Math.max(b,c),d)},degToRad:function(){var b=Math.PI/180;return function(c){return c*b}}()};
$3Dmol.Quaternion=function(b,c,d,p){this.x=b||0;this.y=c||0;this.z=d||0;this.w=void 0!==p?p:1};
$3Dmol.Quaternion.prototype={constructor:$3Dmol.Quaternion,set:function(b,c,d,p){this.x=b;this.y=c;this.z=d;this.w=p;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;this.w=b.w;return this},conjugate:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},inverse:function(){return this.conjugate().normalize()},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var b=this.length();0===b?(this.z=this.y=this.x=0,this.w=1):
(b=1/b,this.x*=b,this.y*=b,this.z*=b,this.w*=b);return this},multiply:function(b){return this.multiplyQuaternions(this,b)},multiplyQuaternions:function(b,c){var d=b.x,p=b.y,t=b.z,A=b.w,y=c.x,z=c.y,f=c.z,h=c.w;this.x=d*h+A*y+p*f-t*z;this.y=p*h+A*z+t*y-d*f;this.z=t*h+A*f+d*z-p*y;this.w=A*h-d*y-p*z-t*f}};$3Dmol.Vector2=function(b,c){this.x=b||0;this.y=c||0};
$3Dmol.Vector2.prototype={constructor:$3Dmol.Vector2,set:function(b,c){this.x=b;this.y=c;return this},subVectors:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;return this},copy:function(b){this.x=b.x;this.y=b.y;return this},clone:function(){return new $3Dmol.Vector2(this.x,this.y)}};$3Dmol.Vector3=function(b,c,d){this.x=b||0;this.y=c||0;this.z=d||0};
$3Dmol.Vector3.prototype={constructor:$3Dmol.Vector3,set:function(b,c,d){this.x=b;this.y=c;this.z=d;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;return this},add:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;return this},addVectors:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;return this},sub:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;return this},subVectors:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=b.z-c.z;return this},multiplyScalar:function(b){this.x*=
b;this.y*=b;this.z*=b;return this},divideScalar:function(b){0!==b?(this.x/=b,this.y/=b,this.z/=b):this.z=this.y=this.x=0;return this},max:function(b){this.x=Math.max(this.x,b.x);this.y=Math.max(this.y,b.y);this.z=Math.max(this.z,b.z);return this},min:function(b){this.x=Math.min(this.x,b.x);this.y=Math.min(this.y,b.y);this.z=Math.min(this.z,b.z);return this},distanceTo:function(b){return Math.sqrt(this.distanceToSquared(b))},distanceToSquared:function(b){var c=this.x-b.x,d=this.y-b.y;b=this.z-b.z;
return c*c+d*d+b*b},applyMatrix4:function(b){var c=this.x,d=this.y,p=this.z;b=b.elements;this.x=b[0]*c+b[4]*d+b[8]*p+b[12];this.y=b[1]*c+b[5]*d+b[9]*p+b[13];this.z=b[2]*c+b[6]*d+b[10]*p+b[14];return this},applyProjection:function(b){var c=this.x,d=this.y,p=this.z;b=b.elements;var t=b[3]*c+b[7]*d+b[11]*p+b[15];this.x=(b[0]*c+b[4]*d+b[8]*p+b[12])/t;this.y=(b[1]*c+b[5]*d+b[9]*p+b[13])/t;this.z=(b[2]*c+b[6]*d+b[10]*p+b[14])/t;return this},applyQuaternion:function(b){var c=this.x,d=this.y,p=this.z,t=b.x,
A=b.y,y=b.z,z,f,h;z=2*(d*y-p*A);f=2*(p*t-c*y);h=2*(c*A-d*t);this.x=c+b.w*z+(f*y-h*A);this.y=d+b.w*f+(h*t-z*y);this.z=p+b.w*h+(z*A-f*t);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},normalize:function(){return this.divideScalar(this.length())},cross:function(b){var c=this.x,d=this.y,
p=this.z;this.x=d*b.z-p*b.y;this.y=p*b.x-c*b.z;this.z=c*b.y-d*b.x;return this},crossVectors:function(b,c){this.x=b.y*c.z-b.z*c.y;this.y=b.z*c.x-b.x*c.z;this.z=b.x*c.y-b.y*c.x;return this},getPositionFromMatrix:function(b){this.x=b.elements[12];this.y=b.elements[13];this.z=b.elements[14];return this},setEulerFromRotationMatrix:function(b,c){var d=b.elements,p=d[0],t=d[4],A=d[8],y=d[5],z=d[9],f=d[6],d=d[10];void 0===c||"XYZ"===c?(this.y=Math.asin($3Dmol.Math.clamp(A,-1,1)),.99999>Math.abs(A)?(this.x=
Math.atan2(-z,d),this.z=Math.atan2(-t,p)):(this.x=Math.atan2(f,y),this.z=0)):console.error("Error with vector's setEulerFromRotationMatrix: Unknown order: "+c);return this},rotateAboutVector:function(b,c){b.normalize();var d=Math.cos(c),p=Math.sin(c),t=this.clone().multiplyScalar(d),p=b.clone().cross(this).multiplyScalar(p),d=b.clone().multiplyScalar(b.clone().dot(this)).multiplyScalar(1-d),t=t.add(p).add(d);this.x=t.x;this.y=t.y;this.z=t.z;return this},clone:function(){return new $3Dmol.Vector3(this.x,
this.y,this.z)}};$3Dmol.Matrix3=function(b,c,d,p,t,A,y,z,f){this.elements=new Float32Array(9);this.set(void 0!==b?b:1,c||0,d||0,p||0,void 0!==t?t:1,A||0,y||0,z||0,void 0!==f?f:1)};
$3Dmol.Matrix3.prototype={constructor:$3Dmol.Matrix3,set:function(b,c,d,p,t,A,y,z,f){var h=this.elements;h[0]=b;h[3]=c;h[6]=d;h[1]=p;h[4]=t;h[7]=A;h[2]=y;h[5]=z;h[8]=f;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},copy:function(b){b=b.elements;this.set(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8])},multiplyScalar:function(b){var c=this.elements;c[0]*=b;c[3]*=b;c[6]*=b;c[1]*=b;c[4]*=b;c[7]*=b;c[2]*=b;c[5]*=b;c[8]*=b;return this},getInverse:function(b,c){var d=b.elements,
p=this.elements;p[0]=d[10]*d[5]-d[6]*d[9];p[1]=-d[10]*d[1]+d[2]*d[9];p[2]=d[6]*d[1]-d[2]*d[5];p[3]=-d[10]*d[4]+d[6]*d[8];p[4]=d[10]*d[0]-d[2]*d[8];p[5]=-d[6]*d[0]+d[2]*d[4];p[6]=d[9]*d[4]-d[5]*d[8];p[7]=-d[9]*d[0]+d[1]*d[8];p[8]=d[5]*d[0]-d[1]*d[4];d=d[0]*p[0]+d[1]*p[3]+d[2]*p[6];if(0===d){if(c)throw Error("Matrix3.getInverse(): can't invert matrix, determinant is 0");console.warn("Matrix3.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/d);return this},
getDeterminant:function(){var b=this.elements;return b[0]*b[4]*b[8]+b[1]*b[5]*b[6]+b[2]*b[3]*b[7]-b[2]*b[4]*b[6]-b[1]*b[3]*b[8]-b[0]*b[5]*b[7]},transpose:function(){var b,c=this.elements;b=c[1];c[1]=c[3];c[3]=b;b=c[2];c[2]=c[6];c[6]=b;b=c[5];c[5]=c[7];c[7]=b;return this},clone:function(){var b=this.elements;return new $3Dmol.Matrix3(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8])}};
$3Dmol.Matrix4=function(b,c,d,p,t,A,y,z,f,h,l,m,w,e,G,g){if("undefined"===typeof c&&"undefined"!==typeof b)this.elements=new Float32Array(b);else{var s=this.elements=new Float32Array(16);s[0]=void 0!==b?b:1;s[4]=c||0;s[8]=d||0;s[12]=p||0;s[1]=t||0;s[5]=void 0!==A?A:1;s[9]=y||0;s[13]=z||0;s[2]=f||0;s[6]=h||0;s[10]=void 0!==l?l:1;s[14]=m||0;s[3]=w||0;s[7]=e||0;s[11]=G||0;s[15]=void 0!==g?g:1}};
$3Dmol.Matrix4.prototype={constructor:$3Dmol.Matrix4,set:function(b,c,d,p,t,A,y,z,f,h,l,m,w,e,G,g){var s=this.elements;s[0]=b;s[4]=c;s[8]=d;s[12]=p;s[1]=t;s[5]=A;s[9]=y;s[13]=z;s[2]=f;s[6]=h;s[10]=l;s[14]=m;s[3]=w;s[7]=e;s[11]=G;s[15]=g;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(b){b=b.elements;this.set(b[0],b[4],b[8],b[12],b[1],b[5],b[9],b[13],b[2],b[6],b[10],b[14],b[3],b[7],b[11],b[15]);return this},matrix3FromTopLeft:function(){var b=this.elements;
return new $3Dmol.Matrix3(b[0],b[4],b[8],b[1],b[5],b[9],b[2],b[6],b[10])},setRotationFromEuler:function(b,c){var d=this.elements,p=b.x,t=b.y,A=b.z,y=Math.cos(p),p=Math.sin(p),z=Math.cos(t),t=Math.sin(t),f=Math.cos(A),A=Math.sin(A);if(void 0===c||"XYZ"===c){var h=y*f,l=y*A,m=p*f,w=p*A;d[0]=z*f;d[4]=-z*A;d[8]=t;d[1]=l+m*t;d[5]=h-w*t;d[9]=-p*z;d[2]=w-h*t;d[6]=m+l*t;d[10]=y*z}else console.error("Error with matrix4 setRotationFromEuler. Order: "+c);return this},setRotationFromQuaternion:function(b){var c=
this.elements,d=b.x,p=b.y,t=b.z,A=b.w,y=d+d,z=p+p,f=t+t;b=d*y;var h=d*z,d=d*f,l=p*z,p=p*f,t=t*f,y=A*y,z=A*z,A=A*f;c[0]=1-(l+t);c[4]=h-A;c[8]=d+z;c[1]=h+A;c[5]=1-(b+t);c[9]=p-y;c[2]=d-z;c[6]=p+y;c[10]=1-(b+l);return this},lookAt:function(){var b=new $3Dmol.Vector3,c=new $3Dmol.Vector3,d=new $3Dmol.Vector3;return function(p,t,A){var y=this.elements;d.subVectors(p,t).normalize();0===d.length()&&(d.z=1);b.crossVectors(A,d).normalize();0===b.length()&&(d.x+=1E-4,b.crossVectors(A,d).normalize());c.crossVectors(d,
b);y[0]=b.x;y[4]=c.x;y[8]=d.x;y[1]=b.y;y[5]=c.y;y[9]=d.y;y[2]=b.z;y[6]=c.z;y[10]=d.z;return this}}(),multiplyMatrices:function(b,c){var d=b.elements,p=c.elements,t=this.elements,A=d[0],y=d[4],z=d[8],f=d[12],h=d[1],l=d[5],m=d[9],w=d[13],e=d[2],G=d[6],g=d[10],s=d[14],u=d[3],x=d[7],q=d[11],d=d[15],N=p[0],I=p[4],D=p[8],C=p[12],B=p[1],F=p[5],J=p[9],L=p[13],K=p[2],H=p[6],M=p[10],O=p[14],R=p[3],V=p[7],P=p[11],p=p[15];t[0]=A*N+y*B+z*K+f*R;t[4]=A*I+y*F+z*H+f*V;t[8]=A*D+y*J+z*M+f*P;t[12]=A*C+y*L+z*O+f*p;t[1]=
h*N+l*B+m*K+w*R;t[5]=h*I+l*F+m*H+w*V;t[9]=h*D+l*J+m*M+w*P;t[13]=h*C+l*L+m*O+w*p;t[2]=e*N+G*B+g*K+s*R;t[6]=e*I+G*F+g*H+s*V;t[10]=e*D+G*J+g*M+s*P;t[14]=e*C+G*L+g*O+s*p;t[3]=u*N+x*B+q*K+d*R;t[7]=u*I+x*F+q*H+d*V;t[11]=u*D+x*J+q*M+d*P;t[15]=u*C+x*L+q*O+d*p;return this},multiplyScalar:function(b){var c=this.elements;c[0]*=b;c[4]*=b;c[8]*=b;c[12]*=b;c[1]*=b;c[5]*=b;c[9]*=b;c[13]*=b;c[2]*=b;c[6]*=b;c[10]*=b;c[14]*=b;c[3]*=b;c[7]*=b;c[11]*=b;c[15]*=b;return this},makeTranslation:function(b,c,d){this.set(1,
0,0,b,0,1,0,c,0,0,1,d,0,0,0,1);return this},transpose:function(){var b=this.elements,c;c=b[1];b[1]=b[4];b[4]=c;c=b[2];b[2]=b[8];b[8]=c;c=b[6];b[6]=b[9];b[9]=c;c=b[3];b[3]=b[12];b[12]=c;c=b[7];b[7]=b[13];b[13]=c;c=b[11];b[11]=b[14];b[14]=c;return this},getPosition:function(){var b=new $3Dmol.Vector3;return function(){console.warn("DEPRECATED: Matrix4's .getPosition() has been removed. Use Vector3.getPositionFromMatrix( matrix ) instead.");var c=this.elements;return b.set(c[12],c[13],c[14])}}(),setPosition:function(b){var c=
this.elements;c[12]=b.x;c[13]=b.y;c[14]=b.z;return this},getInverse:function(b,c){var d=this.elements,p=b.elements,t=p[0],A=p[4],y=p[8],z=p[12],f=p[1],h=p[5],l=p[9],m=p[13],w=p[2],e=p[6],G=p[10],g=p[14],s=p[3],u=p[7],x=p[11],q=p[15];d[0]=l*g*u-m*G*u+m*e*x-h*g*x-l*e*q+h*G*q;d[4]=z*G*u-y*g*u-z*e*x+A*g*x+y*e*q-A*G*q;d[8]=y*m*u-z*l*u+z*h*x-A*m*x-y*h*q+A*l*q;d[12]=z*l*e-y*m*e-z*h*G+A*m*G+y*h*g-A*l*g;d[1]=m*G*s-l*g*s-m*w*x+f*g*x+l*w*q-f*G*q;d[5]=y*g*s-z*G*s+z*w*x-t*g*x-y*w*q+t*G*q;d[9]=z*l*s-y*m*s-z*f*
x+t*m*x+y*f*q-t*l*q;d[13]=y*m*w-z*l*w+z*f*G-t*m*G-y*f*g+t*l*g;d[2]=h*g*s-m*e*s+m*w*u-f*g*u-h*w*q+f*e*q;d[6]=z*e*s-A*g*s-z*w*u+t*g*u+A*w*q-t*e*q;d[10]=A*m*s-z*h*s+z*f*u-t*m*u-A*f*q+t*h*q;d[14]=z*h*w-A*m*w-z*f*e+t*m*e+A*f*g-t*h*g;d[3]=l*e*s-h*G*s-l*w*u+f*G*u+h*w*x-f*e*x;d[7]=A*G*s-y*e*s+y*w*u-t*G*u-A*w*x+t*e*x;d[11]=y*h*s-A*l*s-y*f*u+t*l*u+A*f*x-t*h*x;d[15]=A*l*w-y*h*w+y*f*e-t*l*e-A*f*G+t*h*G;d=p[0]*d[0]+p[1]*d[4]+p[2]*d[8]+p[3]*d[12];if(0===d){if(c)throw Error("Matrix4.getInverse(): can't invert matrix, determinant is 0");
console.warn("Matrix4.getInverse(): can't invert matrix, determinant is 0");this.identity();return this}this.multiplyScalar(1/d);return this},isReflected:function(){return 0>this.matrix3FromTopLeft().getDeterminant()},compose:function(){var b=new $3Dmol.Matrix4,c=new $3Dmol.Matrix4;return function(d,p,t){var A=this.elements;b.identity();b.setRotationFromQuaternion(p);c.makeScale(t.x,t.y,t.z);this.multiplyMatrices(b,c);A[12]=d.x;A[13]=d.y;A[14]=d.z;return this}}(),decompose:function(){var b=new $3Dmol.Vector3,
c=new $3Dmol.Vector3,d=new $3Dmol.Vector3,p=new $3Dmol.Matrix4;return function(t,A,y){var z=this.elements;b.set(z[0],z[1],z[2]);c.set(z[4],z[5],z[6]);d.set(z[8],z[9],z[10]);t=t instanceof $3Dmol.Vector3?t:new $3Dmol.Vector3;A=A instanceof $3Dmol.Quaternion?A:new $3Dmol.Quaternion;y=y instanceof $3Dmol.Vector3?y:new $3Dmol.Vector3;y.x=b.length();y.y=c.length();y.z=d.length();t.x=z[12];t.y=z[13];t.z=z[14];p.copy(this);p.elements[0]/=y.x;p.elements[1]/=y.x;p.elements[2]/=y.x;p.elements[4]/=y.y;p.elements[5]/=
y.y;p.elements[6]/=y.y;p.elements[8]/=y.z;p.elements[9]/=y.z;p.elements[10]/=y.z;A.setFromRotationMatrix(p);return[t,A,y]}}(),scale:function(b){var c=this.elements,d=b.x,p=b.y;b=b.z;c[0]*=d;c[4]*=p;c[8]*=b;c[1]*=d;c[5]*=p;c[9]*=b;c[2]*=d;c[6]*=p;c[10]*=b;c[3]*=d;c[7]*=p;c[11]*=b;return this},getMaxScaleOnAxis:function(){var b=this.elements;return Math.sqrt(Math.max(b[0]*b[0]+b[1]*b[1]+b[2]*b[2],Math.max(b[4]*b[4]+b[5]*b[5]+b[6]*b[6],b[8]*b[8]+b[9]*b[9]+b[10]*b[10])))},makeFrustum:function(b,c,d,p,
t,A){var y=this.elements;y[0]=2*t/(c-b);y[4]=0;y[8]=(c+b)/(c-b);y[12]=0;y[1]=0;y[5]=2*t/(p-d);y[9]=(p+d)/(p-d);y[13]=0;y[2]=0;y[6]=0;y[10]=-(A+t)/(A-t);y[14]=-2*A*t/(A-t);y[3]=0;y[7]=0;y[11]=-1;y[15]=0;return this},makePerspective:function(b,c,d,p){b=d*Math.tan($3Dmol.Math.degToRad(.5*b));var t=-b;return this.makeFrustum(t*c,b*c,t,b,d,p)},makeOrthographic:function(b,c,d,p,t,A){var y=this.elements,z=1/(c-b),f=1/(d-p),h=1/(A-t);y[0]=2*z;y[4]=0;y[8]=0;y[12]=-((c+b)*z);y[1]=0;y[5]=2*f;y[9]=0;y[13]=-((d+
p)*f);y[2]=0;y[6]=0;y[10]=-2*h;y[14]=-((A+t)*h);y[3]=0;y[7]=0;y[11]=0;y[15]=1;return this},isEqual:function(b){b=b.elements;var c=this.elements;return c[0]==b[0]&&c[4]==b[4]&&c[8]==b[8]&&c[12]==b[12]&&c[1]==b[1]&&c[5]==b[5]&&c[9]==b[9]&&c[13]==b[13]&&c[2]==b[2]&&c[6]==b[6]&&c[10]==b[10]&&c[14]==b[14]&&c[3]==b[3]&&c[7]==b[7]&&c[11]==b[11]&&c[15]==b[15]?!0:!1},clone:function(){var b=this.elements;return new $3Dmol.Matrix4(b[0],b[4],b[8],b[12],b[1],b[5],b[9],b[13],b[2],b[6],b[10],b[14],b[3],b[7],b[11],
b[15])},isIdentity:function(){var b=this.elements;return 1==b[0]&&0==b[4]&&0==b[8]&&0==b[12]&&0==b[1]&&1==b[5]&&0==b[9]&&0==b[13]&&0==b[2]&&0==b[6]&&1==b[10]&&0==b[14]&&0==b[3]&&0==b[7]&&0==b[11]&&1==b[15]?!0:!1}};$3Dmol.Ray=function(b,c){this.origin=void 0!==b?b:new $3Dmol.Vector3;this.direction=void 0!==c?c:new $3Dmol.Vector3};
$3Dmol.Ray.prototype={constructor:$3Dmol.Ray,set:function(b,c){this.origin.copy(b);this.direction.copy(c);return this},copy:function(b){this.origin.copy(b.origin);this.direction.copy(b.direction);return this},at:function(b,c){return(c||new $3Dmol.Vector3).copy(this.direction).multiplyScalar(b).add(this.origin)},recast:function(){var b=new $3Dmol.Vector3;return function(c){this.origin.copy(this.at(c,b));return this}}(),closestPointToPoint:function(b,c){var d=c||new $3Dmol.Vector3;d.subVectors(b,this.origin);
var p=d.dot(this.direction);return d.copy(this.direction).multiplyScalar(p).add(this.origin)},distanceToPoint:function(b){var c=new $3Dmol.Vector3;return function(b){var p=c.subVectors(b,this.origin).dot(this.direction);c.copy(this.direction).multiplyScalar(p).add(this.origin);return c.distanceTo(b)}}(),isIntersectionCylinder:function(){},isIntersectionSphere:function(b){return this.distanceToPoint(b.center)<=b.radius},isIntersectionPlane:function(b){return 0!==b.normal.dot(this.direction)||0===b.distanceToPoint(this.origin)?
!0:!1},distanceToPlane:function(b){var c=b.normal.dot(this.direction);if(0===c){if(0===b.distanceToPoint(this.origin))return 0}else return-(this.origin.dot(b.normal)+b.constant)/c},intersectPlane:function(b,c){var d=this.distanceToPlane(b);return void 0===d?void 0:this.at(d,c)},applyMatrix4:function(b){this.direction.add(this.origin).applyMatrix4(b);this.origin.applyMatrix4(b);this.direction.sub(this.origin);return this},equals:function(b){return b.origin.equals(this.origin)&&b.direction.equals(this.direction)},
clone:function(){return(new $3Dmol.Ray).copy(this)}};$3Dmol.Sphere=function(b,c){this.center=void 0!==b?b:new $3Dmol.Vector3;this.radius=void 0!==c?c:0};
$3Dmol.Sphere.prototype={constructor:$3Dmol.Sphere,set:function(b,c){this.center.copy(b);this.radius=c;return this},copy:function(b){this.center.copy(b.center);this.radius=b.radius;return this},applyMatrix4:function(b){this.center.applyMatrix4(b);this.radius*=b.getMaxScaleOnAxis();return this},translate:function(b){this.center.add(b);return this},equals:function(b){return b.center.equals(this.center)&&b.radius===this.radius},clone:function(){return(new $3Dmol.Sphere).copy(this)}};
$3Dmol.Cylinder=function(b,c,d){this.c1=void 0!==b?b:new $3Dmol.Vector3;this.c2=void 0!==c?c:new $3Dmol.Vector3;this.direction=(new $3Dmol.Vector3).subVectors(this.c2,this.c1).normalize();this.radius=void 0!==d?d:0};
$3Dmol.Cylinder.prototype={constructor:$3Dmol.Cylinder,copy:function(b){this.c1.copy(b.c1);this.c2.copy(b.c2);this.direction.copy(b.direction);this.radius=b.radius;return this},lengthSq:function(){var b=new $3Dmol.Vector3;return function(){return b.subVectors(this.c2,this.c1).lengthSq()}}(),applyMatrix4:function(b){this.direction.add(this.c1).applyMatrix4(b);this.c1.applyMatrix4(b);this.c2.applyMatrix4(b);this.direction.sub(this.c1).normalize();this.radius*=b.getMaxScaleOnAxis();return this}};
$3Dmol.Triangle=function(b,c,d){this.a=void 0!==b?b:new $3Dmol.Vector3;this.b=void 0!==c?c:new $3Dmol.Vector3;this.c=void 0!==d?d:new $3Dmol.Vector3};
$3Dmol.Triangle.prototype={constructor:$3Dmol.Triangle,copy:function(b){this.a.copy(b.a);this.b.copy(b.b);this.c.copy(b.c);return this},applyMatrix4:function(b){this.a.applyMatrix4(b);this.b.applyMatrix4(b);this.c.applyMatrix4(b);return this},getNormal:function(){var b=new $3Dmol.Vector3;return function(){var c=this.a.clone();c.sub(this.b);b.subVectors(this.c,this.b);c.cross(b);c.normalize();return c}}()};
$3Dmol.EventDispatcher=function(){var b={};this.addEventListener=function(c,d){void 0===b[c]&&(b[c]=[]);-1===b[c].indexOf(d)&&b[c].push(d)};this.removeEventListener=function(c,d){var p=b[c].indexOf(d);-1!==p&&b[c].splice(p,1)};this.dispatchEvent=function(c){var d=b[c.type];if(void 0!==d){c.target=this;for(var p=0,t=d.length;p<t;p++)d[p].call(this,c)}}};$3Dmol.Color=function(b){return 1<arguments.length?(this.r=arguments[0]||0,this.g=arguments[1]||0,this.b=arguments[2]||0,this):this.set(b)};
$3Dmol.Color.prototype={constructor:$3Dmol.Color,r:0,g:0,b:0,set:function(b){if(b instanceof $3Dmol.Color)return b.clone();"number"===typeof b?this.setHex(b):"object"===typeof b&&"r"in b&&"g"in b&&"b"in b&&(this.r=b.r,this.g=b.g,this.b=b.b)},setHex:function(b){b=Math.floor(b);this.r=(b>>16&255)/255;this.g=(b>>8&255)/255;this.b=(b&255)/255;return this},getHex:function(){var b=Math.round(255*this.r),c=Math.round(255*this.g),d=Math.round(255*this.b);return b<<16|c<<8|d},clone:function(){return new $3Dmol.Color(this.r,
this.g,this.b)},copy:function(b){this.r=b.r;this.g=b.g;this.b=b.b;return this},scaled:function(){var b={};b.r=Math.round(255*this.r);b.g=Math.round(255*this.g);b.b=Math.round(255*this.b);b.a=1;return b}};
$3Dmol.Object3D=function(){this.id=$3Dmol.Object3DIDCount++;this.name="";this.parent=void 0;this.children=[];this.position=new $3Dmol.Vector3;this.rotation=new $3Dmol.Vector3;this.matrix=new $3Dmol.Matrix4;this.matrixWorld=new $3Dmol.Matrix4;this.quaternion=new $3Dmol.Quaternion;this.eulerOrder="XYZ";this.up=new $3Dmol.Vector3(0,1,0);this.scale=new $3Dmol.Vector3(1,1,1);this.rotationAutoUpdate=this.matrixWorldNeedsUpdate=this.matrixAutoUpdate=!0;this.useQuaternion=!1;this.visible=!0};
$3Dmol.Object3D.prototype={constructor:$3Dmol.Object3D,lookAt:function(b){this.matrix.lookAt(b,this.position,this.up);this.rotationAutoUpdate&&(!0===this.useQuaternion?this.quaternion.copy(this.matrix.decompose()[1]):this.rotation.setEulerFromRotationMatrix(this.matrix,this.eulerOrder))},add:function(b){if(b===this)console.error("Can't add $3Dmol.Object3D to itself");else{b.parent=this;this.children.push(b);for(var c=this;void 0!==c.parent;)c=c.parent;void 0!==c&&c instanceof $3Dmol.Scene&&c.__addObject(b)}},
remove:function(b){var c=this.children.indexOf(b);if(-1!==c){b.parent=void 0;this.children.splice(c,1);for(c=this;void 0!==c.parent;)c=c.parent;void 0!==c&&c instanceof $3Dmol.Scene&&c.__removeObject(b)}},updateMatrix:function(){this.matrix.setPosition(this.position);!1===this.useQuaternion?this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder):this.matrix.setRotationFromQuaternion(this.quaternion);1===this.scale.x&&1===this.scale.y&&1===this.scale.z||this.matrix.scale(this.scale);this.matrixWorldNeedsUpdate=
!0},updateMatrixWorld:function(b){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===b)void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix);this.matrixWorldNeedsUpdate=!1;for(b=0;b<this.children.length;b++)this.children[b].updateMatrixWorld(!0)},clone:function(b){void 0===b&&(b=new $3Dmol.Object3D);b.name=this.name;b.up.copy(this.up);b.position.copy(this.position);b.rotation.copy(this.rotation);
b.eulerOrder=this.eulerOrder;b.scale.copy(this.scale);b.rotationAutoUpdate=this.rotationAutoUpdate;b.matrix.copy(this.matrix);b.matrixWorld.copy(this.matrixWorld);b.quaternion.copy(this.quaternion);b.matrixAutoUpdate=this.matrixAutoUpdate;b.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;b.useQuaternion=this.useQuaternion;b.visible=this.visible;for(var c=0;c<this.children.length;c++)b.add(this.children[c].clone());return b},setVisible:function(b){this.visible=b;for(var c=0;c<this.children.length;c++)this.children[c].setVisible(b)}};
$3Dmol.Object3DIDCount=0;
$3Dmol.Geometry=function(){var b=function(b){this.id=b||0;this.lineArray=this.radiusArray=this.faceArray=this.normalArray=this.colorArray=this.vertexArray=null;this.lineidx=this.faceidx=this.vertices=0};b.prototype.getNumVertices=function(){return this.vertices};b.prototype.getVertices=function(){return this.vertexArray};b.prototype.getCentroid=function(){for(var b=new $3Dmol.Vector3,c,d,y,z=0;z<this.vertices;++z)c=3*z,d=this.vertexArray[c],y=this.vertexArray[c+1],c=this.vertexArray[c+2],b.x+=d,b.y+=
y,b.z+=c;b.divideScalar(this.vertices);return b};b.prototype.setNormals=function(){var b=this.faceArray,c=this.vertexArray,d=this.normalArray;if(this.vertices&&this.faceidx)for(var y,z,f,h,l,m,w=0;w<b.length/3;++w)y=3*b[3*w],z=3*b[3*w+1],f=3*b[3*w+2],h=new $3Dmol.Vector3(c[y],c[y+1],c[y+2]),l=new $3Dmol.Vector3(c[z],c[z+1],c[z+2]),m=new $3Dmol.Vector3(c[f],c[f+1],c[f+2]),h.subVectors(h,l),m.subVectors(m,l),m.cross(h),h=m,h.normalize(),d[y]+=h.x,d[z]+=h.x,d[f]+=h.x,d[y+1]+=h.y,d[z+1]+=h.y,d[f+1]+=
h.y,d[y+2]+=h.z,d[z+2]+=h.z,d[f+2]+=h.z};b.prototype.setLineIndices=function(){if(this.faceidx){var b=this.faceArray,c=this.lineArray=new Uint16Array(2*this.faceidx);this.lineidx=2*this.faceidx;for(var d,y=0;y<this.faceidx/3;++y){d=3*y;lineoffset=2*d;var z=b[d],f=b[d+1];d=b[d+2];c[lineoffset]=z;c[lineoffset+1]=f;c[lineoffset+2]=z;c[lineoffset+3]=d;c[lineoffset+4]=f;c[lineoffset+5]=d}}};b.prototype.truncateArrayBuffers=function(b,c){b=!0===b?!0:!1;var d=this.colorArray,y=this.normalArray,z=this.faceArray,
f=this.lineArray,h=this.radiusArray;this.vertexArray=this.vertexArray.subarray(0,3*this.vertices);this.colorArray=d.subarray(0,3*this.vertices);b?(this.normalArray=y.subarray(0,3*this.vertices),this.faceArray=z.subarray(0,this.faceidx),this.lineArray=0<this.lineidx?f.subarray(0,this.lineidx):new Uint16Array):(this.normalArray=new Float32Array,this.faceArray=new Uint16Array,this.lineArray=new Uint16Array);h&&(this.radiusArray=h.subarray(0,this.vertices));c&&(this.normalArray&&(this.normalArray=new Float32Array(this.normalArray)),
this.faceArray&&(this.faceArray=new Uint16Array(this.faceArray)),this.lineArray&&(this.lineArray=new Uint16Array(this.lineArray)),this.vertexArray&&(this.vertexArray=new Float32Array(this.vertexArray)),this.colorArray&&(this.colorArray=new Float32Array(this.colorArray)),this.radiusArray&&(this.radiusArray=new Float32Array(this.radiusArray)));this.__inittedArrays=!0};var c=function(c){var d=new b(c.geometryGroups.length);c.geometryGroups.push(d);c.groups=c.geometryGroups.length;d.vertexArray=new Float32Array(196605);
d.colorArray=new Float32Array(196605);c.mesh&&(d.normalArray=new Float32Array(196605),d.faceArray=new Uint16Array(393210),d.lineArray=new Uint16Array(393210));c.radii&&(d.radiusArray=new Float32Array(65535));d.useOffset=c.offset;return d},d=function(b,c,d){$3Dmol.EventDispatcher.call(this);this.id=$3Dmol.GeometryIDCount++;this.name="";this.hasTangents=!1;this.dynamic=!0;this.mesh=!0===b?!0:!1;this.radii=c||!1;this.offset=d||!1;this.buffersNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.elementsNeedUpdate=
this.verticesNeedUpdate=!1;this.geometryGroups=[];this.groups=0};d.prototype={constructor:d,updateGeoGroup:function(b){var d=0<this.groups?this.geometryGroups[this.groups-1]:null;if(!d||d.vertices+(b||0)>d.vertexArray.length/3)d=c(this);return d},addGeoGroup:function(){return c(this)},setUpNormals:function(b){b=b||!1;for(var c=0;c<this.groups;c++)this.geometryGroups[c].setNormals(b)},setUpWireframe:function(){for(var b=0;b<this.groups;b++)this.geometryGroups[b].setLineIndices()},initTypedArrays:function(){for(var b=
0;b<this.groups;b++){var c=this.geometryGroups[b];!0!==c.__inittedArrays&&c.truncateArrayBuffers(this.mesh,!1)}},dispose:function(){this.dispatchEvent({type:"dispose"})}};return d}();Object.defineProperty($3Dmol.Geometry.prototype,"vertices",{get:function(){for(var b=0,c=0;c<this.groups;c++)b+=this.geometryGroups[c].vertices;return b}});$3Dmol.GeometryIDCount=0;
$3Dmol.Raycaster=function(){var b=function(b,c,l,f){this.ray=new $3Dmol.Ray(b,c);0<this.ray.direction.lengthSq()&&this.ray.direction.normalize();this.near=f||0;this.far=l||Infinity},c=new $3Dmol.Sphere,d=new $3Dmol.Cylinder,p=new $3Dmol.Triangle,t=new $3Dmol.Vector3,A=new $3Dmol.Vector3,y=new $3Dmol.Vector3,z=new $3Dmol.Vector3;new $3Dmol.Ray;new $3Dmol.Vector3;var f=new $3Dmol.Vector3;new $3Dmol.Matrix4;var h=function(b,c){return b.distance-c.distance},l=function(b){return Math.min(Math.max(b,-1),
1)};b.prototype.precision=1E-4;b.prototype.linePrecision=.2;b.prototype.set=function(b,c){this.ray.set(b,c)};b.prototype.intersectObjects=function(b,w){for(var e=[],G=0,g=w.length;G<g;G++)a:{var s=b,u=w[G],x=e;f.getPositionFromMatrix(s.matrixWorld);if(!0===u.clickable&&void 0!==u.intersectionShape){var q=u.intersectionShape,N=this.linePrecision,N=N*s.matrixWorld.getMaxScaleOnAxis(),N=N*N;if(void 0!==u.boundingSphere&&u.boundingSphere instanceof $3Dmol.Sphere&&(c.copy(u.boundingSphere),c.applyMatrix4(s.matrixWorld),
!this.ray.isIntersectionSphere(c)))break a;for(var I=void 0,D=void 0,C=void 0,B=void 0,F=C=void 0,J=void 0,L=void 0,K=void 0,H=void 0,M=H=F=B=void 0,I=0,D=q.triangle.length;I<D;I++)q.triangle[I]instanceof $3Dmol.Triangle&&(p.copy(q.triangle[I]),p.applyMatrix4(s.matrixWorld),C=p.getNormal(),B=this.ray.direction.dot(C),0<=B||(t.subVectors(p.a,this.ray.origin),J=C.dot(t)/B,0>J||(A.copy(this.ray.direction).multiplyScalar(J).add(this.ray.origin),A.sub(p.a),y.copy(p.b).sub(p.a),z.copy(p.c).sub(p.a),B=y.dot(z),
C=y.lengthSq(),F=z.lengthSq(),F=(C*A.dot(z)-B*A.dot(y))/(C*F-B*B),0>F||1<F||(B=(A.dot(y)-F*B)/C,0>B||1<B||1<B+F||x.push({clickable:u,distance:J})))));I=0;for(D=q.cylinder.length;I<D;I++)q.cylinder[I]instanceof $3Dmol.Cylinder&&(d.copy(q.cylinder[I]),d.applyMatrix4(s.matrixWorld),t.subVectors(d.c1,this.ray.origin),C=t.dot(d.direction),F=t.dot(this.ray.direction),B=l(this.ray.direction.dot(d.direction)),K=1-B*B,0!==K&&(H=(B*F-C)/K,M=(F-B*C)/K,A.copy(d.direction).multiplyScalar(H).add(d.c1),y.copy(this.ray.direction).multiplyScalar(M).add(this.ray.origin),
L=z.subVectors(A,y).lengthSq(),H=d.radius*d.radius,L<=H&&(H=(B*C-F)*(B*C-F)-K*(t.lengthSq()-C*C-H),F=0>=H?J=Math.sqrt(L):J=(F-B*C-Math.sqrt(H))/K,B=B*F-C,0>B||B*B>d.lengthSq()||0>F||x.push({clickable:u,distance:J}))));I=0;for(D=q.line.length;I<D;I+=2)A.copy(q.line[I]),A.applyMatrix4(s.matrixWorld),y.copy(q.line[I+1]),y.applyMatrix4(s.matrixWorld),z.subVectors(y,A),J=z.lengthSq(),z.normalize(),t.subVectors(A,this.ray.origin),lineProj=t.dot(z),F=t.dot(this.ray.direction),B=l(this.ray.direction.dot(z)),
K=1-B*B,0!==K&&(H=(B*F-lineProj)/K,M=(F-B*lineProj)/K,A.add(z.multiplyScalar(H)),y.copy(this.ray.direction).multiplyScalar(M).add(this.ray.origin),L=z.subVectors(y,A).lengthSq(),L<N&&H*H<J&&x.push({clickable:u,distance:M}));I=0;for(D=q.sphere.length;I<D;I++)if(q.sphere[I]instanceof $3Dmol.Sphere&&(c.copy(q.sphere[I]),c.applyMatrix4(s.matrixWorld),this.ray.isIntersectionSphere(c))){A.subVectors(c.center,this.ray.origin);s=A.dot(this.ray.direction);H=s*s-(A.lengthSq()-c.radius*c.radius);if(0>s)break a;
J=0>=H?s:s-Math.sqrt(H);x.push({clickable:u,distance:J});break a}}}e.sort(h);return e};return b}();$3Dmol.Projector=function(){new $3Dmol.Matrix4;var b=new $3Dmol.Matrix4;this.projectVector=function(c,d){d.matrixWorldInverse.getInverse(d.matrixWorld);b.multiplyMatrices(d.projectionMatrix,d.matrixWorldInverse);return c.applyProjection(b)};this.unprojectVector=function(c,d){d.projectionMatrixInverse.getInverse(d.projectionMatrix);b.multiplyMatrices(d.matrixWorld,d.projectionMatrixInverse);return c.applyProjection(b)}};
$3Dmol.Camera=function(b,c,d,p,t){$3Dmol.Object3D.call(this);this.fov=void 0!==b?b:50;this.aspect=void 0!==c?c:1;this.near=void 0!==d?d:.1;this.far=void 0!==p?p:2E3;this.projectionMatrix=new $3Dmol.Matrix4;this.projectionMatrixInverse=new $3Dmol.Matrix4;this.matrixWorldInverse=new $3Dmol.Matrix4;this.right=this.position.z*Math.tan(Math.PI/180*b);this.left=-this.right;this.top=this.right/this.aspect;this.bottom=-this.top;this.ortho=!!t;this.updateProjectionMatrix()};$3Dmol.Camera.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Camera.prototype.lookAt=function(b){this.matrix.lookAt(this.position,b,this.up);this.rotationAutoUpdate&&(!1===this.useQuaternion?this.rotation.setEulerFromRotationMatrix(this.matrix,this.eulerOrder):this.quaternion.copy(this.matrix.decompose()[1]))};
$3Dmol.Camera.prototype.updateProjectionMatrix=function(){this.ortho?this.projectionMatrix.makeOrthographic(this.left,this.right,this.top,this.bottom,this.near,this.far):this.projectionMatrix.makePerspective(this.fov,this.aspect,this.near,this.far);this.projectionMatrixInverse.getInverse(this.projectionMatrix)};
$3Dmol.SpritePlugin=function(){function b(b,c){return b.z!==c.z?c.z-b.z:c.id-b.id}var c,d,p,t,A,y,z,f,h,l;this.init=function(b){c=b.context;d=b;p=b.getPrecision();t=new Float32Array(16);A=new Uint16Array(6);b=0;t[b++]=-1;t[b++]=-1;t[b++]=0;t[b++]=0;t[b++]=1;t[b++]=-1;t[b++]=1;t[b++]=0;t[b++]=1;t[b++]=1;t[b++]=1;t[b++]=1;t[b++]=-1;t[b++]=1;t[b++]=0;t[b++]=1;b=0;A[b++]=0;A[b++]=1;A[b++]=2;A[b++]=0;A[b++]=2;A[b++]=3;y=c.createBuffer();z=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,y);c.bufferData(c.ARRAY_BUFFER,
t,c.STATIC_DRAW);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,z);c.bufferData(c.ELEMENT_ARRAY_BUFFER,A,c.STATIC_DRAW);b=$3Dmol.ShaderLib.sprite;var w=p,e=c.createProgram(),G=c.createShader(c.FRAGMENT_SHADER),g=c.createShader(c.VERTEX_SHADER),w="precision "+w+" float;\n";c.shaderSource(G,w+b.fragmentShader);c.shaderSource(g,w+b.vertexShader);c.compileShader(G);c.compileShader(g);c.getShaderParameter(G,c.COMPILE_STATUS)&&c.getShaderParameter(g,c.COMPILE_STATUS)?(c.attachShader(e,G),c.attachShader(e,g),c.linkProgram(e),
c.getProgramParameter(e,c.LINK_STATUS)||console.error("Could not initialize shader"),b=e):(console.error(c.getShaderInfoLog(G)),console.error("could not initialize shader"),b=null);f=b;h={};l={};h.position=c.getAttribLocation(f,"position");h.uv=c.getAttribLocation(f,"uv");l.uvOffset=c.getUniformLocation(f,"uvOffset");l.uvScale=c.getUniformLocation(f,"uvScale");l.rotation=c.getUniformLocation(f,"rotation");l.scale=c.getUniformLocation(f,"scale");l.alignment=c.getUniformLocation(f,"alignment");l.color=
c.getUniformLocation(f,"color");l.map=c.getUniformLocation(f,"map");l.opacity=c.getUniformLocation(f,"opacity");l.useScreenCoordinates=c.getUniformLocation(f,"useScreenCoordinates");l.screenPosition=c.getUniformLocation(f,"screenPosition");l.modelViewMatrix=c.getUniformLocation(f,"modelViewMatrix");l.projectionMatrix=c.getUniformLocation(f,"projectionMatrix");l.fogType=c.getUniformLocation(f,"fogType");l.fogDensity=c.getUniformLocation(f,"fogDensity");l.fogNear=c.getUniformLocation(f,"fogNear");l.fogFar=
c.getUniformLocation(f,"fogFar");l.fogColor=c.getUniformLocation(f,"fogColor");l.alphaTest=c.getUniformLocation(f,"alphaTest")};this.render=function(m,w,e,G){var g=m.__webglSprites,s=g.length;if(s){var u=h,x=l,q=.5*e,t=.5*G;c.useProgram(f);c.enableVertexAttribArray(u.position);c.enableVertexAttribArray(u.uv);c.disable(c.CULL_FACE);c.enable(c.BLEND);c.bindBuffer(c.ARRAY_BUFFER,y);c.vertexAttribPointer(u.position,2,c.FLOAT,!1,16,0);c.vertexAttribPointer(u.uv,2,c.FLOAT,!1,16,8);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,
z);c.uniformMatrix4fv(x.projectionMatrix,!1,w.projectionMatrix.elements);c.activeTexture(c.TEXTURE0);c.uniform1i(x.map,0);var p=u=0;(u=m.fog)?(c.uniform3f(x.fogColor,u.color.r,u.color.g,u.color.b),c.uniform1f(x.fogNear,u.near),c.uniform1f(x.fogFar,u.far),c.uniform1i(x.fogType,1),p=u=1):(c.uniform1i(x.fogType,0),p=u=0);var D,C,B,F=[];for(D=0;D<s;D++)C=g[D],B=C.material,C.visible&&0!==B.opacity&&(B.useScreenCoordinates?C.z=-C.position.z:(C._modelViewMatrix.multiplyMatrices(w.matrixWorldInverse,C.matrixWorld),
C.z=-C._modelViewMatrix.elements[14]));g.sort(b);for(D=0;D<s;D++)C=g[D],B=C.material,C.visible&&0!==B.opacity&&B.map&&B.map.image&&B.map.image.width&&(c.uniform1f(x.alphaTest,B.alphaTest),w=B.map.image.height,F[0]=B.map.image.width*d.devicePixelRatio/e,F[1]=w*d.devicePixelRatio/G,!0===B.useScreenCoordinates?(c.uniform1i(x.useScreenCoordinates,1),c.uniform3f(x.screenPosition,(C.position.x*d.devicePixelRatio-q)/q,(t-C.position.y*d.devicePixelRatio)/t,Math.max(0,Math.min(1,C.position.z)))):(c.uniform1i(x.useScreenCoordinates,
0),c.uniformMatrix4fv(x.modelViewMatrix,!1,C._modelViewMatrix.elements)),w=m.fog&&B.fog?p:0,u!==w&&(c.uniform1i(x.fogType,w),u=w),w=1/(B.scaleByViewport?G:1),F[0]=F[0]*w*C.scale.x,F[1]=F[1]*w*C.scale.y,c.uniform2f(x.uvScale,B.uvScale.x,B.uvScale.y),c.uniform2f(x.uvOffset,B.uvOffset.x,B.uvOffset.y),c.uniform2f(x.alignment,B.alignment.x,B.alignment.y),c.uniform1f(x.opacity,B.opacity),c.uniform3f(x.color,B.color.r,B.color.g,B.color.b),c.uniform1f(x.rotation,C.rotation),c.uniform2fv(x.scale,F),d.setDepthTest(B.depthTest),
d.setDepthWrite(B.depthWrite),d.setTexture(B.map,0),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0));c.enable(c.CULL_FACE)}}};$3Dmol.Light=function(b,c){$3Dmol.Object3D.call(this);this.color=new $3Dmol.Color(b);this.position=new $3Dmol.Vector3(0,1,0);this.target=new $3Dmol.Object3D;this.intensity=void 0!==c?c:1;this.onlyShadow=this.castShadow=!1};$3Dmol.Light.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Material=function(){$3Dmol.EventDispatcher.call(this);this.id=$3Dmol.MaterialIdCount++;this.name="";this.side=$3Dmol.FrontSide;this.opacity=1;this.transparent=!1;this.stencilTest=this.depthWrite=this.depthTest=!0;this.polygonOffset=!1;this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.needsUpdate=this.visible=!0};
$3Dmol.Material.prototype.setValues=function(b){if(void 0!==b)for(var c in b){var d=b[c];if(void 0===d)console.warn("$3Dmol.Material: '"+c+"' parameter is undefined.");else if(c in this){var p=this[c];p instanceof $3Dmol.Color&&d instanceof $3Dmol.Color?p.copy(d):p instanceof $3Dmol.Color?p.set(d):p instanceof $3Dmol.Vector3&&d instanceof $3Dmol.Vector3?p.copy(d):this[c]=d}}};
$3Dmol.Material.prototype.clone=function(b){void 0===b&&(b=new $3Dmol.Material);b.name=this.name;b.side=this.side;b.opacity=this.opacity;b.transparent=this.transparent;b.depthTest=this.depthTest;b.depthWrite=this.depthWrite;b.stencilTest=this.stencilTest;b.polygonOffset=this.polygonOffset;b.polygonOffsetFactor=this.polygonOffsetFactor;b.polygonOffsetUnits=this.polygonOffsetUnits;b.alphaTest=this.alphaTest;b.overdraw=this.overdraw;b.visible=this.visible;return b};
$3Dmol.Material.prototype.dispose=function(){this.dispatchEvent({type:"dispose"})};$3Dmol.MaterialIdCount=0;$3Dmol.LineBasicMaterial=function(b){$3Dmol.Material.call(this);this.color=new $3Dmol.Color(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.vertexColors=!1;this.fog=!0;this.shaderID="basic";this.setValues(b)};$3Dmol.LineBasicMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.LineBasicMaterial.prototype.clone=function(){var b=new $3Dmol.LineBasicMaterial;$3Dmol.Material.prototype.clone.call(this,b);b.color.copy(this.color);return b};
$3Dmol.MeshLambertMaterial=function(b){$3Dmol.Material.call(this);this.color=new $3Dmol.Color(16777215);this.ambient=new $3Dmol.Color(1048575);this.emissive=new $3Dmol.Color(0);this.wrapAround=!1;this.wrapRGB=new $3Dmol.Vector3(1,1,1);this.envMap=this.specularMap=this.lightMap=this.map=null;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.shading=$3Dmol.SmoothShading;this.shaderID="lambert";
this.vertexColors=$3Dmol.NoColors;this.skinning=!1;this.setValues(b)};$3Dmol.MeshLambertMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.MeshLambertMaterial.prototype.clone=function(b){"undefined"===typeof b&&(b=new $3Dmol.MeshLambertMaterial);$3Dmol.Material.prototype.clone.call(this,b);b.color.copy(this.color);b.ambient.copy(this.ambient);b.emissive.copy(this.emissive);b.wrapAround=this.wrapAround;b.wrapRGB.copy(this.wrapRGB);b.map=this.map;b.lightMap=this.lightMap;b.specularMap=this.specularMap;b.envMap=this.envMap;b.combine=this.combine;b.reflectivity=this.reflectivity;b.refractionRatio=this.refractionRatio;b.fog=this.fog;
b.shading=this.shading;b.shaderID=this.shaderID;b.vertexColors=this.vertexColors;b.skinning=this.skinning;b.morphTargets=this.morphTargets;b.morphNormals=this.morphNormals;return b};$3Dmol.MeshDoubleLambertMaterial=function(b){$3Dmol.MeshLambertMaterial.call(this,b);this.shaderID="lambertdouble";this.side=$3Dmol.DoubleSide};$3Dmol.MeshDoubleLambertMaterial.prototype=Object.create($3Dmol.MeshLambertMaterial.prototype);
$3Dmol.MeshDoubleLambertMaterial.prototype.clone=function(){var b=new $3Dmol.MeshDoubleLambertMaterial;$3Dmol.MeshLambertMaterial.prototype.clone.call(this,b);return b};$3Dmol.MeshOutlineMaterial=function(b){$3Dmol.Material.call(this);b=b||{};this.fog=!0;this.shaderID="outline";this.wireframe=!1;this.outlineColor=b.color||new $3Dmol.Color(0,0,0);this.outlineWidth=b.width||.1;this.outlinePushback=b.pushback||1};$3Dmol.MeshOutlineMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.MeshOutlineMaterial.prototype.clone=function(b){"undefined"===typeof b&&(b=new $3Dmol.MeshOutlineMaterial);$3Dmol.Material.prototype.clone.call(this,b);b.fog=this.fog;b.shaderID=this.shaderID;b.wireframe=this.wireframe;return b};
$3Dmol.ImposterMaterial=function(b){$3Dmol.Material.call(this);this.color=new $3Dmol.Color(16777215);this.ambient=new $3Dmol.Color(1048575);this.emissive=new $3Dmol.Color(0);this.imposter=!0;this.wrapAround=!1;this.wrapRGB=new $3Dmol.Vector3(1,1,1);this.envMap=this.specularMap=this.lightMap=this.map=null;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.shading=$3Dmol.SmoothShading;this.shaderID=
null;this.vertexColors=$3Dmol.NoColors;this.skinning=!1;this.setValues(b)};$3Dmol.ImposterMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.ImposterMaterial.prototype.clone=function(){var b=new $3Dmol.ImposterMaterial;$3Dmol.Material.prototype.clone.call(this,b);b.color.copy(this.color);b.ambient.copy(this.ambient);b.emissive.copy(this.emissive);b.wrapAround=this.wrapAround;b.wrapRGB.copy(this.wrapRGB);b.map=this.map;b.lightMap=this.lightMap;b.specularMap=this.specularMap;b.envMap=this.envMap;b.combine=this.combine;b.reflectivity=this.reflectivity;b.refractionRatio=this.refractionRatio;b.fog=this.fog;b.shading=this.shading;b.shaderID=
this.shaderID;b.vertexColors=this.vertexColors;b.skinning=this.skinning;b.morphTargets=this.morphTargets;b.morphNormals=this.morphNormals;return b};$3Dmol.SphereImposterMaterial=function(b){$3Dmol.ImposterMaterial.call(this);this.shaderID="sphereimposter";this.setValues(b)};$3Dmol.SphereImposterMaterial.prototype=Object.create($3Dmol.ImposterMaterial.prototype);
$3Dmol.SphereImposterMaterial.prototype.clone=function(){var b=new $3Dmol.SphereImposterMaterial;$3Dmol.ImposterMaterial.prototype.clone.call(this,b);return b};$3Dmol.SphereImposterOutlineMaterial=function(b){$3Dmol.ImposterMaterial.call(this);this.shaderID="sphereimposteroutline";this.outlineColor=b.color||new $3Dmol.Color(0,0,0);this.outlineWidth=b.width||.1;this.outlinePushback=b.pushback||1;this.setValues(b)};$3Dmol.SphereImposterOutlineMaterial.prototype=Object.create($3Dmol.ImposterMaterial.prototype);
$3Dmol.SphereImposterOutlineMaterial.prototype.clone=function(){var b=new $3Dmol.SphereImposterOutlineMaterial;$3Dmol.ImposterMaterial.prototype.clone.call(this,b);b.outlineColor=this.outlineColor;b.outlineWidth=this.outlineWidth;b.outlinePushback=this.outlinePushback;return b};$3Dmol.StickImposterMaterial=function(b){$3Dmol.ImposterMaterial.call(this);this.shaderID="stickimposter";this.setValues(b)};$3Dmol.StickImposterMaterial.prototype=Object.create($3Dmol.ImposterMaterial.prototype);
$3Dmol.StickImposterMaterial.prototype.clone=function(){var b=new $3Dmol.StickImposterOutlineMaterial;$3Dmol.ImposterMaterial.prototype.clone.call(this,b);return b};$3Dmol.StickImposterOutlineMaterial=function(b){$3Dmol.ImposterMaterial.call(this);this.shaderID="stickimposteroutline";this.outlineColor=b.color||new $3Dmol.Color(0,0,0);this.outlineWidth=b.width||.1;this.outlinePushback=b.pushback||1;this.setValues(b)};$3Dmol.StickImposterOutlineMaterial.prototype=Object.create($3Dmol.ImposterMaterial.prototype);
$3Dmol.StickImposterOutlineMaterial.prototype.clone=function(){var b=new $3Dmol.StickImposterOutlineMaterial;$3Dmol.ImposterMaterial.prototype.clone.call(this,b);b.outlineColor=this.outlineColor;b.outlineWidth=this.outlineWidth;b.outlinePushback=this.outlinePushback;return b};
$3Dmol.InstancedMaterial=function(b){$3Dmol.Material.call(this);this.color=new $3Dmol.Color(16777215);this.ambient=new $3Dmol.Color(1048575);this.emissive=new $3Dmol.Color(0);this.wrapAround=!1;this.wrapRGB=new $3Dmol.Vector3(1,1,1);this.envMap=this.specularMap=this.lightMap=this.map=null;this.reflectivity=1;this.refractionRatio=.98;this.fog=!0;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.shading=$3Dmol.SmoothShading;this.shaderID="instanced";
this.vertexColors=$3Dmol.NoColors;this.skinning=!1;this.sphere=null;this.setValues(b)};$3Dmol.InstancedMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.InstancedMaterial.prototype.clone=function(){var b=new $3Dmol.InstancedMaterial;$3Dmol.Material.prototype.clone.call(this,b);b.color.copy(this.color);b.ambient.copy(this.ambient);b.emissive.copy(this.emissive);b.wrapAround=this.wrapAround;b.wrapRGB.copy(this.wrapRGB);b.map=this.map;b.lightMap=this.lightMap;b.specularMap=this.specularMap;b.envMap=this.envMap;b.combine=this.combine;b.reflectivity=this.reflectivity;b.refractionRatio=this.refractionRatio;b.fog=this.fog;b.shading=this.shading;b.shaderID=
this.shaderID;b.vertexColors=this.vertexColors;b.skinning=this.skinning;b.morphTargets=this.morphTargets;b.morphNormals=this.morphNormals;b.sphere=this.sphere;return b};
$3Dmol.SpriteMaterial=function(b){$3Dmol.Material.call(this);this.color=new $3Dmol.Color(16777215);this.map=new $3Dmol.Texture;this.useScreenCoordinates=!0;this.depthTest=!this.useScreenCoordinates;this.sizeAttenuation=!this.useScreenCoordinates;this.scaleByViewPort=!this.sizeAttenuation;this.alignment=$3Dmol.SpriteAlignment.center.clone();this.fog=!1;this.uvOffset=new $3Dmol.Vector2(0,0);this.uvScale=new $3Dmol.Vector2(1,1);this.setValues(b);b=b||{};void 0===b.depthTest&&(this.depthTest=!this.useScreenCoordinates);
void 0===b.sizeAttenuation&&(this.sizeAttenuation=!this.useScreenCoordinates);void 0===b.scaleByViewPort&&(this.scaleByViewPort=!this.sizeAttenuation)};$3Dmol.SpriteMaterial.prototype=Object.create($3Dmol.Material.prototype);
$3Dmol.SpriteMaterial.prototype.clone=function(){var b=new $3Dmol.SpriteMaterial;$3Dmol.Material.prototype.clone.call(this,b);b.color.copy(this.color);b.map=this.map;b.useScreenCoordinates=useScreenCoordinates;b.sizeAttenuation=this.sizeAttenuation;b.scaleByViewport=this.scaleByViewPort;b.alignment.copy(this.alignment);b.uvOffset.copy(this.uvOffset);return b};$3Dmol.SpriteAlignment={};$3Dmol.SpriteAlignment.topLeft=new $3Dmol.Vector2(1,-1);$3Dmol.SpriteAlignment.topCenter=new $3Dmol.Vector2(0,-1);
$3Dmol.SpriteAlignment.topRight=new $3Dmol.Vector2(-1,-1);$3Dmol.SpriteAlignment.centerLeft=new $3Dmol.Vector2(1,0);$3Dmol.SpriteAlignment.center=new $3Dmol.Vector2(0,0);$3Dmol.SpriteAlignment.centerRight=new $3Dmol.Vector2(-1,0);$3Dmol.SpriteAlignment.bottomLeft=new $3Dmol.Vector2(1,1);$3Dmol.SpriteAlignment.bottomCenter=new $3Dmol.Vector2(0,1);$3Dmol.SpriteAlignment.bottomRight=new $3Dmol.Vector2(-1,1);
$3Dmol.Texture=function(b){$3Dmol.EventDispatcher.call(this);this.id=$3Dmol.TextureIdCount++;this.name="";this.image=b;this.mipmaps=[];this.mapping=new $3Dmol.UVMapping;this.wrapT=this.wrapS=$3Dmol.ClampToEdgeWrapping;this.magFilter=$3Dmol.LinearFilter;this.minFilter=$3Dmol.LinearMipMapLinearFilter;this.anisotropy=1;this.format=$3Dmol.RGBAFormat;this.type=$3Dmol.UnsignedByteType;this.offset=new $3Dmol.Vector2(0,0);this.repeat=new $3Dmol.Vector2(1,1);this.generateMipmaps=!0;this.premultiplyAlpha=!1;
this.flipY=!0;this.unpackAlignment=4;this.needsUpdate=!1;this.onUpdate=null};
$3Dmol.Texture.prototype={constructor:$3Dmol.Texture,clone:function(b){void 0===b&&(b=new $3Dmol.Texture);b.image=this.image;b.mipmaps=this.mipmaps.slice(0);b.mapping=this.mapping;b.wrapS=this.wrapS;b.wrapT=this.wrapT;b.magFilter=this.magFilter;b.minFilter=this.minFilter;b.anisotropy=this.anisotropy;b.format=this.format;b.type=this.type;b.offset.copy(this.offset);b.repeat.copy(this.repeat);b.generateMipmaps=this.generateMipmaps;b.premultiplyAlpha=this.premultiplyAlpha;b.flipY=this.flipY;b.unpackAlignment=
this.unpackAlignment;return b},dispose:function(){this.dispatchEvent({type:"dispose"})}};$3Dmol.TextureIdCount=0;$3Dmol.FrontSide=0;$3Dmol.BackSide=1;$3Dmol.DoubleSide=2;$3Dmol.NoShading=0;$3Dmol.FlatShading=1;$3Dmol.SmoothShading=2;$3Dmol.NoColors=0;$3Dmol.FaceColors=1;$3Dmol.VertexColors=2;$3Dmol.MultiplyOperation=0;$3Dmol.MixOperation=1;$3Dmol.AddOperation=2;$3Dmol.UVMapping=function(){};$3Dmol.ClampToEdgeWrapping=1001;$3Dmol.LinearFilter=1006;$3Dmol.LinearMipMapLinearFilter=1008;
$3Dmol.UnsignedByteType=1009;$3Dmol.RGBAFormat=1021;$3Dmol.Line=function(b,c,d){$3Dmol.Object3D.call(this);this.geometry=b;this.material=void 0!==c?c:new $3Dmol.LineBasicMaterial({color:16777215*Math.random()});this.type=void 0!==d?d:$3Dmol.LineStrip};$3Dmol.LineStrip=0;$3Dmol.LinePieces=1;$3Dmol.Line.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Line.prototype.clone=function(b){void 0===b&&(b=new $3Dmol.Line(this.geometry,this.material,this.type));$3Dmol.Object3D.prototype.clone.call(this,b);return b};$3Dmol.Mesh=function(b,c){$3Dmol.Object3D.call(this);this.geometry=b;this.material=void 0!==c?c:new $3Dmol.MeshBasicMaterial({color:16777215*Math.random(),wireframe:!0})};$3Dmol.Mesh.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Mesh.prototype.clone=function(b){void 0===b&&(b=new $3Dmol.Mesh(this.geometry,this.material));$3Dmol.Object3D.prototype.clone.call(this,b);return b};$3Dmol.Sprite=function(b){$3Dmol.Object3D.call(this);this.material=void 0!==b?b:new $3Dmol.SpriteMaterial;this.rotation3d=this.rotation;this.rotation=0};$3Dmol.Sprite.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Sprite.prototype.updateMatrix=function(){this.matrix.setPosition(this.position);this.rotation3d.set(0,0,this.rotation);this.matrix.setRotationFromEuler(this.rotation3d);1===this.scale.x&&1===this.scale.y||this.matrix.scale(this.scale);this.matrixWorldNeedsUpdate=!0};$3Dmol.Sprite.prototype.clone=function(b){void 0===b&&(b=new $3Dmol.Sprite(this.material));$3Dmol.Object3D.prototype.clone.call(this,b);return b};
$3Dmol.Renderer=function(b){function c(b){V[b]||(E.enableVertexAttribArray(b),V[b]=!0)}function d(b,c){var l;"fragment"===b?l=E.createShader(E.FRAGMENT_SHADER):"vertex"===b&&(l=E.createShader(E.VERTEX_SHADER));E.shaderSource(l,c);E.compileShader(l);return E.getShaderParameter(l,E.COMPILE_STATUS)?l:(console.error(E.getShaderInfoLog(l)),console.error("could not initialize shader"),null)}function p(b,c,l,f,e,h,d,m){var y,w,q;c?(w=b.length-1,m=c=-1):(w=0,c=b.length,m=1);for(var z=w;z!==c;z+=m)if(y=b[z],
y.render&&(w=y.object,q=y.buffer,y=y[l])){d&&s.setBlending(!0);s.setDepthTest(y.depthTest);s.setDepthWrite(y.depthWrite);var L=y.polygonOffset;null!==L&&(L?E.enable(E.POLYGON_OFFSET_FILL):E.disable(E.POLYGON_OFFSET_FILL));L=w._modelViewMatrix.isReflected();s.setMaterialFaces(y,L);s.renderBuffer(f,e,h,y,q,w);g&&("sphereimposter"==y.shaderID?s.renderBuffer(f,e,h,_outlineSphereImposterMaterial,q,w):"stickimposter"==y.shaderID?s.renderBuffer(f,e,h,_outlineStickImposterMaterial,q,w):y.wireframe||"basic"===
y.shaderID||0===y.opacity||s.renderBuffer(f,e,h,g,q,w))}}function t(b){return 0===(b&b-1)}function A(b){return b===$3Dmol.UnsignedByteType?E.UNSIGNED_BYTE:b===$3Dmol.RGBAFormat?E.RGBA:0}b=b||{};var y=void 0!==b.canvas?b.canvas:document.createElement("canvas"),z=void 0!==b.precision?b.precision:"highp",f=void 0!==b.alpha?b.alpha:!0,h=void 0!==b.premultipliedAlpha?b.premultipliedAlpha:!0,l=void 0!==b.antialias?b.antialias:!1,m=void 0!==b.stencil?b.stencil:!0,w=void 0!==b.preserveDrawingBuffer?b.preserveDrawingBuffer:
!1,e=void 0!==b.clearColor?new $3Dmol.Color(b.clearColor):new $3Dmol.Color(0),G=void 0!==b.clearAlpha?b.clearAlpha:0,g=void 0!==b.outline?new $3Dmol.MeshOutlineMaterial(b.outline):null;this.domElement=y;this.context=null;this.devicePixelRatio=void 0!==b.devicePixelRatio?b.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.renderPluginsPost=
[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var s=this,u=[],x=0,q=null,N=-1,I=null,D=null,C=0,B=-1,F=-1,J=-1,L=-1,K=null,H=0,M=0,O=0,R=0,V={},P=new $3Dmol.Matrix4,S=new $3Dmol.Vector3,Q=new $3Dmol.Vector3,da=!0,Y=[],ba=[],E;try{if(!(E=y.getContext("experimental-webgl",{alpha:f,premultipliedAlpha:h,antialias:l,stencil:m,preserveDrawingBuffer:w}))&&!(E=y.getContext("webgl",{alpha:f,premultipliedAlpha:h,antialias:l,stencil:m,preserveDrawingBuffer:w})))throw"Error creating WebGL context.";
}catch(aa){console.error(aa)}E.clearColor(0,0,0,1);E.clearDepth(1);E.clearStencil(0);E.enable(E.DEPTH_TEST);E.depthFunc(E.LEQUAL);E.frontFace(E.CCW);E.cullFace(E.BACK);E.enable(E.CULL_FACE);E.enable(E.BLEND);E.blendEquation(E.FUNC_ADD);E.blendFunc(E.SRC_ALPHA,E.ONE_MINUS_SRC_ALPHA);E.clearColor(e.r,e.g,e.b,G);this.context=E;var T=E.getExtension("ANGLE_instanced_arrays"),Z=E.getExtension("EXT_frag_depth");this.supportedExtensions=function(){return{supportsAIA:Boolean(T),supportsImposters:Boolean(Z)}};
this.getContext=function(){return E};this.getPrecision=function(){return z};this.setClearColorHex=function(b,c){e.setHex(b);G=c;E.clearColor(e.r,e.g,e.b,G)};this.enableOutline=function(b){g=new $3Dmol.MeshOutlineMaterial(b);_outlineSphereImposterMaterial=new $3Dmol.SphereImposterOutlineMaterial(b);_outlineStickImposterMaterial=new $3Dmol.StickImposterOutlineMaterial(b)};this.disableOutline=function(){_outlineStickImposterMaterial=_outlineSphereImposterMaterial=g=null};this.setSize=function(b,c){H=
y.width=b*this.devicePixelRatio;M=y.height=c*this.devicePixelRatio;y.style.width=b+"px";y.style.height=c+"px";E.viewport(0,0,E.drawingBufferWidth,E.drawingBufferHeight)};this.clear=function(b,c,l){var f=0;if(void 0===b||b)f|=E.COLOR_BUFFER_BIT;if(void 0===c||c)f|=E.DEPTH_BUFFER_BIT;if(void 0===l||l)f|=E.STENCIL_BUFFER_BIT;E.clear(f)};this.clearTarget=function(b,c,l){this.clear(b,c,l)};this.setMaterialFaces=function(b,c){var l=b.side===$3Dmol.DoubleSide,f=b.side===$3Dmol.BackSide,f=c?!f:f;B!==l&&(l?
E.disable(E.CULL_FACE):E.enable(E.CULL_FACE),B=l);F!==f&&(f?E.frontFace(E.CW):E.frontFace(E.CCW),F=f)};this.setDepthTest=function(b){J!==b&&(b?E.enable(E.DEPTH_TEST):E.disable(E.DEPTH_TEST),J=b)};this.setDepthWrite=function(b){L!==b&&(E.depthMask(b),L=b)};this.setBlending=function(b){b?(E.enable(E.BLEND),E.blendEquationSeparate(E.FUNC_ADD,E.FUNC_ADD),E.blendFuncSeparate(E.SRC_ALPHA,E.ONE_MINUS_SRC_ALPHA,E.ONE,E.ONE_MINUS_SRC_ALPHA)):E.disable(E.BLEND)};this.addPostPlugin=function(b){b.init(this);
this.renderPluginsPost.push(b)};var W=function(b){b=b.target;b.removeEventListener("dispose",W);b.__webglInit=void 0;void 0!==b.__webglVertexBuffer&&E.deleteBuffer(b.__webglVertexBuffer);void 0!==b.__webglColorBuffer&&E.deleteBuffer(b.__webglColorBuffer);if(void 0!==b.geometryGroups)for(var c=0,l=b.groups;c<l;c++){var f=b.geometryGroups[c];void 0!==f.__webglVertexBuffer&&E.deleteBuffer(f.__webglVertexBuffer);void 0!==f.__webglColorBuffer&&E.deleteBuffer(f.__webglColorBuffer);void 0!==f.__webglNormalBuffer&&
E.deleteBuffer(f.__webglNormalBuffer);void 0!==f.__webglFaceBuffer&&E.deleteBuffer(f.__webglFaceBuffer);void 0!==f.__webglLineBuffer&&E.deleteBuffer(f.__webglLineBuffer)}s.info.memory.geometries--},U=function(b){b=b.target;b.removeEventListener("dispose",U);b.image&&b.image.__webglTextureCube?E.deleteTexture(b.image.__webglTextureCube):b.__webglInit&&(b.__webglInit=!1,E.deleteTexture(b.__webglTexture));s.info.memory.textures--},X=function(b){b=b.target;b.removeEventListener("dispose",X);ga(b)},ga=
function(b){var c=b.program;if(void 0!==c){b.program=void 0;var l,f,e=!1;b=0;for(l=u.length;b<l;b++)if(f=u[b],f.program===c){f.usedTimes--;0===f.usedTimes&&(e=!0);break}if(!0===e){e=[];b=0;for(l=u.length;b<l;b++)f=u[b],f.program!==c&&e.push(f);u=e;E.deleteProgram(c);s.info.memory.programs--}}};this.initMaterial=function(b,c,l,f){b.addEventListener("dispose",X);if(c=b.shaderID)c=$3Dmol.ShaderLib[c],b.vertexShader=c.vertexShader,b.fragmentShader=c.fragmentShader,b.uniforms=$3Dmol.ShaderUtils.clone(c.uniforms);
var e;a:{var h=b.fragmentShader;f=b.vertexShader;l=b.uniforms;var g={wireframe:b.wireframe,fragdepth:b.imposter},y,m;c=[];c.push(h);c.push(f);for(y in g)c.push(y),c.push(g[y]);c=c.join();y=0;for(m=u.length;y<m;y++){var w=u[y];if(w.code===c){w.usedTimes++;e=w.program;break a}}y=E.createProgram();w="precision "+z+" float;";m=""+w;g=[g.fragdepth?"#extension GL_EXT_frag_depth: enable":"",g.wireframe?"#define WIREFRAME 1":"",w].join("\n");h=d("fragment",g+h);f=d("vertex",m+f);E.attachShader(y,f);E.attachShader(y,
h);E.linkProgram(y);E.getProgramParameter(y,E.LINK_STATUS)||console.error("Could not initialize shader");y.uniforms={};y.attributes={};f=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix"];for(e in l)f.push(e);for(e=0;e<f.length;e++)l=f[e],y.uniforms[l]=E.getUniformLocation(y,l);f="position normal color lineDistance offset radius".split(" ");for(e=0;e<f.length;e++)l=f[e],y.attributes[l]=E.getAttribLocation(y,l);y.id=x++;u.push({program:y,code:c,usedTimes:1});s.info.memory.programs=
u.length;e=y}b.program=e};this.renderBuffer=function(b,l,f,e,h,y){if(e.visible){var g;e.needsUpdate&&(e.program&&ga(e),s.initMaterial(e,l,f,y),e.needsUpdate=!1);var d=!1,m=e.program,w=m.uniforms;g=e.uniforms;m!=q&&(E.useProgram(m),q=m,d=!0);e.id!=N&&(N=e.id,d=!0);b!=D&&(D=b,d=!0);E.uniformMatrix4fv(w.projectionMatrix,!1,b.projectionMatrix.elements);E.uniformMatrix4fv(w.modelViewMatrix,!1,y._modelViewMatrix.elements);E.uniformMatrix3fv(w.normalMatrix,!1,y._normalMatrix.elements);if(d){g.fogColor.value=
f.color;g.fogNear.value=f.near;g.fogFar.value=f.far;if(e.shaderID.startsWith("lambert")||"instanced"===e.shaderID||e.shaderID.endsWith("imposter")){E.uniformMatrix4fv(w.viewMatrix,!1,b.matrixWorldInverse.elements);if(da){var z,L,x=0,u=0,H=0;b=0;for(f=l.length;b<f;b++)if(d=l[b],z=d.color,L=d.intensity,d instanceof $3Dmol.Light&&(x++,Q.getPositionFromMatrix(d.matrixWorld),S.getPositionFromMatrix(d.target.matrixWorld),Q.sub(S),Q.normalize(),0!==Q.x||0!==Q.y||0!==Q.z))ba[H]=Q.x,ba[H+1]=Q.y,ba[H+2]=Q.z,
Y[H]=z.r*L,Y[H+1]=z.g*L,Y[H+2]=z.b*L,H+=3,u++;da=!1}g.directionalLightColor.value=Y;g.directionalLightDirection.value=ba}else e.shaderID.endsWith("outline")?(g.outlineColor.value=e.outlineColor,g.outlineWidth.value=e.outlineWidth,g.outlinePushback.value=e.outlinePushback):"sphereimposter"===e.shaderID&&(E.uniformMatrix4fv(w.viewMatrix,!1,b.matrixWorldInverse.elements),E.uniformMatrix3fv(w.normalMatrix,!1,y._normalMatrix.elements),g.directionalLightColor.value=Y,g.directionalLightDirection.value=ba);
g.opacity.value=e.opacity;for(var F in g)w[F]&&(l=g[F].type,b=g[F].value,f=w[F],"f"===l?E.uniform1f(f,b):"fv"===l?E.uniform3fv(f,b):"c"===l?E.uniform3f(f,b.r,b.g,b.b):"f4"===l&&E.uniform4f(f,b[0],b[1],b[2],b[3]))}g=m.attributes;w=!1;m=16777215*h.id+2*m.id+(e.wireframe?1:0);m!==I&&(I=m,w=!0);if(w){for(var M in V)V[M]&&(E.disableVertexAttribArray(M),V[M]=!1);0<=g.position&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglVertexBuffer),c(g.position),E.vertexAttribPointer(g.position,3,E.FLOAT,!1,0,0));0<=g.color&&
(E.bindBuffer(E.ARRAY_BUFFER,h.__webglColorBuffer),c(g.color),E.vertexAttribPointer(g.color,3,E.FLOAT,!1,0,0));0<=g.normal&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglNormalBuffer),c(g.normal),E.vertexAttribPointer(g.normal,3,E.FLOAT,!1,0,0));0<=g.offset&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglOffsetBuffer),c(g.offset),E.vertexAttribPointer(g.offset,3,E.FLOAT,!1,0,0));0<=g.radius&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglRadiusBuffer),c(g.radius),E.vertexAttribPointer(g.radius,1,E.FLOAT,!1,0,0))}var G;y instanceof
$3Dmol.Mesh?("instanced"===e.shaderID?(G=e.sphere.geometryGroups[0],w&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglVertexBuffer),E.bufferData(E.ARRAY_BUFFER,G.vertexArray,E.STATIC_DRAW),E.bindBuffer(E.ARRAY_BUFFER,h.__webglNormalBuffer),E.bufferData(E.ARRAY_BUFFER,G.normalArray,E.STATIC_DRAW),E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),E.bufferData(E.ELEMENT_ARRAY_BUFFER,G.faceArray,E.STATIC_DRAW)),G=G.faceidx,T.vertexAttribDivisorANGLE(g.offset,1),T.vertexAttribDivisorANGLE(g.radius,1),T.vertexAttribDivisorANGLE(g.color,
1),T.drawElementsInstancedANGLE(E.TRIANGLES,G,E.UNSIGNED_SHORT,0,h.radiusArray.length),T.vertexAttribDivisorANGLE(g.offset,0),T.vertexAttribDivisorANGLE(g.radius,0),T.vertexAttribDivisorANGLE(g.color,0)):e.wireframe?(y=h.lineidx,e=e.wireframeLinewidth,e!==K&&(E.lineWidth(e),K=e),w&&E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),E.drawElements(E.LINES,y,E.UNSIGNED_SHORT,0)):(G=h.faceidx,w&&E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),E.drawElements(E.TRIANGLES,G,E.UNSIGNED_SHORT,
0)),s.info.render.calls++,s.info.render.vertices+=G,s.info.render.faces+=G/3):y instanceof $3Dmol.Line&&(y=h.vertices,h=e.linewidth,h!==K&&(E.lineWidth(h),K=h),E.drawArrays(E.LINES,0,y),s.info.render.calls++)}};this.render=function(b,c,l){if(!1===c instanceof $3Dmol.Camera)console.error("$3Dmol.Renderer.render: camera is not an instance of $3Dmol.Camera.");else{var f,e,g,h,y=b.__lights,w=b.fog;N=-1;da=!0;this.autoUpdateScene&&b.updateMatrixWorld();void 0===c.parent&&c.updateMatrixWorld();c.matrixWorldInverse.getInverse(c.matrixWorld);
P.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse);this.autoUpdateObjects&&this.initWebGLObjects(b);s.info.render.calls=0;s.info.render.vertices=0;s.info.render.faces=0;s.info.render.points=0;O=H;R=M;(this.autoClear||l)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=b.__webglObjects;l=0;for(f=h.length;l<f;l++)if(e=h[l],g=e.object,e.render=!1,g.visible){g._modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,g.matrixWorld);g._normalMatrix.getInverse(g._modelViewMatrix);
g._normalMatrix.transpose();g=e;var d=g.object.material;d.transparent?(g.opaque=null,g.transparent=d,d.wireframe||(d=d.clone(),d.opacity=0,g.blank=d)):(g.opaque=d,g.transparent=null);e.render=!0}this.setBlending(!1);p(b.__webglObjects,!0,"opaque",c,y,w,!1,null);p(b.__webglObjects,!0,"blank",c,y,w,!0,null);p(b.__webglObjects,!1,"transparent",c,y,w,!0,null);y=this.renderPluginsPost;I=-1;D=q=null;F=N=B=J=L=-1;if(y.length)for(w=0,l=y.length;w<l;w++)da=!0,y[w].render(b,c,O,R),I=-1,D=q=null,F=N=B=J=L=-1;
this.setDepthTest(!0);this.setDepthWrite(!0)}};this.initWebGLObjects=function(b){b.__webglObjects||(b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[],b.__webglFlares=[]);if(b.__objectsAdded.length){for(;b.__objectsAdded.length;){var c=b.__objectsAdded[0],l=b,f=void 0,e=void 0,g=void 0,h=void 0;if(!c.__webglInit&&(c.__webglInit=!0,c._modelViewMatrix=new $3Dmol.Matrix4,c._normalMatrix=new $3Dmol.Matrix3,void 0!==c.geometry&&void 0===c.geometry.__webglInit&&(c.geometry.__webglInit=
!0,c.geometry.addEventListener("dispose",W)),c instanceof $3Dmol.Mesh||c instanceof $3Dmol.Line))for(g=c.geometry,f=0,e=g.geometryGroups.length;f<e;f++)h=g.geometryGroups[f],h.id=C++,h.__webglVertexBuffer||(c instanceof $3Dmol.Mesh?(h.radiusArray&&(h.__webglRadiusBuffer=E.createBuffer()),h.useOffset&&(h.__webglOffsetBuffer=E.createBuffer()),h.__webglVertexBuffer=E.createBuffer(),h.__webglNormalBuffer=E.createBuffer(),h.__webglColorBuffer=E.createBuffer(),h.__webglFaceBuffer=E.createBuffer(),h.__webglLineBuffer=
E.createBuffer(),s.info.memory.geometries++,g.elementsNeedUpdate=!0,g.normalsNeedUpdate=!0):c instanceof $3Dmol.Line&&(h.__webglVertexBuffer=E.createBuffer(),h.__webglColorBuffer=E.createBuffer(),s.info.memory.geometries++),g.verticesNeedUpdate=!0,g.colorsNeedUpdate=!0);if(!c.__webglActive){if(c instanceof $3Dmol.Mesh||c instanceof $3Dmol.Line)for(g=c.geometry,f=0,e=g.geometryGroups.length;f<e;f++)h=g.geometryGroups[f],l.__webglObjects.push({buffer:h,object:c,opaque:null,transparent:null});else c instanceof
$3Dmol.Sprite&&l.__webglSprites.push(c);c.__webglActive=!0}b.__objectsAdded.splice(0,1)}I=-1}for(;b.__objectsRemoved.length;){c=b.__objectsRemoved[0];l=b;if(c instanceof $3Dmol.Mesh||c instanceof $3Dmol.Line)for(l=l.__webglObjects,f=c,e=l.length-1;0<=e;--e)l[e].object===f&&l.splice(e,1);else if(c instanceof $3Dmol.Sprite)for(l=l.__webglSprites,f=c,e=l.length-1;0<=e;--e)l[e]===f&&l.splice(e,1);c.__webglActive=!1;b.__objectsRemoved.splice(0,1)}c=0;for(l=b.__webglObjects.length;c<l;c++)if(e=b.__webglObjects[c].object,
f=e.geometry,h=void 0,e instanceof $3Dmol.Mesh||e instanceof $3Dmol.Line){e=0;for(g=f.geometryGroups.length;e<g;e++)if(h=f.geometryGroups[e],f.verticesNeedUpdate||f.elementsNeedUpdate||f.colorsNeedUpdate||f.normalsNeedUpdate){var y=E.STATIC_DRAW,d=h.vertexArray,w=h.colorArray;void 0!==h.__webglOffsetBuffer?E.bindBuffer(E.ARRAY_BUFFER,h.__webglOffsetBuffer):E.bindBuffer(E.ARRAY_BUFFER,h.__webglVertexBuffer);E.bufferData(E.ARRAY_BUFFER,d,y);E.bindBuffer(E.ARRAY_BUFFER,h.__webglColorBuffer);E.bufferData(E.ARRAY_BUFFER,
w,y);h.normalArray&&void 0!==h.__webglNormalBuffer&&(d=h.normalArray,E.bindBuffer(E.ARRAY_BUFFER,h.__webglNormalBuffer),E.bufferData(E.ARRAY_BUFFER,d,y));h.radiusArray&&void 0!==h.__webglRadiusBuffer&&(E.bindBuffer(E.ARRAY_BUFFER,h.__webglRadiusBuffer),E.bufferData(E.ARRAY_BUFFER,h.radiusArray,y));h.faceArray&&void 0!==h.__webglFaceBuffer&&(d=h.faceArray,E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),E.bufferData(E.ELEMENT_ARRAY_BUFFER,d,y));h.lineArray&&void 0!==h.__webglLineBuffer&&(d=
h.lineArray,E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),E.bufferData(E.ELEMENT_ARRAY_BUFFER,d,y))}f.verticesNeedUpdate=!1;f.elementsNeedUpdate=!1;f.normalsNeedUpdate=!1;f.colorsNeedUpdate=!1;f.buffersNeedUpdate=!1}};this.setTexture=function(b,c){if(b.needsUpdate){b.__webglInit||(b.__webglInit=!0,b.addEventListener("dispose",U),b.__webglTexture=E.createTexture(),s.info.memory.textures++);E.activeTexture(E.TEXTURE0+c);E.bindTexture(E.TEXTURE_2D,b.__webglTexture);E.pixelStorei(E.UNPACK_FLIP_Y_WEBGL,
b.flipY);E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha);E.pixelStorei(E.UNPACK_ALIGNMENT,b.unpackAlignment);var l=b.image,l=t(l.width)&&t(l.height),f=A(b.format),e=A(b.type),h=E.TEXTURE_2D;l?(E.texParameteri(h,E.TEXTURE_WRAP_S,A(b.wrapS)),E.texParameteri(h,E.TEXTURE_WRAP_T,A(b.wrapT)),E.texParameteri(h,E.TEXTURE_MAG_FILTER,A(b.magFilter)),E.texParameteri(h,E.TEXTURE_MIN_FILTER,A(b.minFilter))):(E.texParameteri(h,E.TEXTURE_WRAP_S,E.CLAMP_TO_EDGE),E.texParameteri(h,E.TEXTURE_WRAP_T,
E.CLAMP_TO_EDGE),E.texParameteri(h,E.TEXTURE_MAG_FILTER,E.LINEAR),E.texParameteri(h,E.TEXTURE_MIN_FILTER,E.LINEAR));var g=b.mipmaps;if(0<g.length&&l){for(var y=0,d=g.length;y<d;y++)h=g[y],E.texImage2D(E.TEXTURE_2D,y,f,f,e,h);b.generateMipmaps=!1}else E.texImage2D(E.TEXTURE_2D,0,f,f,e,b.image);b.generateMipmaps&&l&&E.generateMipmap(E.TEXTURE_2D);b.needsUpdate=!1;if(b.onUpdate)b.onUpdate()}else E.activeTexture(E.TEXTURE0+c),E.bindTexture(E.TEXTURE_2D,b.__webglTexture)};this.addPostPlugin(new $3Dmol.SpritePlugin)};
$3Dmol.Scene=function(){$3Dmol.Object3D.call(this);this.overrideMaterial=this.fog=null;this.matrixAutoUpdate=!1;this.__objects=[];this.__lights=[];this.__objectsAdded=[];this.__objectsRemoved=[]};$3Dmol.Scene.prototype=Object.create($3Dmol.Object3D.prototype);
$3Dmol.Scene.prototype.__addObject=function(b){b instanceof $3Dmol.Light?(-1===this.__lights.indexOf(b)&&this.__lights.push(b),b.target&&void 0===b.target.parent&&this.add(b.target)):-1===this.__objects.indexOf(b)&&(this.__objects.push(b),this.__objectsAdded.push(b),-1!==this.__objectsRemoved.indexOf(b)&&this.__objectsRemoved.splice(c,1));for(var c=0;c<b.children.length;c++)this.__addObject(b.children[c])};
$3Dmol.Scene.prototype.__removeObject=function(b){var c;b instanceof $3Dmol.Light?(c=this.__lights.indexOf(b),-1!==c&&this.__lights.splice(c,1)):(c=this.__objects.indexOf(b),-1!==c&&(this.__objects.splice(c,1),this.__objectsRemoved.push(b),-1!==this.__objectsAdded.indexOf(b)&&this.__objectsAdded.splice(c,1)));for(c=0;c<b.children.length;c++)this.__removeObject(b.children[c])};$3Dmol.Fog=function(b,c,d){this.name="";this.color=new $3Dmol.Color(b);this.near=void 0!==c?c:1;this.far=void 0!==d?d:1E3};
$3Dmol.Fog.prototype.clone=function(){return new $3Dmol.Fog(this.color.getHex(),this.near,this.far)};$3Dmol.ShaderUtils={clone:function(b){var c,d={};for(c in b){d[c]={};d[c].type=b[c].type;var p=b[c].value;p instanceof $3Dmol.Color?d[c].value=p.clone():"number"===typeof p?d[c].value=p:p instanceof Array?d[c].value=[]:console.error("Error copying shader uniforms from ShaderLib: unknown type for uniform")}return d},stickimposterFragmentShader:"uniform float opacity;\nuniform mat4 projectionMatrix;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vLight;\nvarying vec3 vColor;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\nvoid main() {\n vec3 color = abs(vColor);\n vec3 pos = cposition;\n vec3 p = pos;\n vec3 v = normalize(pos);\n vec3 pa = p1;\n vec3 va = normalize(p2-p1);\n vec3 tmp1 = v-(dot(v,va)*va);\n vec3 deltap = p-pa;\n float A = dot(tmp1,tmp1);\n if(A == 0.0) discard;\n vec3 tmp2 = deltap-(dot(deltap,va)*va);\n float B = 2.0*dot(tmp1, tmp2);\n float C = dot(tmp2,tmp2)-r*r;\n float det = (B*B) - (4.0*A*C);\n if(det < 0.0) discard;\n float sqrtDet = sqrt(det);\n float posT = (-B+sqrtDet)/(2.0*A);\n float negT = (-B-sqrtDet)/(2.0*A);\n float intersectionT = min(posT,negT);\n vec3 qi = p+v*intersectionT;\n float dotp1 = dot(va,qi-p1);\n float dotp2 = dot(va,qi-p2);\n vec3 norm;\n if( dotp1 < 0.0 || dotp2 > 0.0) {\n vec3 cp;\n if( dotp1 < 0.0) { cp = p1;\n } else {\n cp = p2;\n }\n vec3 diff = p-cp;\n A = dot(v,v);\n B = dot(diff,v)*2.0;\n C = dot(diff,diff)-r*r;\n det = (B*B) - (4.0*C);\n if(det < 0.0) discard;\n sqrtDet = sqrt(det);\n posT = (-B+sqrtDet)/(2.0);\n negT = (-B-sqrtDet)/(2.0);\n float t = min(posT,negT);\n qi = p+v*t;\n norm = normalize(qi-cp);\n } else {\n norm = normalize(qi-(dotp1*va + p1));\n }\n vec4 clipPos = projectionMatrix * vec4(qi, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n float depth = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragDepthEXT = depth;"};
$3Dmol.ShaderLib={basic:{fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vColor;\nvoid main() {\n gl_FragColor = vec4( vColor, opacity );\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}",vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nattribute vec3 position;\nattribute vec3 color;\nvarying vec3 vColor;\nvoid main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3}}},sphereimposter:{fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform mat4 projectionMatrix;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform float uDepth;\nuniform vec3 directionalLightColor[ 1 ];\nvarying vec3 vColor;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n vec3 norm = normalize(vec3(mapping.x,mapping.y,z));\n float dotProduct = dot( norm, vLight );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 vLight = directionalLightColor[ 0 ] * directionalLightWeighting;\n gl_FragColor = vec4(vLight*vColor, opacity*opacity );\n float fogFactor = smoothstep( fogNear, fogFar, gl_FragDepthEXT/gl_FragCoord.w );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}",
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nvarying vec2 mapping;\nvarying vec3 vColor;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\nvoid main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec4 adjust = projectionMatrix* vec4(normal,0.0); adjust.z = 0.0; adjust.w = 0.0;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz );\n mapping = normal.xy;\n rval = abs(normal.x);\n gl_Position = projPosition+adjust;\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}}},lambert:{fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vLightFront;\nvarying vec3 vColor;\nvoid main() {\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n #ifndef WIREFRAME\n gl_FragColor.xyz *= vLightFront;\n #endif\n gl_FragColor = gl_FragColor * vec4( vColor, opacity );\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}",
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nvarying vec3 vColor;\nvarying vec3 vLightFront;\nvoid main() {\n vColor = color;\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n vLightFront = vec3( 0.0 );\n transformedNormal = normalize( transformedNormal );\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n gl_Position = projectionMatrix * mvPosition;\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}}},instanced:{fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vLightFront;\nvarying vec3 vColor;\nvoid main() {\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n #ifndef WIREFRAME\n gl_FragColor.xyz *= vLightFront;\n #endif\n gl_FragColor = gl_FragColor * vec4( vColor, opacity );\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}",
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nattribute vec3 offset;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\nvarying vec3 vColor;\nvarying vec3 vLightFront;\nvoid main() {\n vColor = color;\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n vec4 mvPosition = modelViewMatrix * vec4( position * radius + offset, 1.0 );\n vLightFront = vec3( 0.0 );\n transformedNormal = normalize( transformedNormal );\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n gl_Position = projectionMatrix * mvPosition;\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}}},outline:{fragmentShader:"uniform float opacity;\nuniform vec3 outlineColor;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvoid main() {\n gl_FragColor = vec4( outlineColor, 1 );\n}",vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float outlineWidth;\nuniform float outlinePushback;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nvoid main() {\n vec4 norm = modelViewMatrix*vec4(normalize(normal),0.0);\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n mvPosition.xy += norm.xy*outlineWidth;\n gl_Position = projectionMatrix * mvPosition;\n mvPosition.z -= outlinePushback;\n vec4 pushpos = projectionMatrix*mvPosition;\n gl_Position.z = gl_Position.w*pushpos.z/pushpos.w;\n}",
uniforms:{opacity:{type:"f",value:1},outlineColor:{type:"c",value:new $3Dmol.Color(0,0,0)},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1}}},sphereimposteroutline:{fragmentShader:"uniform float opacity;\nuniform vec3 outlineColor;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform mat4 projectionMatrix;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\nuniform float outlinePushback;\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z-outlinePushback);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragColor = vec4(outlineColor, 1 );\n}",
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float outlineWidth;\nuniform float outlinePushback;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec2 norm = normal.xy + vec2(sign(normal.x)*outlineWidth,sign(normal.y)*outlineWidth);\n vec4 adjust = projectionMatrix* vec4(norm,normal.z,0.0); adjust.z = 0.0; adjust.w = 0.0;\n mapping = norm.xy;\n rval = abs(norm.x);\n gl_Position = projPosition+adjust;\n}",
uniforms:{opacity:{type:"f",value:1},outlineColor:{type:"c",value:new $3Dmol.Color(0,0,0)},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1}}},stickimposter:{fragmentShader:[$3Dmol.ShaderUtils.stickimposterFragmentShader," float dotProduct = dot( norm, vLight );\n vec3 light = vec3( max( dotProduct, 0.0 ) );\n gl_FragColor = vec4(light*color, opacity*opacity );\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}"].join("\n"),
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\nvoid main() {\n vColor = color; vColor.z = abs(vColor.z);\n r = abs(radius);\n vec4 to = modelViewMatrix*vec4(normal, 1.0);\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1;\n if(length(p1) > length(p2)) {\n mvPosition = to;\n }\n vec3 n = normalize(mvPosition.xyz);\n if(color.z >= 0.0) {\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm;\n } else {\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n mult *= -1.0;\n }\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*radius;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*radius;\n mvPosition.xy += mult*(cr + doublecr).xy;\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz )*directionalLightColor[0];\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}}},stickimposteroutline:{fragmentShader:$3Dmol.ShaderUtils.stickimposterFragmentShader+"gl_FragColor = vec4(color,1.0);}",vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nuniform vec3 outlineColor;\nuniform float outlineWidth;\nuniform float outlinePushback;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\nvoid main() {\n vColor = outlineColor;\n float rad = radius+sign(radius)*outlineWidth;\n r = abs(rad);\n vec4 to = modelViewMatrix*vec4(normal, 1.0);\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n to.xyz += normalize(to.xyz)*outlinePushback;\n pt.xyz += normalize(pt.xyz)*outlinePushback;\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1;\n if(length(p1) > length(p2)) {\n mvPosition = to;\n }\n vec3 n = normalize(mvPosition.xyz);\n if(color.z >= 0.0) {\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm;\n } else {\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n mult *= -1.0;\n }\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*rad;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*rad;\n mvPosition.xy += mult*(cr + doublecr).xy;\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vLight = vec3(1.0,1.0,1.0);\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},outlineColor:{type:"c",value:new $3Dmol.Color(0,0,0)},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1}}},lambertdouble:{fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vLightFront;\nvarying vec3 vLightBack;\nvarying vec3 vColor;\nvoid main() {\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n #ifndef WIREFRAME\n if ( gl_FrontFacing )\n gl_FragColor.xyz *= vLightFront;\n else\n gl_FragColor.xyz *= vLightBack;\n #endif\n gl_FragColor = gl_FragColor * vec4( vColor, opacity );\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}",
vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nvarying vec3 vColor;\nvarying vec3 vLightFront;\nvarying vec3 vLightBack;\nvoid main() {\n vColor = color;\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n vLightFront = vec3( 0.0 );\n vLightBack = vec3( 0.0 );\n transformedNormal = normalize( transformedNormal );\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n vLightBack += directionalLightColor[ 0 ] * directionalLightWeightingBack;\n gl_Position = projectionMatrix * mvPosition;\n}",
uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new $3Dmol.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}}},sprite:{fragmentShader:"uniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\n vec4 texture = texture2D(map, vUV);\n if (texture.a < alphaTest) discard;\n gl_FragColor = vec4(color * texture.xyz, texture.a * opacity);\n if (fogType > 0) {\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = 0.0;\n if (fogType == 1) {\n fogFactor = smoothstep(fogNear, fogFar, depth);\n }\n else {\n const float LOG2 = 1.442695;\n float fogFactor = exp2(- fogDensity * fogDensity * depth * depth * LOG2);\n fogFactor = 1.0 - clamp(fogFactor, 0.0, 1.0);\n }\n gl_FragColor = mix(gl_FragColor, vec4(fogColor, gl_FragColor.w), fogFactor);\n }\n}",
vertexShader:"uniform int useScreenCoordinates;\nuniform vec3 screenPosition;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 alignment;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\n vUV = uvOffset + uv * uvScale;\n vec2 alignedPosition = position + alignment;\n vec2 rotatedPosition;\n rotatedPosition.x = ( cos(rotation) * alignedPosition.x - sin(rotation) * alignedPosition.y ) * scale.x;\n rotatedPosition.y = ( sin(rotation) * alignedPosition.x + cos(rotation) * alignedPosition.y ) * scale.y;\n vec4 finalPosition;\n if(useScreenCoordinates != 0) {\n finalPosition = vec4(screenPosition.xy + rotatedPosition, screenPosition.z, 1.0);\n }\n else {\n finalPosition = projectionMatrix * modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0); finalPosition /= finalPosition.w;\n finalPosition.xy += rotatedPosition; \n }\n gl_Position = finalPosition;\n}",
uniforms:{}}};"undefined"===typeof console&&(console={log:function(){}});
$3Dmol.ProteinSurface=function(){var b=0,c=0,d=0,p=2,t=0,A=0,y=0,z=0,f=null,h=null,l=null,m=0,w=0,e=0,G=0,g=0,s=0,u={H:1.2,Li:1.82,Na:2.27,K:2.75,C:1.7,N:1.55,O:1.52,F:1.47,P:1.8,S:1.8,CL:1.75,BR:1.85,SE:1.9,ZN:1.39,CU:1.4,NI:1.63,X:2},x=function(b){return b.elem&&"undefined"!=typeof u[b.elem]?b.elem:"X"},q={},N={},I,D,C=[new Int32Array([1,0,0]),new Int32Array([-1,0,0]),new Int32Array([0,1,0]),new Int32Array([0,-1,0]),new Int32Array([0,0,1]),new Int32Array([0,0,-1]),new Int32Array([1,1,0]),new Int32Array([1,
-1,0]),new Int32Array([-1,1,0]),new Int32Array([-1,-1,0]),new Int32Array([1,0,1]),new Int32Array([1,0,-1]),new Int32Array([-1,0,1]),new Int32Array([-1,0,-1]),new Int32Array([0,1,1]),new Int32Array([0,1,-1]),new Int32Array([0,-1,1]),new Int32Array([0,-1,-1]),new Int32Array([1,1,1]),new Int32Array([1,1,-1]),new Int32Array([1,-1,1]),new Int32Array([-1,1,1]),new Int32Array([1,-1,-1]),new Int32Array([-1,-1,1]),new Int32Array([-1,1,-1]),new Int32Array([-1,-1,-1])];this.getFacesAndVertices=function(e){var g=
{},y,w;y=0;for(w=e.length;y<w;y++)g[e[y]]=!0;e=D;y=0;for(w=e.length;y<w;y++)e[y].x=e[y].x/p-b,e[y].y=e[y].y/p-c,e[y].z=e[y].z/p-d;var m=[];y=0;for(w=I.length;y<w;y+=3){var q=I[y],z=I[y+1],x=I[y+2],s=e[z].atomid,u=e[x].atomid,G=e[q].atomid;s<G&&(G=s);u<G&&(G=u);g[G]&&q!==z&&z!==x&&q!==x&&(m.push(q),m.push(z),m.push(x))}l=h=f=null;return{vertices:e,faces:m}};this.initparm=function(q,x,L){1E6<L&&(p=1);L=1/p*5.5;m=q[0][0];G=q[1][0];w=q[0][1];g=q[1][1];e=q[0][2];s=q[1][2];x?(m-=1.4+L,w-=1.4+L,e-=1.4+L,
G+=1.4+L,g+=1.4+L,s+=1.4+L):(m-=L,w-=L,e-=L,G+=L,g+=L,s+=L);m=Math.floor(m*p)/p;w=Math.floor(w*p)/p;e=Math.floor(e*p)/p;G=Math.ceil(G*p)/p;g=Math.ceil(g*p)/p;s=Math.ceil(s*p)/p;b=-m;c=-w;d=-e;y=Math.ceil(p*(G-m))+1;A=Math.ceil(p*(g-w))+1;t=Math.ceil(p*(s-e))+1;this.boundingatom(x);z=1.4*p;f=new Uint8Array(y*A*t);h=new Float64Array(y*A*t);l=new Int32Array(y*A*t)};this.boundingatom=function(b){var c=[],l,f;flagradius=b;for(var e in u)if(u.hasOwnProperty(e))for(f=u[e],c[e]=b?(f+1.4)*p+.5:f*p+.5,f=c[e]*
c[e],N[e]=Math.floor(c[e])+1,q[e]=new Int32Array(N[e]*N[e]),j=indx=0;j<N[e];j++)for(k=0;k<N[e];k++)l=j*j+k*k,l>f?q[e][indx]=-1:(l=Math.sqrt(f-l),q[e][indx]=Math.floor(l)),indx++};this.fillvoxels=function(b,c){var e,g;e=0;for(g=f.length;e<g;e++)f[e]=0,h[e]=-1,l[e]=-1;for(e in c)g=b[c[e]],void 0!==g&&this.fillAtom(g,b);e=0;for(g=f.length;e<g;e++)f[e]&1&&(f[e]|=2)};this.fillAtom=function(e,h){var g,w,m,z,s,u,G,B,D,C,I,Y,ba,E,aa,T,Z;g=Math.floor(.5+p*(e.x+b));w=Math.floor(.5+p*(e.y+c));m=Math.floor(.5+
p*(e.z+d));var W=x(e),U=0,X=A*t;C=0;for(Z=N[W];C<Z;C++)for(I=0;I<Z;I++){if(-1!=q[W][U])for(E=-1;2>E;E++)for(aa=-1;2>aa;aa++)for(T=-1;2>T;T++)if(0!==E&&0!==aa&&0!==T)for(G=E*C,D=T*I,Y=0;Y<=q[W][U];Y++)B=Y*aa,z=g+G,s=w+B,ba=m+D,0>z||0>s||0>ba||z>=y||s>=A||ba>=t||(ba=z*X+s*t+ba,f[ba]&1?(u=h[l[ba]],u.serial!=e.serial&&(z=g+G-Math.floor(.5+p*(u.x+b)),s=w+B-Math.floor(.5+p*(u.y+c)),u=m+D-Math.floor(.5+p*(u.z+d)),G*G+B*B+D*D<z*z+s*s+u*u&&(l[ba]=e.serial))):(f[ba]|=1,l[ba]=e.serial));U++}};this.fillvoxelswaals=
function(b,c){var l,e;l=0;for(e=f.length;l<e;l++)f[l]&=-3;for(l in c)e=b[c[l]],void 0!==e&&this.fillAtomWaals(e,b)};this.fillAtomWaals=function(e,h){var g,w,m,z,s,u,G=0,B,D,C,I,Y,ba,E,aa,T,Z,W;g=Math.floor(.5+p*(e.x+b));w=Math.floor(.5+p*(e.y+c));m=Math.floor(.5+p*(e.z+d));var U=x(e),X=A*t;Y=0;for(W=N[U];Y<W;Y++)for(ba=0;ba<W;ba++){if(-1!=q[U][G])for(aa=-1;2>aa;aa++)for(T=-1;2>T;T++)for(Z=-1;2>Z;Z++)if(0!==aa&&0!==T&&0!==Z)for(B=aa*Y,C=Z*ba,E=0;E<=q[U][G];E++)D=E*T,z=g+B,s=w+D,I=m+C,0>z||0>s||0>I||
z>=y||s>=A||I>=t||(I=z*X+s*t+I,f[I]&2?(u=h[l[I]],u.serial!=e.serial&&(z=g+B-Math.floor(.5+p*(u.x+b)),s=w+D-Math.floor(.5+p*(u.y+c)),u=m+C-Math.floor(.5+p*(u.z+d)),B*B+D*D+C*C<z*z+s*s+u*u&&(l[I]=e.serial))):(f[I]|=2,l[I]=e.serial));G++}};this.buildboundary=function(){var b=A*t;for(i=0;i<y;i++)for(j=0;j<t;j++)for(k=0;k<A;k++){var c=i*b+k*t+j;if(f[c]&1)for(var l=0;26>l;){var e=i+C[l][0],h=j+C[l][2],g=k+C[l][1];if(-1<e&&e<y&&-1<g&&g<A&&-1<h&&h<t&&!(f[e*b+g*t+h]&1)){f[c]|=4;break}else l++}}};var B=function(b,
c,l){var e=new Int32Array(b*c*l*3);this.set=function(b,f,h,g){b=3*((b*c+f)*l+h);e[b]=g.ix;e[b+1]=g.iy;e[b+2]=g.iz};this.get=function(b,f,h){b=3*((b*c+f)*l+h);return{ix:e[b],iy:e[b+1],iz:e[b+2]}}};this.fastdistancemap=function(){var b,c,l,e=new B(y,A,t),g=A*t,w=z*z,d=[];l=[];var m;for(b=0;b<y;b++)for(c=0;c<A;c++)for(l=0;l<t;l++)if(m=b*g+c*t+l,f[m]&=-3,f[m]&1&&f[m]&4){var q={ix:b,iy:c,iz:l};e.set(b,c,l,q);d.push(q);h[m]=0;f[m]|=2;f[m]&=-5}do for(l=this.fastoneshell(d,e),d=[],b=0,c=l.length;b<c;b++)m=
g*l[b].ix+t*l[b].iy+l[b].iz,f[m]&=-5,h[m]<=1.0404*w&&d.push({ix:l[b].ix,iy:l[b].iy,iz:l[b].iz});while(0!==d.length);b=p-.5;0>b&&(b=0);w-=.5/(.1+b);for(b=0;b<y;b++)for(c=0;c<A;c++)for(l=0;l<t;l++)m=b*g+c*t+l,f[m]&=-5,f[m]&1&&(!(f[m]&2)||f[m]&2&&h[m]>=w)&&(f[m]|=4)};this.fastoneshell=function(b,c){var l,e,g,m,w,d,q,z,x,s,u,G=[];if(0===b.length)return G;tnv={ix:-1,iy:-1,iz:-1};var B=A*t;q=0;for(x=b.length;q<x;q++)for(l=b[q].ix,e=b[q].iy,g=b[q].iz,s=c.get(l,e,g),z=0;6>z;z++)tnv.ix=l+C[z][0],tnv.iy=e+
C[z][1],tnv.iz=g+C[z][2],tnv.ix<y&&-1<tnv.ix&&tnv.iy<A&&-1<tnv.iy&&tnv.iz<t&&-1<tnv.iz&&(u=tnv.ix*B+t*tnv.iy+tnv.iz,f[u]&1&&!(f[u]&2)?(c.set(tnv.ix,tnv.iy,g+C[z][2],s),m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-s.iz,m=m*m+w*w+d*d,h[u]=m,f[u]|=2,f[u]|=4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})):f[u]&1&&f[u]&2&&(m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-s.iz,m=m*m+w*w+d*d,m<h[u]&&(c.set(tnv.ix,tnv.iy,tnv.iz,s),h[u]=m,f[u]&4||(f[u]|=4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})))));q=0;for(x=b.length;q<x;q++)for(l=
b[q].ix,e=b[q].iy,g=b[q].iz,s=c.get(l,e,g),z=6;18>z;z++)tnv.ix=l+C[z][0],tnv.iy=e+C[z][1],tnv.iz=g+C[z][2],tnv.ix<y&&-1<tnv.ix&&tnv.iy<A&&-1<tnv.iy&&tnv.iz<t&&-1<tnv.iz&&(u=tnv.ix*B+t*tnv.iy+tnv.iz,f[u]&1&&!(f[u]&2)?(c.set(tnv.ix,tnv.iy,g+C[z][2],s),m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-s.iz,m=m*m+w*w+d*d,h[u]=m,f[u]|=2,f[u]|=4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})):f[u]&1&&f[u]&2&&(m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-s.iz,m=m*m+w*w+d*d,m<h[u]&&(c.set(tnv.ix,tnv.iy,tnv.iz,s),h[u]=m,f[u]&4||(f[u]|=
4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})))));q=0;for(x=b.length;q<x;q++)for(l=b[q].ix,e=b[q].iy,g=b[q].iz,s=c.get(l,e,g),z=18;26>z;z++)tnv.ix=l+C[z][0],tnv.iy=e+C[z][1],tnv.iz=g+C[z][2],tnv.ix<y&&-1<tnv.ix&&tnv.iy<A&&-1<tnv.iy&&tnv.iz<t&&-1<tnv.iz&&(u=tnv.ix*B+t*tnv.iy+tnv.iz,f[u]&1&&!(f[u]&2)?(c.set(tnv.ix,tnv.iy,g+C[z][2],s),m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-s.iz,m=m*m+w*w+d*d,h[u]=m,f[u]|=2,f[u]|=4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})):f[u]&1&&f[u]&2&&(m=tnv.ix-s.ix,w=tnv.iy-s.iy,d=tnv.iz-
s.iz,m=m*m+w*w+d*d,m<h[u]&&(c.set(tnv.ix,tnv.iy,tnv.iz,s),h[u]=m,f[u]&4||(f[u]|=4,G.push({ix:tnv.ix,iy:tnv.iy,iz:tnv.iz})))));return G};this.marchingcubeinit=function(b){for(var c=0,l=f.length;c<l;c++)1==b?f[c]&=-5:4==b?(f[c]&=-3,f[c]&4&&(f[c]|=2),f[c]&=-5):2==b?f[c]&4&&f[c]&2?f[c]&=-5:f[c]&4&&!(f[c]&2)&&(f[c]|=2):3==b&&(f[c]&=-5)};this.marchingcube=function(b){this.marchingcubeinit(b);D=[];I=[];$3Dmol.MarchingCube.march(f,D,I,{smooth:1,nX:y,nY:A,nZ:t});b=A*t;for(var c=0,e=D.length;c<e;c++)D[c].atomid=
l[D[c].x*b+t*D[c].y+D[c].z];$3Dmol.MarchingCube.laplacianSmooth(1,D,I)}};
$(document).ready(function(){void 0!==$(".viewer_3Dmoljs")[0]&&($3Dmol.autoinit=!0);if($3Dmol.autoinit){$3Dmol.viewers={};var b=0;$(".viewer_3Dmoljs").each(function(){var c=$(this),d=null;"static"==c.css("position")&&c.css("position","relative");var p="function"===typeof window[c.data("callback")]?window[c.data("callback")]:null,t=null;c.data("pdb")?(d="http://www.rcsb.org/pdb/files/"+c.data("pdb")+".pdb",t="pdb"):c.data("cid")?(t="sdf",d="http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+c.data("cid")+
"/SDF?record_type=3d"):c.data("href")&&(d=c.data("href"));var A=$3Dmol.CC.color(c.data("backgroundcolor")),y={line:{}};c.data("style")&&(y=$3Dmol.specStringToObject(c.data("style")));var z={};c.data("select")&&(z=$3Dmol.specStringToObject(c.data("select")));var f=[],h=[],l=[],m=c.data(),w=/style(.+)/,e=/surface(.*)/,G=/labelres(.*)/,g=[],s;for(s in m)m.hasOwnProperty(s)&&g.push(s);g.sort();for(var u=0;u<g.length;u++){s=g[u];var x=w.exec(s);if(x){var x="select"+x[1],x=$3Dmol.specStringToObject(m[x]),
q=$3Dmol.specStringToObject(m[s]);f.push([x,q])}if(x=e.exec(s))x="select"+x[1],x=$3Dmol.specStringToObject(m[x]),q=$3Dmol.specStringToObject(m[s]),h.push([x,q]);if(x=G.exec(s))x="select"+x[1],x=$3Dmol.specStringToObject(m[x]),q=$3Dmol.specStringToObject(m[s]),l.push([x,q])}var N=function(b){b.setStyle(z,y);for(var c=0;c<f.length;c++){var e=f[c][0]||{},g=f[c][1]||{line:{}};b.setStyle(e,g)}for(c=0;c<h.length;c++)e=h[c][0]||{},g=h[c][1]||{},b.addSurface($3Dmol.SurfaceType.VDW,g,e,e);for(c=0;c<l.length;c++)e=
l[c][0]||{},g=l[c][1]||{},b.addResLabels(e,g);b.zoomTo();b.render()},I=null;try{I=$3Dmol.viewers[this.id||b++]=$3Dmol.createViewer(c,{defaultcolors:$3Dmol.rasmolElementColors}),I.setBackgroundColor(A)}catch(D){window.location="http://get.webgl.org"}d?((t=c.data("type")||c.data("datatype")||t)||(t=d.substr(d.lastIndexOf(".")+1)),$.get(d,function(b){I.addModel(b,t);N(I);p&&p(I)},"text")):(c.data("element")&&(d=$("#"+c.data("element")).val()||"",t=c.data("type")||c.data("datatype"),t||(console.log("Warning: No type specified for embedded viewer with moldata from "+
c.data("element")+"\n assuming type 'pdb'"),t="pdb"),I.addModel(d,t)),N(I),p&&p(I))})}});(function(){$3Dmol.elementColors.greenCarbon.C=65280;$3Dmol.elementColors.cyanCarbon.C=65535;$3Dmol.elementColors.magentaCarbon.C=16711935;$3Dmol.elementColors.yellowCarbon.C=16776960;$3Dmol.elementColors.whiteCarbon.C=16777215;$3Dmol.elementColors.orangeCarbon.C=16737792;$3Dmol.elementColors.purpleCarbon.C=8388736;$3Dmol.elementColors.blueCarbon.C=255});
$3Dmol.CC={cache:{0:new $3Dmol.Color(0)},color:function color_(c){if(!c)return this.cache[0];if("undefined"!==typeof this.cache[c])return this.cache[c];if(c&&c.constructor===Array)return c.map(color_,this);c=this.getHex(c);if("number"===typeof c){var d=new $3Dmol.Color(c);return this.cache[c]=d}return c},colorTab:{white:16777215,silver:12632256,gray:8421504,grey:8421504,black:0,red:16711680,maroon:8388608,yellow:16776960,orange:16737792,olive:8421376,lime:65280,green:32768,aqua:65535,cyan:65535,teal:32896,
blue:255,navy:128,fuchsia:16711935,magenta:16711935,purple:8388736},getHex:function(b){return isNaN(parseInt(b))?"string"===typeof b?this.colorTab[b.trim().toLowerCase()]||0:b:parseInt(b)}};$3Dmol.CC=$3Dmol.CC;$3Dmol.CC.color=$3Dmol.CC.color;
$3Dmol.getColorFromStyle=function(b,c){var d=b.color;"undefined"!=typeof c.color&&"spectrum"!=c.color&&(d=c.color);if("undefined"!=typeof c.colorscheme)if("undefined"!=typeof $3Dmol.elementColors[c.colorscheme]){var p=$3Dmol.elementColors[c.colorscheme];"undefined"!=typeof p[b.elem]&&(d=p[b.elem])}else if("undefined"!=typeof c.colorscheme[b.elem])d=c.colorscheme[b.elem];else if("undefined"!=typeof c.colorscheme.prop&&"undefined"!=typeof c.colorscheme.gradient){var t=c.colorscheme.prop,p=c.colorscheme.gradient,
A=p.range()||[-1,1],t=$3Dmol.getAtomProperty(b,t);null!=t&&(d=p.valueToHex(t,A))}else"undefined"!=typeof c.colorscheme.prop&&"undefined"!=typeof c.colorscheme.map&&(t=c.colorscheme.prop,t=$3Dmol.getAtomProperty(b,t),"undefined"!=typeof c.colorscheme.map[t]&&(d=c.colorscheme.map[t]));else"undefined"!=typeof c.colorfunc&&(d=c.colorfunc(b));return $3Dmol.CC.color(d)};$3Dmol.ssColors=$3Dmol.ssColors||{};$3Dmol.ssColors.pyMOL={h:16711680,s:16776960,c:65280};
$3Dmol.ssColors.Jmol={h:16711808,s:16762880,c:16777215};$3Dmol.elementColors=$3Dmol.elementColors||{};$3Dmol.elementColors.defaultColor=16716947;
$3Dmol.elementColors.Jmol={H:16777215,He:14286847,HE:14286847,Li:13402367,LI:13402367,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,Na:11230450,NA:11230450,Mg:9109248,MG:9109248,Al:12560038,AL:12560038,Si:1578E4,SI:1578E4,P:16744448,S:16777008,Cl:2093087,CL:2093087,Ca:4062976,CA:4062976,Ti:12567239,TI:12567239,Cr:9083335,CR:9083335,Mn:10255047,MN:10255047,Fe:14706227,FE:14706227,Ni:5296208,NI:5296208,Cu:13140019,CU:13140019,Zn:8224944,ZN:8224944,Br:10889513,BR:10889513,Ag:12632256,AG:12632256,
I:9699476,Ba:51456,BA:51456,Au:16765219,AU:16765219};
$3Dmol.elementColors.rasmol={H:16777215,He:16761035,HE:16761035,Li:11674146,LI:11674146,B:65280,C:13158600,N:9408511,O:15728640,F:14329120,Na:255,NA:255,Mg:2263842,MG:2263842,Al:8421520,AL:8421520,Si:14329120,SI:14329120,P:16753920,S:16762930,Cl:65280,CL:65280,Ca:8421520,CA:8421520,Ti:8421520,TI:8421520,Cr:8421520,CR:8421520,Mn:8421520,MN:8421520,Fe:16753920,FE:16753920,Ni:10824234,NI:10824234,Cu:10824234,CU:10824234,Zn:10824234,ZN:10824234,Br:10824234,BR:10824234,Ag:8421520,AG:8421520,I:10494192,
Ba:16753920,BA:16753920,Au:14329120,AU:14329120};$3Dmol.elementColors.defaultColors=$3Dmol.elementColors.rasmol;$3Dmol.elementColors.greenCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.greenCarbon.C=65280;$3Dmol.elementColors.cyanCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.cyanCarbon.C=65535;$3Dmol.elementColors.magentaCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.magentaCarbon.C=16711935;
$3Dmol.elementColors.yellowCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.yellowCarbon.C=16776960;$3Dmol.elementColors.whiteCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.whiteCarbon.C=16777215;$3Dmol.elementColors.orangeCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.orangeCarbon.C=16737792;$3Dmol.elementColors.purpleCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.purpleCarbon.C=8388736;
$3Dmol.elementColors.blueCarbon=$.extend({},$3Dmol.elementColors.defaultColors);$3Dmol.elementColors.blueCarbon.C=255;$3Dmol=$3Dmol||{};
$3Dmol.drawCartoon=function(){var b=function(b,c){var f=[],h=b,h=[];h.push(b[0]);var l,m,w,e,d,g;l=1;for(m=b.length-1;l<m;l++)e=b[l],d=b[l+1],e.smoothen?h.push(new $3Dmol.Vector3((e.x+d.x)/2,(e.y+d.y)/2,(e.z+d.z)/2)):h.push(e);h.push(b[b.length-1]);l=-1;for(m=h.length;l<=m-3;l++)if(w=h[-1===l?0:l],e=h[l+1],d=h[l+2],g=h[l===m-3?m-1:l+3],w=(new $3Dmol.Vector3).subVectors(d,w).multiplyScalar(.5),g=(new $3Dmol.Vector3).subVectors(g,e).multiplyScalar(.5),!d.skip)for(var s=0;s<c;s++){var u=1/c*s,u=new $3Dmol.Vector3(e.x+
u*w.x+u*u*(-3*e.x+3*d.x-2*w.x-g.x)+u*u*u*(2*e.x-2*d.x+w.x+g.x),e.y+u*w.y+u*u*(-3*e.y+3*d.y-2*w.y-g.y)+u*u*u*(2*e.y-2*d.y+w.y+g.y),e.z+u*w.z+u*u*(-3*e.z+3*d.z-2*w.z-g.z)+u*u*u*(2*e.z-2*d.z+w.z+g.z)),x=Math.floor((f.length+2)/c);void 0!==b[x]&&void 0!==b[x].atom&&(u.atom=b[x].atom);f.push(u)}f.push(h[h.length-1]);return f},c=function(b,c,f,h,l,m){l=new $3Dmol.Geometry(!0);for(var d,e,G,g,s=0,u=c.length;s<u;s++){g=Math.round(s*(h.length-1)/u);G=$3Dmol.CC.color(h[g]);geoGroup=l.updateGeoGroup(2);var x=
geoGroup.vertexArray,q=geoGroup.colorArray;g=geoGroup.faceArray;d=geoGroup.vertices;e=3*d;x[e]=c[s].x;x[e+1]=c[s].y;x[e+2]=c[s].z;x[e+3]=f[s].x;x[e+4]=f[s].y;x[e+5]=f[s].z;for(x=0;6>x;++x)q[e+3*x]=G.r,q[e+1+3*x]=G.g,q[e+2+3*x]=G.b;0<s&&(d=[d,d+1,d-1,d-2],e=geoGroup.faceidx,g[e]=d[0],g[e+1]=d[1],g[e+2]=d[3],g[e+3]=d[1],g[e+4]=d[2],g[e+5]=d[3],geoGroup.faceidx+=6);geoGroup.vertices+=2}l.initTypedArrays();l.setUpNormals();c=new $3Dmol.MeshDoubleLambertMaterial;"number"===typeof m&&0<=m&&1>m&&(c.transparent=
!0,c.opacity=m);c.vertexColors=$3Dmol.FaceColors;m=new $3Dmol.Mesh(l,c);b.add(m)},d=function(c,d,f,h,l){0!==d.length&&(l=void 0===l?5:l,h=new $3Dmol.Geometry,b(d,l),d=new $3Dmol.LineBasicMaterial({linewidth:f}),d.vertexColors=!0,d=new $3Dmol.Line(h,d),d.type=$3Dmol.LineStrip,c.add(d))},p=function(d,z,f,h,l,m,w){w&&"default"!==w||(w="rectangle");if("edged"===w){if(!(2>z.length)){var e,G;e=z[0];G=z[z.length-1];z=h||axisDIV;e=b(e,z);G=b(G,z);if(l){z=new $3Dmol.Geometry(!0);var g=[],s,u,x,q,t,p=[[0,2,
-6,-8],[-4,-2,6,4],[7,-1,-5,3],[-3,5,1,-7]],D,C,B,A,J,L,K,H;J=0;for(L=e.length;J<L;J++){C=Math.round(J*(f.length-1)/L);C=$3Dmol.CC.color(f[C]);g.push(u=e[J]);g.push(u);g.push(x=G[J]);g.push(x);J<L-1&&(s=e[J+1].clone().sub(e[J]),s=G[J].clone().sub(e[J]).cross(s).normalize().multiplyScalar(l));g.push(q=e[J].clone().add(s));g.push(q);g.push(t=G[J].clone().add(s));g.push(t);void 0!==u.atom&&(B=u.atom);w=z.updateGeoGroup(8);K=w.vertexArray;H=w.colorArray;var M=w.faceArray;h=w.vertices;D=3*h;K[D]=u.x;K[D+
1]=u.y;K[D+2]=u.z;K[D+3]=u.x;K[D+4]=u.y;K[D+5]=u.z;K[D+6]=x.x;K[D+7]=x.y;K[D+8]=x.z;K[D+9]=x.x;K[D+10]=x.y;K[D+11]=x.z;K[D+12]=q.x;K[D+13]=q.y;K[D+14]=q.z;K[D+15]=q.x;K[D+16]=q.y;K[D+17]=q.z;K[D+18]=t.x;K[D+19]=t.y;K[D+20]=t.z;K[D+21]=t.x;K[D+22]=t.y;K[D+23]=t.z;for(K=0;8>K;++K)H[D+3*K]=C.r,H[D+1+3*K]=C.g,H[D+2+3*K]=C.b;if(0<J)for(D=void 0!==A&&void 0!==B&&A.serial!==B.serial,K=0;4>K;K++)if(H=[h+p[K][0],h+p[K][1],h+p[K][2],h+p[K][3]],x=w.faceidx,M[x]=H[0],M[x+1]=H[1],M[x+2]=H[3],M[x+3]=H[1],M[x+4]=
H[2],M[x+5]=H[3],w.faceidx+=6,B.clickable||A.clickable){t=g[H[3]].clone();x=g[H[0]].clone();var O=g[H[2]].clone();q=g[H[1]].clone();t.atom=g[H[3]].atom||null;O.atom=g[H[2]].atom||null;x.atom=g[H[0]].atom||null;q.atom=g[H[1]].atom||null;if(D){var R=t.clone().add(x).multiplyScalar(.5),V=O.clone().add(q).multiplyScalar(.5),P=t.clone().add(q).multiplyScalar(.5);0===K%2?(A.clickable&&(H=new $3Dmol.Triangle(R,P,t),u=new $3Dmol.Triangle(V,O,P),t=new $3Dmol.Triangle(P,O,t),A.intersectionShape.triangle.push(H),
A.intersectionShape.triangle.push(u),A.intersectionShape.triangle.push(t)),B.clickable&&(H=new $3Dmol.Triangle(x,q,P),u=new $3Dmol.Triangle(q,V,P),t=new $3Dmol.Triangle(x,P,R),B.intersectionShape.triangle.push(H),B.intersectionShape.triangle.push(u),B.intersectionShape.triangle.push(t))):(B.clickable&&(H=new $3Dmol.Triangle(R,P,t),u=new $3Dmol.Triangle(V,O,P),t=new $3Dmol.Triangle(P,O,t),B.intersectionShape.triangle.push(H),B.intersectionShape.triangle.push(u),B.intersectionShape.triangle.push(t)),
A.clickable&&(H=new $3Dmol.Triangle(x,q,P),u=new $3Dmol.Triangle(q,V,P),t=new $3Dmol.Triangle(x,P,R),A.intersectionShape.triangle.push(H),A.intersectionShape.triangle.push(u),A.intersectionShape.triangle.push(t)))}else B.clickable&&(H=new $3Dmol.Triangle(x,q,t),u=new $3Dmol.Triangle(q,O,t),B.intersectionShape.triangle.push(H),B.intersectionShape.triangle.push(u))}w.vertices+=8;A=B}f=g.length-8;w=z.updateGeoGroup(8);K=w.vertexArray;H=w.colorArray;M=w.faceArray;h=w.vertices;D=3*h;x=w.faceidx;for(J=
0;4>J;J++)g.push(g[2*J]),g.push(g[f+2*J]),l=g[2*J],B=g[f+2*J],K[D+6*J]=l.x,K[D+1+6*J]=l.y,K[D+2+6*J]=l.z,K[D+3+6*J]=B.x,K[D+4+6*J]=B.y,K[D+5+6*J]=B.z,H[D+6*J]=C.r,H[D+1+6*J]=C.g,H[D+2+6*J]=C.b,H[D+3+6*J]=C.r,H[D+4+6*J]=C.g,H[D+5+6*J]=C.b;H=[h,h+2,h+6,h+4];u=[h+1,h+5,h+7,h+3];M[x]=H[0];M[x+1]=H[1];M[x+2]=H[3];M[x+3]=H[1];M[x+4]=H[2];M[x+5]=H[3];M[x+6]=u[0];M[x+7]=u[1];M[x+8]=u[3];M[x+9]=u[1];M[x+10]=u[2];M[x+11]=u[3];w.faceidx+=12;w.vertices+=8;z.initTypedArrays();z.setUpNormals();f=new $3Dmol.MeshDoubleLambertMaterial;
f.vertexColors=$3Dmol.FaceColors;"number"===typeof m&&0<=m&&1>m&&(f.transparent=!0,f.opacity=m);m=new $3Dmol.Mesh(z,f);d.add(m)}else c(d,e,G,f,z,m)}}else if("rectangle"===w||"oval"===w||"parabola"===w)if(C=w,B=z.length,!(2>B||2>z[0].length)){h=h||axisDIV;for(A=0;A<B;A++)z[A]=b(z[A],h);s=z[0].length;if(l){h=new $3Dmol.Geometry(!0);w=[];M=[];p=[];for(D=0;D<B;D++)w.push(.25+1.5*Math.sqrt((B-1)*D-Math.pow(D,2))/(B-1)),M.push(.5),p.push(2*(Math.pow(D/B,2)-D/B)+.6);L=[];for(D=0;D<2*B-1;D++)L[D]=[D,D+1,
D+1-2*B,D-2*B];L[2*B-1]=[D,D+1-2*B,D+1-4*B,D-2*B];K=h.updateGeoGroup(2*B*s);for(A=0;A<s;A++){D=Math.round(A*(f.length-1)/s);x=$3Dmol.CC.color(f[D]);H=g;u=J;g=[];J=[];q=[];void 0!==z[0][A].atom&&(G=z[0][A].atom,"oval"===C?e=w:"rectangle"===C?e=M:"parabola"===C&&(e=p));e||(e=M);for(D=0;D<B;D++)t=A<s-1?z[D][A+1].clone().sub(z[D][A]):z[D][A-1].clone().sub(z[D][A]).negate(),O=D<B-1?z[D+1][A].clone().sub(z[D][A]):z[D-1][A].clone().sub(z[D][A]).negate(),q[D]=O.cross(t).normalize().multiplyScalar(l*e[D]);
for(D=0;D<B;D++)g[D]=z[D][A].clone().add(q[D].clone().negate());for(D=0;D<B;D++)J[D]=z[D][A].clone().add(q[D]);R=K.vertexArray;V=K.colorArray;t=K.faceArray;q=K.vertices;O=3*q;for(D=0;D<B;D++)R[O+3*D+0]=g[D].x,R[O+3*D+1]=g[D].y,R[O+3*D+2]=g[D].z;for(D=0;D<B;D++)R[O+3*D+0+3*B]=J[B-1-D].x,R[O+3*D+1+3*B]=J[B-1-D].y,R[O+3*D+2+3*B]=J[B-1-D].z;for(D=0;D<2*B;++D)V[O+3*D+0]=x.r,V[O+3*D+1]=x.g,V[O+3*D+2]=x.b;if(0<A){for(D=0;D<2*B;D++)O=[q+L[D][0],q+L[D][1],q+L[D][2],q+L[D][3]],x=K.faceidx,t[x]=O[0],t[x+1]=
O[1],t[x+2]=O[3],t[x+3]=O[1],t[x+4]=O[2],t[x+5]=O[3],K.faceidx+=6;if(G.clickable)for(D in x=[],x.push(new $3Dmol.Triangle(H[0],g[0],g[B-1])),x.push(new $3Dmol.Triangle(H[0],g[B-1],H[B-1])),x.push(new $3Dmol.Triangle(H[B-1],g[B-1],J[B-1])),x.push(new $3Dmol.Triangle(H[B-1],J[B-1],u[B-1])),x.push(new $3Dmol.Triangle(J[0],u[0],u[B-1])),x.push(new $3Dmol.Triangle(J[B-1],J[0],u[B-1])),x.push(new $3Dmol.Triangle(g[0],H[0],u[0])),x.push(new $3Dmol.Triangle(J[0],g[0],u[0])),x)G.intersectionShape.triangle.push(x[D])}K.vertices+=
2*B}t=K.faceArray;q=K.vertices;for(A=0;A<B-1;A++)O=[A,A+1,2*B-2-A,2*B-1-A],x=K.faceidx,t[x]=O[0],t[x+1]=O[1],t[x+2]=O[3],t[x+3]=O[1],t[x+4]=O[2],t[x+5]=O[3],K.faceidx+=6;for(A=0;A<B-1;A++)O=[q-1-A,q-2-A,q-2*B+A+1,q-2*B+A],x=K.faceidx,t[x]=O[0],t[x+1]=O[1],t[x+2]=O[3],t[x+3]=O[1],t[x+4]=O[2],t[x+5]=O[3],K.faceidx+=6;h.initTypedArrays();h.setUpNormals();f=new $3Dmol.MeshDoubleLambertMaterial;f.vertexColors=$3Dmol.FaceColors;"number"===typeof m&&0<=m&&1>m&&(f.transparent=!0,f.opacity=m);m=new $3Dmol.Mesh(h,
f);d.add(m)}else c(d,z[0],z[B-1],f,h,m)}},t=function(b,c){if(b&&c&&b.chain===c.chain){if(b.reschain===c.reschain&&(b.resi===c.resi||b.resi===c.resi-1))return!0;if(b.resi<c.resi){var f=new $3Dmol.Vector3(b.x,b.y,b.z),h=new $3Dmol.Vector3(c.x,c.y,c.z);if(16>f.distanceToSquared(h))return!0}}return!1},A=function(b,c,f,h,l,d,w,e,t){var g,s={ALA:5,ARG:11,ASN:8,ASP:8,CYS:6,GLN:9,GLU:9,GLY:4,HIS:10,ILE:8,LEU:8,LYS:9,MET:8,PHE:11,PRO:7,SER:6,THR:7,TRP:14,TYR:12,VAL:7};if(h&&l&&w){var u=l.sub(h);u.normalize();
e=(e=e[parseInt(t)+s[w.resn]])?new $3Dmol.Vector3(e.x,e.y,e.z):new $3Dmol.Vector3(0,0,0);e.sub(h);"arrow start"===w.ss&&(l=e.clone().multiplyScalar(.3).cross(l),h.add(l),l=e.clone().cross(u).normalize(),u.rotateAboutVector(l,.43));w.style.cartoon.ribbon?l=w.style.cartoon.thickness||.4:w.style.cartoon.width?l=w.style.cartoon.width:"c"===w.ss?l="P"===w.atom?.8:.5:"arrow start"===w.ss?(l=1.3,g=!0):l="arrow end"===w.ss?.5:"h"===w.ss&&w.style.cartoon.tubes||"tube start"===w.ss?.5:1.3;null!=d&&0>u.dot(d)&&
u.negate();u.multiplyScalar(l);for(d=0;d<c;d++)l=-1+2*d/(c-1),l=new $3Dmol.Vector3(h.x+l*u.x,h.y+l*u.y,h.z+l*u.z),l.atom=w,f&&"s"===w.ss&&(l.smoothen=!0),b[d].push(l);if(g)for(u.multiplyScalar(2),d=0;d<c;d++)l=-1+2*d/(c-1),l=new $3Dmol.Vector3(h.x+l*u.x,h.y+l*u.y,h.z+l*u.z),l.atom=w,l.smoothen=!1,l.skip=!0,b[d].push(l);c=parseFloat(w.style.cartoon.opacity)||1;b.opacity?b.opacity!=c&&(console.log("Warning: a cartoon-style chain's opacity is ambiguous"),b.opacity=1):b.opacity=c;c=w.style.cartoon.style||
"default";b.style?b.style!=c&&(console.log("Warning: a cartoon chain's strand-style is ambiguous"),b.style="default"):b.style=c;if("arrow start"===w.ss||"arrow end"===w.ss)w.ss="s";return g}};return function(b,c,f,h){h=parseInt(5*parseFloat(h))||5;var l=fill=!0,m=doNotSmoothen=!1,w=num=h;h=div=h;w=w||5;h=h||5;var e="CA O P OP2 O2P O5' O3' C5' C2' O5* O3* C5* C2* N1 N3".split(" "),G=["DA","DG","A","G"],g=["DT","DC","U","C","T"],s=G.concat(g),u,x,q,N,I,D,C,B,F,J,L,K,H,M,O,R,V,P=null,S=[],Q=[];for(B=
0;B<w;B++)Q[B]=[];var da=F=!1;B=0;for(B in c)if(N=c[B],"C"===N.elem&&"CA"===N.atom){var Y=t(q,N);Y&&"s"===N.ss?F=!0:F&&(q&&x&&q.style.cartoon.arrows&&x.style.cartoon.arrows&&(q.ss="arrow end",x.ss="arrow start"),F=!1);Y&&"h"===q.ss?(!da&&N.style.cartoon.tubes&&(N.ss="tube start"),da=!0):da&&"tube start"!==q.ss&&(x&&x.style.cartoon.tubes&&(x.ss="tube end"),da=!1);x=q;q=N}q=void 0;for(B in c)if(N=c[B],void 0!==N&&-1!==$.inArray(N.atom,e))if(F=-1!=$.inArray(N.resn.trim(),s),x=N.style.cartoon,"trace"===
x.style){if(P||(P=new $3Dmol.Geometry(!0)),"C"===N.elem&&"CA"===N.atom||F&&"P"===N.atom)D=f&&"spectrum"===x.color?f.valueToHex(N.resi,f.range()):$3Dmol.getColorFromStyle(N,x).getHex(),S.push(D),C=$.isNumeric(x.thickness)?x.thickness:.4,t(q,N)&&(D==I?(I=$3Dmol.CC.color(D),$3Dmol.GLDraw.drawCylinder(P,q,N,C,I,2,2)):(x=(new $3Dmol.Vector3).addVectors(q,N).multiplyScalar(.5),I=$3Dmol.CC.color(I),F=$3Dmol.CC.color(D),$3Dmol.GLDraw.drawCylinder(P,q,x,C,I,2,0),$3Dmol.GLDraw.drawCylinder(P,x,N,C,F,0,2))),
q&&P&&(q.style.cartoon&&"trace"!=q.style.cartoon.style||q.chain!=N.chain)?(q=new $3Dmol.MeshDoubleLambertMaterial,q.vertexColors=$3Dmol.FaceColors,"number"===typeof P.opacity&&0<=P.opacity&&1>P.opacity&&(q.transparent=!0,q.opacity=P.opacity,delete P.opacity),P=new $3Dmol.Mesh(P,q),b.add(P),P=null):q&&(P.opacity&&q.style.cartoon.opacity?P.opacity!=q.style.cartoon.opacity&&(console.log("Warning: a trace-style chain's opacity is ambiguous"),P.opacity=1):P.opacity=parseFloat(q.style.cartoon.opacity)||
1),q=N,I=D}else{u||(u=new $3Dmol.Geometry(!0));if(N&&"C"===N.elem&&"CA"===N.atom||F&&("P"===N.atom||0==N.atom.indexOf("O5"))){if(V)if("tube end"===N.ss)V=!1,F=new $3Dmol.Vector3(N.x,N.y,N.z),$3Dmol.GLDraw.drawCylinder(u,R,F,2,$3Dmol.CC.color(I),1,1),N.ss="h";else continue;if(q&&(!t(q,N)||q.style.cartoon.style!==N.style.cartoon.style||"tube start"===q.ss)){"tube start"===q.ss&&(V=!0,R=new $3Dmol.Vector3(q.x,q.y,q.z),q.ss="h");O&&(F=H?(new $3Dmol.Vector3).addVectors(q,H).multiplyScalar(.5):new $3Dmol.Vector3(q.x,
q.y,q.z),$3Dmol.GLDraw.drawCylinder(u,F,O,.4,$3Dmol.CC.color(O.color),0,2),F=A(Q,w,!m,H,M,K,q,c,B),S.push(D),F&&S.push(D),O=null);for(B=0;!C&&B<w;B++)d(b,Q[B],1,S,h,Q.opacity);l&&0<Q[0].length&&p(b,Q,S,h,C,Q.opacity,Q.style);null!=u&&0<u.vertices&&(B=new $3Dmol.MeshDoubleLambertMaterial,B.vertexColors=$3Dmol.FaceColors,"number"===typeof Q.opacity&&0<=Q.opacity&&1>Q.opacity&&(B.transparent=!0,B.opacity=Q.opacity),u=new $3Dmol.Mesh(u,B),b.add(u),u=null);Q=[];for(B=0;B<w;B++)Q[B]=[];S=[]}if(void 0===
q||q.rescode!=N.rescode||q.resi!=N.resi)O&&(F=(new $3Dmol.Vector3).addVectors(q,N).multiplyScalar(.5),D=F.clone().sub(O).multiplyScalar(.02),F.add(D),$3Dmol.GLDraw.drawCylinder(u,F,O,.4,$3Dmol.CC.color(O.color),0,2),O=null),D=f&&"spectrum"===x.color?f.valueToHex(N.resi,f.range()):$3Dmol.getColorFromStyle(N,x).getHex(),S.push(D),C=$.isNumeric(x.thickness)?x.thickness:.4,q=N,J=new $3Dmol.Vector3(q.x,q.y,q.z),J.resi=q.resi,I=D;!0!==N.clickable||void 0!==N.intersectionShape&&void 0!==N.intersectionShape.triangle||
(N.intersectionShape={sphere:null,cylinder:[],line:[],triangle:[]})}else if(q&&"C"===q.elem&&"CA"===q.atom&&"O"===N.atom||F&&"P"===q.atom&&("OP2"===N.atom||"O2P"===N.atom)||F&&0==q.atom.indexOf("O5")&&0==N.atom.indexOf("C5")){if(L=new $3Dmol.Vector3(N.x,N.y,N.z),L.resi=N.resi,"OP2"===N.atom||"O2P"===N.atom)M=new $3Dmol.Vector3(N.x,N.y,N.z)}else if(F&&0==N.atom.indexOf("O3"))H=new $3Dmol.Vector3(N.x,N.y,N.z);else if("N1"===N.atom&&-1!=$.inArray(N.resn.trim(),G)||"N3"===N.atom&&-1!=$.inArray(N.resn.trim(),
g))O=new $3Dmol.Vector3(N.x,N.y,N.z),O.color=$3Dmol.getColorFromStyle(N,x).getHex();L&&J&&L.resi===J.resi&&(F=A(Q,w,!m,J,L,K,q,c,B),K=L,L=J=null,S.push(D),F&&S.push(D))}O&&(F=H?(new $3Dmol.Vector3).addVectors(q,H).multiplyScalar(.5):new $3Dmol.Vector3(q.x,q.y,q.z),$3Dmol.GLDraw.drawCylinder(u,F,O,.4,$3Dmol.CC.color(O.color),0,2),F=A(Q,w,!m,H,M,K,q,c,B),S.push(D),F&&S.push(D));for(B=0;!C&&B<w;B++)d(b,Q[B],1,S,h,Q.opacity);l&&0<Q[0].length&&p(b,Q,S,h,C,Q.opacity,Q.style);null!=u&&0<u.vertices&&(B=new $3Dmol.MeshDoubleLambertMaterial,
B.vertexColors=$3Dmol.FaceColors,"number"===typeof Q.opacity&&0<=Q.opacity&&1>Q.opacity&&(B.transparent=!0,B.opacity=Q.opacity),u=new $3Dmol.Mesh(u,B),b.add(u));null!=P&&0<P.vertices&&(q=new $3Dmol.MeshDoubleLambertMaterial,q.vertexColors=$3Dmol.FaceColors,"number"===typeof P.opacity&&0<=P.opacity&&1>P.opacity&&(q.transparent=!0,q.opacity=P.opacity,delete P.opacity),P=new $3Dmol.Mesh(P,q),b.add(P))}}();$3Dmol=$3Dmol||{};
$3Dmol.GLDraw=function(){var b={},c=function(){var b=new $3Dmol.Vector3;return function(c){b.set(c[0],c[1],c[2]);var f=b.x,h=b.y,l=b.z,d=Math.sqrt(f*f+h*h);1E-4>d?(c=0,d=1):(c=-f/d,d=h/d);h=-c*f+d*h;f=Math.sqrt(h*h+l*l);1E-4>f?(l=0,h=1):(l/=f,h/=f);f=new Float32Array(9);f[0]=d;f[1]=c;f[2]=0;f[3]=-c*h;f[4]=d*h;f[5]=l;f[6]=c*l;f[7]=-d*l;f[8]=h;return f}}(),d=function(){var b=[],c=Math.pow(2,4),f,d=Math.pow(2,2),l=c/d,m;b[0]=new $3Dmol.Vector3(-1,0,0);b[l]=new $3Dmol.Vector3(0,0,1);b[2*l]=new $3Dmol.Vector3(1,
0,0);b[3*l]=new $3Dmol.Vector3(0,0,-1);for(f=3;4>=f;f++){d=Math.pow(2,f-1);l=c/d;for(m=0;m<d-1;m++)b[l/2+m*l]=b[m*l].clone().add(b[(m+1)*l]).normalize();m=d-1;b[l/2+m*l]=b[m*l].clone().add(b[0]).normalize()}return b}(),p={cache:{false:{},true:{}},getVerticesForRadius:function(b,c){if(void 0!==this.cache[c][b])return this.cache[c][b];new $3Dmol.Vector3(0,1,0);for(var f=d.length,h=[],l=[],m,w=0;w<f;w++)h.push(d[w].clone().multiplyScalar(b)),h.push(d[w].clone().multiplyScalar(b)),m=d[w].clone().normalize(),
l.push(m),l.push(m);var w=[],e=2*Math.PI,t=Math.PI,g,s,u=!1,x=!1;for(s=0;10>=s;s++){var u=0===s||10===s?!0:!1,x=5===s?!0:!1,q=[],p=[];for(g=0;g<=f;g++)if(x){var A=g<f?2*g:0;p.push(A+1);q.push(A)}else{m=g/f;var D=s/10;u&&0!==g?u&&q.push(h.length-1):g<f?(A=new $3Dmol.Vector3,A.x=-b*Math.cos(0+m*e)*Math.sin(0+D*t),A.y=c?0:b*Math.cos(0+D*t),A.z=b*Math.sin(0+m*e)*Math.sin(0+D*t),1E-5>Math.abs(A.x)&&(A.x=0),1E-5>Math.abs(A.y)&&(A.y=0),1E-5>Math.abs(A.z)&&(A.z=0),m=c?new $3Dmol.Vector3(0,Math.cos(0+D*t),
0):new $3Dmol.Vector3(A.x,A.y,A.z),m.normalize(),h.push(A),l.push(m),q.push(h.length-1)):q.push(h.length-f)}x&&w.push(p);w.push(q)}f={vertices:h,normals:l,verticesRows:w,w:f,h:10};return this.cache[c][b]=f}},t=0;b.drawCylinder=function(b,d,f,h,l,m,w){if(d&&f){t++;var e=m||w,G=!1;1==m&&1==w&&(G=!0);l=l||{r:0,g:0,b:0};var g=[f.x,f.y,f.z];g[0]-=d.x;g[1]-=d.y;g[2]-=d.z;var g=c(g),s=p.getVerticesForRadius(h,G);h=s.w;var G=s.h,u=e?G*h+2:2*h;b=b.updateGeoGroup(u);var x=s.vertices,q=s.normals,s=s.verticesRows,
A=s[G/2],I=s[G/2+1],D=b.vertices,C,B,F,J,L,K,H=b.vertexArray,M=b.normalArray,O=b.colorArray,R=b.faceArray;for(F=0;F<h;++F)B=2*F,J=g[0]*x[B].x+g[3]*x[B].y+g[6]*x[B].z,L=g[1]*x[B].x+g[4]*x[B].y+g[7]*x[B].z,K=g[5]*x[B].y+g[8]*x[B].z,C=3*(D+B),B=b.faceidx,H[C]=J+d.x,H[C+1]=L+d.y,H[C+2]=K+d.z,H[C+3]=J+f.x,H[C+4]=L+f.y,H[C+5]=K+f.z,M[C]=J,M[C+3]=J,M[C+1]=L,M[C+4]=L,M[C+2]=K,M[C+5]=K,O[C]=l.r,O[C+3]=l.r,O[C+1]=l.g,O[C+4]=l.g,O[C+2]=l.b,O[C+5]=l.b,R[B]=I[F]+D,R[B+1]=I[F+1]+D,R[B+2]=A[F]+D,R[B+3]=A[F]+D,R[B+
4]=I[F+1]+D,R[B+5]=A[F+1]+D,b.faceidx+=6;if(e){m=m?G+1:G/2+1;var V,P,S,Q,da,Y,ba,E,aa,T,Z,W,U;for(L=w?0:G/2;L<m;L++)if(L!==G/2){var X=L<=G/2?f:d;for(J=0;J<h;J++)B=b.faceidx,w=s[L][J+1],F=3*(w+D),e=s[L][J],K=3*(e+D),A=s[L+1][J],C=3*(A+D),I=s[L+1][J+1],U=3*(I+D),V=g[0]*x[w].x+g[3]*x[w].y+g[6]*x[w].z,P=g[0]*x[e].x+g[3]*x[e].y+g[6]*x[e].z,S=g[0]*x[A].x+g[3]*x[A].y+g[6]*x[A].z,Q=g[0]*x[I].x+g[3]*x[I].y+g[6]*x[I].z,da=g[1]*x[w].x+g[4]*x[w].y+g[7]*x[w].z,Y=g[1]*x[e].x+g[4]*x[e].y+g[7]*x[e].z,ba=g[1]*x[A].x+
g[4]*x[A].y+g[7]*x[A].z,E=g[1]*x[I].x+g[4]*x[I].y+g[7]*x[I].z,aa=g[5]*x[w].y+g[8]*x[w].z,T=g[5]*x[e].y+g[8]*x[e].z,Z=g[5]*x[A].y+g[8]*x[A].z,W=g[5]*x[I].y+g[8]*x[I].z,H[F]=V+X.x,H[K]=P+X.x,H[C]=S+X.x,H[U]=Q+X.x,H[F+1]=da+X.y,H[K+1]=Y+X.y,H[C+1]=ba+X.y,H[U+1]=E+X.y,H[F+2]=aa+X.z,H[K+2]=T+X.z,H[C+2]=Z+X.z,H[U+2]=W+X.z,O[F]=l.r,O[K]=l.r,O[C]=l.r,O[U]=l.r,O[F+1]=l.g,O[K+1]=l.g,O[C+1]=l.g,O[U+1]=l.g,O[F+2]=l.b,O[K+2]=l.b,O[C+2]=l.b,O[U+2]=l.b,V=g[0]*q[w].x+g[3]*q[w].y+g[6]*q[w].z,P=g[0]*q[e].x+g[3]*q[e].y+
g[6]*q[e].z,S=g[0]*q[A].x+g[3]*q[A].y+g[6]*q[A].z,Q=g[0]*q[I].x+g[3]*q[I].y+g[6]*q[I].z,da=g[1]*q[w].x+g[4]*q[w].y+g[7]*q[w].z,Y=g[1]*q[e].x+g[4]*q[e].y+g[7]*q[e].z,ba=g[1]*q[A].x+g[4]*q[A].y+g[7]*q[A].z,E=g[1]*q[I].x+g[4]*q[I].y+g[7]*q[I].z,aa=g[5]*q[w].y+g[8]*q[w].z,T=g[5]*q[e].y+g[8]*q[e].z,Z=g[5]*q[A].y+g[8]*q[A].z,W=g[5]*q[I].y+g[8]*q[I].z,0===L?(M[F]=V,M[C]=S,M[U]=Q,M[F+1]=da,M[C+1]=ba,M[U+1]=E,M[F+2]=aa,M[C+2]=Z,M[U+2]=W,R[B]=w+D,R[B+1]=A+D,R[B+2]=I+D,b.faceidx+=3):L===m-1?(M[F]=V,M[K]=P,M[C]=
S,M[F+1]=da,M[K+1]=Y,M[C+1]=ba,M[F+2]=aa,M[K+2]=T,M[C+2]=Z,R[B]=w+D,R[B+1]=e+D,R[B+2]=A+D,b.faceidx+=3):(M[F]=V,M[K]=P,M[U]=Q,M[F+1]=da,M[K+1]=Y,M[U+1]=E,M[F+2]=aa,M[K+2]=T,M[U+2]=W,M[K]=P,M[C]=S,M[U]=Q,M[K+1]=Y,M[C+1]=ba,M[U+1]=E,M[K+2]=T,M[C+2]=Z,M[U+2]=W,R[B]=w+D,R[B+1]=e+D,R[B+2]=I+D,R[B+3]=e+D,R[B+4]=A+D,R[B+5]=I+D,b.faceidx+=6)}}b.vertices+=u}};b.drawCone=function(b,z,f,h,l){if(z&&f){l=l||{r:0,g:0,b:0};var m=[f.x,f.y,f.z];m.x-=z.x;m.y-=z.y;m.z-=z.z;var w=c(m),e=d.length;b=b.updateGeoGroup(e+
2);var t=b.vertices,g,s,u,x=b.vertexArray,q=b.normalArray,A=b.colorArray,p=b.faceArray;g=3*t;m=(new $3Dmol.Vector3(m[0],m[1],m[2])).normalize();x[g]=z.x;x[g+1]=z.y;x[g+2]=z.z;q[g]=-m.x;q[g+1]=-m.y;q[g+2]=-m.z;A[g]=l.r;A[g+1]=l.g;A[g+2]=l.b;x[g+3]=f.x;x[g+4]=f.y;x[g+5]=f.z;q[g+3]=m.x;q[g+4]=m.y;q[g+5]=m.z;A[g+3]=l.r;A[g+4]=l.g;A[g+5]=l.b;g+=6;for(f=0;f<e;++f)u=d[f].clone(),u.multiplyScalar(h),m=w[0]*u.x+w[3]*u.y+w[6]*u.z,s=w[1]*u.x+w[4]*u.y+w[7]*u.z,u=w[5]*u.y+w[8]*u.z,x[g]=m+z.x,x[g+1]=s+z.y,x[g+
2]=u+z.z,q[g]=m,q[g+1]=s,q[g+2]=u,A[g]=l.r,A[g+1]=l.g,A[g+2]=l.b,g+=3;b.vertices+=e+2;z=b.faceidx;for(f=0;f<e;f++)h=t+2+f,l=t+2+(f+1)%e,p[z]=h,p[z+1]=l,p[z+2]=t,z+=3,p[z]=h,p[z+1]=l,p[z+2]=t+1,z+=3;b.faceidx+=6*e}};var A={cache:{},getVerticesForRadius:function(b){if("undefined"!==typeof this.cache[b])return this.cache[b];var c={vertices:[],verticesRows:[],normals:[]},f=16,d=10;1>b&&(f=10,d=8);var l=2*Math.PI,m=Math.PI,w,e;for(e=0;e<=d;e++){var t=[];for(w=0;w<=f;w++){var g=w/f,s=e/d,u={};u.x=-b*Math.cos(0+
g*l)*Math.sin(0+s*m);u.y=b*Math.cos(0+s*m);u.z=b*Math.sin(0+g*l)*Math.sin(0+s*m);g=new $3Dmol.Vector3(u.x,u.y,u.z);g.normalize();c.vertices.push(u);c.normals.push(g);t.push(c.vertices.length-1)}c.verticesRows.push(t)}return this.cache[b]=c}};b.drawSphere=function(b,c,f,d){new $3Dmol.Vector3(c.x,c.y,c.z);var l=A.getVerticesForRadius(f),m=l.vertices,w=l.normals;b=b.updateGeoGroup(m.length);for(var e=b.vertices,t=b.vertexArray,g=b.colorArray,s=b.faceArray,u=b.lineArray,x=b.normalArray,q=0,p=m.length;q<
p;++q){var I=3*(e+q),D=m[q];t[I]=D.x+c.x;t[I+1]=D.y+c.y;t[I+2]=D.z+c.z;g[I]=d.r;g[I+1]=d.g;g[I+2]=d.b}b.vertices+=m.length;l=l.verticesRows;t=l.length-1;for(d=0;d<t;d++)for(g=l[d].length-1,c=0;c<g;c++){var q=b.faceidx,p=b.lineidx,I=l[d][c+1]+e,D=3*I,C=l[d][c]+e,B=3*C,F=l[d+1][c]+e,J=3*F,L=l[d+1][c+1]+e,K=3*L,H=w[I-e],M=w[C-e],O=w[F-e],R=w[L-e];Math.abs(m[I-e].y)===f?(x[D]=H.x,x[J]=O.x,x[K]=R.x,x[D+1]=H.y,x[J+1]=O.y,x[K+1]=R.y,x[D+2]=H.z,x[J+2]=O.z,x[K+2]=R.z,s[q]=I,s[q+1]=F,s[q+2]=L,u[p]=I,u[p+1]=
F,u[p+2]=I,u[p+3]=L,u[p+4]=F,u[p+5]=L,b.faceidx+=3,b.lineidx+=6):Math.abs(m[F-e].y)===f?(x[D]=H.x,x[B]=M.x,x[J]=O.x,x[D+1]=H.y,x[B+1]=M.y,x[J+1]=O.y,x[D+2]=H.z,x[B+2]=M.z,x[J+2]=O.z,s[q]=I,s[q+1]=C,s[q+2]=F,u[p]=I,u[p+1]=C,u[p+2]=I,u[p+3]=F,u[p+4]=C,u[p+5]=F,b.faceidx+=3,b.lineidx+=6):(x[D]=H.x,x[B]=M.x,x[K]=R.x,x[D+1]=H.y,x[B+1]=M.y,x[K+1]=R.y,x[D+2]=H.z,x[B+2]=M.z,x[K+2]=R.z,x[B]=M.x,x[J]=O.x,x[K]=R.x,x[B+1]=M.y,x[J+1]=O.y,x[K+1]=R.y,x[B+2]=M.z,x[J+2]=O.z,x[K+2]=R.z,s[q]=I,s[q+1]=C,s[q+2]=L,s[q+
3]=C,s[q+4]=F,s[q+5]=L,u[p]=I,u[p+1]=C,u[p+2]=I,u[p+3]=L,u[p+4]=C,u[p+5]=F,u[p+6]=F,u[p+7]=L,b.faceidx+=6,b.lineidx+=8)}};return b}();$3Dmol=$3Dmol||{};
$3Dmol.GLModel=function(){function b(b,y){var z=[],f=[],h=!1,l=null,m=null,w=null,e={},G=new $3Dmol.Matrix4,g,s=$3Dmol.elementColors.defaultColor,u=y?y:$3Dmol.elementColors.defaultColors,x=function(b,c){var l=1.5;"undefined"!=typeof c.radius?l=c.radius:d[b.elem]&&(l=d[b.elem]);"undefined"!=typeof c.scale&&(l*=c.scale);return l},q=function(b,c,l){var e=new $3Dmol.Vector3(b.x,b.y,b.z),f=(new $3Dmol.Vector3(c.x,c.y,c.z)).clone(),d=null;f.sub(e);1===b.bonds.length?1===c.bonds.length?(d=f.clone(),1E-4<
Math.abs(d.x)?d.y+=1:d.x+=1):(l=(l+1)%c.bonds.length,b=c.bonds[l],b=z[b],b=new $3Dmol.Vector3(b.x,b.y,b.z),b=b.clone(),b.sub(e),d=b.clone(),d.cross(f)):(l=(l+1)%b.bonds.length,b=b.bonds[l],b=z[b],b=new $3Dmol.Vector3(b.x,b.y,b.z),b=b.clone(),b.sub(e),d=b.clone(),d.cross(f));.01>d.lengthSq()&&(d=f.clone(),1E-4<Math.abs(d.x)?d.y+=1:d.x+=1);d.cross(f);d.normalize();return d},N=function(b,c,l,e,f,d){b[l]=e.x;b[l+1]=e.y;b[l+2]=e.z;c[l]=d.r;c[l+1]=d.g;c[l+2]=d.b;b[l+3]=f.x;b[l+4]=f.y;b[l+5]=f.z;c[l+3]=
d.r;c[l+4]=d.g;c[l+5]=d.b},I=function(b,c){if(b.style.sphere){var l=b.style.sphere;if(!l.hidden){var e=$3Dmol.getColorFromStyle(b,l),l=x(b,l);if(!0===b.clickable&&void 0!==b.intersectionShape){var f=new $3Dmol.Vector3(b.x,b.y,b.z);b.intersectionShape.sphere.push(new $3Dmol.Sphere(f,l))}$3Dmol.GLDraw.drawSphere(c,b,l,e)}}},D=function(b,c){if(b.style.sphere){var l=b.style.sphere;if(!l.hidden){var e=x(b,l),l=$3Dmol.getColorFromStyle(b,l),f=c.updateGeoGroup(1),d=f.vertices,g=3*d,h=f.vertexArray,m=f.colorArray,
w=f.radiusArray;h[g]=b.x;h[g+1]=b.y;h[g+2]=b.z;m=f.colorArray;m[g]=l.r;m[g+1]=l.g;m[g+2]=l.b;w[d]=e;f.vertices+=1}}},C=function(b,c,l,e){b=b.updateGeoGroup(4);for(var f=b.vertices,d=3*f,g=b.vertexArray,h=b.colorArray,m=0;4>m;m++)g[d+3*m]=c.x,g[d+3*m+1]=c.y,g[d+3*m+2]=c.z;c=b.normalArray;h=b.colorArray;for(m=0;4>m;m++)h[d+3*m]=e.r,h[d+3*m+1]=e.g,h[d+3*m+2]=e.b;c[d+0]=-l;c[d+1]=l;c[d+2]=0;c[d+3]=-l;c[d+4]=-l;c[d+5]=0;c[d+6]=l;c[d+7]=-l;c[d+8]=0;c[d+9]=l;c[d+10]=l;c[d+11]=0;b.vertices+=4;l=b.faceArray;
e=b.faceidx;l[e+0]=f;l[e+1]=f+1;l[e+2]=f+2;l[e+3]=f+2;l[e+4]=f+3;l[e+5]=f;b.faceidx+=6},B=function(b,c){if(b.style.sphere){var l=b.style.sphere;if(!l.hidden){var e=x(b,l),l=$3Dmol.getColorFromStyle(b,l);C(c,b,e,l)}}},F=function(b,c,l,e,f,d,g){b=b.updateGeoGroup(4);d=b.vertices;g=b.vertexArray;var h=b.colorArray,m=b.radiusArray,w=b.normalArray,q=f.r,u=f.g;f=f.b;for(var s=3*d,x=0;4>x;x++){g[s]=c.x;w[s]=l.x;h[s]=q;s++;g[s]=c.y;w[s]=l.y;h[s]=u;s++;g[s]=c.z;w[s]=l.z;if(2>x)h[s]=f;else{var t=s,y=-f;0==
y&&(y=-1E-4);h[t]=y}s++}b.vertices+=4;m[d]=-e;m[d+1]=e;m[d+2]=-e;m[d+3]=e;c=b.faceArray;l=b.faceidx;c[l+0]=d;c[l+1]=d+1;c[l+2]=d+2;c[l+3]=d+2;c[l+4]=d+3;c[l+5]=d;b.faceidx+=6};this.getCrystData=function(){return e.cryst?e.cryst:null};this.getSymmetries=function(){"undefined"==typeof e.symmetries&&(e.symmetries=[G]);return e.symmetries};this.setSymmetries=function(b){e.symmetries="undefined"==typeof b?[G]:b};this.getID=function(){return b};this.getFrames=function(){return f};this.setFrame=function(b){0!=
f.length&&(z=0<=b&&b<f.length?f[b]:f[f.length-1],l=null)};this.addFrame=function(b){f.push(b)};this.vibrate=function(b,c){var l=[];c=c||1;b=b||10;for(var e=0;e<z.length;e++){var d=new $3Dmol.Vector3(z[e].dx,z[e].dy,z[e].dz);l.push(d)}b--;for(e=1;e<=b;e++){l=[];for(d=0;d<z.length;d++){var g=new $3Dmol.Vector3(z[d].dx,z[d].dy,z[d].dz),h=new $3Dmol.Vector3(z[d].x,z[d].y,z[d].z);g.sub(h);g.multiplyScalar(e*c/b);h.add(g);var g={},m;for(m in z[d])g[m]=z[d][m];g.x=h.x;g.y=h.y;g.z=h.z;l.push(g)}f.push(l)}f.unshift(z)};
this.setAtomDefaults=function(l){for(var e=0;e<l.length;e++){var d=l[e];d&&(d.style=d.style||c,d.color=d.color||u[d.elem]||s,d.model=b,d.clickable&&(d.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}))}};this.addMolData=function(c,l,d){d=d||{};c=$3Dmol.GLModel.parseMolData(c,l,d);g=!d.duplicateAssemblyAtoms;(l=c.modelData)&&(e=Array.isArray(l)?l[0]:l);if(0==f.length){for(l=0;l<c.length;l++)0!=c[l].length&&f.push(c[l]);f[0]&&(z=f[0])}else if(d.frames)for(l=0;l<c.length;l++)f.push(c[l]);
else for(l=0;l<c.length;l++)this.addAtoms(c[l]);for(l=0;l<f.length;l++)this.setAtomDefaults(f[l],b);d.vibrate&&d.vibrate.frames&&d.vibrate.amplitude&&this.vibrate(d.vibrate.frames,d.vibrate.amplitude)};this.setDontDuplicateAtoms=function(b){g=b};this.setModelData=function(b){e=b};this.atomIsSelected=function(b,c){if("undefined"===typeof c)return!0;var l=!!c.invert,e=!0,d;for(d in c)if("predicate"===d){if(!c.predicate(b)){e=!1;break}}else if("properties"==d&&b[d])for(var f in c.properties){if("undefined"===
typeof b.properties[f]){e=!1;break}if(b.properties[f]!=c.properties[f]){e=!1;break}}else if(c.hasOwnProperty(d)&&"props"!=d&&"invert"!=d&&"model"!=d&&"byres"!=d&&"expand"!=d&&"within"!=d){if("undefined"===typeof b[d]){e=!1;break}var g=!1;if("bonds"===d){if(g=c[d],g!=b.bonds.length){e=!1;break}}else if($.isArray(c[d])){for(var h=c[d],m=0;m<h.length;m++)if(b[d]==h[m]){g=!0;break}if(!g){e=!1;break}}else if(g=c[d],b[d]!=g){e=!1;break}}return l?!e:e};this.selectedAtoms=function(b,c){var l=[];b=b||{};c||
(c=z);for(var e=c.length,d=0;d<e;d++){var f=c[d];f&&this.atomIsSelected(f,b)&&l.push(f)}if(b.hasOwnProperty("expand")){var g;var h=parseFloat(b.expand);if(0>=h)g=l;else{d=$3Dmol.getExtent(l);e=[[],[],[]];for(f=0;3>f;f++)e[0][f]=d[0][f]-h,e[1][f]=d[1][f]+h,e[2][f]=d[2][f];h=[];for(f=0;f<z.length;f++){g=z[f].x;var m=z[f].y,w=z[f].z;g>=e[0][0]&&g<=e[1][0]&&m>=e[0][1]&&m<=e[1][1]&&w>=e[0][2]&&w<=e[1][2]&&(g>=d[0][0]&&g<=d[1][0]&&m>=d[0][1]&&m<=d[1][1]&&w>=d[0][2]&&w<=d[1][2]||h.push(z[f]))}g=h}m=l.length;
for(d=0;d<g.length;d++)for(e=0;e<m;e++)f=J(g[d],l[e]),h=Math.pow(b.expand,2),f<h&&0<f&&l.push(g[d])}if(b.hasOwnProperty("within")&&b.within.hasOwnProperty("sel")&&b.within.hasOwnProperty("distance")){g=this.selectedAtoms(b.within.sel,z);m=[];for(d=0;d<g.length;d++)for(e=0;e<l.length;e++)f=J(g[d],l[e]),h=Math.pow(parseFloat(b.within.distance),2),f<h&&0<f&&m.push(l[e]);l=m}if(b.hasOwnProperty("byres"))for(h={},g=[],m=[],d=0;d<l.length;d++){var f=l[d],w=f.chain,q=f.resi;void 0===h[w]&&(h[w]={});if(f.hasOwnProperty("resi")&&
void 0===h[w][q])for(h[w][q]=!0,m.push(f);0<m.length;)if(f=m.pop(),w=f.chain,q=f.resi,void 0===g[f.index])for(g[f.index]=!0,e=0;e<f.bonds.length;e++){var s=z[f.bonds[e]];void 0===g[s.index]&&s.hasOwnProperty("resi")&&s.chain==w&&s.resi==q&&(m.push(s),l.push(s))}}return l};var J=function(b,c){var l=c.y-b.y,e=c.z-b.z;return Math.pow(c.x-b.x,2)+Math.pow(l,2)+Math.pow(e,2)};this.addAtoms=function(e){l=null;var d=z.length,f=[],g;for(g=0;g<e.length;g++)"undefined"==typeof e[g].index&&(e[g].index=g),"undefined"==
typeof e[g].serial&&(e[g].serial=g),f[e[g].index]=d+g;for(g=0;g<e.length;g++){var d=e[g],h=f[d.index],m=$.extend(!1,{},d);m.index=h;m.bonds=[];m.bondOrder=[];m.model=b;m.style=m.style||c;"undefined"==typeof m.color&&(m.color=u[m.elem]||s);for(var h=d.bonds?d.bonds.length:0,w=0;w<h;w++){var q=f[d.bonds[w]];"undefined"!=typeof q&&(m.bonds.push(q),m.bondOrder.push(d.bondOrder?d.bondOrder[w]:1))}z.push(m)}};this.removeAtoms=function(b){l=null;var c=[],e;for(e=0;e<b.length;e++)c[b[e].index]=!0;b=[];for(e=
0;e<z.length;e++){var d=z[e];c[d.index]||b.push(d)}z=[];this.addAtoms(b)};this.setStyle=function(b,c,e){"undefined"===typeof c&&"undefined"==typeof e&&(c=b,b={});for(var d in b)-1===p.indexOf(d)&&console.log("Unknown selector "+d);for(d in c)-1===t.indexOf(d)&&console.log("Unknown style "+d);var g=!1,h=function(l){for(var f=m.selectedAtoms(b,l),h=0;h<l.length;h++)l[h]&&(l[h].capDrawn=!1);for(h=0;h<f.length;h++)for(d in g=!0,f[h].clickable&&(f[h].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),
e||(f[h].style={}),c)if(c.hasOwnProperty(d)){f[h].style[d]=f[h].style[d]||{};for(var w in c[d])f[h].style[d][w]=c[d][w]}},m=this;h(z);for(var w=0;w<f.length;w++)h(f[w]);g&&(l=null)};this.setClickable=function(b,c,e){for(var d in b)-1===p.indexOf(d)&&console.log("Unknown selector "+d);c=!!c;if(e&&"function"!=typeof e)console.log("Callback is not a function");else{d=this.selectedAtoms(b,z);var f=d.length;for(b=0;b<f;b++)d[b].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]},d[b].clickable=
c,e&&(d[b].callback=e);0<f&&(l=null)}};this.setColorByElement=function(b,c){var d;if(d=null!==l)d=w,d=c&&d?JSON.stringify(c)==JSON.stringify(d):c==d;if(!d){w=c;var e=this.selectedAtoms(b,e);0<e.length&&(l=null);for(d=0;d<e.length;d++){var f=e[d];"undefined"!==typeof c[f.elem]&&(f.color=c[f.elem])}}};this.setColorByProperty=function(b,c,d,e){var f=this.selectedAtoms(b,f);w=null;0<f.length&&(l=null);var g;e||(e=d.range());e||(e=$3Dmol.getPropertyRange(f,c));for(b=0;b<f.length;b++)g=f[b],null!=$3Dmol.getAtomProperty(g,
c)&&(g.color=d.valueToHex(parseFloat(g.properties[c]),[e[0],e[1]]))};this.setColorByFunction=function(b,c){var d=this.selectedAtoms(b,d);w=null;0<d.length&&(l=null);for(i=0;i<d.length;i++)a=d[i],a.color=c(a)};this.toCDObject=function(b){var c={a:[],b:[]};b&&(c.s=[]);for(var l=0;l<z.length;l++){var d={},e=z[l];d.x=e.x;d.y=e.y;d.z=e.z;"C"!=e.elem&&(d.l=e.elem);if(b){for(var f=0;f<c.s.length&&JSON.stringify(e.style)!==JSON.stringify(c.s[f]);)f++;f===c.s.length&&c.s.push(e.style);0!==f&&(d.s=f)}c.a.push(d);
for(d=0;d<e.bonds.length;d++){var f=l,g=e.bonds[d];f>=g||(f={b:f,e:g},g=e.bondOrder[d],1!=g&&(f.o=g),c.b.push(f))}}return c};this.globj=function(b,c){if(null===l){var d=z,f=c,f=f||{},w=new $3Dmol.Object3D,s=[],u={},t={},y=I,A=null,p=null;f.supportsImposters?(y=B,A=new $3Dmol.Geometry(!0),A.imposter=!0,p=new $3Dmol.Geometry(!0,!0),p.imposter=!0,p.sphereGeometry=A,p.drawnCaps={}):(f.supportsAIA?(y=D,A=new $3Dmol.Geometry(!1,!0,!0),A.instanced=!0):A=new $3Dmol.Geometry(!0),p=new $3Dmol.Geometry(!0));
var G,J,E,aa,T={},Z=[Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY];G=0;for(E=d.length;G<E;G++){var W=d[G];if(W&&W.style){W.clickable&&void 0===W.intersectionShape&&(W.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]});aa={line:void 0,cross:void 0,stick:void 0,sphere:void 0};for(J in aa)aa[J]=W.style[J]?W.style[J].opacity?parseFloat(W.style[J].opacity):1:void 0,T[J]?void 0!=aa[J]&&T[J]!=aa[J]&&(console.log("Warning: "+J+" opacity is ambiguous"),T[J]=1):T[J]=aa[J];y(W,A);var U=W,X=
t;if(U.style.cross){var ga=U.style.cross;if(!ga.hidden){var Ea=ga.linewidth||1;X[Ea]||(X[Ea]=new $3Dmol.Geometry);var Na=X[Ea].updateGeoGroup(6),Fa=x(U,ga),Ga=[[Fa,0,0],[-Fa,0,0],[0,Fa,0],[0,-Fa,0],[0,0,Fa],[0,0,-Fa]],Ta=U.clickable;Ta&&void 0===U.intersectionShape&&(U.intersectionShape={sphere:[],cylinder:[],line:[]});for(var Oa=$3Dmol.getColorFromStyle(U,ga),Pa=Na.vertexArray,ab=Na.colorArray,Ba=0;6>Ba;Ba++){var Ha=3*Na.vertices;Na.vertices++;Pa[Ha]=U.x+Ga[Ba][0];Pa[Ha+1]=U.y+Ga[Ba][1];Pa[Ha+2]=
U.z+Ga[Ba][2];ab[Ha]=Oa.r;ab[Ha+1]=Oa.g;ab[Ha+2]=Oa.b;if(Ta){var Qa=new $3Dmol.Vector3(Ga[Ba][0],Ga[Ba][1],Ga[Ba][2]);Qa.multiplyScalar(.1);Qa.set(Qa.x+U.x,Qa.y+U.y,Qa.z+U.z);U.intersectionShape.line.push(Qa)}}}}var fa=W,zb=d,kb=u;if(fa.style.line){var rb=fa.style.line;if(!rb.hidden){var lb=rb.linewidth||1;kb[lb]||(kb[lb]=new $3Dmol.Geometry);for(var ua=kb[lb].updateGeoGroup(6*fa.bonds.length),ka=ua.vertexArray,la=ua.colorArray,Ia=0;Ia<fa.bonds.length;Ia++){var Ra=zb[fa.bonds[Ia]];if(Ra.style.line&&
!(fa.serial>=Ra.serial)){var Ca=new $3Dmol.Vector3(fa.x,fa.y,fa.z),Ua=new $3Dmol.Vector3(Ra.x,Ra.y,Ra.z),gb=Ca.clone().add(Ua).multiplyScalar(.5),sb=!1;fa.clickable&&(void 0===fa.intersectionShape&&(fa.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),fa.intersectionShape.line.push(Ca),fa.intersectionShape.line.push(Ua));var qa=$3Dmol.getColorFromStyle(fa,fa.style.line),Ja=$3Dmol.getColorFromStyle(Ra,Ra.style.line);if(fa.bondStyles&&fa.bondStyles[Ia]){var Sa=fa.bondStyles[Ia];if(!Sa.iswire)continue;
Sa.radius&&(bondR=Sa.radius);Sa.singleBond&&(sb=!0);"undefined"!=typeof Sa.color1&&(qa=$3Dmol.CC.color(Sa.color1));"undefined"!=typeof Sa.color2&&(Ja=$3Dmol.CC.color(Sa.color2))}var ma=3*ua.vertices;if(1<fa.bondOrder[Ia]&&4>fa.bondOrder[Ia]&&!sb){var Xa=q(fa,Ra,Ia),Da=Ua.clone();Da.sub(Ca);if(2==fa.bondOrder[Ia])if(Xa.multiplyScalar(.1),p1a=Ca.clone(),p1a.add(Xa),p1b=Ca.clone(),p1b.sub(Xa),p2a=p1a.clone(),p2a.add(Da),p2b=p1b.clone(),p2b.add(Da),qa==Ja)ua.vertices+=4,N(ka,la,ma,p1a,p2a,qa),N(ka,la,
ma+6,p1b,p2b,qa);else{ua.vertices+=8;Da.multiplyScalar(.5);var Va=p1a.clone();Va.add(Da);var Wa=p1b.clone();Wa.add(Da);N(ka,la,ma,p1a,Va,qa);N(ka,la,ma+6,Va,p2a,Ja);N(ka,la,ma+12,p1b,Wa,qa);N(ka,la,ma+18,Wa,p2b,Ja)}else 3==fa.bondOrder[Ia]&&(Xa.multiplyScalar(.1),p1a=Ca.clone(),p1a.add(Xa),p1b=Ca.clone(),p1b.sub(Xa),p2a=p1a.clone(),p2a.add(Da),p2b=p1b.clone(),p2b.add(Da),qa==Ja?(ua.vertices+=6,N(ka,la,ma,Ca,Ua,qa),N(ka,la,ma+6,p1a,p2a,qa),N(ka,la,ma+12,p1b,p2b,qa)):(ua.vertices+=12,Da.multiplyScalar(.5),
Va=p1a.clone(),Va.add(Da),Wa=p1b.clone(),Wa.add(Da),N(ka,la,ma,Ca,gb,qa),N(ka,la,ma+6,gb,Ua,Ja),N(ka,la,ma+12,p1a,Va,qa),N(ka,la,ma+18,Va,p2a,Ja),N(ka,la,ma+24,p1b,Wa,qa),N(ka,la,ma+30,Wa,p2b,Ja)))}else qa==Ja?(ua.vertices+=2,N(ka,la,ma,Ca,Ua,qa)):(ua.vertices+=4,N(ka,la,ma,Ca,gb,qa),N(ka,la,ma+6,gb,Ua,Ja))}}}}var ca=W,Ab=d,ia=p;if(ca.style.stick){var Ya=ca.style.stick;if(!Ya.hidden){var bb=Ya.radius||.25,va=bb,tb=Ya.singleBonds||!1,cb=0,db=0,na=$3Dmol.getColorFromStyle(ca,Ya),oa=void 0,ya=void 0;
!ca.capDrawn&&4>ca.bonds.length&&(cb=2);var ja=$3Dmol.GLDraw.drawCylinder;ia.imposter&&(ja=F);for(var pa=0;pa<ca.bonds.length;pa++){var ha=Ab[ca.bonds[pa]];if(ca.serial<ha.serial){var ub=ha.style;if(ub.stick){var Ka=$3Dmol.getColorFromStyle(ha,ub.stick),va=bb,eb=tb;if(ca.bondStyles&&ca.bondStyles[pa]){var za=ca.bondStyles[pa];if(za.iswire)continue;za.radius&&(va=za.radius);za.singleBond&&(eb=!0);"undefined"!=typeof za.color1&&(na=$3Dmol.CC.color(za.color1));"undefined"!=typeof za.color2&&(Ka=$3Dmol.CC.color(za.color2))}var ra=
new $3Dmol.Vector3(ca.x,ca.y,ca.z),Aa=new $3Dmol.Vector3(ha.x,ha.y,ha.z);if(1===ca.bondOrder[pa]||eb){if(!ha.capDrawn&&4>ha.bonds.length&&(db=2),na!=Ka?(oa=(new $3Dmol.Vector3).addVectors(ra,Aa).multiplyScalar(.5),ja(ia,ra,oa,va,na,cb,0),ja(ia,oa,Aa,va,Ka,0,db)):ja(ia,ra,Aa,va,na,cb,db),ca.clickable||ha.clickable){oa=(new $3Dmol.Vector3).addVectors(ra,Aa).multiplyScalar(.5);if(ca.clickable){var Bb=new $3Dmol.Cylinder(ra,oa,va),Cb=new $3Dmol.Sphere(ra,va);ca.intersectionShape.cylinder.push(Bb);ca.intersectionShape.sphere.push(Cb)}if(ha.clickable){var Db=
new $3Dmol.Cylinder(Aa,oa,va),Eb=new $3Dmol.Sphere(Aa,va);ha.intersectionShape.cylinder.push(Db);ha.intersectionShape.sphere.push(Eb)}}}else if(1<ca.bondOrder[pa]){var Ma=0;mtoCap=0;va!=bb&&(mtoCap=Ma=2);var Za=Aa.clone(),La=null;Za.sub(ra);var ea,sa,ta,wa,xa,La=q(ca,ha,pa);if(2==ca.bondOrder[pa]){if(ea=va/2.5,La=q(ca,ha,pa),La.multiplyScalar(1.5*ea),sa=ra.clone(),sa.add(La),ta=ra.clone(),ta.sub(La),wa=sa.clone(),wa.add(Za),xa=ta.clone(),xa.add(Za),na!=Ka?(oa=(new $3Dmol.Vector3).addVectors(sa,wa).multiplyScalar(.5),
ya=(new $3Dmol.Vector3).addVectors(ta,xa).multiplyScalar(.5),ja(ia,sa,oa,ea,na,Ma,0),ja(ia,oa,wa,ea,Ka,0,mtoCap),ja(ia,ta,ya,ea,na,Ma,0),ja(ia,ya,xa,ea,Ka,0,mtoCap)):(ja(ia,sa,wa,ea,na,Ma,mtoCap),ja(ia,ta,xa,ea,na,Ma,mtoCap)),ca.clickable||ha.clickable)oa=(new $3Dmol.Vector3).addVectors(sa,wa).multiplyScalar(.5),ya=(new $3Dmol.Vector3).addVectors(ta,xa).multiplyScalar(.5),ca.clickable&&(cylinder1a=new $3Dmol.Cylinder(sa,oa,ea),cylinder1b=new $3Dmol.Cylinder(ta,ya,ea),ca.intersectionShape.cylinder.push(cylinder1a),
ca.intersectionShape.cylinder.push(cylinder1b)),ha.clickable&&(cylinder2a=new $3Dmol.Cylinder(wa,oa,ea),cylinder2b=new $3Dmol.Cylinder(xa,ya,ea),ha.intersectionShape.cylinder.push(cylinder2a),ha.intersectionShape.cylinder.push(cylinder2b))}else 3==ca.bondOrder[pa]&&(ea=va/4,La.cross(Za),La.normalize(),La.multiplyScalar(3*ea),sa=ra.clone(),sa.add(La),ta=ra.clone(),ta.sub(La),wa=sa.clone(),wa.add(Za),xa=ta.clone(),xa.add(Za),na!=Ka?(oa=(new $3Dmol.Vector3).addVectors(sa,wa).multiplyScalar(.5),ya=(new $3Dmol.Vector3).addVectors(ta,
xa).multiplyScalar(.5),mp3=(new $3Dmol.Vector3).addVectors(ra,Aa).multiplyScalar(.5),ja(ia,sa,oa,ea,na,Ma,0),ja(ia,oa,wa,ea,Ka,0,mtoCap),ja(ia,ra,mp3,ea,na,cb,0),ja(ia,mp3,Aa,ea,Ka,0,db),ja(ia,ta,ya,ea,na,Ma,0),ja(ia,ya,xa,ea,Ka,0,mtoCap)):(ja(ia,sa,wa,ea,na,Ma,mtoCap),ja(ia,ra,Aa,ea,na,cb,db),ja(ia,ta,xa,ea,na,Ma,mtoCap)),ca.clickable||ha.clickable)&&(oa=(new $3Dmol.Vector3).addVectors(sa,wa).multiplyScalar(.5),ya=(new $3Dmol.Vector3).addVectors(ta,xa).multiplyScalar(.5),mp3=(new $3Dmol.Vector3).addVectors(ra,
Aa).multiplyScalar(.5),ca.clickable&&(cylinder1a=new $3Dmol.Cylinder(sa.clone(),oa.clone(),ea),cylinder1b=new $3Dmol.Cylinder(ta.clone(),ya.clone(),ea),cylinder1c=new $3Dmol.Cylinder(ra.clone(),mp3.clone(),ea),ca.intersectionShape.cylinder.push(cylinder1a),ca.intersectionShape.cylinder.push(cylinder1b),ca.intersectionShape.cylinder.push(cylinder1c)),ha.clickable&&(cylinder2a=new $3Dmol.Cylinder(wa.clone(),oa.clone(),ea),cylinder2b=new $3Dmol.Cylinder(xa.clone(),ya.clone(),ea),cylinder2c=new $3Dmol.Cylinder(Aa.clone(),
mp3.clone(),ea),ha.intersectionShape.cylinder.push(cylinder2a),ha.intersectionShape.cylinder.push(cylinder2b),ha.intersectionShape.cylinder.push(cylinder2c)))}}}}for(var mb=!1,nb=0,vb=!1,pa=0;pa<ca.bonds.length;pa++)eb=tb,ca.bondStyles&&ca.bondStyles[pa]&&(za=ca.bondStyles[pa],za.singleBond&&(eb=!0),za.radius&&za.radius!=bb&&(vb=!0)),(eb||1==ca.bondOrder[pa])&&nb++;vb?0<nb&&(mb=!0):0==nb&&0<ca.bonds.length&&(mb=!0);mb&&(va=bb,ia.imposter?C(ia.sphereGeometry,ca,va,na):$3Dmol.GLDraw.drawSphere(ia,ca,
va,na))}}"undefined"===typeof W.style.cartoon||W.style.cartoon.hidden||("spectrum"!==W.style.cartoon.color||"number"!==typeof W.resi||W.hetflag||(W.resi<Z[0]&&(Z[0]=W.resi),W.resi>Z[1]&&(Z[1]=W.resi)),s.push(W))}}if(0<s.length){var wb=null;Z[0]<Z[1]&&(wb=new $3Dmol.Gradient.Sinebow(Z[0],Z[1]));$3Dmol.drawCartoon(w,s,wb)}if(A&&0<A.vertices){A.initTypedArrays();var $a=null;if(A.imposter)$a=new $3Dmol.SphereImposterMaterial({ambient:0,vertexColors:!0,reflectivity:0});else if(A.instanced){var fb=new $3Dmol.Geometry(!0);
$3Dmol.GLDraw.drawSphere(fb,{x:0,y:0,z:0},1,new $3Dmol.Color(.5,.5,.5));fb.initTypedArrays();$a=new $3Dmol.InstancedMaterial({sphereMaterial:new $3Dmol.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),sphere:fb})}else $a=new $3Dmol.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0});1>T.sphere&&0<=T.sphere&&($a.transparent=!0,$a.opacity=T.sphere);fb=new $3Dmol.Mesh(A,$a);w.add(fb)}if(0<p.vertices){if(p.imposter){var Fb=new $3Dmol.StickImposterMaterial({ambient:0,vertexColors:!0,
reflectivity:0});p.initTypedArrays();var xb=new $3Dmol.Mesh(p,Fb)}else{var hb=new $3Dmol.MeshLambertMaterial({vertexColors:!0,ambient:0,reflectivity:0});1>T.stick&&0<=T.stick&&(hb.transparent=!0,hb.opacity=T.stick);p.initTypedArrays();hb.wireframe&&p.setUpWireframe();xb=new $3Dmol.Mesh(p,hb)}w.add(xb)}for(G in u)if(u.hasOwnProperty(G)){var ob=G,pb=new $3Dmol.LineBasicMaterial({linewidth:ob,vertexColors:!0});1>T.line&&0<=T.line&&(pb.transparent=!0,pb.opacity=T.line);u[G].initTypedArrays();var Gb=new $3Dmol.Line(u[G],
pb,$3Dmol.LinePieces);w.add(Gb)}for(G in t)if(t.hasOwnProperty(G)){var ob=G,qb=new $3Dmol.LineBasicMaterial({linewidth:ob,vertexColors:!0});1>T.cross&&0<=T.cross&&(qb.transparent=!0,qb.opacity=T.cross);t[G].initTypedArrays();var Hb=new $3Dmol.Line(t[G],qb,$3Dmol.LinePieces);w.add(Hb)}if(g&&e.symmetries&&0<e.symmetries.length){var yb=new $3Dmol.Object3D,ib;for(ib=0;ib<e.symmetries.length;ib++){var jb=new $3Dmol.Object3D,jb=w.clone();jb.matrix.copy(e.symmetries[ib]);jb.matrixAutoUpdate=!1;yb.add(jb)}l=
yb}else l=w;m&&(b.remove(m),m=null);m=l.clone();h&&(m.setVisible(!1),l.setVisible(!1));b.add(m)}};this.removegl=function(b){m&&(void 0!==m.geometry&&m.geometry.dispose(),void 0!==m.material&&m.material.dispose(),b.remove(m),m=null);l=null};this.hide=function(){h=!0;m&&m.setVisible(!1);l&&l.setVisible(!1)};this.show=function(){h=!1;m&&m.setVisible(!0);l&&l.setVisible(!0)};this.addResLabels=function(b,c,l){var d=this.selectedAtoms(b,d);b={};for(var e=0;e<d.length;e++){var f=d[e],g=f.chain,h=f.resn+
""+f.resi;b[g]||(b[g]={});b[g][h]||(b[g][h]=[]);b[g][h].push(f)}l=$.extend(!0,{},l);for(g in b)if(b.hasOwnProperty(g)){var m=b[g];for(h in m)if(m.hasOwnProperty(h)){for(var d=m[h],w=new $3Dmol.Vector3(0,0,0),e=0;e<d.length;e++)f=d[e],w.x+=f.x,w.y+=f.y,w.z+=f.z;w.divideScalar(d.length);l.position=w;c.addLabel(h,l)}}}}var c={line:{}},d={H:1.2,Li:1.82,LI:1.82,Na:2.27,NA:2.27,K:2.75,C:1.7,N:1.55,O:1.52,F:1.47,P:1.8,S:1.8,CL:1.75,Cl:1.75,BR:1.85,Br:1.85,SE:1.9,Se:1.9,ZN:1.39,Zn:1.39,CU:1.4,Cu:1.4,NI:1.63,
Ni:1.63},p="resn x y z color surfaceColor elem hetflag chain resi icode rescode serial atom bonds ss singleBonds bondOrder properties b pdbline clickable callback invert".split(" ").concat("model bonds predicate invert byres expand within".split(" ")),t=["line","cross","stick","sphere","cartoon"];b.parseMolData=function(b,c,d){c=c||"";if(!b)return[];if(/\.gz$/.test(c)){c=c.replace(/\.gz$/,"");try{b=pako.inflate(b,{to:"string"})}catch(f){console.log(f)}}"undefined"==typeof $3Dmol.Parsers[c]&&(c=c.split(".").pop(),
"undefined"==typeof $3Dmol.Parsers[c]&&(console.log("Unknown format: "+c),c=b.match(/^@<TRIPOS>MOLECULE/gm)?"mol2":b.match(/^HETATM/gm)||b.match(/^ATOM/gm)?"pdb":b.match(/^.*\n.*\n.\s*(\d+)\s+(\d+)/gm)?"sdf":"xyz",console.log("Best guess: "+c)));return(0,$3Dmol.Parsers[c])(b,d)};b.setAtomDefaults=function(b,d){for(var t=0;t<b.length;t++){var f=b[t];f&&(f.style=f.style||c,f.color=f.color||ElementColors[f.elem]||defaultColor,f.model=d,f.clickable&&(f.intersectionShape={sphere:[],cylinder:[],line:[],
triangle:[]}))}};return b}();
$3Dmol.GLShape=function(){function b(b){b=b||{};$3Dmol.ShapeIDCount++;this.boundingSphere=new $3Dmol.Sphere;this.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]};p(this,b);var A=[],y=null,z=null,f=new $3Dmol.Geometry(!0),h=new $3Dmol.Geometry(!0);this.updateStyle=function(c){for(var d in c)b[d]=c[d];p(this,b)};this.addCustom=function(b){b.vertexArr=b.vertexArr||[];b.faceArr=b.faceArr||[];b.normalArr=b.normalArr||[];c(this,f,b)};this.addSphere=function(b){b.center=b.center||{x:0,y:0,z:0};
b.radius=b.radius?$3Dmol.Math.clamp(b.radius,0,Infinity):1.5;b.color=$3Dmol.CC.color(b.color);this.intersectionShape.sphere.push(new $3Dmol.Sphere(b.center,b.radius));$3Dmol.GLDraw.drawSphere(f,b.center,b.radius,b.color);A.push({centroid:new $3Dmol.Vector3(b.center.x,b.center.y,b.center.z)});b=f.updateGeoGroup(0);d(this.boundingSphere,A,b.vertexArray)};this.addCylinder=function(b){b.start=b.start||{};b.end=b.end||{};var c=new $3Dmol.Vector3(b.start.x||0,b.start.y||0,b.start.z||0),h=new $3Dmol.Vector3(b.end.x,
b.end.y||0,b.end.z||0);"undefined"==typeof h.x&&(h.x=3);var e=b.radius||.1,t=$3Dmol.CC.color(b.color);this.intersectionShape.cylinder.push(new $3Dmol.Cylinder(c,h,e));$3Dmol.GLDraw.drawCylinder(f,c,h,e,t,b.fromCap,b.toCap);b=new $3Dmol.Vector3;A.push({centroid:b.addVectors(c,h).multiplyScalar(.5)});c=f.updateGeoGroup(0);d(this.boundingSphere,A,c.vertexArray)};this.addLine=function(b){b.start=b.start||{};b.end=b.end||{};var c=new $3Dmol.Vector3(b.start.x||0,b.start.y||0,b.start.z||0),d=new $3Dmol.Vector3(b.end.x,
b.end.y||0,b.end.z||0);"undefined"==typeof d.x&&(d.x=3);b=f.updateGeoGroup(2);var e=b.vertices,h=3*e,g=b.vertexArray;g[h]=c.x;g[h+1]=c.y;g[h+2]=c.z;g[h+3]=d.x;g[h+4]=d.y;g[h+5]=d.z;b.vertices+=2;c=b.lineArray;d=b.lineidx;c[d]=e;c[d+1]=e+1;b.lineidx+=2};this.addArrow=function(b){b.start=b.start||{};b.end=b.end||{};b.start=new $3Dmol.Vector3(b.start.x||0,b.start.y||0,b.start.z||0);if(b.dir instanceof $3Dmol.Vector3&&b.length instanceof number){var c=b.dir.clone().multiplyScalar(b.length).add(start);
b.end=c}else b.end=new $3Dmol.Vector3(b.end.x,b.end.y||0,b.end.z||0),"undefined"==typeof b.end.x&&(b.end.x=3);b.radius=b.radius||.1;b.radiusRatio=b.radiusRatio||1.618034;b.mid=0<b.mid&&1>b.mid?b.mid:.618034;var h=b.start,e=b.end,t=b.radius,g=b.radiusRatio,s=b.mid;if(h&&e){var c=f.updateGeoGroup(51),u=e.clone();u.sub(h).multiplyScalar(s);var x=h.clone().add(u),s=u.clone().negate();this.intersectionShape.cylinder.push(new $3Dmol.Cylinder(h.clone(),x.clone(),t));this.intersectionShape.sphere.push(new $3Dmol.Sphere(h.clone(),
t));var q=[];q[0]=u.clone();1E-4<Math.abs(q[0].x)?q[0].y+=1:q[0].x+=1;q[0].cross(u);q[0].normalize();q[0]=q[0];q[4]=q[0].clone();q[4].crossVectors(q[0],u);q[4].normalize();q[8]=q[0].clone().negate();q[12]=q[4].clone().negate();q[2]=q[0].clone().add(q[4]).normalize();q[6]=q[4].clone().add(q[8]).normalize();q[10]=q[8].clone().add(q[12]).normalize();q[14]=q[12].clone().add(q[0]).normalize();q[1]=q[0].clone().add(q[2]).normalize();q[3]=q[2].clone().add(q[4]).normalize();q[5]=q[4].clone().add(q[6]).normalize();
q[7]=q[6].clone().add(q[8]).normalize();q[9]=q[8].clone().add(q[10]).normalize();q[11]=q[10].clone().add(q[12]).normalize();q[13]=q[12].clone().add(q[14]).normalize();q[15]=q[14].clone().add(q[0]).normalize();var y=c.vertices,p=c.vertexArray,z=c.faceArray,C=c.normalArray,B=c.lineArray,F,J,L;J=0;for(L=q.length;J<L;++J){F=3*(y+3*J);var K=q[J].clone().multiplyScalar(t).add(h),H=q[J].clone().multiplyScalar(t).add(x),M=q[J].clone().multiplyScalar(t*g).add(x);p[F]=K.x;p[F+1]=K.y;p[F+2]=K.z;p[F+3]=H.x;p[F+
4]=H.y;p[F+5]=H.z;p[F+6]=M.x;p[F+7]=M.y;p[F+8]=M.z;0<J&&(F=new $3Dmol.Vector3(p[F-3],p[F-2],p[F-1]),K=e.clone(),H=x.clone(),M=new $3Dmol.Vector3(M.x,M.y,M.z),this.intersectionShape.triangle.push(new $3Dmol.Triangle(M,K,F)),this.intersectionShape.triangle.push(new $3Dmol.Triangle(F.clone(),H,M.clone())))}c.vertices+=48;F=3*c.vertices;p[F]=h.x;p[F+1]=h.y;p[F+2]=h.z;p[F+3]=x.x;p[F+4]=x.y;p[F+5]=x.z;p[F+6]=e.x;p[F+7]=e.y;p[F+8]=e.z;c.vertices+=3;var O,R,V,P,S,Q,da,Y,ba=c.vertices-3,E=c.vertices-2,aa=
c.vertices-1,T=3*ba,Z=3*E,W=3*aa;J=0;for(L=q.length-1;J<L;++J)O=y+3*J,h=c.faceidx,e=c.lineidx,t=O,F=3*t,g=O+1,K=3*g,x=O+2,H=3*x,p=O+4,R=3*p,M=O+5,V=3*M,O+=3,P=3*O,S=Q=q[J],da=Y=q[J+1],C[F]=S.x,C[K]=Q.x,C[P]=Y.x,C[F+1]=S.y,C[K+1]=Q.y,C[P+1]=Y.y,C[F+2]=S.z,C[K+2]=Q.z,C[P+2]=Y.z,C[K]=Q.x,C[R]=da.x,C[P]=Y.x,C[K+1]=Q.y,C[R+1]=da.y,C[P+1]=Y.y,C[K+2]=Q.z,C[R+2]=da.z,C[P+2]=Y.z,C[H]=Q.x,C[V]=da.x,C[H+1]=Q.y,C[V+1]=da.y,C[H+2]=Q.z,C[V+2]=da.z,z[h]=t,z[h+1]=g,z[h+2]=O,z[h+3]=g,z[h+4]=p,z[h+5]=O,z[h+6]=t,z[h+
7]=O,z[h+8]=ba,z[h+9]=x,z[h+10]=E,z[h+11]=M,z[h+12]=x,z[h+13]=aa,z[h+14]=M,B[e]=t,B[e+1]=g,B[e+2]=t,B[e+3]=O,B[e+4]=p,B[e+5]=O,B[e+6]=t,B[e+7]=O,B[e+8]=x,B[e+9]=g,B[e+10]=x,B[e+11]=M,B[e+12]=p,B[e+13]=M,B[e+14]=x,B[e+15]=aa,B[e+16]=x,B[e+17]=M,B[e+18]=aa,B[e+19]=M,c.faceidx+=15,c.lineidx+=20;y=[y+45,y+46,y+1,y,y+47,y+2];h=c.faceidx;e=c.lineidx;t=y[0];F=3*t;g=y[1];K=3*g;x=y[4];H=3*x;p=y[2];R=3*p;M=y[5];V=3*M;O=y[3];P=3*O;S=Q=q[15];da=Y=q[0];C[F]=S.x;C[K]=Q.x;C[P]=Y.x;C[F+1]=S.y;C[K+1]=Q.y;C[P+1]=Y.y;
C[F+2]=S.z;C[K+2]=Q.z;C[P+2]=Y.z;C[K]=Q.x;C[R]=da.x;C[P]=Y.x;C[K+1]=Q.y;C[R+1]=da.y;C[P+1]=Y.y;C[K+2]=Q.z;C[R+2]=da.z;C[P+2]=Y.z;C[H]=Q.x;C[V]=da.x;C[H+1]=Q.y;C[V+1]=da.y;C[H+2]=Q.z;C[V+2]=da.z;u.normalize();s.normalize();C[T]=s.x;C[Z]=C[W]=u.x;C[T+1]=s.y;C[Z+1]=C[W+1]=u.y;C[T+2]=s.z;C[Z+2]=C[W+2]=u.z;z[h]=t;z[h+1]=g;z[h+2]=O;z[h+3]=g;z[h+4]=p;z[h+5]=O;z[h+6]=t;z[h+7]=O;z[h+8]=ba;z[h+9]=x;z[h+10]=E;z[h+11]=M;z[h+12]=x;z[h+13]=aa;z[h+14]=M;B[e]=t;B[e+1]=g;B[e+2]=t;B[e+3]=O;B[e+4]=p;B[e+5]=O;B[e+6]=
t;B[e+7]=O;B[e+8]=x;B[e+9]=g;B[e+10]=x;B[e+11]=M;B[e+12]=p;B[e+13]=M;B[e+14]=x;B[e+15]=aa;B[e+16]=x;B[e+17]=M;B[e+18]=aa;B[e+19]=M;c.faceidx+=15;c.lineidx+=20}c=new $3Dmol.Vector3;A.push({centroid:c.addVectors(b.start,b.end).multiplyScalar(.5)});b=f.updateGeoGroup(0);d(this.boundingSphere,A,b.vertexArray)};this.addIsosurface=function(b,d){var h=void 0!==d.isoval&&"number"===typeof d.isoval?d.isoval:0,e=d.voxel?!0:!1,t=void 0===d.smoothness?1:d.smoothness,g=b.size.x,s=b.size.y,u=b.size.z,x=new Int16Array(g*
s*u),q=b.data,p,z;p=0;for(z=x.length;p<z;++p)x[p]=-1;x=new Uint8Array(g*s*u);p=0;for(z=q.length;p<z;++p)0<(0<=h?q[p]-h:h-q[p])&&(x[p]|=2);h=[];p=[];$3Dmol.MarchingCube.march(x,h,p,{fulltable:!0,voxel:e,unitCube:b.unit,origin:b.origin,matrix:b.matrix,nX:g,nY:s,nZ:u});!e&&0<t&&$3Dmol.MarchingCube.laplacianSmooth(t,h,p);c(this,f,{vertexArr:h,faceArr:p,normalArr:[],clickable:d.clickable});this.updateStyle(d);p=new $3Dmol.Vector3(b.origin.x,b.origin.y,b.origin.z);g=new $3Dmol.Vector3(b.size.x*b.unit.x,
b.size.y*b.unit.y,b.size.z*b.unit.z);e=new $3Dmol.Vector3(0,0,0);t=p.clone();g=p.clone().add(g);for(p=0;p<h.length;p++)e.add(h[p]),t.max(h[p]),g.min(h[p]);e.divideScalar(h.length);p=e.distanceTo(g);h=e.distanceTo(t);this.boundingSphere.center=e;this.boundingSphere.radius=Math.max(p,h)};this.addVolumetricData=function(b,c,d){b=new $3Dmol.VolumeData(b,c);this.addIsosurface(b,d)};this.globj=function(b){z&&(b.remove(z),z=null);if(!this.hidden){var c=f.updateGeoGroup(0);0<c.vertices&&c.truncateArrayBuffers(!0,
!0);f.initTypedArrays();if("undefined"!=typeof this.color){(c=this.color)||$3Dmol.CC.color(c);f.colorsNeedUpdate=!0;var d,e,p;c.constructor!==Array&&(d=c.r,e=c.g,p=c.b);for(var g in f.geometryGroups)for(var s=f.geometryGroups[g],u=s.colorArray,x=0,s=s.vertices;x<s;++x)c.constructor===Array&&(p=c[x],d=p.r,e=p.g,p=p.b),u[3*x]=d,u[3*x+1]=e,u[3*x+2]=p}y=new $3Dmol.Object3D;d=null;d=this.side==$3Dmol.DoubleSide?new $3Dmol.MeshDoubleLambertMaterial({wireframe:this.wireframe,side:this.side,transparent:1>
this.opacity?!0:!1,opacity:this.opacity,wireframeLinewidth:this.linewidth}):new $3Dmol.MeshLambertMaterial({wireframe:this.wireframe,side:this.side,transparent:1>this.opacity?!0:!1,opacity:this.opacity,wireframeLinewidth:this.linewidth});d=new $3Dmol.Mesh(f,d);y.add(d);d=new $3Dmol.LineBasicMaterial({linewidth:this.linewidth,color:this.color});d=new $3Dmol.Line(h,d,$3Dmol.LinePieces);y.add(d);z=y.clone();b.add(z)}};this.removegl=function(b){z&&(void 0!==z.geometry&&z.geometry.dispose(),void 0!==z.material&&
z.material.dispose(),b.remove(z),z=null);y=null}}var c=function(b,c,p){var z=p.faceArr;0!==p.vertexArr.length&&0!==z.length||console.warn("Error adding custom shape component: No vertices and/or face indices supplied!");z=p.color;"undefined"==typeof z&&(z=b.color);for(var z=$3Dmol.CC.color(z),f=$3Dmol.splitMesh(p),h=0,l=f.length;h<l;h++){var m=b,w=c,e=f[h],G=f[h].colorArr?f[h].colorArr:z,g=p.clickable,s=w.addGeoGroup(),u=e.vertexArr,x=e.normalArr,e=e.faceArr;s.vertices=u.length;s.faceidx=e.length;
var q=void 0,N=void 0,I=void 0,D=void 0,C=N=void 0,B=void 0,F=s.vertexArray,I=s.colorArray;if(G.constructor!==Array)var J=G.r,L=G.g,D=G.b;C=0;for(B=s.vertices;C<B;++C)q=3*C,N=u[C],F[q]=N.x,F[q+1]=N.y,F[q+2]=N.z,G.constructor===Array&&(N=G[C],J=N.r,L=N.g,D=N.b),I[q]=J,I[q+1]=L,I[q+2]=D;if(g)for(C=0,B=s.faceidx/3;C<B;++C){var q=3*C,I=e[q],D=e[q+1],N=e[q+2],q=new $3Dmol.Vector3,G=new $3Dmol.Vector3,K=new $3Dmol.Vector3;m.intersectionShape.triangle.push(new $3Dmol.Triangle(q.copy(u[I]),G.copy(u[D]),K.copy(u[N])))}if(g){C=
new $3Dmol.Vector3(0,0,0);for(L=B=0;L<w.geometryGroups.length;L++)C.add(w.geometryGroups[L].getCentroid()),B++;C.divideScalar(B);d(m.boundingSphere,{centroid:C},F)}s.faceArray=new Uint16Array(e);s.truncateArrayBuffers(!0,!0);if(x.length<s.vertices)s.setNormals();else for(m=s.normalArray=new Float32Array(3*s.vertices),w=void 0,C=0,B=s.vertices;C<B;++C)q=3*C,w=x[C],m[q]=w.x,m[q+1]=w.y,m[q+2]=w.z;s.setLineIndices();s.lineidx=s.lineArray.length}},d=function(b,c,d){b.center.set(0,0,0);var p,f;if(0<c.length){p=
0;for(f=c.length;p<f;++p)b.center.add(c[p].centroid);b.center.divideScalar(c.length)}c=b.radius*b.radius;p=0;for(f=d.length/3;p<f;p++){var h=b.center.distanceToSquared({x:d[3*p],y:d[3*p+1],z:d[3*p+2]});c=Math.max(c,h)}b.radius=Math.sqrt(c)},p=function(b,c){"undefined"!=typeof c.color&&(b.color=c.color||new $3Dmol.Color,c.color instanceof $3Dmol.Color||(b.color=$3Dmol.CC.color(c.color)));b.wireframe=c.wireframe?!0:!1;b.opacity=c.alpha?$3Dmol.Math.clamp(c.alpha,0,1):1;"undefined"!=typeof c.opacity&&
(b.opacity=$3Dmol.Math.clamp(c.opacity,0,1));b.side=void 0!==c.side?c.side:$3Dmol.DoubleSide;b.linewidth="undefined"==typeof c.linewidth?1:c.linewidth;b.clickable=c.clickable?!0:!1;b.callback="function"===typeof c.callback?c.callback:null;b.hidden=c.hidden};Object.defineProperty(b.prototype,"position",{get:function(){return this.boundingSphere.center}});Object.defineProperty(b.prototype,"x",{get:function(){return this.boundingSphere.center.x}});Object.defineProperty(b.prototype,"y",{get:function(){return this.boundingSphere.center.y}});
Object.defineProperty(b.prototype,"z",{get:function(){return this.boundingSphere.center.z}});return b}();$3Dmol.ShapeIDCount=0;
$3Dmol.splitMesh=function(b){if(64E3>b.vertexArr.length)return[b];var c=[{vertexArr:[],normalArr:[],faceArr:[]}];b.colorArr&&(c.colorArr=[]);for(var d=[],p=[],t=0,A=b.faceArr,y=0,z=A.length;y<z;y+=3){for(var f=c[t],h=0;3>h;h++){var l=A[y+h];d[l]!==t&&(d[l]=t,p[l]=f.vertexArr.length,f.vertexArr.push(b.vertexArr[l]),b.normalArr&&b.normalArr[l]&&f.normalArr.push(b.normalArr[l]),b.colorArr&&b.colorArr[l]&&f.colorArr.push(b.colorArr[l]));f.faceArr.push(p[l])}64E3<=f.vertexArr.length&&(c.push({vertexArr:[],
normalArr:[],faceArr:[]}),b.colorArr&&(c.colorArr=[]),t++)}return c};
$3Dmol.GLViewer=function(){return function(b,c){function d(b){var c=[];"undefined"===typeof b&&(b={});var d=[],f;if("undefined"===typeof b.model)for(f=0;f<e.length;f++)e[f]&&d.push(e[f]);else d=b.model,$.isArray(d)||(d=[d]);for(f=0;f<d.length;f++)c=c.concat(d[f].selectedAtoms(b));return c}function p(b,c,d,f){var l=[];if("undefined"===typeof c.model)for(h=0;h<e.length;h++)e[h]&&l.push(e[h]);else l=c.model,$.isArray(l)||(l=[l]);for(var h=0;h<l.length;h++)if(l[h])l[h][b](c,d,f)}function t(b){var c=new $3Dmol.MeshLambertMaterial;
c.vertexColors=$3Dmol.VertexColors;for(var d in b)"color"!==d&&"map"!==d&&b.hasOwnProperty(d)&&(c[d]=b[d]);void 0!==b.opacity&&(c.transparent=1===b.opacity?!1:!0);return c}c=c||{};var A=c.callback,y=c.defaultcolors;y||(y=$3Dmol.elementColors.defaultColors);var z=c.nomouse,f=0;void 0!=typeof c.backgroundColor&&(f=$3Dmol.CC.color(c.backgroundColor).getHex());var h=0;void 0!=typeof c.camerax&&(h=parseFloat(c.camerax));var l=this,m=b,w=null,e=[],G={},g=[],s=[],u=[],x=m.width(),q=m.height(),N=x/q,I=[],
D=new $3Dmol.Renderer({antialias:!0,preserveDrawingBuffer:!0,premultipliedAlpha:!1});D.domElement.style.width="100%";D.domElement.style.height="100%";D.domElement.style.padding="0";D.domElement.style.position="absolute";D.domElement.style.top="0px";D.domElement.style.left="0px";D.domElement.style.zIndex="0";var C=new $3Dmol.Camera(20,N,1,800,c.orthographic);C.position=new $3Dmol.Vector3(h,0,150);var B=new $3Dmol.Vector3;C.lookAt(B);var F=new $3Dmol.Raycaster(new $3Dmol.Vector3(0,0,0),new $3Dmol.Vector3(0,
0,0)),J=new $3Dmol.Projector,L=new $3Dmol.Vector3(0,0,0),K=null,H=null,M=null,O=-50,R=50,V=new $3Dmol.Quaternion(0,0,0,1),P=new $3Dmol.Quaternion(0,0,0,1),S=!1,Q=!1,da=0,Y=0,ba=0,E=0,aa=0,T=0,Z=0,W=function(){var b=0;for(i in G)G.hasOwnProperty(i)&&i>b&&(b=i);return b+1},U=function(){var b=C.position.z-H.position.z;1>b&&(b=1);C.near=b+O;1>C.near&&(C.near=1);C.far=b+R;C.near+1>C.far&&(C.far=C.near+1);C.fov=20;C.right=b*Math.tan(Math.PI/180*20);C.left=-C.right;C.top=C.right/N;C.bottom=-C.top;C.updateProjectionMatrix();
K.fog.near=C.near+.4*(C.far-C.near);K.fog.far=C.far},X=function(b){if(K&&(U(),D.render(K,C),!b&&0<I.length)){b=l.getView();for(var c=0;c<I.length;c++)I[c].setView(b,!0)}};(function(){K=new $3Dmol.Scene;K.fog=new $3Dmol.Fog(f,100,200);M=new $3Dmol.Object3D;H=new $3Dmol.Object3D;H.useQuaternion=!0;H.quaternion=new $3Dmol.Quaternion(0,0,0,1);H.add(M);K.add(H);var b=new $3Dmol.Light(16777215);b.position=(new $3Dmol.Vector3(.2,.2,1)).normalize();b.intensity=1;K.add(b)})();D.setClearColorHex(f,1);K.fog.color=
$3Dmol.CC.color(f);var ga=function(b){var c=b.originalEvent.targetTouches[0].pageX-b.originalEvent.targetTouches[1].pageX;b=b.originalEvent.targetTouches[0].pageY-b.originalEvent.targetTouches[1].pageY;return Math.sqrt(c*c+b*b)},Ea=function(b){var c=b.pageX,d=b.pageY;b.originalEvent.targetTouches&&b.originalEvent.targetTouches[0]?(c=b.originalEvent.targetTouches[0].pageX,d=b.originalEvent.targetTouches[0].pageY):b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(c=b.originalEvent.changedTouches[0].pageX,
d=b.originalEvent.changedTouches[0].pageY);return[c,d]};$("body").bind("mouseup touchend",function(b){if(Q&&K){var c=Ea(b),d=c[0],c=c[1];if(d==da&&c==Y){var e=$("canvas",m).offset(),d=(d-e.left)/x*2-1,c=2*-((c-e.top)/q)+1;0!=u.length&&(L.set(d,c,-1),J.unprojectVector(L,C),L.sub(C.position).normalize(),F.set(C.position,L),d=[],d=F.intersectObjects(M,u),d.length&&(d=d[0].clickable,void 0!==d.callback&&"function"===typeof d.callback&&d.callback(d,l,b,m)))}}Q=!1});var Na=this._handleMouseDown=function(b){b.preventDefault();
if(K){var c=Ea(b),d=c[0],c=c[1];void 0!==d&&(Q=!0,mouseButton=b.which,da=d,Y=c,ba=0,b.originalEvent.targetTouches&&2==b.originalEvent.targetTouches.length&&(ba=ga(b)),V=H.quaternion,aa=H.position.z,E=M.position.clone(),T=O,Z=R)}},Fa=this._handleMouseScroll=function(b){b.preventDefault();if(K){var c=.85*(150-H.position.z),d=1;b.originalEvent.ctrlKey&&(d=-1);b.originalEvent.detail?H.position.z+=d*c*b.originalEvent.detail/10:b.originalEvent.wheelDelta&&(H.position.z-=d*c*b.originalEvent.wheelDelta/400);
150<H.position.z&&(H.position.z=149.85);X()}},Ga=this._handleMouseMove=function(b){x=m.width();q=m.height();b.preventDefault();if(K&&Q){var c=0,d=Ea(b),e=d[0],d=d[1];if(void 0!==e){var f=(e-da)/x,l=(d-Y)/q;0!=ba&&b.originalEvent.targetTouches&&2==b.originalEvent.targetTouches.length?(l=ga(b),c=2,l=2*(l-ba)/(x+q),console.log("pinch "+ba+" dy "+l)):b.originalEvent.targetTouches&&3==b.originalEvent.targetTouches.length&&(c=1);var h=Math.sqrt(f*f+l*l);3==c||3==mouseButton&&b.ctrlKey?(O=T+100*f,R=Z+100*
l):2==c||3==mouseButton||b.shiftKey?(b=.85*(150-H.position.z),80>b&&(b=80),H.position.z=aa+l*b,150<H.position.z&&(H.position.z=149.85)):1==c||2==mouseButton||b.ctrlKey?(b=(e-da)/x,c=(d-Y)/q,e=H.quaternion,d=new $3Dmol.Vector3(0,0,H.position.z),J.projectVector(d,C),d.x+=2*b,d.y-=2*c,J.unprojectVector(d,C),d.z=0,d.applyQuaternion(e),M.position.addVectors(E,d)):0!==c&&1!=mouseButton||0===h||(b=Math.sin(h*Math.PI)/h,P.x=Math.cos(h*Math.PI),P.y=0,P.z=b*f,P.w=-b*l,H.quaternion=new $3Dmol.Quaternion(1,0,
0,0),H.quaternion.multiply(P),H.quaternion.multiply(V));X()}}},Ta=function(b){m=b;x=m.width();q=m.height();N=x/q;D.setSize(x,q);m.append(D.domElement);w=$(D.domElement);z||(w.bind("mousedown touchstart",Na),w.bind("DOMMouseScroll mousewheel",Fa),w.bind("mousemove touchmove",Ga),w.bind("contextmenu",function(b){b.preventDefault()}))};Ta(m);this.setContainer=function(b){"string"===$.type(b)&&(b=$("#"+b));b||(b=m);Ta(b);return this};this.setBackgroundColor=function(b,c){if("undefined"==typeof c)c=1;
else if(0>c||1<c)c=1;var d=$3Dmol.CC.color(b);K.fog.color=d;f=d.getHex();D.setClearColorHex(d.getHex(),c);X();return this};this.setProjection=function(b){C.ortho="orthographic"===b;U()};this.setViewStyle=function(b){if("outline"===b.style){var c={};b.color&&(c.color=$3Dmol.CC.color(b.color));b.width&&(c.width=b.width);D.enableOutline(c)}else D.disableOutline();return this};c.style&&this.setViewStyle(c);this.setWidth=function(b){x=b||x;D.setSize(x,q);return this};this.setHeight=function(b){q=b||q;
D.setSize(x,q);return this};this.resize=function(){x=m.width();q=m.height();N=x/q;D.setSize(x,q);C.aspect=N;C.updateProjectionMatrix();X();return this};$(window).resize(this.resize);this.getModel=function(b){b=b||e.length-1;return e[b]};this.rotate=function(b,c){"undefined"===typeof c&&(c="y");var d=0,e=0,f=0,l=Math.PI*b/180,h=Math.sin(l/2),l=Math.cos(l/2);"x"==c&&(d=h);"y"==c&&(e=h);"z"==c&&(f=h);d=(new $3Dmol.Quaternion(d,e,f,l)).normalize();H.quaternion.multiply(d);X();return this};this.getView=
function(){if(!M)return[0,0,0,0,0,0,0,1];var b=M.position,c=H.quaternion;return[b.x,b.y,b.z,H.position.z,c.x,c.y,c.z,c.w]};this.setView=function(b,c){if(void 0===b||!(b instanceof Array||8!==b.length)||!M||!H)return this;M.position.x=b[0];M.position.y=b[1];M.position.z=b[2];H.position.z=b[3];H.quaternion.x=b[4];H.quaternion.y=b[5];H.quaternion.z=b[6];H.quaternion.w=b[7];"undefined"!=typeof b[8]&&(H.position.x=b[8],H.position.y=b[9]);X(c);return this};this.render=function(){u.splice(0,u.length);var b,
c;b=0;for(c=e.length;b<c;b++){var d=e[b];d&&(d=d.selectedAtoms({clickable:!0}),Array.prototype.push.apply(u,d))}b=0;for(c=g.length;b<c;b++)(d=g[b])&&d.clickable&&u.push(d);b=this.getView();d=D.supportedExtensions();for(c=0;c<e.length;c++)e[c]&&e[c].globj(M,d);for(c=0;c<g.length;c++)g[c]&&g[c].globj(M,d);for(c in G)if(G.hasOwnProperty(c))for(var f=G[c],d=0;d<f.length;d++)if(f.hasOwnProperty(d)){var l=f[d].geo;if(!f[d].finished){l.verticesNeedUpdate=!0;l.elementsNeedUpdate=!0;l.normalsNeedUpdate=!0;
l.colorsNeedUpdate=!0;l.buffersNeedUpdate=!0;l.boundingSphere=null;f[d].done&&(f[d].finished=!0);f[d].lastGL&&M.remove(f[d].lastGL);var h=null,h=f[d].mat instanceof $3Dmol.LineBasicMaterial?new $3Dmol.Line(l,f[d].mat):new $3Dmol.Mesh(l,f[d].mat);h.visible=f[d].mat.transparent&&0==f[d].mat.opacity?!1:!0;if(1<f[d].symmetries.length||1==f[d].symmetries.length&&!f[d].symmetries[d].isIdentity()){for(var m=new $3Dmol.Object3D,l=0;l<f[d].symmetries.length;l++){var q=h.clone();q.matrix=f[d].symmetries[l];
q.matrixAutoUpdate=!1;m.add(q)}f[d].lastGL=m;M.add(m)}else f[d].lastGL=h,M.add(h)}}this.setView(b);return this};this.selectedAtoms=function(b){return d(b)};this.pdbData=function(b){b=d(b);for(var c="",e=0,f=b.length;e<f;++e)c+=b[e].pdbline+"\n";return c};this.zoom=function(b){H.position.z=150-(150-H.position.z)/(b||2);X();return this};this.translate=function(b,c){var d=b/x,e=c/q,f=new $3Dmol.Vector3(0,0,-150);J.projectVector(f,C);f.x-=d;f.y-=e;J.unprojectVector(f,C);f.z=0;B.add(f);C.lookAt(B);X();
return this};this.zoomTo=function(b){var c;b=b||{};var e=d(b),f=$3Dmol.getExtent(e);$.isEmptyObject(b)?($.each(g,function(b,c){if(c&&c.boundingSphere&&c.boundingSphere.center)var d=c.boundingSphere.center;var f=c.boundingSphere.radius;0<f?(e.push(new $3Dmol.Vector3(d.x+f,d.y,d.z)),e.push(new $3Dmol.Vector3(d.x-f,d.y,d.z)),e.push(new $3Dmol.Vector3(d.x,d.y+f,d.z)),e.push(new $3Dmol.Vector3(d.x,d.y-f,d.z)),e.push(new $3Dmol.Vector3(d.x,d.y,d.z+f)),e.push(new $3Dmol.Vector3(d.x,d.y,d.z-f))):e.push(d)}),
f=$3Dmol.getExtent(e),b=e,c=f):(b=d({}),c=$3Dmol.getExtent(b));b=new $3Dmol.Vector3(f[2][0],f[2][1],f[2][2]);M.position=b.clone().multiplyScalar(-1);var l=c[1][0]-c[0][0],h=c[1][1]-c[0][1];c=c[1][2]-c[0][2];l=Math.sqrt(l*l+h*h+c*c);5>l&&(l=5);O=-l/1.9;R=l/2;l=f[1][0]-f[0][0];h=f[1][1]-f[0][1];c=f[1][2]-f[0][2];l=Math.sqrt(l*l+h*h+c*c);5>l&&(l=5);f=25;for(l=0;l<e.length;l++)e[l]&&(h=b.distanceToSquared(e[l]),h>f&&(f=h));l=2*Math.sqrt(f);H.position.z=-(.5*l/Math.tan(Math.PI/180*C.fov/2)-150);X();return this};
this.setSlab=function(b,c){O=b;R=c};this.getSlab=function(b){return{near:O,far:R}};this.addLabel=function(b,c){var d=new $3Dmol.Label(b,c);d.setContext();M.add(d.sprite);s.push(d);X();return d};this.addResLabels=function(b,c){p("addResLabels",b,this,c);return this};this.removeLabel=function(b){for(var c=0;c<s.length;c++)if(s[c]==b){s.splice(c,1);b.dispose();M.remove(b.sprite);break}return this};this.removeAllLabels=function(){for(var b=0;b<s.length;b++)M.remove(s[b].sprite);s.splice(0,s.length);return this};
this.setLabelStyle=function(b,c){M.remove(b.sprite);b.dispose();b.stylespec=c;b.setContext();M.add(b.sprite);X();return b};this.setLabelText=function(b,c){M.remove(b.sprite);b.dispose();b.text=c;b.setContext();M.add(b.sprite);X();return b};this.addShape=function(b){b=b||{};b=new $3Dmol.GLShape(b);b.shapePosition=g.length;g.push(b);return b};this.removeShape=function(b){if(!b)return this;b.removegl(M);for(delete g[b.shapePosition];0<g.length&&"undefined"===typeof g[g.length-1];)g.pop();return this};
this.removeAllShapes=function(){for(var b=0;b<g.length;b++)g[b].removegl(M);g.splice(0,g.length);return this};this.addSphere=function(b){b=b||{};var c=new $3Dmol.GLShape(b);c.shapePosition=g.length;c.addSphere(b);g.push(c);return c};this.addArrow=function(b){b=b||{};var c=new $3Dmol.GLShape(b);c.shapePosition=g.length;c.addArrow(b);g.push(c);return c};this.addCylinder=function(b){b=b||{};var c=new $3Dmol.GLShape(b);c.shapePosition=g.length;c.addCylinder(b);g.push(c);return c};this.addLine=function(b){b=
b||{};b.wireframe=!0;var c=new $3Dmol.GLShape(b);c.shapePosition=g.length;if(b.dashed){b.dashLength=b.dashLength||.5;b.gapLength=b.gapLength||.5;b.start=b.start||{};b.end=b.end||{};var d=new $3Dmol.Vector3(b.start.x||0,b.start.y||0,b.start.z||0),e=new $3Dmol.Vector3(b.end.x,b.end.y||0,b.end.z||0),f=new $3Dmol.Vector3,l=new $3Dmol.Vector3,h=new $3Dmol.Vector3,m,q,s=d.clone(),w=0;f.subVectors(e,d);m=f.length();f.normalize();l=f.clone();h=f.clone();l.multiplyScalar(b.dashLength);h.multiplyScalar(b.gapLength);
f=l.length();for(q=h.length();w<m;){if(w+f>m){b.start=d;b.end=e;c.addLine(b);break}s.addVectors(d,l);b.start=d;b.end=s;c.addLine(b);d=s.clone();w+=f;s.addVectors(d,h);d=s.clone();w+=q}}else c.addLine(b);g.push(c);return c};this.addUnitCell=function(b){var c=new $3Dmol.GLShape({wireframe:!0});c.shapePosition=g.length;var d=b.getCrystData();if(d){b=d.a;var e=d.b,f=d.c,l=d.alpha,h=d.beta,d=d.gamma,l=l*Math.PI/180,h=h*Math.PI/180,d=d*Math.PI/180,m;m=Math.cos(h);l=(Math.cos(l)-Math.cos(h)*Math.cos(d))/
Math.sin(d);h=Math.sqrt(Math.max(0,1-m*m-l*l));b=new $3Dmol.Matrix4(b,e*Math.cos(d),f*m,0,0,e*Math.sin(d),f*l,0,0,0,f*h,0,0,0,0,1);e=[new $3Dmol.Vector3(0,0,0),new $3Dmol.Vector3(1,0,0),new $3Dmol.Vector3(0,1,0),new $3Dmol.Vector3(0,0,1),new $3Dmol.Vector3(1,1,0),new $3Dmol.Vector3(0,1,1),new $3Dmol.Vector3(1,0,1),new $3Dmol.Vector3(1,1,1)];for(f=0;f<e.length;f++)e[f]=e[f].applyMatrix4(b);c.addLine({start:e[0],end:e[1]});c.addLine({start:e[0],end:e[2]});c.addLine({start:e[1],end:e[4]});c.addLine({start:e[2],
end:e[4]});c.addLine({start:e[0],end:e[3]});c.addLine({start:e[3],end:e[5]});c.addLine({start:e[2],end:e[5]});c.addLine({start:e[1],end:e[6]});c.addLine({start:e[4],end:e[7]});c.addLine({start:e[6],end:e[7]});c.addLine({start:e[3],end:e[6]});c.addLine({start:e[5],end:e[7]})}g.push(c);return c};this.addCustom=function(b){b=b||{};var c=new $3Dmol.GLShape(b);c.shapePosition=g.length;c.addCustom(b);g.push(c);return c};this.addVolumetricData=function(b,c,d){d=d||{};var e=new $3Dmol.GLShape(d);e.shapePosition=
g.length;e.addVolumetricData(b,c,d);g.push(e);return e};this.addIsosurface=function(b,c){c=c||{};var d=new $3Dmol.GLShape(c);d.shapePosition=g.length;d.addIsosurface(b,c);g.push(d);return d};this.setFrame=function(b){for(var c=0;c<e.length;c++)e[c].setFrame(b);return this};this.getFrames=function(){for(var b=0,c=0;c<e.length;c++)e[c].getFrames().length>b&&(b=e[c].getFrames().length);return b};this.animate=function(b){S=!0;var c=100,d="forward",e=0;b=b||{};b.interval&&(c=b.interval);b.loop&&(d=b.loop);
b.reps&&(e=b.reps);var f=this.getFrames(),l=this,h=0,g=1,m=0,q=f*e,s=setInterval(function(){var b=d;"forward"==b?(l.setFrame(h),h=(h+g)%f):"backward"==b?(l.setFrame(f-1-h),h=(h+g)%f):(l.setFrame(h),h+=g,g*=0==h%(f-1)?-1:1);l.render();++m!=q&&l.isAnimated()||clearInterval(s)},c);return this};this.stopAnimate=function(){S=!1;return this};this.isAnimated=function(){return S};this.addModel=function(b,c,d){var f=new $3Dmol.GLModel(e.length,y);f.addMolData(b,c,d);e.push(f);return f};this.addModels=function(b,
c,d){d=d||{};d.multimodel=!0;d.frames=!0;b=$3Dmol.GLModel.parseMolData(b,c,d);for(c=0;c<b.length;c++){var f=new $3Dmol.GLModel(e.length,y);f.setAtomDefaults(b[c]);f.addFrame(b[c]);f.setFrame(0);f.setModelData(b.modelData[c]);f.setDontDuplicateAtoms(!d.duplicateAssemblyAtoms);e.push(f)}return e};this.addModelsAsFrames=function(b,c,d){d=d||{};d.multimodel=!0;d.frames=!0;var f=new $3Dmol.GLModel(e.length,y);f.addMolData(b,c,d);e.push(f);return f};this.addAsOneMolecule=function(b,c,d){d=d||{};d.multimodel=
!0;d.onemol=!0;var f=new $3Dmol.GLModel(e.length,y);f.addMolData(b,c,d);e.push(f);return f};this.removeModel=function(b){if(b){b.removegl(M);for(delete e[b.getID()];0<e.length&&"undefined"===typeof e[e.length-1];)e.pop();return this}};this.removeAllModels=function(){for(var b=0;b<e.length;b++)e[b].removegl(M);e.splice(0,e.length);return this};this.exportJSON=function(b,c){var d={};d.m=void 0===c?e.map(function(c){return c.toCDObject(b)}):[model[c].toCDObject()];return JSON.stringify(d)};this.createModelFrom=
function(b,c){for(var d=new $3Dmol.GLModel(e.length,y),f=0;f<e.length;f++)if(e[f]){var l=e[f].selectedAtoms(b);d.addAtoms(l);c&&e[f].removeAtoms(l)}e.push(d);return d};this.setStyle=function(b,c){"undefined"===typeof c&&(c=b,b={});p("setStyle",b,c,!1);return this};this.addStyle=function(b,c){"undefined"===typeof c&&(c=b,b={});p("setStyle",b,c,!0);return this};this.setClickable=function(b,c,d){p("setClickable",b,c,d);return this};this.setColorByProperty=function(b,c,d){p("setColorByProperty",b,c,d);
return this};this.setColorByElement=function(b,c){p("setColorByElement",b,c);return this};var Oa=function(b,c){for(var d=[],e=0;e<b.length;e++){var f=b[e];"undefined"!=typeof f&&(f.x<c[0][0]||f.x>c[1][0]||f.y<c[0][1]||f.y>c[1][1]||f.z<c[0][2]||f.z>c[1][2]||d.push(e))}return d},Pa=function(b){return(b[1][0]-b[0][0])*(b[1][1]-b[0][1])*(b[1][2]-b[0][2])},ab=function(b,c,d){var e=[],f=function(b){var c=[];c[0]=[b[0][0],b[0][1],b[0][2]];c[1]=[b[1][0],b[1][1],b[1][2]];return c},l=function(b){if(64E3>Pa(b))return[b];
var c=b[1][0]-b[0][0],d=b[1][1]-b[0][1],e=b[1][2]-b[0][2],d=c>d&&c>e?0:d>c&&d>e?1:2,e=f(b),c=f(b);b=(b[1][d]-b[0][d])/2+b[0][d];e[1][d]=b;c[0][d]=b;b=l(e);c=l(c);return b.concat(c)};b=l(b);for(var h=0,g=b.length;h<g;h++){var m=f(b[h]);m[0][0]-=6;m[0][1]-=6;m[0][2]-=6;m[1][0]+=6;m[1][1]+=6;m[1][2]+=6;var m=Oa(c,m),q=Oa(d,b[h]);e.push({extent:b[h],atoms:m,toshow:q})}return e},Ba=function(b,c,d){for(var e=new $3Dmol.Geometry(!0),f=e.updateGeoGroup(0),l=[],h=0,g=b.length;h<g;h++){var m=b[h];m&&("undefined"!=
typeof m.surfaceColor?l[h]=m.surfaceColor:m.color&&(l[h]=$3Dmol.CC.color(m.color)))}var q=f.vertexArray,m=c.vertices,h,g;h=0;for(g=m.length;h<g;h++)b=3*f.vertices,q[b]=m[h].x,q[b+1]=m[h].y,q[b+2]=m[h].z,f.vertices++;q=f.colorArray;if(d.voldata&&d.volscheme){var l=d.volscheme,s=d.voldata,w=l.range()||[-1,1];h=0;for(g=m.length;h<g;h++){b=s.getVal(m[h].x,m[h].y,m[h].z);var u=$3Dmol.CC.color(l.valueToHex(b,w));b=3*h;q[b]=u.r;q[b+1]=u.g;q[b+2]=u.b}}else if(0<l.length)for(h=0,g=m.length;h<g;h++)s=m[h].atomid,
b=3*h,q[b]=l[s].r,q[b+1]=l[s].g,q[b+2]=l[s].b;c=c.faces;f.faceidx=c.length;e.initTypedArrays();var m=f.vertexArray,q=f.normalArray,p;h=0;for(g=c.length;h<g;h+=3)l=c[h+1],s=c[h+2],b=3*c[h],l*=3,s*=3,w=new $3Dmol.Vector3(m[b],m[b+1],m[b+2]),u=new $3Dmol.Vector3(m[l],m[l+1],m[l+2]),p=new $3Dmol.Vector3(m[s],m[s+1],m[s+2]),p.subVectors(p,u),w.subVectors(w,u),p.cross(w),w=p,w.normalize(),q[b]+=w.x,q[l]+=w.x,q[s]+=w.x,q[b+1]+=w.y,q[l+1]+=w.y,q[s+1]+=w.y,q[b+2]+=w.z,q[l+2]+=w.z,q[s+2]+=w.z;f.faceArray=new Uint16Array(c);
d=new $3Dmol.Mesh(e,d);d.doubleSided=!0;return d};this.addMesh=function(b){b={geo:b.geometry,mat:b.material,done:!0,finished:!1};var c=W();G[c]=b;return c};var Ha=function(b){var c=[];$.each(b,function(b,d){c[b]=$.extend({},d)});return c};this.addSurface=function(b,c,f,h,g){var m=null,q=null;f=Ha(d(f));var m=h?Ha(d(h)):f,s=!1;for(h=0;h<e.length;h++)if(e[h]){var w=e[h].getSymmetries();if(1<w.length||1==w.length&&!w[0].isIdentity()){s=!0;break}}var u=function(f,e,h){q=g?Ha(d(g)):h;var m,s=$3Dmol.getExtent(h,
!0),w,u;c.map&&c.map.prop&&(w=c.map.prop,u=c.map.scheme||c.map.gradient||new $3Dmol.Gradient.RWB,(m=u.range())||(m=$3Dmol.getPropertyRange(h,w)),c.colorscheme={prop:w,gradient:u});w=0;for(u=e.length;w<u;w++)m=e[w],m.surfaceColor=$3Dmol.getColorFromStyle(m,c);var x=Pa(s),t=ab(s,e,h);if(q&&q.length&&0<q.length){var z=$3Dmol.getExtent(q,!0);t.sort(function(b,c){var d=function(b,c){var d=b.extent,f=d[1][1]-d[0][1],e=d[1][2]-d[0][2],d=d[1][0]-d[0][0]-c[2][0],f=f-c[2][1],e=e-c[2][2];return d*d+f*f+e*e},
f=d(b,z),d=d(c,z);return f-d})}var y=[];w=0;for(u=e.length;w<u;w++)m=e[w],y[w]={x:m.x,y:m.y,z:m.z,serial:w,elem:m.elem};if($3Dmol.syncSurface)setTimeout(function Ya(c){if(!(c>=t.length)){var d;d=b;var h=t[c].extent,g=t[c].atoms,m=t[c].toshow,q=new $3Dmol.ProteinSurface;q.initparm(h,1===d?!1:!0,x);q.fillvoxels(y,g);q.buildboundary();d==$3Dmol.SurfaceType.SES&&(q.fastdistancemap(),q.boundingatom(!1),q.fillvoxelswaals(y,g));q.marchingcube(d);d=q.getFacesAndVertices(m);d=Ba(e,d,p);$3Dmol.mergeGeos(f.geo,
d);l.render();setTimeout(Ya,1,c+1)}},1,0);else{h=[];0>b&&(b=0);w=0;for(u=4;w<u;w++)s=new Worker($3Dmol.SurfaceWorker),h.push(s),s.postMessage({type:-1,atoms:y,volume:x});var B=0,s=function(b){b=$3Dmol.splitMesh({vertexArr:b.data.vertices,faceArr:b.data.faces});for(var c=0,d=b.length;c<d;c++){var h=Ba(e,{vertices:b[c].vertexArr,faces:b[c].faceArr},p);$3Dmol.mergeGeos(f.geo,h);l.render()}B++;B==t.length&&(f.done=!0)};u=function(b){console.log(b.message+" ("+b.filename+":"+b.lineno+")")};for(w=0;w<t.length;w++)m=
h[w%h.length],m.onmessage=s,m.onerror=u,m.postMessage({type:b,expandedExtent:t[w].extent,extendedAtoms:t[w].atoms,atomsToShow:t[w].toshow})}};c=c||{};var p=t(c),w=[];if(s){var s={},x={};for(h=0;h<e.length;h++)s[h]=[],x[h]=[];for(h=0;h<m.length;h++)s[m[h].model].push(m[h]);for(h=0;h<f.length;h++)x[f[h].model].push(f[h]);for(h=0;h<e.length;h++)w.push({geo:new $3Dmol.Geometry(!0),mat:p,done:!1,finished:!1,symmetries:e[h].getSymmetries()}),u(w[h],s[h],x[h])}else w.push({geo:new $3Dmol.Geometry(!0),mat:p,
done:!1,finished:!1,symmetries:[new $3Dmol.Matrix4]}),u(w[w.length-1],m,f);m=W();G[m]=w;return m};this.setSurfaceMaterialStyle=function(b,c){if(G[b]){surfArr=G[b];for(var d=0;d<surfArr.length;d++)surfArr[d].mat=t(c),surfArr[d].mat.side=$3Dmol.FrontSide,surfArr[d].finished=!1}return this};this.removeSurface=function(b){for(var c=G[b],d=0;d<c.length;d++)c[d]&&c[d].lastGL&&(void 0!==c[d].geo&&c[d].geo.dispose(),void 0!==c[d].mat&&c[d].mat.dispose(),M.remove(c[d].lastGL));delete G[b];X();return this};
this.removeAllSurfaces=function(){for(n in G)if(G.hasOwnProperty(n)){for(var b=G[n],c=0;c<b.length;c++)b[c]&&b[c].lastGL&&(void 0!==b[c].geo&&b[c].geo.dispose(),void 0!==b[c].mat&&b[c].mat.dispose(),M.remove(b[c].lastGL));delete G[n]}X();return this};this.jmolMoveTo=function(){var b=M.position,b="center { "+-b.x+" "+-b.y+" "+-b.z+" }; ",c=H.quaternion;return b+="moveto .5 quaternion { "+c.x+" "+c.y+" "+c.z+" "+c.w+" };"};this.clear=function(){this.removeAllSurfaces();this.removeAllModels();this.removeAllLabels();
this.removeAllShapes();X();return this};this.mapAtomProperties=function(b,c){c=c||{};var f=d(c);if("function"==typeof b)for(var l=0,h=f.length;l<h;l++){var g=f[l];b(g)}else for(l=0,h=f.length;l<h;l++)for(var g=f[l],m=0,q=b.length;m<q;m++){var w=b[m];if(w.props)for(var s in w.props)if(w.props.hasOwnProperty(s)){var u;a:{u=g;var p=w;"undefined"===typeof p&&(p={});var x=[],t=void 0;if("undefined"===typeof p.model)for(t=0;t<e.length;t++)e[t]&&x.push(e[t]);else x=p.model,$.isArray(x)||(x=[x]);for(t=0;t<
x.length;t++)if(x[t].atomIsSelected(u,p)){u=!0;break a}u=!1}u&&(g.properties||(g.properties={}),g.properties[s]=w.props[s])}}return this};this.linkViewer=function(b){I.push(b);return this};try{"function"===typeof A&&A(this)}catch(Qa){console.log("error with glviewer callback: "+Qa)}}}();$3Dmol.glmolViewer=$3Dmol.GLViewer;$3Dmol=$3Dmol||{};$3Dmol.Gradient=function(b,c){};$3Dmol.Gradient.valueToHex=function(b,c){};$3Dmol.Gradient.range=function(){};
$3Dmol.Gradient.RWB=function(b,c,d){var p=1;"undefined"==typeof c&&$.isArray(b)&&2<=b.length&&(c=b[1],b=b[0]);c<b&&(p=-1,b*=-1,c*=-1);this.valueToHex=function(t,A){var y,z;t*=p;A?(y=A[0],z=A[1]):(y=b,z=c);if(void 0===t)return 16777215;t<y&&(t=y);t>z&&(t=z);var f=(z+y)/2;"undefined"!=typeof d&&(f=d);t<=f?(y=Math.floor(255*Math.sqrt((t-y)/(f-y))),y=16711680+256*y+y):(y=Math.floor(255*Math.sqrt(1-(t-f)/(z-f))),y=65536*y+256*y+255);return y};this.range=function(){return"undefined"!=typeof b&&"undefined"!=
typeof c?[b,c]:null}};
$3Dmol.Gradient.ROYGB=function(b,c){var d=1;"undefined"==typeof c&&$.isArray(b)&&2<=b.length&&(c=b[1],b=b[0]);c<b&&(d=-1,b*=-1,c*=-1);this.valueToHex=function(p,t){var A,y;p*=d;t?(A=t[0],y=t[1]):(A=b,y=c);if("undefined"==typeof p)return 16777215;p<A&&(p=A);p>y&&(p=y);var z=(A+y)/2,f=(A+z)/2,h=(z+y)/2;p<f?(A=Math.floor(255*Math.sqrt((p-A)/(f-A))),A=256*A+16711680):p<z?(A=Math.floor(255*Math.sqrt(1-(p-f)/(z-f))),A=65536*A+65280):p<h?(A=Math.floor(255*Math.sqrt((p-z)/(h-z))),A=65280+1*A):(A=Math.floor(255*
Math.sqrt(1-(p-h)/(y-h))),A=256*A+255);return A};this.range=function(){return"undefined"!=typeof b&&"undefined"!=typeof c?[b,c]:null}};
$3Dmol.Gradient.Sinebow=function(b,c){var d=1;"undefined"==typeof c&&$.isArray(b)&&2<=b.length&&(c=b[1],b=b[0]);c<b&&(d=-1,b*=-1,c*=-1);this.valueToHex=function(p,t){var A,y;p*=d;t?(A=t[0],y=t[1]):(A=b,y=c);if("undefined"==typeof p)return 16777215;p<A&&(p=A);p>y&&(p=y);var z=(p-A)/(y-A)*5/6+.5;A=Math.sin(Math.PI*z);A*=255*A;y=Math.sin(Math.PI*(z+1/3));y*=255*y;z=Math.sin(Math.PI*(z+2/3));return 65536*Math.floor(A)+256*Math.floor(255*z*z)+1*Math.floor(y)};this.range=function(){return"undefined"!=typeof b&&
"undefined"!=typeof c?[b,c]:null}};$3Dmol.LabelCount=0;$3Dmol.Label=function(b,c){this.id=$3Dmol.LabelCount++;this.stylespec=c||{};this.canvas=document.createElement("canvas");this.canvas.width=134;this.canvas.height=35;this.context=this.canvas.getContext("2d");this.sprite=new $3Dmol.Sprite;this.text=b};
$3Dmol.Label.prototype={constructor:$3Dmol.Label,getStyle:function(){return this.stylespec},setContext:function(){var b=function(b,d,p){"undefined"!=typeof b&&(p=b instanceof $3Dmol.Color?b.scaled():$3Dmol.CC.color(b).scaled());"undefined"!=typeof d&&(p.a=parseFloat(d));return p};return function(){var c=this.stylespec,d="undefined"==typeof c.useScreen?!1:c.useScreen,p=c.showBackground;if("0"===p||"false"===p)p=!1;"undefined"==typeof p&&(p=!0);var t=c.font?c.font:"sans-serif",A=parseInt(c.fontSize)?
parseInt(c.fontSize):18,y=b(c.fontColor,c.fontOpacity,{r:255,g:255,b:255,a:1}),z=c.padding?c.padding:4,f=c.borderThickness?c.borderThickness:0,h=b(c.backgroundColor,c.backgroundOpacity,{r:0,g:0,b:0,a:1}),l=b(c.borderColor,c.borderOpacity,h),m=c.position?c.position:{x:-10,y:1,z:1},w=void 0!==c.inFront?c.inFront:!0;if("false"===w||"0"===w)w=!1;var e=c.alignment||$3Dmol.SpriteAlignment.topLeft,G="";c.bold&&(G="bold ");this.context.font=G+A+"px "+t;var g=this.context.measureText(this.text).width;p||
(f=0);var s=g+2.5*f+2*z,u=1.25*A+2*f+2*z;if(c.backgroundImage){var G=c.backgroundImage,x=c.backgroundWidth?c.backgroundWidth:G.width,q=c.backgroundHeight?c.backgroundHeight:G.height;x>s&&(s=x);q>u&&(u=q)}this.canvas.width=s;this.canvas.height=u;this.context.clearRect(0,0,this.canvas.width,this.canvas.height);G="";c.bold&&(G="bold ");this.context.font=G+A+"px "+t;this.context.fillStyle="rgba("+h.r+","+h.g+","+h.b+","+h.a+")";this.context.strokeStyle="rgba("+l.r+","+l.g+","+l.b+","+l.a+")";this.context.lineWidth=
f;p&&(p=this.context,h=t=f,s-=2*f,u-=2*f,l=0<f,p.beginPath(),p.moveTo(t+6,h),p.lineTo(t+s-6,h),p.quadraticCurveTo(t+s,h,t+s,h+6),p.lineTo(t+s,h+u-6),p.quadraticCurveTo(t+s,h+u,t+s-6,h+u),p.lineTo(t+6,h+u),p.quadraticCurveTo(t,h+u,t,h+u-6),p.lineTo(t,h+6),p.quadraticCurveTo(t,h,t+6,h),p.closePath(),p.fill(),l&&p.stroke());c.backgroundImage&&(G=c.backgroundImage,x=c.backgroundWidth?c.backgroundWidth:G.width,q=c.backgroundHeight?c.backgroundHeight:G.height,this.context.drawImage(G,0,0,x,q));this.context.fillStyle=
"rgba("+y.r+","+y.g+","+y.b+","+y.a+")";this.context.fillText(this.text,f+z,A+f+z,g);c=new $3Dmol.Texture(this.canvas);c.needsUpdate=!0;this.sprite.material=new $3Dmol.SpriteMaterial({map:c,useScreenCoordinates:d,alignment:e,depthTest:!w});this.sprite.scale.set(1,1,1);this.sprite.position.set(m.x,m.y,m.z)}}(),dispose:function(){void 0!==this.sprite.material.map&&this.sprite.material.map.dispose();void 0!==this.sprite.material&&this.sprite.material.dispose()}};$3Dmol=$3Dmol||{};
$3Dmol.MarchingCubeInitializer=function(){var b={march:function(b,y,z,f){var h=!!f.fulltable,l=f.hasOwnProperty("origin")&&f.origin.hasOwnProperty("x")?f.origin:{x:0,y:0,z:0},m=!!f.voxel,w=f.matrix,e=f.nX||0,G=f.nY||0,g=f.nZ||0,s=f.scale||1,u=null,u=f.unitCube?f.unitCube:{x:s,y:s,z:s},x=new Int32Array(e*G*g);f=0;for(s=x.length;f<s;++f)x[f]=-1;var s=function(b,c,d,f,e,h){var q={x:0,y:0,z:0},s=e;f&1<<e||!(f&1<<h)||(s=h);s&1&&d++;s&2&&c++;s&4&&b++;w?(q=new $3Dmol.Vector3(b,c,d),q=q.applyMatrix4(w),q=
{x:q.x,y:q.y,z:q.z}):(q.x=l.x+u.x*b,q.y=l.y+u.y*c,q.z=l.z+u.z*d);b=(G*b+c)*g+d;if(m)return y.push(q),y.length-1;0>x[b]&&(x[b]=y.length,y.push(q));return x[b]},q=new Int32Array(12),N=h?p:c,h=h?t:d;for(f=0;f<e-1;++f)for(var I=0;I<G-1;++I)for(var D=0;D<g-1;++D){for(var C=0,B=0;8>B;++B)C|=!!(b[(G*(f+((B&4)>>2))+I+((B&2)>>1))*g+D+(B&1)]&2)<<B;if(0!==C&&255!==C){var F=N[C];if(0!==F)for(B=h[C],F&1&&(q[0]=s(f,I,D,C,0,1)),F&2&&(q[1]=s(f,I,D,C,1,3)),F&4&&(q[2]=s(f,I,D,C,3,2)),F&8&&(q[3]=s(f,I,D,C,2,0)),F&16&&
(q[4]=s(f,I,D,C,4,5)),F&32&&(q[5]=s(f,I,D,C,5,7)),F&64&&(q[6]=s(f,I,D,C,7,6)),F&128&&(q[7]=s(f,I,D,C,6,4)),F&256&&(q[8]=s(f,I,D,C,0,4)),F&512&&(q[9]=s(f,I,D,C,1,5)),F&1024&&(q[10]=s(f,I,D,C,3,7)),F&2048&&(q[11]=s(f,I,D,C,2,6)),C=0;C<B.length;C+=3){var F=q[B[C]],J=q[B[C+1]],L=q[B[C+2]];m&&3<=C&&(y.push(y[F]),F=y.length-1,y.push(y[J]),J=y.length-1,y.push(y[L]),L=y.length-1);z.push(F);z.push(J);z.push(L)}}}},laplacianSmooth:function(b,c,d){var f=Array(c.length),h,l,m,w;h=0;for(l=c.length;h<l;h++)f[h]=
{x:0,y:0,z:0};var e=Array(20),p;for(h=0;20>h;h++)e[h]=Array(c.length);h=0;for(l=c.length;h<l;h++)e[0][h]=0;h=0;for(l=d.length/3;h<l;h++){var g=3*h,s=3*h+1,u=3*h+2;p=!0;m=0;for(w=e[0][d[g]];m<w;m++)if(d[s]==e[m+1][d[g]]){p=!1;break}p&&(e[0][d[g]]++,e[e[0][d[g]]][d[g]]=d[s]);p=!0;m=0;for(w=e[0][d[g]];m<w;m++)if(d[u]==e[m+1][d[g]]){p=!1;break}p&&(e[0][d[g]]++,e[e[0][d[g]]][d[g]]=d[u]);p=!0;m=0;for(w=e[0][d[s]];m<w;m++)if(d[g]==e[m+1][d[s]]){p=!1;break}p&&(e[0][d[s]]++,e[e[0][d[s]]][d[s]]=d[g]);p=!0;
m=0;for(w=e[0][d[s]];m<w;m++)if(d[u]==e[m+1][d[s]]){p=!1;break}p&&(e[0][d[s]]++,e[e[0][d[s]]][d[s]]=d[u]);p=!0;for(m=0;m<e[0][d[u]];m++)if(d[g]==e[m+1][d[u]]){p=!1;break}p&&(e[0][d[u]]++,e[e[0][d[u]]][d[u]]=d[g]);p=!0;m=0;for(w=e[0][d[u]];m<w;m++)if(d[s]==e[m+1][d[u]]){p=!1;break}p&&(e[0][d[u]]++,e[e[0][d[u]]][d[u]]=d[s])}for(d=0;d<b;d++){h=0;for(l=c.length;h<l;h++)if(3>e[0][h])f[h].x=c[h].x,f[h].y=c[h].y,f[h].z=c[h].z;else if(3==e[0][h]||4==e[0][h]){f[h].x=0;f[h].y=0;m=f[h].z=0;for(w=e[0][h];m<w;m++)f[h].x+=
c[e[m+1][h]].x,f[h].y+=c[e[m+1][h]].y,f[h].z+=c[e[m+1][h]].z;f[h].x+=.5*c[h].x;f[h].y+=.5*c[h].y;f[h].z+=.5*c[h].z;f[h].x/=.5+e[0][h];f[h].y/=.5+e[0][h];f[h].z/=.5+e[0][h]}else{f[h].x=0;f[h].y=0;m=f[h].z=0;for(w=e[0][h];m<w;m++)f[h].x+=c[e[m+1][h]].x,f[h].y+=c[e[m+1][h]].y,f[h].z+=c[e[m+1][h]].z;f[h].x+=1*c[h].x;f[h].y+=1*c[h].y;f[h].z+=1*c[h].z;f[h].x/=1+e[0][h];f[h].y/=1+e[0][h];f[h].z/=1+e[0][h]}h=0;for(l=c.length;h<l;h++)c[h].x=f[h].x,c[h].y=f[h].y,c[h].z=f[h].z}},edgeTable:[0,0,0,0,0,0,0,2816,
0,0,0,1792,0,3328,3584,3840,0,0,0,138,0,21,0,134,0,0,0,652,0,2067,3865,3600,0,0,0,42,0,0,0,294,0,0,21,28,0,3875,1049,3360,0,168,162,170,0,645,2475,2210,0,687,293,172,4010,3747,3497,3232,0,0,0,0,0,69,0,900,0,0,0,1792,138,131,1608,1920,0,81,0,2074,84,85,84,86,0,81,0,3676,330,1105,1881,1616,0,0,0,42,0,69,0,502,0,0,21,3580,138,2035,1273,1520,2816,104,2337,106,840,581,367,102,2816,3695,3429,3180,1898,1635,1385,1120,0,0,0,0,0,0,0,3910,0,0,69,588,42,2083,41,2880,0,0,0,1722,0,2293,4095,3830,0,255,757,764,
2538,2291,3065,2800,0,0,81,338,0,3925,1119,3414,84,855,85,340,2130,2899,89,2384,1792,712,194,1162,4036,3781,3535,3270,708,719,197,204,3018,2755,2505,2240,0,0,0,0,168,420,168,1958,162,162,676,2988,170,163,680,928,3328,3096,3328,3642,52,53,1855,1590,2340,2111,2869,2620,298,51,825,560,3584,3584,3090,3482,1668,1941,1183,1430,146,2975,2069,2460,154,915,153,400,3840,3592,3329,3082,1796,1541,1295,1030,2818,2575,2309,2060,778,515,265,0]},c=new Uint32Array(b.edgeTable),d=b.triTable=[[],[],[],[],[],[],[],[11,
9,8],[],[],[],[8,10,9],[],[10,8,11],[9,11,10],[8,10,9,8,11,10],[],[],[],[1,7,3],[],[4,2,0],[],[2,1,7],[],[],[],[2,7,3,2,9,7],[],[1,4,11,1,0,4],[3,8,0,11,9,4,11,10,9],[4,11,9,11,10,9],[],[],[],[5,3,1],[],[],[],[2,5,8,2,1,5],[],[],[2,4,0],[3,2,4],[],[0,9,1,8,10,5,8,11,10],[3,4,0,3,10,4],[5,8,10,8,11,10],[],[3,5,7],[7,1,5],[1,7,3,1,5,7],[],[9,2,0,9,7,2],[0,3,8,1,7,11,1,5,7],[11,1,7,1,5,7],[],[9,1,0,5,3,2,5,7,3],[8,2,5,8,0,2],[2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,
10,5,7,11,10],[11,5,7,11,10,5],[],[],[],[],[],[0,6,2],[],[7,2,9,7,9,8],[],[],[],[8,10,9],[7,1,3],[7,1,0],[6,9,3,6,10,9],[7,10,8,10,9,8],[],[6,0,4],[],[11,1,4,11,3,1],[2,4,6],[2,0,4,2,4,6],[2,4,6],[1,4,2,4,6,2],[],[6,0,4],[],[2,11,3,6,9,4,6,10,9],[8,6,1,8,1,3],[10,0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[],[],[],[5,3,1],[],[0,6,2],[],[7,4,8,5,2,1,5,6,2],[],[],[2,4,0],[7,4,8,2,11,3,10,5,6],[7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[9,11,8],[3,5,6],[0,5,11,0,11,8],[6,3,
5,3,1,5],[3,9,6,3,8,9],[9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[],[],[],[],[],[],[],[1,10,2,9,11,6,9,8,11],[],[],[6,0,2],[3,6,9,3,2,6],[3,5,1],[0,5,1,0,11,5],[0,3,5],[6,9,11,9,8,11],[],[],[],[4,5,9,7,1,10,7,3,1],[],[11,6,7,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,5,
3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[],[],[0,6,4],[8,6,4,8,1,6],[],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[4,2,6],[1,0,9,2,4,8,2,6,4],[2,4,0,2,6,4],[8,2,4,2,6,4],[11,4,1,11,6,4],[0,9,1,4,11,6,4,8,11],[3,6,0,6,4,0],[8,6,4,8,11,6],[10,8,9],[6,3,9,6,7,3],[6,7,1],[10,7,1,7,3,1],[7,11,6,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2],[1,0,9,3,6,7,3,2,6],[7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,
3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[],[],[],[],[5,3,7],[8,5,2,8,7,5],[5,3,7],[1,10,2,5,8,7,5,9,8],[1,7,5],[1,7,5],[9,2,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[0,7,1,7,5,1],[9,3,5,3,7,5],[9,7,5,9,8,7],[8,10,11],[3,4,10,3,10,11],[8,10,11],[5,9,4,1,11,3,1,10,11],[2,4,5],[5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[2,8,5,2,11,8],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[11,9,10],[11,9,10],[1,11,4,1,10,11],[8,7,4,11,
1,10,11,3,1],[2,7,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[1,7,4],[3,2,11,4,8,7,9,1,0],[11,4,2,4,0,2],[2,11,3,7,4,8],[4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[3,9,11,9,10,11],[0,10,8,10,11,8],[10,3,1,10,11,3],[2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]],p=[0,265,515,778,2060,2309,2575,2822,1030,1295,1541,1804,3082,3331,3593,3840,400,153,915,666,
2460,2197,2975,2710,1430,1183,1941,1692,3482,3219,3993,3728,560,825,51,314,2620,2869,2111,2358,1590,1855,1077,1340,3642,3891,3129,3376,928,681,419,170,2988,2725,2479,2214,1958,1711,1445,1196,4010,3747,3497,3232,2240,2505,2755,3018,204,453,719,966,3270,3535,3781,4044,1226,1475,1737,1984,2384,2137,2899,2650,348,85,863,598,3414,3167,3925,3676,1370,1107,1881,1616,2800,3065,2291,2554,764,1013,255,502,3830,4095,3317,3580,1786,2035,1273,1520,2912,2665,2403,2154,876,613,367,102,3942,3695,3429,3180,1898,1635,
1385,1120,1120,1385,1635,1898,3180,3429,3695,3942,102,367,613,876,2154,2403,2665,2912,1520,1273,2035,1786,3580,3317,4095,3830,502,255,1013,764,2554,2291,3065,2800,1616,1881,1107,1370,3676,3925,3167,3414,598,863,85,348,2650,2899,2137,2384,1984,1737,1475,1226,4044,3781,3535,3270,966,719,453,204,3018,2755,2505,2240,3232,3497,3747,4010,1196,1445,1711,1958,2214,2479,2725,2988,170,419,681,928,3376,3129,3891,3642,1340,1077,1855,1590,2358,2111,2869,2620,314,51,825,560,3728,3993,3219,3482,1692,1941,1183,1430,
2710,2975,2197,2460,666,915,153,400,3840,3593,3331,3082,1804,1541,1295,1030,2822,2575,2309,2060,778,515,265,0],t=[[],[8,3,0],[9,0,1],[8,3,1,8,1,9],[11,2,3],[11,2,0,11,0,8],[11,2,3,0,1,9],[2,1,11,1,9,11,11,9,8],[10,1,2],[8,3,0,1,2,10],[9,0,2,9,2,10],[3,2,8,2,10,8,8,10,9],[10,1,3,10,3,11],[1,0,10,0,8,10,10,8,11],[0,3,9,3,11,9,9,11,10],[8,10,9,8,11,10],[8,4,7],[3,0,4,3,4,7],[1,9,0,8,4,7],[9,4,1,4,7,1,1,7,3],[2,3,11,7,8,4],[7,11,4,11,2,4,4,2,0],[3,11,2,4,7,8,9,0,1],[2,7,11,2,1,7,1,4,7,1,9,4],[10,1,2,
8,4,7],[2,10,1,0,4,7,0,7,3],[4,7,8,0,2,10,0,10,9],[2,7,3,2,9,7,7,9,4,2,10,9],[8,4,7,11,10,1,11,1,3],[11,4,7,1,4,11,1,11,10,1,0,4],[3,8,0,7,11,4,11,9,4,11,10,9],[7,11,4,4,11,9,11,10,9],[9,5,4],[3,0,8,4,9,5],[5,4,0,5,0,1],[4,8,5,8,3,5,5,3,1],[11,2,3,9,5,4],[9,5,4,8,11,2,8,2,0],[3,11,2,1,5,4,1,4,0],[8,5,4,2,5,8,2,8,11,2,1,5],[2,10,1,9,5,4],[0,8,3,5,4,9,10,1,2],[10,5,2,5,4,2,2,4,0],[3,4,8,3,2,4,2,5,4,2,10,5],[5,4,9,1,3,11,1,11,10],[0,9,1,4,8,5,8,10,5,8,11,10],[3,4,0,3,10,4,4,10,5,3,11,10],[4,8,5,5,8,
10,8,11,10],[9,5,7,9,7,8],[0,9,3,9,5,3,3,5,7],[8,0,7,0,1,7,7,1,5],[1,7,3,1,5,7],[11,2,3,8,9,5,8,5,7],[9,2,0,9,7,2,2,7,11,9,5,7],[0,3,8,2,1,11,1,7,11,1,5,7],[2,1,11,11,1,7,1,5,7],[1,2,10,5,7,8,5,8,9],[9,1,0,10,5,2,5,3,2,5,7,3],[5,2,10,8,2,5,8,5,7,8,0,2],[10,5,2,2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,10,5,7,11,10],[11,5,7,11,10,5],[11,7,6],[0,8,3,11,7,6],[9,0,1,11,7,6],[7,6,11,3,1,9,3,9,8],[2,3,7,2,7,6],[8,7,0,7,6,0,0,6,2],[1,9,0,3,7,6,3,6,2],[7,6,2,7,2,9,2,1,9,7,
9,8],[1,2,10,6,11,7],[2,10,1,7,6,11,8,3,0],[11,7,6,10,9,0,10,0,2],[7,6,11,3,2,8,8,2,10,8,10,9],[6,10,7,10,1,7,7,1,3],[6,10,1,6,1,7,7,1,0,7,0,8],[9,0,3,6,9,3,6,10,9,6,3,7],[6,10,7,7,10,8,10,9,8],[8,4,6,8,6,11],[11,3,6,3,0,6,6,0,4],[0,1,9,4,6,11,4,11,8],[1,9,4,11,1,4,11,3,1,11,4,6],[3,8,2,8,4,2,2,4,6],[2,0,4,2,4,6],[1,9,0,3,8,2,2,8,4,2,4,6],[9,4,1,1,4,2,4,6,2],[10,1,2,11,8,4,11,4,6],[10,1,2,11,3,6,6,3,0,6,0,4],[0,2,10,0,10,9,4,11,8,4,6,11],[2,11,3,6,9,4,6,10,9],[8,4,6,8,6,1,6,10,1,8,1,3],[1,0,10,10,
0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[9,5,4,7,6,11],[4,9,5,3,0,8,11,7,6],[6,11,7,4,0,1,4,1,5],[6,11,7,4,8,5,5,8,3,5,3,1],[4,9,5,6,2,3,6,3,7],[9,5,4,8,7,0,0,7,6,0,6,2],[4,0,1,4,1,5,6,3,7,6,2,3],[7,4,8,5,2,1,5,6,2],[6,11,7,1,2,10,9,5,4],[11,7,6,8,3,0,1,2,10,9,5,4],[11,7,6,10,5,2,2,5,4,2,4,0],[7,4,8,2,11,3,10,5,6],[4,9,5,6,10,7,7,10,1,7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[5,6,9,6,11,9,9,11,8],[0,9,5,0,5,3,3,5,6,3,6,11],[0,1,5,0,5,11,5,6,11,0,11,8],[11,3,6,6,3,5,
3,1,5],[9,5,6,3,9,6,3,8,9,3,6,2],[5,6,9,9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[1,2,10,5,6,9,9,6,11,9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[10,6,5],[8,3,0,10,6,5],[0,1,9,5,10,6],[10,6,5,9,8,3,9,3,1],[3,11,2,10,6,5],[6,5,10,2,0,8,2,8,11],[1,9,0,6,5,10,11,2,3],[1,10,2,5,9,6,9,11,6,9,8,11],[1,2,6,1,6,5],[0,8,3,2,6,5,2,5,1],[5,9,6,9,0,6,6,0,2],[9,6,5,3,6,9,3,9,8,3,2,6],[11,6,3,6,5,3,3,5,1],[0,5,1,0,11,5,5,
11,6,0,8,11],[0,5,9,0,3,5,3,6,5,3,11,6],[5,9,6,6,9,11,9,8,11],[10,6,5,4,7,8],[5,10,6,7,3,0,7,0,4],[5,10,6,0,1,9,8,4,7],[4,5,9,6,7,10,7,1,10,7,3,1],[7,8,4,2,3,11,10,6,5],[11,6,7,10,2,5,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[7,8,4,5,1,2,5,2,6],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,8,0,7,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,4,5,8,5,3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[10,6,4,10,4,9],[8,3,0,9,10,6,9,6,4],[1,10,0,10,6,0,0,6,4],[8,6,4,8,1,6,6,1,10,
8,3,1],[2,3,11,6,4,9,6,9,10],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,11,6,3,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[9,1,4,1,2,4,4,2,6],[1,0,9,3,2,8,2,4,8,2,6,4],[2,4,0,2,6,4],[3,2,8,8,2,4,2,6,4],[1,4,9,11,4,1,11,1,3,11,6,4],[0,9,1,4,11,6,4,8,11],[11,6,3,3,6,0,6,4,0],[8,6,4,8,11,6],[6,7,10,7,8,10,10,8,9],[9,3,0,6,3,9,6,9,10,6,7,3],[6,1,10,6,7,1,7,0,1,7,8,0],[6,7,10,10,7,1,7,3,1],[7,11,6,3,8,2,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2,2,9,1,7,8,9],[1,0,9,3,
6,7,3,2,6],[8,0,7,7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[11,7,5,11,5,10],[3,0,8,7,5,10,7,10,11],[9,0,1,10,11,7,10,7,5],[3,1,9,3,9,8,7,10,11,7,5,10],[10,2,5,2,3,5,5,3,7],[5,10,2,8,5,2,8,7,5,8,2,0],[9,0,1,10,2,5,5,2,3,5,3,7],[1,10,2,5,8,7,5,9,8],[2,11,1,11,7,1,1,7,5],[0,8,3,2,11,1,1,11,7,1,7,5],[9,0,2,9,2,7,2,11,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[8,7,0,0,7,1,7,5,1],[0,3,9,9,3,5,3,7,5],[9,7,5,9,8,7],[4,5,8,5,10,8,8,10,11],[3,0,4,3,4,10,4,5,10,
3,10,11],[0,1,9,4,5,8,8,5,10,8,10,11],[5,9,4,1,11,3,1,10,11],[3,8,4,3,4,2,2,4,5,2,5,10],[10,2,5,5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[8,4,5,2,8,5,2,11,8,2,5,1],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[4,5,8,8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[7,4,11,4,9,11,11,9,10],[3,0,8,7,4,11,11,4,9,11,9,10],[11,7,4,1,11,4,1,10,11,1,4,0],[8,7,4,11,1,10,11,3,1],[2,3,7,2,7,9,7,4,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[2,11,7,2,7,1,1,7,4,1,4,
9],[3,2,11,4,8,7,9,1,0],[7,4,11,11,4,2,4,0,2],[2,11,3,7,4,8],[9,1,4,4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[0,9,3,3,9,11,9,10,11],[1,10,0,0,10,8,10,11,8],[10,3,1,10,11,3],[3,8,2,2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[2,11,1,1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]];return b};$3Dmol.MarchingCube=$3Dmol.MarchingCubeInitializer();
$3Dmol.Parsers=function(){var b={},c=function(b){for(var c=0,d=b.length;c<d;c++)b[c].index||(b[c].index=c);for(var d={},m=0;m<b.length;m++){var c=b[m],w=Math.floor(c.x/4.95),e=Math.floor(c.y/4.95),p=Math.floor(c.z/4.95);d[w]||(d[w]={});d[w][e]||(d[w][e]={});d[w][e][p]||(d[w][e][p]=[]);d[w][e][p].push(c)}b=[{x:0,y:0,z:1},{x:0,y:1,z:-1},{x:0,y:1,z:0},{x:0,y:1,z:1},{x:1,y:-1,z:-1},{x:1,y:-1,z:0},{x:1,y:-1,z:1},{x:1,y:0,z:-1},{x:1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:1,z:-1},{x:1,y:1,z:0},{x:1,y:1,z:1}];for(w in d)for(e in w=
parseInt(w),d[w])for(p in e=parseInt(e),d[w][e]){p=parseInt(p);m=d[w][e][p];for(c=0;c<m.length;c++)for(var g=m[c],s=c+1;s<m.length;s++){var u=m[s];y(g,u)&&-1==g.bonds.indexOf(u.index)&&(g.bonds.push(u.index),g.bondOrder.push(1),u.bonds.push(g.index),u.bondOrder.push(1))}for(c=0;c<b.length;c++)if(s=b[c],d[w+s.x]&&d[w+s.x][e+s.y]&&d[w+s.x][e+s.y][p+s.z])for(g=m,s=d[w+s.x][e+s.y][p+s.z],u=0;u<g.length;u++)for(var x=g[u],q=0;q<s.length;q++){var t=s[q];y(x,t)&&-1==x.bonds.indexOf(t.index)&&(x.bonds.push(t.index),
x.bondOrder.push(1),t.bonds.push(x.index),t.bondOrder.push(1))}}},d=function(b){var d=[],l=[],m,w;m=0;for(w=b.length;m<w;m++){var e=b[m];e.index=m;e.hetflag?l.push(e):d.push(e)}c(l);d.sort(function(b,c){return b.chain!=c.chain?b.chain<c.chain?-1:1:b.resi-c.resi});var l=b=-1,p;m=0;for(w=d.length;m<w;m++){e=d[m];e.resi!==b&&(b=e.resi,p||l++,p=!1);e.reschain=l;for(var g=m+1;g<d.length;g++){var s=d[g];if(s.chain!=e.chain)break;if(1<s.resi-e.resi)break;y(e,s)&&(-1===e.bonds.indexOf(s.index)&&(e.bonds.push(s.index),
e.bondOrder.push(1),s.bonds.push(e.index),s.bondOrder.push(1)),e.resi!==s.resi&&(p=!0))}}},p=function(b){var c=[],d,m;d=0;for(m=b.length;d<m;d++){b[d].index=d;var w=b[d];w.hetflag||"N"!==w.atom&&"O"!==w.atom||(c.push(w),w.hbondOther=null,w.hbondDistanceSq=Number.POSITIVE_INFINITY)}c.sort(function(b,c){return b.z-c.z});d=0;for(m=c.length;d<m;d++)for(w=c[d],b=d+1;b<m;b++){var e=c[b],p=e.z-w.z;if(3.2<p)break;if(e.atom!=w.atom){var g=Math.abs(e.y-w.y);if(!(3.2<g)){var s=Math.abs(e.x-w.x);3.2<s||(p=s*
s+g*g+p*p,10.24<p||e.chain==w.chain&&4>Math.abs(e.resi-w.resi)||(p<w.hbondDistanceSq&&(w.hbondOther=e,w.hbondDistanceSq=p),p<e.hbondDistanceSq&&(e.hbondOther=w,e.hbondDistanceSq=p)))}}}},t=function(b){p(b);var c={},d,m,w,e,t;d=0;for(m=b.length;d<m;d++)e=b[d],"undefined"===typeof c[e.chain]&&(c[e.chain]=[]),isFinite(e.hbondDistanceSq)&&(t=e.hbondOther,"undefined"===typeof c[t.chain]&&(c[t.chain]=[]),4===Math.abs(t.resi-e.resi)&&(c[e.chain][e.resi]="h"));for(w in c)for(d=1;d<c[w].length-1;d++)m=c[w][d-
1],e=c[w][d+1],t=c[w][d],"h"==m&&m==e&&t!=m&&(c[w][d]=m);d=0;for(m=b.length;d<m;d++)e=b[d],isFinite(e.hbondDistanceSq)&&"h"!=c[e.chain][e.resi]&&"h"!=e.ss&&(c[e.chain][e.resi]="maybesheet");d=0;for(m=b.length;d<m;d++)if(e=b[d],isFinite(e.hbondDistanceSq)&&"maybesheet"==c[e.chain][e.resi]){t=e.hbondOther;var g=c[t.chain][t.resi];if("maybesheet"==g||"s"==g)c[e.chain][e.resi]="s",c[t.chain][t.resi]="s"}for(w in c){for(d=1;d<c[w].length-1;d++)m=c[w][d-1],e=c[w][d+1],t=c[w][d],"s"==m&&m==e&&t!=m&&(c[w][d]=
m);for(d=0;d<c[w].length;d++)t=c[w][d],"h"!=t&&"s"!=t||c[w][d-1]==t||c[w][d+1]==t||delete c[w][d]}d=0;for(m=b.length;d<m;d++)e=b[d],t=c[e.chain][e.resi],"undefined"!=typeof t&&"maybesheet"!=t&&(e.ss=t,c[e.chain][e.resi-1]!=t&&(e.ssbegin=!0),c[e.chain][e.resi+1]!=t&&(e.ssend=!0))};b.vasp=b.VASP=function(b,c){var d=[[]],m,w,e,p,g=b.replace(/^\s+/,"").split(/[\n\r]/);if(3>g.length)return d;if(g[1].match(/\d+/))m=parseFloat(g[1]);else return console.log("Warning: second line of the vasp structure file must be a number"),
d;if(0>m)return console.log("Warning: Vasp implementation for negative lattice lengths is not yet available"),d;w=new Float32Array(g[2].replace(/^\s+/,"").split(/\s+/));e=new Float32Array(g[3].replace(/^\s+/,"").split(/\s+/));p=new Float32Array(g[4].replace(/^\s+/,"").split(/\s+/));var s=g[5].replace(/\s+/,"").replace(/\s+$/,"").split(/\s+/),u=new Int16Array(g[6].replace(/^\s+/,"").split(/\s+/)),t=g[7].replace(/\s+/,"");if(t.match(/C/))t="cartesian";else if(t.match(/D/))t="direct";else return console.log("Warning: Unknown vasp mode in POSCAR file: mode must be either C(artesian) or D(irect)"),
d;if(s.length!=u.length)return console.log("Warning: declaration of atomary species wrong:"),console.log(s),console.log(u),d;g.splice(0,8);for(var q=0,y=0,z=s.length;y<z;y++){for(var A=s[y],C=0,B=u[y];C<B;C++){var F=new Float32Array(g[q+C].replace(/^\s+/,"").split(/\s+/));atom={};atom.elem=A;"cartesian"==t?(atom.x=m*F[0],atom.y=m*F[1],atom.z=m*F[2]):(atom.x=m*(F[0]*w[0]+F[1]*e[0]+F[2]*p[0]),atom.y=m*(F[0]*w[1]+F[1]*e[1]+F[2]*p[1]),atom.z=m*(F[0]*w[2]+F[1]*e[2]+F[2]*p[2]));atom.bonds=[];d[0].push(atom)}q+=
u[y]}return d};b.cube=b.CUBE=function(b,d){var l=[[]],m=b.replace(/^\s+/,"").split(/\n\r|\r+/);if(6>m.length)return l;for(var w=m[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),e=Math.abs(parseFloat(w[0])),w=m[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),w=0<parseFloat(w[0])?.529177:1,m=m.splice(6,e),e=l[l.length-1].length,p=e+m.length,g=e;g<p;++g){var s={};s.serial=g;var u=m[g-e].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");6==u[0]?s.elem="C":1==u[0]?s.elem="H":8==u[0]?s.elem=
"O":17==u[0]&&(s.elem="Cl");s.x=parseFloat(u[2])*w;s.y=parseFloat(u[3])*w;s.z=parseFloat(u[4])*w;s.hetflag=!0;s.bonds=[];s.bondOrder=[];s.properties={};l[l.length-1].push(s)}for(g=0;g<l.length;g++)c(l[g]);return l};b.xyz=b.XYZ=function(b,d){for(var l=[[]],m=b.split(/\r?\n|\r/);0<m.length&&!(3>m.length);){var w=parseInt(m[0]);if(isNaN(w)||0>=w)break;if(m.length<w+2)break;for(var e=2,p=l[l.length-1].length,w=p+w;p<w;p++){var g=m[e++].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),s={};s.serial=p;
var u=g[0];s.atom=s.elem=u[0].toUpperCase()+u.substr(1).toLowerCase();s.x=parseFloat(g[1]);s.y=parseFloat(g[2]);s.z=parseFloat(g[3]);s.hetflag=!0;s.bonds=[];s.bondOrder=[];s.properties={};l[l.length-1][p]=s;7<=g.length&&(s.dx=parseFloat(g[4]),s.dy=parseFloat(g[5]),s.dz=parseFloat(g[6]))}if(d.multimodel)l.push([]),m.splice(0,e);else break}for(p=0;p<l.length;p++)c(l[p]);if(d.onemol)for(m=l,l=[],l.push(m[0]),p=1;p<m.length;p++)for(e=l[0].length,w=0;w<m[p].length;w++){g=m[p][w];for(s=0;s<g.bonds.length;s++)g.bonds[s]+=
e;g.index=l[0].length;g.serial=l[0].length;l[0].push(g)}return l};b.sdf=b.SDF=function(b,c){var d=[[]],m=!1;"undefined"!==typeof c.keepH&&(m=!c.keepH);for(var p=b.split(/\r?\n|\r/);0<p.length&&!(4>p.length);){var e=parseInt(p[3].substr(0,3));if(isNaN(e)||0>=e)break;var t=parseInt(p[3].substr(3,3)),g=4;if(p.length<4+e+t)break;for(var s=[],u=d[d.length-1].length,x=u+e,q,e=u;e<x;e++,g++){q=p[g];var y={},z=q.substr(31,3).replace(/ /g,"");y.atom=y.elem=z[0].toUpperCase()+z.substr(1).toLowerCase();"H"==
y.elem&&m||(y.serial=e,s[e]=d[d.length-1].length,y.x=parseFloat(q.substr(0,10)),y.y=parseFloat(q.substr(10,10)),y.z=parseFloat(q.substr(20,10)),y.hetflag=!0,y.bonds=[],y.bondOrder=[],y.properties={},y.index=d[d.length-1].length,d[d.length-1].push(y))}for(e=0;e<t;e++,g++)q=p[g],x=s[parseInt(q.substr(0,3))-1+u],y=s[parseInt(q.substr(3,3))-1+u],q=parseInt(q.substr(6,3)),"undefined"!=typeof x&&"undefined"!=typeof y&&(d[d.length-1][x].bonds.push(y),d[d.length-1][x].bondOrder.push(q),d[d.length-1][y].bonds.push(x),
d[d.length-1][y].bondOrder.push(q));if(c.multimodel){for(c.onemol||d.push([]);"$$$$"!=p[g];)g++;p.splice(0,++g)}else break}return d};b.cdjson=b.json=function(b,c){var d=[[]];"string"===typeof b&&(b=JSON.parse(b));for(var m=b.m,p=m[0].a,e=m[0].b,t=m[0].s,g=void 0!==c&&void 0!==c.parseStyle?c.parseStyle:void 0!==t,m=d[d.length-1].length,s=0;s<p.length;s++){var u=p[s],x={};x.id=u.i;x.x=u.x;x.y=u.y;x.z=u.z||0;x.bonds=[];x.bondOrder=[];var q=u.l||"C";x.elem=q[0].toUpperCase()+q.substr(1).toLowerCase();
x.serial=d[d.length-1].length;g&&(x.style=t[u.s||0]);d[d.length-1].push(x)}for(s=0;s<e.length;s++)g=e[s],p=g.b+m,t=g.e+m,g=g.o||1,u=d[d.length-1][p],x=d[d.length-1][t],u.bonds.push(t),u.bondOrder.push(g),x.bonds.push(p),x.bondOrder.push(g);return d};b.mcif=b.cif=function(b,d){function l(b,c){for(var d=[],e=0,f=0;f<b.length;){for(;b.substr(f,c.length)!==c&&f<b.length;){if("'"===b[f])for(f++;f<b.length&&"'"!==b[f];)f++;else if('"'===b[f])for(f++;f<b.length&&'"'!==b[f];)f++;f++}d.push(b.substr(e,f-e));
e=f+=c.length}return d}for(var m=[],p=!d.doAssembly,e=!d.duplicateAssemblyAtoms,y=m.modelData=[],g=b.split(/\r?\n|\r/),s=[],u=!1,x=0;x<g.length;x++){var q=g[x].split("#")[0];u?";"===q[0]&&(u=!1):";"===q[0]&&(u=!0);if(u||""!==q){if(!u&&(q=q.trim(),"_"===q[0])){var A=q.split(/\s/)[0].indexOf(".");-1<A&&(q[A]="_",q=q.substr(0,A)+"_"+q.substr(A+1))}s.push(q)}}for(x=0;x<s.length;){g=function(b){var c=b.match("-");b=b.replace(/[-xyz]/g,"");b=b.split("/");var d;d=void 0===b[1]?1:parseInt(b[1]);return(""===
b[0]?1:parseInt(b[0]))/d*(c?-1:1)};for(A=function(b,c,d){return{x:B[0][0]*b+B[0][1]*c+B[0][2]*d,y:B[1][0]*b+B[1][1]*c+B[1][2]*d,z:B[2][0]*b+B[2][1]*c+B[2][2]*d}};!s[x].startsWith("data_")||"data_global"===s[x];)x++;x++;for(u={};x<s.length&&!s[x].startsWith("data_");)if(void 0===s[x][0])x++;else if("_"===s[x][0]){var I=s[x].split(/\s/)[0].toLowerCase(),q=u[I]=u[I]||[],D=s[x].substr(s[x].indexOf(I)+I.length);if(""===D)if(x++,";"===s[x][0]){D=s[x].substr(1);for(x++;";"!==s[x];)D=D+"\n"+s[x],x++;q.push(D)}else q.push(s[x]);
else q.push(D.trim());x++}else if("loop_"===s[x].substr(0,5)){x++;for(D=[];""===s[x]||"_"===s[x][0];)""!==s[x]&&(I=s[x].split(/\s/)[0].toLowerCase(),q=u[I]=u[I]||[],D.push(q)),x++;for(I=0;x<s.length&&"_"!==s[x][0]&&!s[x].startsWith("loop_")&&!s[x].startsWith("data_");){for(var q=l(s[x]," "),C=0;C<q.length;C++)""!==q[C]&&(D[I].push(q[C]),I=(I+1)%D.length);x++}}else x++;y.push({symmetries:[]});m.push([]);var D=void 0!==u._atom_site_id?u._atom_site_id.length:u._atom_site_label.length,B;if(void 0!==u._cell_length_a){var q=
parseFloat(u._cell_length_a),I=parseFloat(u._cell_length_b),C=parseFloat(u._cell_length_c),F=parseFloat(u._cell_angle_alpha)||90,J=parseFloat(u._cell_angle_beta)||90,L=parseFloat(u._cell_angle_gamma)||90,K=J*Math.PI/180,H=L*Math.PI/180,M=Math.cos(F*Math.PI/180),K=Math.cos(K),O=Math.cos(H),H=Math.sin(H);B=[[q,I*O,C*K],[0,I*H,C*(M-K*O)/H],[0,0,C*Math.sqrt(1-M*M-K*K-O*O+2*M*K*O)/H]];y[y.length-1].cryst={a:q,b:I,c:C,alpha:F,beta:J,gamma:L}}for(q=0;q<D;q++)if(void 0===u._atom_site_group_pdb||"TER"!==u._atom_site_group_pdb[q])I=
{},void 0!==u._atom_site_cartn_x?(I.x=parseFloat(u._atom_site_cartn_x[q]),I.y=parseFloat(u._atom_site_cartn_y[q]),I.z=parseFloat(u._atom_site_cartn_z[q])):(C=A(parseFloat(u._atom_site_fract_x[q]),parseFloat(u._atom_site_fract_y[q]),parseFloat(u._atom_site_fract_z[q])),I.x=C.x,I.y=C.y,I.z=C.z),I.chain=u._atom_site_auth_asym_id?u._atom_site_auth_asym_id[q]:void 0,I.resi=u._atom_site_auth_seq_id?parseInt(u._atom_site_auth_seq_id[q]):void 0,I.resn=u._atom_site_auth_comp_id?u._atom_site_auth_comp_id[q].trim():
void 0,I.atom=u._atom_site_auth_atom_id?u._atom_site_auth_atom_id[q].replace(/"/gm,""):void 0,I.hetflag=!u._atom_site_group_pdb||"HETA"===u._atom_site_group_pdb[q]||"HETATM"===u._atom_site_group_pdb[q],C=u._atom_site_type_symbol[q],I.elem=C[0].toUpperCase()+C.substr(1).toLowerCase(),I.bonds=[],I.ss="c",I.serial=q,I.bondOrder=[],I.properties={},m[m.length-1].push(I);if(void 0!==u._pdbx_struct_oper_list_id&&!p){for(q=0;q<u._pdbx_struct_oper_list_id.length;q++){var A=parseFloat(u["_pdbx_struct_oper_list_matrix[1][1]"][q]),
D=parseFloat(u["_pdbx_struct_oper_list_matrix[1][2]"][q]),I=parseFloat(u["_pdbx_struct_oper_list_matrix[1][3]"][q]),C=parseFloat(u["_pdbx_struct_oper_list_vector[1]"][q]),F=parseFloat(u["_pdbx_struct_oper_list_matrix[2][1]"][q]),J=parseFloat(u["_pdbx_struct_oper_list_matrix[2][2]"][q]),L=parseFloat(u["_pdbx_struct_oper_list_matrix[2][3]"][q]),M=parseFloat(u["_pdbx_struct_oper_list_vector[2]"][q]),H=parseFloat(u["_pdbx_struct_oper_list_matrix[3][1]"][q]),K=parseFloat(u["_pdbx_struct_oper_list_matrix[3][2]"][q]),
O=parseFloat(u["_pdbx_struct_oper_list_matrix[3][3]"][q]),R=parseFloat(u["_pdbx_struct_oper_list_vector[3]"][q]),A=new $3Dmol.Matrix4(A,D,I,C,F,J,L,M,H,K,O,R);y[y.length-1].symmetries.push(A)}for(q=0;q<m.length;q++)z(y[y.length-1].symmetries,e,m[q])}if(void 0!==u._symmetry_equiv_pos_as_xyz)for(q=0;q<u._symmetry_equiv_pos_as_xyz.length;q++){D=u._symmetry_equiv_pos_as_xyz[q].replace(/["' ]/g,"").split(",").map(function(b){return b.replace(/-/g,"+-")});A=new $3Dmol.Matrix4(0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1);for(I=0;3>I;I++)for(C=D[I].split("+"),F=0;F<C.length;F++)J=C[F],""!==J&&(L=g(J),J.match("x")?A.elements[I+0]=L:J.match("y")?A.elements[I+4]=L:J.match("z")?A.elements[I+8]=L:A.elements[I+12]=L);D=new $3Dmol.Matrix4(B[0][0],B[0][1],B[0][2],0,B[1][0],B[1][1],B[1][2],0,B[2][0],B[2][1],B[2][2],0);I=(new $3Dmol.Matrix4).getInverse(D,!0);A=(new $3Dmol.Matrix4).multiplyMatrices(A,I);A=(new $3Dmol.Matrix4).multiplyMatrices(D,A);y[y.length-1].symmetries.push(A)}}for(q=0;q<m.length;q++)c(m[q]),t(m[q]),
z(y[q].symmetries,e,m[q]);return m};b.mol2=b.MOL2=function(b,c){var d=[[]],m=!1;"undefined"!==typeof c.keepH&&(m=!c.keepH);for(var p=b.substr(e,b.length).split(/\r?\n|\r/);0<p.length;){var e=b.search(/@<TRIPOS>MOLECULE/),t=b.search(/@<TRIPOS>ATOM/);if(-1==e||-1==t)break;var e=[],g=p[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),s=parseInt(g[0]),t=0;1<g.length&&(t=parseInt(g[1]));var u=4,x;for(x=3;x<p.length;x++)if("@<TRIPOS>ATOM"==p[x]){u=x+1;break}x=d[d.length-1].length;for(s=x+s;x<s;x++){var g=
p[u++],g=g.replace(/^\s+/,"").replace(/\s+/g," ").split(" "),q={},y=g[5].split(".")[0];q.atom=q.elem=y[0].toUpperCase()+y.substr(1).toLowerCase();if("H"!=q.elem||!m){var y=d[d.length-1].length,z=parseInt(g[0]);q.serial=z;q.x=parseFloat(g[2]);q.y=parseFloat(g[3]);q.z=parseFloat(g[4]);q.atom=g[5];g=parseFloat(g[8]);q.index=y;q.bonds=[];q.bondOrder=[];q.properties={charge:g,partialCharge:g};e[z]=y;d[d.length-1].push(q)}}for(x=!1;u<p.length;)if("@<TRIPOS>BOND"==p[u++]){x=!0;break}if(x&&t)for(x=0;x<t;x++)g=
p[u++],g=g.replace(/^\s+/,"").replace(/\s+/g," ").split(" "),s=parseInt(g[1]),fromAtom=d[d.length-1][e[s]],q=parseInt(g[2]),toAtom=d[d.length-1][e[q]],g=parseInt(g[3]),isNaN(g)&&(g=1),void 0!==fromAtom&&void 0!==toAtom&&(fromAtom.bonds.push(e[q]),fromAtom.bondOrder.push(g),toAtom.bonds.push(e[s]),toAtom.bondOrder.push(g));if(c.multimodel)c.onemol||d.push([]),p.splice(0,u),b=p.join("\n");else break}return d};var A={H:.37,He:.32,Li:1.34,Be:.9,B:.82,C:.77,N:.75,O:.73,F:.71,Ne:.69,Na:1.54,Mg:1.3,Al:1.18,
Si:1.11,P:1.06,S:1.02,Cl:.99,Ar:.97,K:1.96,Ca:1.74,Sc:1.44,Ti:1.56,V:1.25,Mn:1.39,Fe:1.25,Co:1.26,Ni:1.21,Cu:1.38,Zn:1.31,Ga:1.26,Ge:1.22,Se:1.16,Br:1.14,Kr:1.1,Rb:2.11,Sr:1.92,Y:1.62,Zr:1.48,Nb:1.37,Mo:1.45,Tc:1.56,Ru:1.26,Rh:1.35,Pd:1.31,Ag:1.53,Cd:1.48,In:1.44,Sn:1.41,Sb:1.38,Te:1.35,I:1.33,Xe:1.3,Cs:2.25,Ba:1.98,Lu:1.6,Hf:1.5,Ta:1.38,W:1.46,Re:1.59,Os:1.44,Ir:1.37,Pt:1.28,Au:1.44,Hg:1.49,Tl:1.48,Pb:1.47,Bi:1.46,Rn:1.45},y=function(b,c){var d=(A[b.elem]||1.6)+(A[c.elem]||1.6),d=d+.25,d=d*d,m=b.x-
c.x,m=m*m;if(m>d)return!1;var p=b.y-c.y,p=p*p;if(p>d)return!1;var e=b.z-c.z,e=e*e;if(e>d)return!1;m=m+p+e;return isNaN(m)?!1:.5>m?!1:m>d?!1:!0},z=function(b,c,d){var m=d.length,p=m,e,t;if(!c)for(c=0;c<b.length;c++){if(!b[c].isIdentity()){var g=new $3Dmol.Vector3;for(t=0;t<m;t++){var s=[];for(e=0;e<d[t].bonds.length;e++)s.push(d[t].bonds[e]+p);g.set(d[t].x,d[t].y,d[t].z);g.applyMatrix4(b[c]);e={};for(var u in d[t])e[u]=d[t][u];e.x=g.x;e.y=g.y;e.z=g.z;e.bonds=s;d.push(e)}p=d.length}}else if(1<b.length)for(c=
0;c<d.length;c++){m=[];for(e=0;e<b.length;e++)b[e].isIdentity()||(p=new $3Dmol.Vector3,p.set(d[c].x,d[c].y,d[c].z),p.applyMatrix4(b[e]),m.push(p));d[c].symmetries=m}};b.pdb=b.PDB=b.pdbqt=b.PDBQT=function(b,c){var l=[[]],m=!c.keepH,p=!c.noSecondaryStructure,e=!c.doAssembly,y=!c.duplicateAssemblyAtoms,g=l.modelData=[{symmetries:[]}],s=l[l.length-1].length,u,x=[],q=[],N=!1,I=[],D=b.split(/\r?\n|\r/),C,B,F,J={};for(C=0;C<D.length;C++){F=D[C].replace(/^\s*/,"");B=F.substr(0,6);var L;if(0==B.indexOf("END"))if(c.multimodel)c.onemol||
(l.push([]),g.push({symmetries:[]}));else break;else if("ATOM "==B||"HETATM"==B){var K,H,M,O,R,V,P,S,Q;B=F.substr(16,1);if(" "==B||"A"==B)Q=parseInt(F.substr(6,5)),u=F.substr(12,4).replace(/ /g,""),L=F.substr(17,3).replace(/ /g,""),K=F.substr(21,1),H=parseInt(F.substr(22,4)),M=F.substr(26,1),O=parseFloat(F.substr(30,8)),R=parseFloat(F.substr(38,8)),V=parseFloat(F.substr(46,8)),B=parseFloat(F.substr(60,8)),S=F.substr(76,2).replace(/ /g,""),""===S||"undefined"===typeof A[S]?(S=F.substr(12,2).replace(/ /g,
""),0<S.length&&"H"==S[0]&&"Hg"!=S&&(S="H"),1<S.length&&(S=S[0].toUpperCase()+S.substr(1).toLowerCase(),"undefined"===typeof A[S]?S=S[0]:"A"==F[0]&&"Ca"==S&&(S="C"))):S=S[0].toUpperCase()+S.substr(1).toLowerCase(),"H"==S&&m||(P="H"==F[0]?!0:!1,I[Q]=l[l.length-1].length,l[l.length-1].push({resn:L,x:O,y:R,z:V,elem:S,hetflag:P,chain:K,resi:H,icode:M,rescode:H+(" "!=M?"^"+M:""),serial:Q,atom:u,bonds:[],ss:"c",bondOrder:[],properties:{},b:B,pdbline:F}))}else if("SHEET "==B)N=!0,B=F.substr(21,1),u=parseInt(F.substr(22,
4)),L=F.substr(32,1),F=parseInt(F.substr(33,4)),x.push([B,u,L,F]);else if("CONECT"==B)for(B=parseInt(F.substr(6,5)),u=I[B],L=l[l.length-1][u],B=0;4>B;B++){if(K=parseInt(F.substr([11,16,21,26][B],5)),K=I[K],H=l[l.length-1][K],void 0!==L&&void 0!==H)if(J[[u,K]])for(J[[u,K]]+=1,H=0;H<L.bonds.length;H++)L.bonds[H]==K&&(M=J[[u,K]],L.bondOrder[H]=4<=M?1:M);else if(J[[u,K]]=1,0==L.bonds.length||L.bonds[L.bonds.length-1]!=K)L.bonds.push(K),L.bondOrder.push(1)}else if("HELIX "==B)N=!0,B=F.substr(19,1),u=parseInt(F.substr(21,
4)),L=F.substr(31,1),F=parseInt(F.substr(33,4)),q.push([B,u,L,F]);else if(e||"REMARK"!=B||"BIOMT"!=F.substr(13,5))"CRYST1"==B&&(u=parseFloat(F.substr(7,8)),B=parseFloat(F.substr(16,8)),L=parseFloat(F.substr(25,8)),K=parseFloat(F.substr(34,6)),H=parseFloat(F.substr(41,6)),F=parseFloat(F.substr(48,6)),g[g.length-1].cryst={a:u,b:B,c:L,alpha:K,beta:H,gamma:F});else{B=new $3Dmol.Matrix4;for(L=1;3>=L;L++)if(F=D[C].replace(/^\s*/,""),parseInt(F.substr(18,1))==L)B.elements[L-1]=parseFloat(F.substr(23,10)),
B.elements[L-1+4]=parseFloat(F.substr(33,10)),B.elements[L-1+8]=parseFloat(F.substr(43,10)),B.elements[L-1+12]=parseFloat(F.substr(53)),C++;else for(;"BIOMT"==F.substr(13,5);)C++,F=D[C].replace(/^\s*/,"");B.elements[3]=0;B.elements[7]=0;B.elements[11]=0;B.elements[15]=1;g[g.length-1].symmetries.push(B);C--}}(new Date).getTime();for(L=0;L<l.length;L++){d(l[L]);e||z(g[L].symmetries,y,l[L]);if(p||!N)(new Date).getTime(),t(l[L]);for(C=s;C<l[L].length;C++)if(u=l[L][C],void 0!==u){for(B=0;B<x.length;B++)u.chain!=
x[B][0]||u.resi<x[B][1]||u.resi>x[B][3]||(u.ss="s",u.resi==x[B][1]&&(u.ssbegin=!0),u.resi==x[B][3]&&(u.ssend=!0));for(B=0;B<q.length;B++)u.chain!=q[B][0]||u.resi<q[B][1]||u.resi>q[B][3]||(u.ss="h",u.resi==q[B][1]?u.ssbegin=!0:u.resi==q[B][3]&&(u.ssend=!0))}}return l};b.pqr=b.PQR=function(b,c){var l=[[]],m,p=!c.noSecondaryStructure;l.modelData=[{symmetries:[]}];var e=[],y=b.split(/\r?\n|\r/),g,s;for(g=0;g<y.length;g++)if(s=y[g].replace(/^\s*/,""),m=s.substr(0,6),0==m.indexOf("END"))if(c.multimodel)c.onemol||
l.push([]);else break;else if("ATOM "==m||"HETATM"==m){var u=parseInt(s.substr(6,5));m=s.substr(12,4).replace(/ /g,"");var x=s.substr(17,3),q=s.substr(21,1),z=parseInt(s.substr(22,4)),A=s.substr(30).trim().split(/\s+/),D=parseFloat(A[0]),C=parseFloat(A[1]),B=parseFloat(A[2]),F=parseFloat(A[3]),A=parseFloat(A[4]),J=m[0];1<m.length&&m[1].toUpperCase()!=m[1]&&(J=m.substr(0,2));hetflag="H"==s[0]?!0:!1;e[u]=l[l.length-1].length;l[l.length-1].push({resn:x,x:D,y:C,z:B,elem:J,hetflag:hetflag,chain:q,resi:z,
serial:u,atom:m,bonds:[],ss:"c",bondOrder:[],properties:{charge:F,partialCharge:F,radius:A},pdbline:s})}else if("CONECT"==m)for(m=parseInt(s.substr(6,5)),u=l[l.length-1][e[m]],m=0;4>m;m++)x=parseInt(s.substr([11,16,21,26][m],5)),q=l[l.length-1][e[x]],void 0!==u&&void 0!==q&&(u.bonds.push(e[x]),u.bondOrder.push(1));for(g=0;g<l.length;g++)d(l[g]),p&&t(l[g]);return l};b.mmtf=b.MMTF=function(b,c){var d=!c.keepH,m=MMTF.decode(b),p=[[]],e=p.modelData=[],t=0,g=0,s=0,u=m.secStructList,x=m.insCodeList,q=m.bFactorList,
y=m.altLocList,A=m.occupancyList,D=m.bondAtomList,C=m.bondOrderList,B=m.numModels;if(0==B)return p;c.multimodel||(B=1);var F,J,L,K,H,M=!c.doAssembly,O=!c.duplicateAssemblyAtoms;F=c.assemblyIndex?c.assemblyIndex:0;var R=[];if(m.bioAssemblyList&&0<m.bioAssemblyList.length){var V=m.bioAssemblyList[F].transformList;F=0;for(H=V.length;F<H;F++){var P=new $3Dmol.Matrix4(V[F].matrix);P.transpose();R.push(P)}}for(H=V=0;H<B;H++){var P=m.chainsPerModel[H],S=p[p.length-1],Q=[];e.push({symmetries:R});for(F=0;F<
P;++F){var da=m.groupsPerChain[t],Y;J=m.chainIdList.subarray(4*t,4*t+4);Y=String.fromCharCode.apply(null,J).replace(/\0/g,"");var ba=g;for(J=0;J<da;++J){var E=m.groupList[m.groupTypeList[g]];K=E.atomNameList.length;var aa=0;u&&(aa=u[g]);m.insCodeList&&String.fromCharCode(x[g]);var T=m.groupIdList[g],Z=E.groupName,W=s;for(L=0;L<K;++L){var U=E.elementList[L];if(!d||"H"!=U){var X="";q&&(X=q[s]);var ga=" ";y&&(ga=String.fromCharCode(y[s]));var Ea="";A&&(Ea=A[s]);var Na=m.atomIdList[s],Fa=E.atomNameList[L],
Ga=E.atomChargeList[L],Ta=m.xCoordList[s],Oa=m.yCoordList[s],Pa=m.zCoordList[s];Q[s]=S.length;S.push({resn:Z,x:Ta,y:Oa,z:Pa,elem:U,hetflag:0>aa,chain:Y,resi:T,icode:ga,rescode:T+(" "!=ga?"^"+ga:""),serial:Na,atom:Fa,bonds:[],ss:2==aa?"h":3==aa?"s":"c",bondOrder:[],properties:{charge:Ga,occupancy:Ea},b:X})}s+=1}aa=E.bondAtomList;L=0;for(K=E.bondOrderList.length;L<K;++L)Z=W+aa[2*L],U=W+aa[2*L+1],T=E.bondOrderList[L],Z=Q[Z],U=Q[U],X=S[Z],ga=S[U],X&&ga&&(X.bonds.push(U),X.bondOrder.push(T),ga.bonds.push(Z),
ga.bondOrder.push(T));g+=1}g=ba;for(J=0;J<da;++J)g+=1;t+=1}if(D)for(L=V,K=D.length;L<K;L+=2){Z=D[L];U=D[L+1];T=C?C[L/2]:1;if(Z>=s){V=L;break}Z=Q[Z];U=Q[U];X=S[Z];ga=S[U];X&&ga&&(X.bonds.push(U),X.bondOrder.push(T),ga.bonds.push(Z),ga.bondOrder.push(T))}c.multimodel&&(c.onemol||p.push([]))}for(H=0;H<p.length;H++)M||z(e[H].symmetries,O,p[H]);return p};return b}();$3Dmol=$3Dmol||{};
$3Dmol.partialCharges={"ALA:N":-.15,"ALA:CA":.1,"ALA:CB":0,"ALA:C":.6,"ALA:O":-.55,"ARG:N":-.15,"ARG:CA":.1,"ARG:CB":0,"ARG:CG":0,"ARG:CD":.1,"ARG:NE":-.1,"ARG:CZ":.5,"ARG:NH1":.25,"ARG:NH2":.25,"ARG:C":.6,"ARG:O":-.55,"ASN:N":-.15,"ASN:CA":.1,"ASN:CB":0,"ASN:CG":.55,"ASN:OD1":-.55,"ASN:ND2":0,"ASN:C":.6,"ASN:O":-.55,"ASP:N":-.15,"ASP:CA":.1,"ASP:CB":0,"ASP:CG":.14,"ASP:OD1":-.57,"ASP:OD2":-.57,"ASP:C":.6,"ASP:O":-.55,"CYS:N":-.15,"CYS:CA":.1,"CYS:CB":.19,"CYS:SG":-.19,"CYS:C":.6,"CYS:O":-.55,"GLN:N":-.15,
"GLN:CA":.1,"GLN:CB":0,"GLN:CG":0,"GLN:CD":.55,"GLN:OE1":-.55,"GLN:NE2":0,"GLN:C":.6,"GLN:O":-.55,"GLU:N":-.15,"GLU:CA":.1,"GLU:CB":0,"GLU:CG":0,"GLU:CD":.14,"GLU:OE1":-.57,"GLU:OE2":-.57,"GLU:C":.6,"GLU:O":-.55,"GLY:N":-.15,"GLY:CA":.1,"GLY:C":.6,"GLY:O":-.55,"HIS:N":-.15,"HIS:CA":.1,"HIS:CB":0,"HIS:CG":.1,"HIS:ND1":-.1,"HIS:CD2":.1,"HIS:NE2":-.4,"HIS:CE1":.3,"HIS:C":.6,"HIS:O":-.55,"ILE:N":-.15,"ILE:CA":.1,"ILE:CB":0,"ILE:CG2":0,"ILE:CG1":0,"ILE:CD":0,"ILE:C":.6,"ILE:O":-.55,"LEU:N":-.15,"LEU:CA":.1,
"LEU:CB":0,"LEU:CG":0,"LEU:CD1":0,"LEU:CD2":0,"LEU:C":.6,"LEU:O":-.55,"LYS:N":-.15,"LYS:CA":.1,"LYS:CB":0,"LYS:CG":0,"LYS:CD":0,"LYS:CE":.25,"LYS:NZ":.75,"LYS:C":.6,"LYS:O":-.55,"MET:N":-.15,"MET:CA":.1,"MET:CB":0,"MET:CG":.06,"MET:SD":-.12,"MET:CE":.06,"MET:C":.6,"MET:O":-.55,"PHE:N":-.15,"PHE:CA":.1,"PHE:CB":0,"PHE:CG":0,"PHE:CD1":0,"PHE:CD2":0,"PHE:CE1":0,"PHE:CE2":0,"PHE:CZ":0,"PHE:C":.6,"PHE:O":-.55,"PRO:N":-.25,"PRO:CD":.1,"PRO:CA":.1,"PRO:CB":0,"PRO:CG":0,"PRO:C":.6,"PRO:O":-.55,"SER:N":-.15,
"SER:CA":.1,"SER:CB":.25,"SER:OG":-.25,"SER:C":.6,"SER:O":-.55,"THR:N":-.15,"THR:CA":.1,"THR:CB":.25,"THR:OG1":-.25,"THR:CG2":0,"THR:C":.6,"THR:O":-.55,"TRP:N":-.15,"TRP:CA":.1,"TRP:CB":0,"TRP:CG":-.03,"TRP:CD2":.1,"TRP:CE2":-.04,"TRP:CE3":-.03,"TRP:CD1":.06,"TRP:NE1":-.06,"TRP:CZ2":0,"TRP:CZ3":0,"TRP:CH2":0,"TRP:C":.6,"TRP:O":-.55,"TYR:N":-.15,"TYR:CA":.1,"TYR:CB":0,"TYR:CG":0,"TYR:CD1":0,"TYR:CE1":0,"TYR:CD2":0,"TYR:CE2":0,"TYR:CZ":.25,"TYR:OH":-.25,"TYR:C":.6,"TYR:O":-.55,"VAL:N":-.15,"VAL:CA":.1,
"VAL:CB":0,"VAL:CG1":0,"VAL:CG2":0,"VAL:C":.6,"VAL:O":-.55};$3Dmol.applyPartialCharges=function(b,c){c&&"undefined"!==typeof b.partialCharge||b.resn&&b.atom&&(b.properties.partialCharge=$3Dmol.partialCharges[b.resn+":"+b.atom])};(function(){});
$3Dmol.VolumeData=function(b,c,d){this.unit={x:1,y:1,z:1};this.origin={x:0,y:0,z:0};this.size={x:0,y:0,z:0};this.data=new Float32Array([]);this.matrix=null;c=c.toLowerCase();if(/\.gz$/.test(c)){c=c.replace(/\.gz$/,"");try{b=pako.inflate(b)}catch(p){console.log(p)}}if(this[c])this[c](b);if(d){if(d.negate)for(b=0,c=this.data.length;b<c;b++)this.data[b]=-this.data[b];if(d.normalize){var t=0;b=0;for(c=this.data.length;b<c;b++)t+=this.data[b];d=t/this.data.length;console.log("computed mean: "+d);b=t=0;
for(c=this.data.length;b<c;b++)var A=this.data[b]-d,t=t+A*A;t/=this.data.length;console.log("Computed variance: "+t);b=0;for(c=this.data.length;b<c;b++)this.data[b]=(this.data[b]-d)/t}}};
$3Dmol.VolumeData.prototype.getVal=function(b,c,d){b-=this.origin.x;c-=this.origin.y;d-=this.origin.z;b/=this.unit.x;c/=this.unit.y;d/=this.unit.z;b=Math.round(b);c=Math.round(c);d=Math.round(d);return 0>b||b>=this.size.x||0>c||c>=this.size.y||0>d||d>=this.size.z?0:this.data[b*this.size.y*this.size.z+c*this.size.z+d]};
$3Dmol.VolumeData.prototype.vasp=function(b){var c=b.replace(/^\s+/,"").split(/[\n\r]/),d=$3Dmol.Parsers.vasp(b)[0].length;if(0==d)console.log("No good formating of CHG or CHGCAR file, not atomic information provided in the file."),this.data=[];else{var p=parseFloat(c[1]),t;t=c[2].replace(/^\s+/,"").split(/\s+/);b=(new $3Dmol.Vector3(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))).multiplyScalar(1.889725992*p);t=c[3].replace(/^\s+/,"").split(/\s+/);var A=(new $3Dmol.Vector3(parseFloat(t[0]),
parseFloat(t[1]),parseFloat(t[2]))).multiplyScalar(1.889725992*p);t=c[4].replace(/^\s+/,"").split(/\s+/);t=(new $3Dmol.Vector3(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]))).multiplyScalar(1.889725992*p);p=b.x*(A.y*t.z-t.y*A.z)-A.x*(b.y*t.z-t.y*b.z)+t.x*(b.y*A.z-A.y*b.z);p=Math.abs(p)/Math.pow(1.889725992,3);p=1/p;c.splice(0,8+d+1);var y=c[0].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),d=Math.abs(y[0]),z=Math.abs(y[1]),y=Math.abs(y[2]),f=this.origin=new $3Dmol.Vector3(0,0,0);this.size=
{x:d,y:z,z:y};this.unit=new $3Dmol.Vector3(b.x,A.y,t.z);b=b.multiplyScalar(1/(1.889725992*d));A=A.multiplyScalar(1/(1.889725992*z));t=t.multiplyScalar(1/(1.889725992*y));if(0!=b.y||0!=b.z||0!=A.x||0!=A.z||0!=t.x||0!=t.y)this.matrix=new $3Dmol.Matrix4(b.x,A.x,t.x,0,b.y,A.y,t.y,0,b.z,A.z,t.z,0,0,0,0,1),this.matrix=this.matrix.multiplyMatrices(this.matrix,(new $3Dmol.Matrix4).makeTranslation(f.x,f.y,f.z)),this.origin=new $3Dmol.Vector3(0,0,0),this.unit=new $3Dmol.Vector3(1,1,1);c.splice(0,1);c=c.join(" ");
c=c.replace(/^\s+/,"");c=c.split(/[\s\r]+/);c.splice(d*z*y+1);c=new Float32Array(c);for(b=0;b<c.length;b++)c[b]=c[b]*p*.036749309;this.data=c}};
$3Dmol.VolumeData.prototype.cube=function(b){b=b.replace(/^\s+/,"").split(/[\n\r]+/);if(!(6>b.length)){var c=b[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),d=parseFloat(c[0]),p=Math.abs(d),t=this.origin=new $3Dmol.Vector3(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3])),c=b[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),A=0<c[0]?.529177:1;t.multiplyScalar(A);var y=Math.abs(c[0]),z=(new $3Dmol.Vector3(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3]))).multiplyScalar(A),c=b[4].replace(/^\s+/,
"").replace(/\s+/g," ").split(" "),f=Math.abs(c[0]),h=(new $3Dmol.Vector3(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3]))).multiplyScalar(A),c=b[5].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),l=Math.abs(c[0]),c=(new $3Dmol.Vector3(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3]))).multiplyScalar(A);this.size={x:y,y:f,z:l};this.unit=new $3Dmol.Vector3(z.x,h.y,c.z);if(0!=z.y||0!=z.z||0!=h.x||0!=h.z||0!=c.x||0!=c.y)this.matrix=new $3Dmol.Matrix4(z.x,h.x,c.x,0,z.y,h.y,c.y,0,z.z,h.z,c.z,0,
0,0,0,1),this.matrix=this.matrix.multiplyMatrices(this.matrix,(new $3Dmol.Matrix4).makeTranslation(t.x,t.y,t.z)),this.origin=new $3Dmol.Vector3(0,0,0),this.unit=new $3Dmol.Vector3(1,1,1);t=6;0>d&&t++;b=b.splice(p+t).join(" ");b=b.replace(/^\s+/,"");b=b.split(/[\s\r]+/);this.data=new Float32Array(b)}};
$3Dmol.VolumeData.prototype.ccp4=function(b){var c,d,p,t,A,y,z,f,h,l,m,w,e,G,g,s,u,x,q,N,I,D,C,B,F;b=new Int8Array(b);D=new Int32Array(b.buffer,0,56);var J=new Float32Array(b.buffer,0,56);d=new DataView(b.buffer);String.fromCharCode(d.getUint8(208),d.getUint8(209),d.getUint8(210),d.getUint8(211));c=[d.getUint8(212),d.getUint8(213)];if(17===c[0]&&17===c[1])for(c=b.byteLength,t=0;t<c;t+=4)d.setFloat32(t,d.getFloat32(t),!0);d=D[0];c=D[1];p=D[2];t=D[4];A=D[5];y=D[6];z=D[7];f=D[8];h=D[9];l=J[10];m=J[11];
w=J[12];e=J[13];G=J[14];g=J[15];s=D[16];u=D[17];x=D[18];q=J[19];N=J[20];I=J[21];D=D[23];C=J[49];B=J[50];F=J[51];console.log("Map has min,mean,average,rmsddv: "+q+","+N+","+I+","+J[54]);J=[l,0,0];m=[m*Math.cos(Math.PI/180*g),m*Math.sin(Math.PI/180*g),0];e=[w*Math.cos(Math.PI/180*G),w*(Math.cos(Math.PI/180*e)-Math.cos(Math.PI/180*g)*Math.cos(Math.PI/180*G))/Math.sin(Math.PI/180*g),0];e[2]=Math.sqrt(w*w*Math.sin(Math.PI/180*G)*Math.sin(Math.PI/180*G)-e[1]*e[1]);J=[0,J,m,e];z=[0,z,f,h];s=[0,s,u,x];this.matrix=
new $3Dmol.Matrix4;this.matrix.set(J[s[1]][0]/z[s[1]],J[s[2]][0]/z[s[2]],J[s[3]][0]/z[s[3]],0,J[s[1]][1]/z[s[1]],J[s[2]][1]/z[s[2]],J[s[3]][1]/z[s[3]],0,J[s[1]][2]/z[s[1]],J[s[2]][2]/z[s[2]],J[s[3]][2]/z[s[3]],0,0,0,0,1);this.matrix=this.matrix.multiplyMatrices(this.matrix,(new $3Dmol.Matrix4).makeTranslation(t+C,A+B,y+F));this.origin=new $3Dmol.Vector3(0,0,0);this.unit=new $3Dmol.Vector3(1,1,1);this.size={x:d,y:c,z:p};b=new Float32Array(b.buffer,1024+D);this.data=new Float32Array(d*c*p);for(t=0;t<
d;t++)for(A=0;A<c;A++)for(y=0;y<p;y++)this.data[(t*c+A)*p+y]=b[(y*c+A)*d+t]};
$3Dmol.workerString=function(){self.onmessage=function(b){b=b.data;var c=b.type;if(0>c)self.atomData=b.atoms,self.volume=b.volume,self.ps=new ProteinSurface;else{var d=self.ps;d.initparm(b.expandedExtent,1==c?!1:!0,self.volume);d.fillvoxels(self.atomData,b.extendedAtoms);d.buildboundary();if(4===c||2===c)d.fastdistancemap(),d.boundingatom(!1),d.fillvoxelswaals(self.atomData,b.extendedAtoms);d.marchingcube(c);b=d.getFacesAndVertices(b.atomsToShow);self.postMessage(b)}}}.toString().replace(/(^.*?\{|\}$)/g,
"");$3Dmol.workerString+="; var ProteinSurface="+$3Dmol.ProteinSurface.toString().replace(/\$3Dmol.MarchingCube./g,"MarchingCube.");$3Dmol.workerString+=",MarchingCube=("+$3Dmol.MarchingCubeInitializer.toString()+")();";$3Dmol.SurfaceWorker=window.URL.createObjectURL(new Blob([$3Dmol.workerString],{type:"text/javascript"}));$3Dmol.workerString=$3Dmol.workerString;$3Dmol.SurfaceWorker=$3Dmol.SurfaceWorker;