Clazz.declarePackage ("JS"); Clazz.load (["JS.ScriptParam"], "JS.ScriptExpr", ["java.lang.Boolean", "$.Float", "java.util.Hashtable", "$.Map", "JU.BArray", "$.BS", "$.CU", "$.Lst", "$.M34", "$.M4", "$.Measure", "$.P3", "$.P4", "$.PT", "$.SB", "J.api.Interface", "JM.BondSet", "$.Group", "$.ModelSet", "JS.SV", "$.ScriptContext", "$.ScriptMathProcessor", "$.T", "JU.BSUtil", "$.Elements", "$.Escape"], function () { c$ = Clazz.decorateAsClass (function () { this.debugHigh = false; this.cmdExt = null; this.isoExt = null; this.mathExt = null; this.smilesExt = null; this.tempStatement = null; this.ptTemp = null; Clazz.instantialize (this, arguments); }, JS, "ScriptExpr", JS.ScriptParam); Clazz.defineMethod (c$, "getCmdExt", function () { return (this.cmdExt == null ? this.cmdExt = (this.getExt ("Cmd")).init (this) : this.cmdExt); }); Clazz.defineMethod (c$, "getIsoExt", function () { return (this.isoExt == null ? this.isoExt = (this.getExt ("Iso")).init (this) : this.isoExt); }); Clazz.defineMethod (c$, "getMathExt", function () { return (this.mathExt == null ? (this.mathExt = this.getExt ("Math")).init (this) : this.mathExt); }); Clazz.defineMethod (c$, "getSmilesExt", function () { return (this.smilesExt == null ? (this.smilesExt = this.getExt ("Smiles")).init (this) : this.smilesExt); }); Clazz.defineMethod (c$, "getExt", function (type) { return J.api.Interface.getInterface ("JS." + type + "Ext", this.vwr, "script"); }, "~S"); Clazz.defineMethod (c$, "parameterExpressionList", function (pt, ptAtom, isArrayItem) { return this.parameterExpression (pt, -1, null, true, true, ptAtom, isArrayItem, null, null, false); }, "~N,~N,~B"); Clazz.defineMethod (c$, "parameterExpressionString", function (pt, ptMax) { return this.parameterExpression (pt, ptMax, "", true, false, -1, false, null, null, false); }, "~N,~N"); Clazz.defineMethod (c$, "parameterExpressionBoolean", function (pt, ptMax) { return (this.parameterExpression (pt, ptMax, null, true, false, -1, false, null, null, false)).booleanValue (); }, "~N,~N"); Clazz.defineMethod (c$, "parameterExpressionToken", function (pt) { var result = this.parameterExpressionList (pt, -1, false); return (result.size () > 0 ? result.get (0) : JS.SV.newS ("")); }, "~N"); Clazz.defineMethod (c$, "parameterExpressionSelect", function (h, where) { this.st = where; this.slen = this.st.length; return (this.parameterExpression (2, -2147483648, null, true, false, -1, false, h, null, false)).booleanValue (); }, "java.util.Map,~A"); Clazz.defineMethod (c$, "parameterExpression", function (pt, ptMax, key, ignoreComma, asVector, ptAtom, isArrayItem, localVars, localVar, isSpecialAssignment) { var isImplicitAtomProperty = (localVar != null); var isWhere = (localVar == null && localVars != null); var isOneExpressionOnly = (pt < 0); var returnBoolean = (!asVector && key == null); var returnString = (!asVector && key != null && key.length == 0); if (isOneExpressionOnly) pt = -pt; var allContext = (localVars == null || ptMax != -2147483648); if (ptMax < pt) ptMax = this.slen; var ptEq = (isSpecialAssignment ? 0 : 1); var ptWithin = -1; var rpn = new JS.ScriptMathProcessor (this, isSpecialAssignment, isArrayItem, asVector, false, false, key); var v; var res; var nSquare = 0; var nParen = 0; var topLevel = true; out : for (var i = pt; i < ptMax; i++) { v = null; var tok = this.getToken (i).tok; if (isImplicitAtomProperty && this.tokAt (i + 1) != 1073742336) { var token = (localVars != null && localVars.containsKey (this.theToken.value) ? null : this.getBitsetPropertySelector (i, 10)); if (token != null) { rpn.addX (localVars.get (localVar)); if (!rpn.addOpAllowMath (token, (this.tokAt (i + 1) == 268435472), 0)) this.invArg (); if ((token.intValue == 134320141 || token.intValue == 102436) && this.tokAt (this.iToken + 1) != 268435472) { rpn.addOp (JS.T.tokenLeftParen); rpn.addOp (JS.T.tokenRightParen); }i = this.iToken; continue; }}switch (tok) { case 268435521: case 1073742338: if (!ignoreComma && topLevel) break out; if (tok == 1073742338) this.invArg (); if (isSpecialAssignment && nSquare == 1 && this.tokAt (i + 1) == 268435860) isSpecialAssignment = rpn.endAssignment (); } switch (tok) { case 12290: if ((tok = this.tokAt (++i)) == 1073742325) { v = this.parameterExpressionToken (++i); i = this.iToken; } else if (tok == 2) { v = this.vwr.ms.getAtoms (1094715393, Integer.$valueOf (this.st[i].intValue)); break; } else if (tok == 12290 && this.tokAt (i + 1) == 2) { v = this.vwr.ms.getAtomsFromAtomNumberInFrame (this.st[++i].intValue); break; } else { v = this.getParameter (JS.SV.sValue (this.st[i]), 1073742190, true); }v = this.getParameter ((v).asString (), 1073742190, true); break; case 134320649: if (this.getToken (++i).tok != 268435472) this.invArg (); if (localVars == null) localVars = new java.util.Hashtable (); res = this.parameterExpression (++i, -1, null, ignoreComma, false, -1, false, localVars, localVar, false); var TF = (res).booleanValue (); var iT = this.iToken; if (this.getToken (iT++).tok != 1073742339) this.invArg (); this.parameterExpressionBoolean (iT, -1); var iF = this.iToken; if (this.tokAt (iF++) != 1073742339) this.invArg (); this.parameterExpression (-iF, -1, null, ignoreComma, false, 1, false, localVars, localVar, false); var iEnd = this.iToken; if (this.tokAt (iEnd) != 268435473) this.invArg (); v = this.parameterExpression (TF ? iT : iF, TF ? iF : iEnd, "XXX", ignoreComma, false, 1, false, localVars, localVar, false); i = this.iToken = iEnd; break; case 134320648: case 1275082245: var isFunctionOfX = (pt > 0); var isFor = (isFunctionOfX && tok == 134320648); var dummy; if (isFunctionOfX) { if (this.getToken (++i).tok != 268435472 || !JS.T.tokAttr (this.getToken (++i).tok, 1073741824)) this.invArg (); dummy = this.paramAsStr (i); if (this.getToken (++i).tok != 1073742339) this.invArg (); } else { dummy = "_x"; }v = this.parameterExpressionToken (-(++i)).value; if (!(Clazz.instanceOf (v, JU.BS))) this.invArg (); var bsAtoms = v; i = this.iToken; if (isFunctionOfX && this.getToken (i++).tok != 1073742339) this.invArg (); var bsSelect = new JU.BS (); var bsX = new JU.BS (); var sout = (isFor ? new Array (bsAtoms.cardinality ()) : null); if (localVars == null) localVars = new java.util.Hashtable (); bsX.set (0); var t = JS.SV.newV (10, bsX); t.index = 0; localVars.put (dummy, t.setName (dummy)); var pt2 = -1; if (isFunctionOfX) { pt2 = i - 1; var np = 0; var tok2; while (np >= 0 && ++pt2 < ptMax) { if ((tok2 = this.tokAt (pt2)) == 268435473) np--; else if (tok2 == 268435472) np++; } }var p = 0; var jlast = 0; var j = bsAtoms.nextSetBit (0); if (j < 0 || this.chk) { this.iToken = pt2 - 1; } else { for (; j >= 0; j = bsAtoms.nextSetBit (j + 1)) { if (jlast >= 0) bsX.clear (jlast); jlast = j; bsX.set (j); t.index = j; res = this.parameterExpression (i, pt2, (isFor ? "XXX" : null), ignoreComma, isFor, j, false, localVars, isFunctionOfX ? null : dummy, false); if (isFor) { if (res == null || (res).size () == 0) this.invArg (); sout[p++] = ((res).get (0)).asString (); } else if ((res).booleanValue ()) { bsSelect.set (j); }} }if (isFor) { v = sout; } else if (isFunctionOfX) { v = bsSelect; } else { return this.listBS (bsSelect); }i = this.iToken + 1; break; case 1073742339: break out; case 2: if (this.tokAt (this.iToken + 1) == 1073742336 && ((tok = this.tokAt (this.iToken + 2)) == 805306401 || tok == 268435633)) { this.theToken.value = Float.$valueOf (this.theToken.intValue); this.theToken.tok = 3; this.theToken.intValue = 2147483647; i++; }case 3: case 1073742362: rpn.addXNum (this.theToken); break; case 134217750: if (this.tokAt (this.iToken + 1) == 268435472) { if (!rpn.addOpAllowMath (this.theToken, true, 0)) this.invArg (); break; }case 1073742335: case 1073742334: case 4: case 8: case 9: case 11: case 12: case 7: case 10: case 6: case 14: rpn.addX (JS.SV.newT (this.theToken)); break; case 1073742330: if (this.tokAt (i + 2) == 1073742336 && this.tokAt (i + 3) == 1275072526) { rpn.addXStr ("$" + this.paramAsStr (++i)); } else { this.ignoreError = true; var ptc; try { ptc = this.centerParameter (i, null); rpn.addX (JS.SV.newV (8, ptc)); } catch (e) { if (Clazz.exceptionOf (e, Exception)) { rpn.addXStr (""); } else { throw e; } } this.ignoreError = false; i = this.iToken; }break; case 1073742332: if (this.tokAt (i + 1) == 4) { if (this.tokAt (i + 2) == 1073742338) { v = (this.chk ? new JU.BS () : this.getAtomBitSet (this.stringParameter (i + 1))); i += 2; break; }v = this.getAssocArray (i); } else { v = this.getPointOrPlane (i, false, true, true, false, 3, 4, true); }i = this.iToken; break; case 1073742325: if (this.tokAt (i + 1) == 1073742326) { v = new java.util.Hashtable (); i++; break; } else if (this.tokAt (i + 1) == 1073742327 && this.tokAt (i + 2) == 1073742326) { tok = 1073742327; this.iToken += 2; }case 1073742327: if (tok == 1073742327) v = this.vwr.getAllAtoms (); else v = this.atomExpression (this.st, i, 0, true, true, null, true); i = this.iToken; if (nParen == 0 && isOneExpressionOnly) { this.iToken++; return this.listBS (v); }break; case 1073742195: rpn.addOp (this.theToken); continue; case 1073742326: i++; break out; case 268435504: if (!ignoreComma && topLevel) break out; if (!rpn.addOp (this.theToken)) this.invArg (); break; case 1073742337: case 1073742336: if (isSpecialAssignment && topLevel && this.tokAt (i + 2) == 268435860) isSpecialAssignment = rpn.endAssignment (); if (ptEq == 0 && topLevel) { switch (this.tokAt (i + 1)) { case 0: break; case 1275335685: case 1275334681: case 1140850694: case 1140850706: case 1140850696: case 1275068418: if (tok == 1073742336) break; default: rpn.addOp (JS.T.tokenArrayOpen); rpn.addXStr (this.optParameterAsString (++i)); rpn.addOp (JS.T.tokenArrayClose); continue; } }var $var = this.getBitsetPropertySelector (i + 1, rpn.getXTok ()); var isUserFunction = ($var.intValue == 134320141); var allowMathFunc = true; var tok2 = this.tokAt (this.iToken + 2); if (this.tokAt (this.iToken + 1) == 1073742336) { switch (tok2) { case 1073742327: tok2 = 480; if (this.tokAt (this.iToken + 3) == 1073742336 && this.tokAt (this.iToken + 4) == 1275068420) tok2 = 224; case 32: case 64: case 192: case 128: case 160: case 96: allowMathFunc = (isUserFunction || $var.intValue == 1275069443 || tok2 == 480 || tok2 == 224); $var.intValue |= tok2; this.getToken (this.iToken + 2); } }var tokNext = this.tokAt (this.iToken + 1); allowMathFunc = new Boolean (allowMathFunc & (tokNext == 268435472 || isUserFunction)).valueOf (); if (!rpn.addOpAllowMath ($var, allowMathFunc, isUserFunction ? tokNext : 0)) this.invArg (); i = this.iToken; if ($var.intValue == 134320141 && tokNext != 268435472) { rpn.addOp (JS.T.tokenLeftParen); rpn.addOp (JS.T.tokenRightParen); }break; case 1086326786: case 1086326785: case 1073742328: case 1678381065: case 1086326788: case 1073742329: case 1111490587: case 1086326789: case 1086324742: case 1094717454: case 1094713360: case 1073742128: case 134218756: case 1086324744: case 1094713366: case 134218757: case 1237320707: case 1639976963: if (!isWhere && i == ptWithin && this.tokAt (i + 1) == 268435504) { rpn.addX (JS.SV.newT (this.theToken)); break; }default: if (this.theTok == 268435520 && this.tokAt (i + 2) == 268435490) { v = this.getAssocArray (i); i = this.iToken; break; }if (JS.T.tokAttr (this.theTok, 268435456) || JS.T.tokAttr (this.theTok, 134217728) && this.tokAt (this.iToken + 1) == 268435472) { if (!rpn.addOp (this.theToken)) { if (ptAtom >= 0) { break out; }this.invArg (); }switch (this.theTok) { case 134217759: ptWithin = i + 2; break; case 268435860: if (topLevel) ptEq = i; break; case 268435472: nParen++; topLevel = false; break; case 268435473: if (--nParen <= 0 && nSquare == 0) { if (isOneExpressionOnly) { this.iToken++; break out; }topLevel = true; }break; case 268435520: nSquare++; topLevel = false; break; case 268435521: if (--nSquare == 0 && nParen == 0) { if (isOneExpressionOnly) { this.iToken++; break out; }topLevel = true; }break; } } else { var name = this.paramAsStr (i).toLowerCase (); var haveParens = (this.tokAt (i + 1) == 268435472); if (!haveParens) if (this.chk) { v = name; } else if (localVars == null || (v = JU.PT.getMapValueNoCase (localVars, name)) == null && allContext) { if (name.startsWith ("_")) { v = (name.equals ("_") ? this.vwr.ms.getAuxiliaryInfo (null) : name.equals ("_m") ? this.vwr.getCurrentModelAuxInfo () : null); }if (v == null) v = this.getContextVariableAsVariable (name, false); else if (ptEq == 0) this.invArg (); }if (v == null) { if (JS.T.tokAttr (this.theTok, 1073741824) && this.vwr.isFunction (name)) { if (!rpn.addOp (JS.SV.newV (134320141, this.theToken.value))) this.invArg (); if (!haveParens) { rpn.addOp (JS.T.tokenLeftParen); rpn.addOp (JS.T.tokenRightParen); }} else { $var = this.vwr.g.getAndSetNewVariable (name, false); switch ($var.tok) { case 2: case 3: if (this.noCopy (i, -1) || this.noCopy (i, 1)) break; rpn.addXCopy ($var); continue; default: } rpn.addX ($var); }}}} if (v != null) { if (Clazz.instanceOf (v, JU.BS)) rpn.addXBs (v); else rpn.addXObj (v); }} var result = rpn.getResult (); if (result == null) { if (!this.chk) rpn.dumpStacks ("null result"); this.error (13); }if (result.tok == 135198) { if (isSpecialAssignment && ptEq == 0) { var rv = new JU.Lst (); rv.addLast ( new JS.SV ()); return rv; }return result.value; }if (this.chk) { if (returnBoolean) return Boolean.TRUE; if (returnString) return ""; } else { if (returnBoolean) return Boolean.$valueOf (result.asBoolean ()); if (returnString) { if (result.tok == 4) result.intValue = 2147483647; return result.asString (); }}switch (result.tok) { case 1073742335: case 1073742334: return Boolean.$valueOf (result.intValue == 1); case 2: return Integer.$valueOf (result.intValue); case 10: case 3: case 4: case 8: default: return result.value; } }, "~N,~N,~S,~B,~B,~N,~B,java.util.Map,~S,~B"); Clazz.defineMethod (c$, "atomExpressionAt", function (index) { if (!this.checkToken (index)) { this.iToken = index; this.bad (); }return this.atomExpression (this.st, index, 0, true, false, null, true); }, "~N"); Clazz.defineMethod (c$, "atomExpression", function (code, pcStart, pcStop, allowRefresh, allowUnderflow, ret, andNotDeleted) { this.isBondSet = false; if (code !== this.st) { this.tempStatement = this.st; this.st = code; }var rpn = new JS.ScriptMathProcessor (this, false, false, false, ret == null, allowUnderflow, null); var val; var refreshed = false; this.iToken = 1000; var ignoreSubset = (pcStart < 0); var isInMath = false; var bs; var nExpress = 0; var ac = this.vwr.ms.ac; var ptWithin = -10; if (ignoreSubset) pcStart = -pcStart; ignoreSubset = new Boolean (ignoreSubset | this.chk).valueOf (); if (pcStop == 0 && code.length > pcStart) pcStop = pcStart + 1; expression_loop : for (var pc = pcStart; pc < pcStop; ++pc) { this.iToken = pc; var instruction = code[pc]; if (instruction == null) break; var value = instruction.value; switch (instruction.tok) { case 1073742325: pcStart = pc; pcStop = code.length; nExpress++; break; case 1073742326: nExpress--; if (nExpress > 0) continue; break expression_loop; case 1073742332: if (this.isPoint3f (pc)) { var pt = this.getPoint3f (pc, true, true); if (pt != null) { rpn.addXPt (pt); pc = this.iToken; break; }}break; case 1073742338: if (pc > 0 && code[pc - 1].tok == 1073742332) rpn.addXBs ( new JU.BS ()); break; case 268435520: isInMath = true; rpn.addOp (instruction); break; case 268435521: isInMath = false; rpn.addOp (instruction); break; case 12290: rpn.addXBs (this.getAtomBitSet (value)); break; case 7: bs = JS.SV.getBitSet (instruction, false); if (bs != null) { rpn.addXBs (bs); break; }case 6: rpn.addXBs (this.vwr.ms.getAtoms (1086324744, (instruction).asString ())); break; case 134219265: rpn.addX (JS.SV.newT (instruction)); rpn.addX (JS.SV.newV (9, this.hklParameter (pc + 2))); pc = this.iToken; break; case 134217750: rpn.addX (JS.SV.newT (instruction)); rpn.addX (JS.SV.newV (9, this.planeParameter (pc + 2))); pc = this.iToken; break; case 1073742329: rpn.addX (JS.SV.newT (instruction)); rpn.addXPt (this.getPoint3f (pc + 2, true, true)); pc = this.iToken; break; case 4: var s = value; if (s.indexOf ("({") == 0) { bs = JU.BS.unescape (s); if (bs != null) { rpn.addXBs (bs); break; }} else if (s.indexOf ("|") >= 0 && ptWithin != pc - 4) { rpn.addXBs (this.vwr.ms.getAtoms (1086324744, s)); break; }rpn.addX (JS.SV.newT (instruction)); if (s.equals ("hkl")) { rpn.addX (JS.SV.newV (9, this.hklParameter (pc + 2))); pc = this.iToken; }break; case 134217759: ptWithin = pc; case 134218757: case 134218756: case 1237320707: case 134353926: case 134217736: case 268435504: case 1275203608: rpn.addOp (instruction); break; case 1073742327: rpn.addXBs (this.vwr.getAllAtoms ()); break; case 1073742333: rpn.addXBs ( new JU.BS ()); break; case 1073742335: case 1073742334: rpn.addX (JS.SV.newT (instruction)); break; case 1113589787: rpn.addXBs (JU.BSUtil.copy (this.vwr.bsA ())); break; case 2097194: rpn.addXBs (JU.BSUtil.copy (this.vwr.slm.getHiddenSet ())); break; case 12293: rpn.addXBs (JU.BSUtil.copy (this.vwr.getMotionFixedAtoms ())); break; case 2097192: rpn.addXBs (JU.BSUtil.copyInvert (this.vwr.slm.getHiddenSet (), ac)); break; case 2097200: rpn.addXBs (this.vwr.getBaseModelBitSet ()); break; case 2097198: rpn.addXBs (this.chk ? new JU.BS () : JU.BSUtil.copy (this.vwr.ms.getVisibleSet (!refreshed))); refreshed = true; break; case 2097190: if (!this.chk && allowRefresh) (this).refresh (false); rpn.addXBs (this.chk ? new JU.BS () : this.vwr.ms.getClickableSet (!allowRefresh)); allowRefresh = false; break; case 1073742356: if (this.vwr.ms.mc != 1 || this.vwr.ms.haveBioModels) { var atomID = instruction.intValue; if (atomID > 0) { bs = this.compareInt (1094713346, 268435860, atomID); if (atomID == 2) bs.or (this.compareInt (1086326789, 268435860, 20)); rpn.addXBs (bs); } else { rpn.addXBs (this.getAtomBits (instruction.tok, value)); }} else { rpn.addXBs ((this).lookupIdentifierValue ("_" + value)); }break; case 2097155: case 2097188: case 2097156: case 1612709894: case 1073742331: case 2097166: case 2097165: case 2097168: case 2097170: case 2097172: case 2097174: case 1073742360: case 1073742355: case 2097196: case 1088421903: case 1814695966: rpn.addXBs (this.getAtomBits (instruction.tok, value)); break; case 1073742358: case 1073742359: var iModel = instruction.intValue; if (iModel == 2147483647 && Clazz.instanceOf (value, Integer)) { iModel = (value).intValue (); if (!this.vwr.haveFileSet ()) { rpn.addXBs (this.getAtomBits (1073742358, Integer.$valueOf (iModel))); break; }if (iModel <= 2147) iModel = iModel * 1000000; }rpn.addXBs (this.bitSetForModelFileNumber (iModel)); break; case 1073742361: case 1073742357: rpn.addXBs (this.getAtomBits (instruction.tok, Integer.$valueOf (instruction.intValue))); break; case 1073742362: if (isInMath) rpn.addXNum (instruction); else rpn.addXBs (this.getAtomBits (1073742362, Integer.$valueOf (JS.ScriptExpr.getSeqCode (instruction)))); break; case 1073742363: if (isInMath) { rpn.addXNum (instruction); rpn.addOp (JS.T.tokenMinus); rpn.addXNum (code[++pc]); break; }var chainID = (pc + 3 < code.length && code[pc + 2].tok == 268435584 && code[pc + 3].tok == 1073742357 ? code[pc + 3].intValue : -1); rpn.addXBs (this.getAtomBits (1073742363, Clazz.newIntArray (-1, [JS.ScriptExpr.getSeqCode (instruction), JS.ScriptExpr.getSeqCode (code[++pc]), chainID]))); if (chainID != -1) pc += 2; break; case 1094713350: case 1094713349: var pt = value; rpn.addXBs (this.getAtomBits (instruction.tok, Clazz.newIntArray (-1, [Clazz.doubleToInt (Math.floor (pt.x * 1000)), Clazz.doubleToInt (Math.floor (pt.y * 1000)), Clazz.doubleToInt (Math.floor (pt.z * 1000))]))); break; case 2097182: rpn.addXBs (this.vwr.am.cmi < 0 ? this.vwr.getFrameAtoms () : this.vwr.getModelUndeletedAtomsBitSet (this.vwr.am.cmi)); break; case 1612709900: case 2097154: case 1114249217: case 1612709912: case 136314895: case 2097159: case 2097160: case 2097162: case 2097178: case 2097180: rpn.addXBs ((this).lookupIdentifierValue (value)); break; case 268435859: case 268435858: case 268435857: case 268435856: case 268435860: case 268435861: case 268435862: var tok = instruction.tok; var tokWhat = instruction.intValue; if ((tokWhat == 1094717448) && tok != 268435860) this.invArg (); var data = null; if (tokWhat == 1715472409) { if (pc + 2 == code.length) this.invArg (); if (!this.chk) data = this.vwr.getDataObj (code[++pc].value, null, 1); }if (++pc == code.length) this.invArg (); rpn.addXBs (this.chk ? new JU.BS () : this.getComparison (code[pc], tokWhat, tok, value, data)); break; case 3: case 2: rpn.addXNum (instruction); break; case 10: var bs1 = JU.BSUtil.copy (value); rpn.addXBs (bs1); break; case 8: rpn.addXPt (value); break; default: if (JS.T.tokAttr (instruction.tok, 268435456)) { if (!rpn.addOp (instruction)) this.invArg (); break; }if (!(Clazz.instanceOf (value, String))) { rpn.addXObj (value); break; }val = this.getParameter (value, 0, true); if (isInMath) { rpn.addXObj (val); break; }if (Clazz.instanceOf (val, String) || Clazz.instanceOf (val, JU.Lst)) val = this.getStringObjectAsVariable (val); if (Clazz.instanceOf (val, String)) val = (this).lookupIdentifierValue (value); rpn.addXObj (val); break; } } var expressionResult = rpn.getResult (); if (expressionResult == null) { if (allowUnderflow) return null; if (!this.chk) rpn.dumpStacks ("after getResult"); this.error (13); }var exp = expressionResult.value; if (Clazz.instanceOf (exp, String) && (ret == null || (exp).startsWith ("({"))) { exp = (this.chk ? new JU.BS () : this.getAtomBitSet (exp)); }if (ret != null && !(Clazz.instanceOf (exp, JU.BS))) { ret[0] = exp; return null; }bs = (Clazz.instanceOf (exp, JU.BS) ? exp : new JU.BS ()); this.isBondSet = (Clazz.instanceOf (exp, JM.BondSet)); if (!this.isBondSet && (bs = this.vwr.slm.excludeAtoms (bs, ignoreSubset)).length () > this.vwr.ms.ac) bs.clearAll (); if (this.tempStatement != null) { this.st = this.tempStatement; this.tempStatement = null; }return bs; }, "~A,~N,~N,~B,~B,~A,~B"); Clazz.defineMethod (c$, "getComparison", function (t, tokWhat, tokOp, strOp, data) { var tokValue = t.tok; if (tokValue == 7) { var bs = new JU.BS (); if (tokOp != 268435860) bs.setBits (0, this.vwr.ms.ac); var lst = (t).getList (); for (var i = lst.size (); --i >= 0; ) { var res = this.getComparison (lst.get (i), tokWhat, tokOp, strOp, data); if (tokOp == 268435860) bs.or (res); else bs.and (res); } return bs; }var comparisonInt = t.intValue; var comparisonFloat = NaN; var isModel = (tokWhat == 1094717454); var isIntProperty = JS.T.tokAttr (tokWhat, 1094713344); var isFloatProperty = (JS.T.tokAttr (tokWhat, 1111490560) || (tokWhat & 1136656384) == 1077936128); var isIntOrFloat = isIntProperty && isFloatProperty; var isStringProperty = !isIntProperty && JS.T.tokAttr (tokWhat, 1086324736); if (tokWhat == 1086326789) isIntProperty = !(isStringProperty = false); var val = t.value; if (JS.T.tokAttr (tokValue, 1073741824)) { if ("_modelNumber".equalsIgnoreCase (val)) { var modelIndex = this.vwr.am.cmi; val = Integer.$valueOf (comparisonInt = (modelIndex < 0 ? 0 : this.vwr.getModelFileNumber (modelIndex))); } else { var v = this.getParameter (val, 1073742190, false); if (v != null) { if (v.tok == 7) return this.getComparison (v, tokWhat, tokOp, strOp, data); comparisonInt = v.intValue; val = (isStringProperty ? JS.SV.sValue (v) : JS.SV.nValue (v)); }}}if (Clazz.instanceOf (val, JU.P3)) { if (tokWhat == 1765808134) { comparisonInt = JU.CU.colorPtToFFRGB (val); tokValue = 2; isIntProperty = true; }} else if (Clazz.instanceOf (val, String)) { if (tokWhat == 1765808134) { comparisonInt = JU.CU.getArgbFromString (val); if (comparisonInt == 0 && JS.T.tokAttr (tokValue, 1073741824)) { val = this.getVarParameter (val, true); if ((val).startsWith ("{")) { val = JU.Escape.uP (val); if (Clazz.instanceOf (val, JU.P3)) comparisonInt = JU.CU.colorPtToFFRGB (val); else comparisonInt = 0; } else { comparisonInt = JU.CU.getArgbFromString (val); }}tokValue = 2; isIntProperty = true; } else if (!isStringProperty) { if (tokWhat == 1639976963 || tokWhat == 1237320707 || tokWhat == 1086326789) isStringProperty = !(isIntProperty = (comparisonInt != 2147483647)); else val = JS.SV.nValue (t); if (Clazz.instanceOf (val, Integer)) comparisonFloat = comparisonInt = (val).intValue (); else if (Clazz.instanceOf (val, Float) && isModel) comparisonInt = JM.ModelSet.modelFileNumberFromFloat ((val).floatValue ()); }}if (isStringProperty && !(Clazz.instanceOf (val, String))) { val = "" + val; }if (Clazz.instanceOf (val, Integer) || tokValue == 2) { if (isModel) { if (comparisonInt >= 1000000) tokWhat = -1094717454; } else if (isIntOrFloat) { isFloatProperty = false; } else if (isFloatProperty) { comparisonFloat = comparisonInt; }} else if (Clazz.instanceOf (val, Float)) { if (isModel) { tokWhat = -1094717454; } else { comparisonFloat = (val).floatValue (); if (isIntOrFloat) { isIntProperty = false; } else if (isIntProperty) { comparisonInt = Clazz.floatToInt (comparisonFloat); }}} else if (!isStringProperty) { this.iToken++; this.invArg (); }if (isModel && comparisonInt >= 1000000 && comparisonInt % 1000000 == 0) { comparisonInt /= 1000000; tokWhat = 1228935687; isModel = false; }if (tokWhat == -1094717454 && tokOp == 268435860) { return this.bitSetForModelFileNumber (comparisonInt); }if (strOp != null && strOp.indexOf ("-") >= 0) { if (isIntProperty) comparisonInt = -comparisonInt; else if (!Float.isNaN (comparisonFloat)) comparisonFloat = -comparisonFloat; }return (isIntProperty ? this.compareInt (tokWhat, tokOp, comparisonInt) : isStringProperty ? this.compareString (tokWhat, tokOp, val) : this.compareFloatData (tokWhat, data, tokOp, comparisonFloat)); }, "JS.T,~N,~N,~S,~A"); Clazz.defineMethod (c$, "noCopy", function (i, dir) { switch (this.tokAt (i + dir)) { case 268435650: case 268435649: return ((this.st[i + dir].intValue == -1) == (dir == -1)); default: return false; } }, "~N,~N"); Clazz.defineMethod (c$, "getAssocArray", function (i) { var ht = new java.util.Hashtable (); var closer = (this.tokAt (i) == 1073742332 ? 1073742338 : 268435521); for (i = i + 1; i < this.slen; i++) { var tok = this.tokAt (i); if (tok == closer) break; var key = null; if (Clazz.instanceOf (this.st[i], JS.SV)) key = (this.st[i]).myName; if (key == null) key = JS.SV.sValue (this.st[i]); i++; if (this.tokAt (i++) != 268435490) this.invArg (); var v = this.parameterExpression (i, 0, null, false, true, -1, false, null, null, false); if (v.size () == 0) this.invArg (); ht.put (key, v.get (0)); i = this.iToken; if (this.tokAt (i) != 268435504) break; } this.iToken = i; if (this.tokAt (i) != closer) this.invArg (); return ht; }, "~N"); Clazz.defineMethod (c$, "listBS", function (bs) { var l = new JU.Lst (); l.addLast (JS.SV.newV (10, bs)); return l; }, "JU.BS"); Clazz.defineMethod (c$, "compareFloatData", function (tokWhat, data, tokOperator, comparisonFloat) { var bs = new JU.BS (); var ac = this.vwr.ms.ac; var modelSet = this.vwr.ms; var atoms = modelSet.at; var propertyFloat = 0; this.vwr.autoCalculate (tokWhat, null); var isProp = (tokWhat == 1715472409); if (!isProp && this.ptTemp == null) this.ptTemp = new JU.P3 (); for (var i = ac; --i >= 0; ) { var match = false; var atom = atoms[i]; if (isProp) { if (data == null || data.length <= i) continue; propertyFloat = data[i]; } else { propertyFloat = atom.atomPropertyFloat (this.vwr, tokWhat, this.ptTemp); }match = this.compareFloat (tokOperator, propertyFloat, comparisonFloat); if (match) bs.set (i); } return bs; }, "~N,~A,~N,~N"); Clazz.defineMethod (c$, "compareFloat", function (tokOperator, a, b) { switch (tokOperator) { case 268435859: return a < b; case 268435858: return a <= b; case 268435857: return a >= b; case 268435856: return a > b; case 268435860: return a == b; case 268435861: return a != b && !Float.isNaN (a); } return false; }, "~N,~N,~N"); Clazz.defineMethod (c$, "compareString", function (tokWhat, tokOperator, comparisonString) { var bs = new JU.BS (); var atoms = this.vwr.ms.at; var ac = this.vwr.ms.ac; var isCaseSensitive = (tokOperator == 268435862 || tokWhat == 1086326788 && this.vwr.getBoolean (603979822)); if (!isCaseSensitive) comparisonString = comparisonString.toLowerCase (); for (var i = ac; --i >= 0; ) { var propertyString = atoms[i].atomPropertyString (this.vwr, tokWhat); if (!isCaseSensitive) propertyString = propertyString.toLowerCase (); if (this.compareStringValues (tokOperator, propertyString, comparisonString)) bs.set (i); } return bs; }, "~N,~N,~S"); Clazz.defineMethod (c$, "compareStringValues", function (tokOperator, propertyValue, comparisonValue) { switch (tokOperator) { case 268435860: case 268435861: return (JU.PT.isMatch (propertyValue, comparisonValue, true, true) == (tokOperator == 268435860)); case 268435862: return JU.PT.isLike (propertyValue, comparisonValue); default: this.invArg (); } return false; }, "~N,~S,~S"); Clazz.defineMethod (c$, "compareInt", function (tokWhat, tokOperator, ival) { var ia = 2147483647; var propertyBitSet = null; var bitsetComparator = tokOperator; var bitsetBaseValue = ival; var modelSet = this.vwr.ms; var atoms = modelSet.at; var ac = modelSet.ac; var imax = -1; var imin = 0; var iModel = -1; var cellRange = null; var nOps = 0; var bs; switch (tokWhat) { case 1296041986: switch (bitsetComparator) { case 268435857: case 268435856: imax = 2147483647; break; } break; case 1094713347: try { switch (tokOperator) { case 268435859: return JU.BSUtil.newBitSet2 (0, ival); case 268435858: return JU.BSUtil.newBitSet2 (0, ival + 1); case 268435857: return JU.BSUtil.newBitSet2 (ival, ac); case 268435856: return JU.BSUtil.newBitSet2 (ival + 1, ac); case 268435860: return (ival < ac ? JU.BSUtil.newBitSet2 (ival, ival + 1) : new JU.BS ()); case 268435861: default: bs = JU.BSUtil.setAll (ac); if (ival >= 0) bs.clear (ival); return bs; } } catch (e) { if (Clazz.exceptionOf (e, Exception)) { return new JU.BS (); } else { throw e; } } } bs = JU.BS.newN (ac); for (var i = 0; i < ac; ++i) { var match = false; var atom = atoms[i]; switch (tokWhat) { default: ia = atom.atomPropertyInt (tokWhat); break; case 1094713368: case 1094717448: return JU.BSUtil.copy (this.vwr.ms.getConformation (-1, ival - 1, false, null)); case 1296041986: propertyBitSet = atom.atomSymmetry; if (propertyBitSet == null) continue; if (atom.mi != iModel) { iModel = atom.mi; cellRange = modelSet.getModelCellRange (iModel); nOps = modelSet.getModelSymmetryCount (iModel); }if (bitsetBaseValue >= 200) { if (cellRange == null) continue; ival = bitsetBaseValue % 1000; var symop = Clazz.doubleToInt (bitsetBaseValue / 1000) - 1; if (symop < 0) { match = true; } else if (nOps == 0 || symop >= 0 && !(match = propertyBitSet.get (symop))) { continue; }bitsetComparator = 1073742333; if (symop < 0) ia = atom.getCellTranslation (ival, cellRange, nOps); else ia = atom.getSymmetryTranslation (symop, cellRange, nOps); } else if (nOps > 0) { if (ival > nOps) { if (bitsetComparator != 268435859 && bitsetComparator != 268435858) continue; }if (bitsetComparator == 268435861) { if (ival > 0 && ival <= nOps && !propertyBitSet.get (ival)) { bs.set (i); }continue; }var bs1 = JU.BSUtil.copy (propertyBitSet); bs1.clearBits (nOps, bs1.length ()); propertyBitSet = bs1; }switch (bitsetComparator) { case 268435859: imax = ival - 1; break; case 268435858: imax = ival; break; case 268435857: imin = ival - 1; break; case 268435856: imin = ival; break; case 268435860: imax = ival; imin = ival - 1; break; case 268435861: match = !propertyBitSet.get (ival); break; } if (imin < 0) imin = 0; if (imin < imax) { var pt = propertyBitSet.nextSetBit (imin); if (pt >= 0 && pt < imax) match = true; }if (!match || ia == 2147483647) tokOperator = 1073742333; } switch (tokOperator) { case 1073742333: break; case 268435859: match = (ia < ival); break; case 268435858: match = (ia <= ival); break; case 268435857: match = (ia >= ival); break; case 268435856: match = (ia > ival); break; case 268435860: match = (ia == ival); break; case 268435861: match = (ia != ival); break; } if (match) bs.set (i); } return bs; }, "~N,~N,~N"); Clazz.defineMethod (c$, "getBitsetPropertySelector", function (i, xTok) { var tok = this.getToken (i).tok; switch (tok) { case 32: case 64: case 96: case 192: case 128: case 160: case 1715472409: break; default: if (JS.T.tokAttrOr (tok, 1077936128, 1140850688) || xTok == 6) break; if (tok != 805306401 && !JS.T.tokAttr (tok, 1073741824)) break; var name = this.paramAsStr (i); if (this.vwr.isFunction (name.toLowerCase ())) { tok = 134320141; break; }} return JS.SV.newSV (268435665, tok, this.paramAsStr (i)); }, "~N,~N"); Clazz.defineMethod (c$, "getBitsetProperty", function (bs, pts, tok, ptRef, planeRef, tokenValue, opValue, useAtomMap, index, asVectorIfAll) { var haveIndex = (index != 2147483647); var isAtoms = haveIndex || !(Clazz.instanceOf (tokenValue, JM.BondSet)); var minmaxtype = tok & 480; var selectedFloat = (minmaxtype == 224); var ac = this.vwr.ms.ac; var fout = (minmaxtype == 256 ? Clazz.newFloatArray (ac, 0) : null); var isExplicitlyAll = (minmaxtype == 480 || selectedFloat); tok &= -481; var info = null; if (tok == 0) tok = (isAtoms ? 1140850689 : 1677721602); var isPt = false; var isHash = false; var isInt = false; var isString = false; switch (tok) { case 1275068449: return (this.vwr.getAuxiliaryInfoForAtoms (bs)).get ("models"); case 1145047050: case 1145047055: case 1145047051: case 1145047053: case 1145045008: case 1145045006: case 1765808134: case 1145047052: isPt = true; break; case 1275203608: isHash = true; info = Clazz.newArray (-1, [null, null]); break; case 134320141: case 1275069443: break; default: isInt = JS.T.tokAttr (tok, 1094713344) && !JS.T.tokAttr (tok, 1111490560); isString = !isInt && JS.T.tokAttr (tok, 1086324736); } var pt = (isPt || !isAtoms ? new JU.P3 () : null); if (isExplicitlyAll || isString && !haveIndex && minmaxtype != 256 && minmaxtype != 32) minmaxtype = 1073742327; var vout = (minmaxtype == 1073742327 ? new JU.Lst () : null); var bsNew = null; var userFunction = null; var params = null; var bsAtom = null; var tokenAtom = null; var ptT = null; var data = null; switch (tok) { case 1140850689: case 1677721602: if (this.chk) return bs; bsNew = (tok == 1140850689 ? (isAtoms ? bs : this.vwr.ms.getAtoms (1677721602, bs)) : (isAtoms ? JM.BondSet.newBS (this.vwr.getBondsForSelectedAtoms (bs), null) : bs)); var i; switch (minmaxtype) { case 32: i = bsNew.nextSetBit (0); break; case 64: i = bsNew.length () - 1; break; case 192: case 128: case 160: return Float.$valueOf (NaN); default: return bsNew; } bsNew.clearAll (); if (i >= 0) bsNew.set (i); return bsNew; case 1086324745: switch (minmaxtype) { case 0: case 1073742327: return this.getCmdExt ().getBitsetIdent (bs, null, tokenValue, useAtomMap, index, isExplicitlyAll); } return ""; case 134320141: userFunction = (opValue)[0]; params = (opValue)[1]; bsAtom = JU.BS.newN (ac); tokenAtom = JS.SV.newV (10, bsAtom); break; case 1111490587: for (var j = fout.length; --j >= 0; ) fout[j] = NaN; case 1111490574: case 1111490575: this.vwr.autoCalculate (tok, tokenValue); break; case 1275069443: if (ptRef == null && planeRef == null) return new JU.P3 (); break; case 1765808134: ptT = new JU.P3 (); break; case 1715472409: data = this.vwr.getDataObj (opValue, null, 1); break; } var n = 0; var ivMinMax = 0; var fvMinMax = 0; var sum = 0; var sum2 = 0; switch (minmaxtype) { case 32: ivMinMax = 2147483647; fvMinMax = 3.4028235E38; break; case 64: ivMinMax = -2147483648; fvMinMax = -3.4028235E38; break; } var modelSet = this.vwr.ms; var mode = (isHash ? 4 : isPt ? 3 : isString ? 2 : isInt ? 1 : 0); if (isAtoms) { var haveBitSet = (bs != null); var i0; var i1; if (pts != null) { i0 = 0; i1 = pts.size (); } else if (haveIndex) { i0 = index; i1 = index + 1; } else if (haveBitSet) { i0 = bs.nextSetBit (0); i1 = Math.min (ac, bs.length ()); } else { i0 = 0; i1 = ac; }if (this.chk) i1 = 0; for (var i = i0; i >= 0 && i < i1; i = (haveBitSet ? bs.nextSetBit (i + 1) : i + 1)) { n++; var atom = (pts == null ? modelSet.at[i] : null); switch (mode) { case 0: var fv = 3.4028235E38; switch (tok) { case 134320141: bsAtom.set (i); fv = JS.SV.fValue ((this).getUserFunctionResult (userFunction, params, tokenAtom)); bsAtom.clear (i); break; case 1715472409: fv = (data == null ? 0 : data[i]); break; case 1275069443: if (planeRef != null) fv = JU.Measure.distanceToPlane (planeRef, atom); else fv = (pts != null ? JS.SV.ptValue (pts.get (i)).distance (ptRef) : atom !== ptRef || minmaxtype != 32 ? atom.distance (ptRef) : NaN); break; default: fv = atom.atomPropertyFloat (this.vwr, tok, this.ptTemp); } if (fv == 3.4028235E38 || Float.isNaN (fv) && minmaxtype != 1073742327) { n--; continue; }switch (minmaxtype) { case 32: if (fv < fvMinMax) fvMinMax = fv; break; case 64: if (fv > fvMinMax) fvMinMax = fv; break; case 256: fout[i] = fv; break; case 1073742327: vout.addLast (Float.$valueOf (fv)); break; case 160: case 192: sum2 += (fv) * fv; case 128: default: sum += fv; } break; case 1: var iv = 0; switch (tok) { case 1094717448: case 1094713349: this.errorStr (45, JS.T.nameOf (tok)); break; default: iv = atom.atomPropertyInt (tok); } switch (minmaxtype) { case 32: if (iv < ivMinMax) ivMinMax = iv; break; case 64: if (iv > ivMinMax) ivMinMax = iv; break; case 256: fout[i] = iv; break; case 1073742327: vout.addLast (Integer.$valueOf (iv)); break; case 160: case 192: sum2 += (iv) * iv; case 128: default: sum += iv; } break; case 2: var s = atom.atomPropertyString (this.vwr, tok); switch (minmaxtype) { case 256: fout[i] = JU.PT.parseFloat (s); break; default: if (vout == null) return s; vout.addLast (s); } break; case 3: var t = atom.atomPropertyTuple (this.vwr, tok, this.ptTemp); switch (minmaxtype) { case 256: fout[i] = (pt == null ? -1 : t == null ? 0 : t.length ()); break; case 1073742327: vout.addLast (t == null ? Integer.$valueOf (-1) : JU.P3.newP (t)); break; default: if (t == null) n--; else pt.add (t); } break; case 4: switch (tok) { case 1275203608: info[0] = Integer.$valueOf (i); info[1] = ""; this.vwr.shm.getShapePropertyData (21, "info", info); if (info[1] != null) { if (vout == null) return info[1]; vout.addLast (info[1]); }break; } } if (haveIndex) break; } } else { var isAll = (bs == null); var i0 = (isAll ? 0 : bs.nextSetBit (0)); var i1 = this.vwr.ms.bondCount; for (var i = i0; i >= 0 && i < i1; i = (isAll ? i + 1 : bs.nextSetBit (i + 1))) { n++; var bond = modelSet.bo[i]; switch (tok) { case 1140850691: var fv = bond.atom1.distance (bond.atom2); switch (minmaxtype) { case 32: if (fv < fvMinMax) fvMinMax = fv; break; case 64: if (fv > fvMinMax) fvMinMax = fv; break; case 1073742327: vout.addLast (Float.$valueOf (fv)); break; case 160: case 192: sum2 += fv * fv; case 128: default: sum += fv; } break; case 1145047050: switch (minmaxtype) { case 1073742327: pt.ave (bond.atom1, bond.atom2); vout.addLast (JU.P3.newP (pt)); break; default: pt.add (bond.atom1); pt.add (bond.atom2); n++; } break; case 1765808134: JU.CU.colorPtFromInt (this.vwr.gdata.getColorArgbOrGray (bond.colix), ptT); switch (minmaxtype) { case 1073742327: vout.addLast (JU.P3.newP (ptT)); break; default: pt.add (ptT); } break; default: this.errorStr (46, JS.T.nameOf (tok)); } } }if (minmaxtype == 256) return fout; if (minmaxtype == 1073742327) { if (asVectorIfAll) return vout; var len = vout.size (); if ((isString || isHash) && !isExplicitlyAll && len == 1) return vout.get (0); if (selectedFloat) { fout = Clazz.newFloatArray (len, 0); for (var i = len; --i >= 0; ) { var v = vout.get (i); switch (mode) { case 0: fout[i] = (v).floatValue (); break; case 1: fout[i] = (v).floatValue (); break; case 2: fout[i] = JU.PT.parseFloat (v); break; case 3: fout[i] = (v == null ? -1 : (v).length ()); break; } } return fout; }if (tok == 1086324744) { var sb = new JU.SB (); for (var i = 0; i < len; i++) sb.append (vout.get (i)); return sb.toString (); }var sout = new Array (len); for (var i = len; --i >= 0; ) { var v = vout.get (i); if (Clazz.instanceOf (v, JU.P3)) sout[i] = JU.Escape.eP (v); else sout[i] = "" + vout.get (i); } return sout; }if (isPt) return (n == 0 ? Integer.$valueOf (-1) : JU.P3.new3 (pt.x / n, pt.y / n, pt.z / n)); if (isHash) return new java.util.Hashtable (); if (n == 0 || n == 1 && minmaxtype == 192) return Float.$valueOf (NaN); if (isInt) { switch (minmaxtype) { case 32: case 64: return Integer.$valueOf (ivMinMax); case 160: case 192: break; case 128: return Integer.$valueOf (Clazz.doubleToInt (sum)); default: if (sum / n == Clazz.doubleToInt (sum / n)) return Integer.$valueOf (Clazz.doubleToInt (sum / n)); return Float.$valueOf ((sum / n)); } }switch (minmaxtype) { case 32: case 64: sum = fvMinMax; break; case 128: break; case 160: sum = sum2; break; case 192: sum = Math.sqrt ((sum2 - sum * sum / n) / (n - 1)); break; default: sum /= n; break; } return Float.$valueOf (sum); }, "JU.BS,JU.Lst,~N,JU.P3,JU.P4,~O,~O,~B,~N,~B"); Clazz.defineMethod (c$, "bitSetForModelFileNumber", function (m) { var bs = JU.BS.newN (this.vwr.ms.ac); if (this.chk) return bs; var modelCount = this.vwr.ms.mc; var haveFileSet = this.vwr.haveFileSet (); if (m < 1000000 && haveFileSet) m *= 1000000; var pt = m % 1000000; if (pt == 0) { var model1 = this.vwr.ms.getModelNumberIndex (m + 1, false, false); if (model1 < 0) return bs; var model2 = (m == 0 ? modelCount : this.vwr.ms.getModelNumberIndex (m + 1000001, false, false)); if (model1 < 0) model1 = 0; if (model2 < 0) model2 = modelCount; if (this.vwr.ms.isTrajectory (model1)) model2 = model1 + 1; for (var j = model1; j < model2; j++) bs.or (this.vwr.getModelUndeletedAtomsBitSet (j)); } else { var modelIndex = this.vwr.ms.getModelNumberIndex (m, false, true); if (modelIndex >= 0) bs.or (this.vwr.getModelUndeletedAtomsBitSet (modelIndex)); }return bs; }, "~N"); Clazz.defineMethod (c$, "getStringObjectAsVariable", function (obj) { if (obj == null) return obj; if (Clazz.instanceOf (obj, String)) { var s = obj; if (s.length == 0) return s; return JS.SV.unescapePointOrBitsetAsVariable (s); }var lst = obj; if (lst.size () == 0) return ""; if (lst.get (0).asString ().contains ("|")) return this.vwr.ms.getAtoms (1086324744, JS.SV.newV (7, lst).asString ()); var bs = JS.SV.unEscapeBitSetArray (lst, true); return (bs == null ? "" : bs); }, "~O"); Clazz.defineMethod (c$, "getAtomBits", function (tokType, specInfo) { return (this.chk ? new JU.BS () : this.vwr.ms.getAtoms (tokType, specInfo)); }, "~N,~O"); c$.getSeqCode = Clazz.defineMethod (c$, "getSeqCode", function (instruction) { return (instruction.intValue == 2147483647 ? (instruction.value).intValue () : JM.Group.getSeqcodeFor (instruction.intValue, ' ')); }, "JS.T"); Clazz.defineMethod (c$, "setVariable", function (pt, ptMax, key, isSet) { var bs = null; var propertyName = ""; var settingData = key.startsWith ("property_"); var isThrown = key.equals ("thrown_value"); var isExpression = (this.tokAt (1) == 1073742325 || this.tokAt (1) == 268435472); var t = (settingData ? null : key.length == 0 ? new JS.SV () : this.getContextVariableAsVariable (key, false)); if (isSet && !isExpression) { switch (this.tokAt (2)) { default: pt = 2; break; case 268435860: pt = 3; break; case 1073742195: case 268435520: if (this.st[0].intValue == 61) { pt = 2; break; }case 1073742336: case 1073742337: key = null; break; } }var nv = 0; var v = this.parameterExpression (pt, ptMax, key, true, true, -1, false, null, null, isSet && pt == 1); nv = v.size (); if (nv == 0) this.invArg (); if (this.chk || v.get (0).tok == 0) return null; var tv = JS.SV.selectItemVar (JS.SV.newS ("").setv (v.get (nv - 1))); if (nv > 1) { var sel = (nv > 2 ? v.get (1) : null); t = v.get (0); var selectOne = false; switch (t.tok) { case 6: case 14: if (nv > 3) this.invArg (); t.mapPut (sel.asString (), tv); break; case 7: if (nv > 2 + (sel == null ? 0 : 1)) this.invArg (); if (sel == null) { sel = t; } else { t = JS.SV.selectItemVar (t); }selectOne = true; break; case 4: if (sel.tok != 2) { t.value = JU.PT.rep (t.asString (), sel.asString (), tv.asString ()); t.intValue = 2147483647; break; }case 11: case 12: if (t.intValue == 2147483647) selectOne = true; else t.setSelectedValue (t.intValue, sel.asInt (), tv); break; case 8: var p = (t.value = JU.P3.newP (t.value)); var f = tv.asFloat (); switch (JS.T.getTokFromName (sel.asString ())) { case 1111492629: p.x = f; break; case 1111492630: p.y = f; break; case 1111492631: p.z = f; break; } break; case 10: bs = JS.SV.getBitSet (t, true); var nAtoms = this.vwr.ms.ac; var nbs = bs.cardinality (); propertyName = sel.asString (); var tok = JS.T.getTokFromName (propertyName); switch (tok) { case 0: if (propertyName.startsWith ("property_")) { var obj = (tv.tok == 7 ? JS.SV.flistValue (tv, tv.getList ().size () == nbs ? nbs : nAtoms) : tv.asString ()); this.vwr.setData (propertyName, Clazz.newArray (-1, [propertyName, obj, JU.BSUtil.copy (bs), Integer.$valueOf (-1)]), nAtoms, 0, 0, tv.tok == 7 ? 2147483647 : -2147483648, 0); break; }this.iToken = pt; this.error (56); break; case 1825200146: case 1287653388: this.vwr.shm.loadShape (5); default: this.setBitsetProperty (bs, tok, tv.asInt (), tv.asFloat (), tv); break; } break; } if (selectOne) t.setSelectedValue (sel.intValue, 2147483647, tv); return null; }var needVariable = (!settingData && t == null && (isThrown || !(Clazz.instanceOf (tv.value, String) || tv.tok == 2 || Clazz.instanceOf (tv.value, Integer) || Clazz.instanceOf (tv.value, Float) || Clazz.instanceOf (tv.value, Boolean)))); if (needVariable && key != null) { if (key.startsWith ("_") || (t = this.vwr.g.getAndSetNewVariable (key, true)) == null) this.errorStr (22, key); }if (t != null) return t.setv (tv); var vv = JS.SV.oValue (tv); if (settingData) { if (tv.tok == 7) vv = tv.asString (); this.vwr.setData (key, Clazz.newArray (-1, [key, "" + vv, JU.BSUtil.copy (this.vwr.bsA ()), Integer.$valueOf (0)]), this.vwr.ms.ac, 0, 0, -2147483648, 0); return null; }if (Clazz.instanceOf (vv, Boolean)) { this.setBooleanProperty (key, (vv).booleanValue ()); } else if (Clazz.instanceOf (vv, Integer)) { this.setIntProperty (key, (vv).intValue ()); } else if (Clazz.instanceOf (vv, Float)) { this.setFloatProperty (key, (vv).floatValue ()); } else if (Clazz.instanceOf (vv, String)) { this.setStringProperty (key, vv); } else { }return tv; }, "~N,~N,~S,~B"); Clazz.defineMethod (c$, "setBitsetProperty", function (bs, tok, iValue, fValue, tokenValue) { if (this.chk || bs.cardinality () == 0) return; var list = null; var sValue = null; var fvalues = null; var pt; var sv = null; var nValues = 0; var isStrProperty = JS.T.tokAttr (tok, 1086324736); if (tokenValue.tok == 7) { sv = (tokenValue).getList (); if ((nValues = sv.size ()) == 0) return; }switch (tok) { case 1145047050: case 1145047051: case 1145047053: case 1145047055: switch (tokenValue.tok) { case 8: this.vwr.setAtomCoords (bs, tok, tokenValue.value); break; case 7: this.theToken = tokenValue; this.vwr.setAtomCoords (bs, tok, this.getPointArray (-1, nValues, true)); break; } return; case 1765808134: var value = null; var prop = "color"; switch (tokenValue.tok) { case 7: var values = Clazz.newIntArray (nValues, 0); for (var i = nValues; --i >= 0; ) { var svi = sv.get (i); pt = JS.SV.ptValue (svi); if (pt != null) { values[i] = JU.CU.colorPtToFFRGB (pt); } else if (svi.tok == 2) { values[i] = svi.intValue; } else { values[i] = JU.CU.getArgbFromString (svi.asString ()); if (values[i] == 0) values[i] = svi.asInt (); }if (values[i] == 0) this.errorStr2 (50, "ARRAY", svi.asString ()); } value = values; prop = "colorValues"; break; case 8: value = Integer.$valueOf (JU.CU.colorPtToFFRGB (tokenValue.value)); break; case 4: value = tokenValue.value; break; default: value = Integer.$valueOf (JS.SV.iValue (tokenValue)); break; } (this).setAtomProp (prop, value, bs); return; case 1825200146: case 1287653388: if (tokenValue.tok != 7) sValue = JS.SV.sValue (tokenValue); break; case 1086326789: case 1094715402: (this).clearDefinedVariableAtomSets (); isStrProperty = false; break; } switch (tokenValue.tok) { case 7: if (isStrProperty) list = JS.SV.strListValue (tokenValue); else fvalues = JS.SV.flistValue (tokenValue, nValues); break; case 4: if (sValue == null) list = JU.PT.getTokens (JS.SV.sValue (tokenValue)); break; } if (list != null) { nValues = list.length; if (!isStrProperty) { fvalues = Clazz.newFloatArray (nValues, 0); for (var i = nValues; --i >= 0; ) fvalues[i] = (tok == 1086326789 ? JU.Elements.elementNumberFromSymbol (list[i], false) : JU.PT.parseFloat (list[i])); }if (tokenValue.tok != 7 && nValues == 1) { if (isStrProperty) sValue = list[0]; else fValue = fvalues[0]; iValue = Clazz.floatToInt (fValue); list = null; fvalues = null; }}if (!JS.T.tokAttr (tok, 2048)) this.error (56); this.vwr.setAtomProperty (bs, tok, iValue, fValue, sValue, fvalues, list); }, "JU.BS,~N,~N,~N,JS.T"); Clazz.defineMethod (c$, "setStatement", function (st0, pt0) { this.st = st0; this.slen = this.st.length; if (this.slen == 0) return true; var fixed; var i; var tok; for (i = pt0; i < this.slen; i++) { if (this.st[i] == null) { this.slen = i; return true; }if (this.st[i].tok == 12290) break; } if (i == this.slen) return i == this.slen; switch (this.st[0].tok) { case 102436: case 134320141: case 1073741824: if (this.tokAt (1) == 268435472) return true; } fixed = new Array (this.slen); fixed[0] = this.st[0]; var isExpression = false; var j = pt0; for (i = pt0; i < this.slen; i++) { if (this.st[i] == null) continue; switch (tok = this.getToken (i).tok) { default: fixed[j] = this.st[i]; break; case 1073742325: case 1073742326: isExpression = (tok == 1073742325); fixed[j] = this.st[i]; break; case 12290: if (++i == this.slen) this.invArg (); var v; var forceString = (this.theToken.intValue == 4); var s; var $var = this.paramAsStr (i); var isClauseDefine = (this.tokAt (i) == 1073742325); var isSetAt = (pt0 == 1 && j == 1 && this.st[0] === JS.T.tokenSetCmd); if (isClauseDefine) { var vt = this.parameterExpressionToken (++i); if (this.chk) { v = null; } else if (vt.tok != 7) { v = JS.SV.oValue (vt); } else if (!isExpression) { v = vt; } else { var bs = JS.SV.getBitSet (vt, true); if (bs == null) { var sv = JS.SV.sValue (vt); v = (sv.indexOf ("|") < 0 ? this.getAtomBitSet (sv) : sv); } else { v = bs; }}i = this.iToken; } else if (this.chk) { v = new JU.BS (); } else { if (this.tokAt (i) == 2) { v = this.vwr.ms.getAtoms (1094715393, Integer.$valueOf (this.st[i].intValue)); } else if (this.tokAt (i) == 12290 && this.tokAt (i + 1) == 2) { v = this.vwr.ms.getAtomsFromAtomNumberInFrame (this.st[++i].intValue); } else { v = this.getParameter ($var, 0, true); }if (!isExpression && !isSetAt) isClauseDefine = true; }tok = this.tokAt (0); forceString = new Boolean (forceString | (JS.T.tokAttr (tok, 20480) || tok == 134222850)).valueOf (); if (v == null) { fixed[j] = JS.T.tokenAll; } else if (Clazz.instanceOf (v, JS.SV)) { fixed[j] = v; } else if (Clazz.instanceOf (v, Boolean)) { fixed[j] = ((v).booleanValue () ? JS.T.tokenOn : JS.T.tokenOff); } else if (Clazz.instanceOf (v, Integer)) { fixed[j] = JS.T.tv (2, (v).intValue (), v); } else if (Clazz.instanceOf (v, Float)) { fixed[j] = JS.T.tv (3, JS.ScriptParam.getFloatEncodedInt ("" + v), v); } else if (Clazz.instanceOf (v, String)) { if (!forceString && !isExpression) { if ((tok != 36867 || j > 1 && this.st[1].tok != 537022465 && !"labelfor".equalsIgnoreCase (this.st[1].value.toString ())) && JS.T.tokAttr (tok, 36864)) { v = this.getParameter (v, 1073742190, true); }if (Clazz.instanceOf (v, String)) { v = this.getStringObjectAsVariable (v); }}if (Clazz.instanceOf (v, JS.SV)) { fixed[j] = v; } else { s = v; if (isExpression && !forceString) { fixed[j] = (s.indexOf ("|") >= 0 || JS.T.tokAttr (fixed[j - 1].tok, 268435712) ? JS.T.o (4, s) : JS.T.o (10, this.getAtomBitSet (s))); } else { tok = (isSetAt ? JS.T.getTokFromName (s) : isClauseDefine || forceString || s.length == 0 || s.indexOf (".") >= 0 || s.indexOf (" ") >= 0 || s.indexOf ("=") >= 0 || s.indexOf (";") >= 0 || s.indexOf ("[") >= 0 || s.indexOf ("{") >= 0 ? 4 : 1073741824); fixed[j] = JS.T.o (tok, v); }}} else if (Clazz.instanceOf (v, JU.BArray)) { fixed[j] = JS.SV.newV (15, v); } else if (Clazz.instanceOf (v, JU.BS)) { fixed[j] = JS.SV.newV (10, v); } else if (Clazz.instanceOf (v, JU.P3)) { fixed[j] = JS.SV.newV (8, v); } else if (Clazz.instanceOf (v, JU.P4)) { fixed[j] = JS.SV.newV (9, v); } else if (Clazz.instanceOf (v, JU.M34)) { fixed[j] = JS.SV.newV (Clazz.instanceOf (v, JU.M4) ? 12 : 11, v); } else if (Clazz.instanceOf (v, java.util.Map) || Clazz.instanceOf (v, JS.ScriptContext) && (v = (v).getFullMap ()) != null) { fixed[j] = JS.SV.newV (6, (isExpression ? v : JS.SV.deepCopy (v, true, true))); } else if (Clazz.instanceOf (v, JU.Lst)) { if (!isExpression) { fixed[j] = JS.SV.newV (7, JS.SV.deepCopy (v, false, true)); break; }var sv = v; var bs = null; for (var k = 0; k < sv.size (); k++) { var svk = sv.get (k); if (svk.tok != 10) { bs = null; break; }if (bs == null) bs = new JU.BS (); bs.or (svk.value); } fixed[j] = (bs == null ? JS.SV.getVariable (v) : JS.T.o (10, bs)); } else { var center = (this).getObjectCenter ($var, -2147483648, -2147483648); if (center == null) this.invArg (); fixed[j] = JS.T.o (8, center); }if (isSetAt && !JS.T.tokAttr (fixed[j].tok, 536870912)) this.invArg (); break; } j++; } this.st = fixed; for (i = j; i < this.st.length; i++) this.st[i] = null; this.slen = j; return true; }, "~A,~N"); });